diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000000..f5576106b433 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,16 @@ + +env: + global: + - COMMIT=${TRAVIS_COMMIT::6} +sudo: required +services: +- docker +script: +- export REPO=mayadataio/kubera-docs; +- docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" && docker build -t $REPO:$TRAVIS_BRANCH-$COMMIT . ; +- if [ "$TRAVIS_BRANCH" = "staging" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then export REPO=mayadataio/staging-kubera-docs; + docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" && docker build -t $REPO:$TRAVIS_BRANCH-$COMMIT . && docker push $REPO:$TRAVIS_BRANCH-$COMMIT; + fi +- if [ "$TRAVIS_BRANCH" = "master" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then + docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" && docker build -t $REPO:$COMMIT . && docker push $REPO; + fi diff --git a/Dockerfile b/Dockerfile index 59846b78f631..0e6a88668a53 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,6 +8,8 @@ FROM node:14-alpine as installation ENV NODE_ENV production + +RUN apk add --no-cache python make g++ WORKDIR /usr/src/docs COPY package*.json ./ @@ -20,6 +22,7 @@ RUN npm ci FROM node:14-alpine as bundles WORKDIR /usr/src/docs +RUN apk add --no-cache python make g++ # Install the files used to create the bundles COPY package*.json ./ COPY javascripts ./javascripts @@ -36,7 +39,7 @@ FROM node:14-alpine # Let's make our home WORKDIR /usr/src/docs - +RUN apk add --no-cache python make g++ # Ensure our node user owns the directory we're using RUN chown node:node /usr/src/docs -R @@ -62,6 +65,8 @@ COPY --chown=node:node middleware ./middleware COPY --chown=node:node translations ./translations COPY --chown=node:node server.js ./server.js COPY --chown=node:node package*.json ./ +COPY --chown=node:node feature-flags.json ./ +COPY --chown=node:node layouts ./layouts EXPOSE 443 CMD ["node", "server.js"] diff --git a/assets/images/enterprise/navigation/kubera.png b/assets/images/enterprise/navigation/kubera.png new file mode 100644 index 000000000000..110f60fbd7b7 Binary files /dev/null and b/assets/images/enterprise/navigation/kubera.png differ diff --git a/assets/images/enterprise/navigation/octocat-icon.png b/assets/images/enterprise/navigation/octocat-icon.png deleted file mode 100644 index 5b6257df80a5..000000000000 Binary files a/assets/images/enterprise/navigation/octocat-icon.png and /dev/null differ diff --git a/assets/images/site/favicon.png b/assets/images/site/favicon.png index 4e5d9979a96e..110f60fbd7b7 100644 Binary files a/assets/images/site/favicon.png and b/assets/images/site/favicon.png differ diff --git a/assets/images/site/favicon.svg b/assets/images/site/favicon.svg index 163da37d0275..c78c3498b0a6 100644 --- a/assets/images/site/favicon.svg +++ b/assets/images/site/favicon.svg @@ -1,12 +1,7 @@ - - - - - - - \ No newline at end of file + + + + + + + diff --git a/content/actions/creating-actions/about-actions.md b/content/actions/creating-actions/about-actions.md deleted file mode 100644 index 1ec4a7d52686..000000000000 --- a/content/actions/creating-actions/about-actions.md +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: About actions -intro: 'Actions are individual tasks that you can combine to create jobs and customize your workflow. You can create your own actions, or use and customize actions shared by the {% data variables.product.prodname_dotcom %} community.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /articles/about-actions - - /github/automating-your-workflow-with-github-actions/about-actions - - /actions/automating-your-workflow-with-github-actions/about-actions - - /actions/building-actions/about-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About actions - -You can create actions by writing custom code that interacts with your repository in any way you'd like, including integrating with {% data variables.product.prodname_dotcom %}'s APIs and any publicly available third-party API. For example, an action can publish npm modules, send SMS alerts when urgent issues are created, or deploy production-ready code. - -{% if currentVersion == "free-pro-team@latest" %} -You can write your own actions to use in your workflow or share the actions you build with the {% data variables.product.prodname_dotcom %} community. To share actions you've built, your repository must be public. -{% endif %} - -Actions can run directly on a machine or in a Docker container. You can define an action's inputs, outputs, and environment variables. - -### Types of actions - -You can build Docker container and JavaScript actions. Actions require a metadata file to define the inputs, outputs and main entrypoint for your action. The metadata filename must be either `action.yml` or `action.yaml`. For more information, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/articles/metadata-syntax-for-github-actions)." - -| Type | Operating system | -| ---- | ------------------- | -| Docker container | Linux | -| JavaScript | Linux, MacOS, Windows | -| Composite run steps | Linux, MacOS, Windows | - -#### Docker container actions - -Docker containers package the environment with the {% data variables.product.prodname_actions %} code. This creates a more consistent and reliable unit of work because the consumer of the action does not need to worry about the tools or dependencies. - -A Docker container allows you to use specific versions of an operating system, dependencies, tools, and code. For actions that must run in a specific environment configuration, Docker is an ideal option because you can customize the operating system and tools. Because of the latency to build and retrieve the container, Docker container actions are slower than JavaScript actions. - -Docker container actions can only execute on runners with a Linux operating system. {% data reusables.github-actions.self-hosted-runner-reqs-docker %} - -#### JavaScript actions - -JavaScript actions can run directly on a runner machine, and separate the action code from the environment used to run the code. Using a JavaScript action simplifies the action code and executes faster than a Docker container action. - -{% data reusables.github-actions.pure-javascript %} - -If you're developing a Node.js project, the {% data variables.product.prodname_actions %} Toolkit provides packages that you can use in your project to speed up development. For more information, see the [actions/toolkit](https://github.com/actions/toolkit) repository. - -#### Composite run steps actions - -A _composite run steps_ action allows you to combine multiple workflow run steps within one action. For example, you can use this feature to bundle together multiple run commands into an action, and then have a workflow that executes the bundled commands a single step using that action. To see an example, check out "[Creating a composite run steps action](/actions/creating-actions/creating-a-composite-run-steps-action)". - -### Choosing a location for your action - -If you're developing an action for other people to use, we recommend keeping the action in its own repository instead of bundling it with other application code. This allows you to version, track, and release the action just like any other software. - -{% if currentVersion == "free-pro-team@latest" %} -Storing an action in its own repository makes it easier for the {% data variables.product.prodname_dotcom %} community to discover the action, narrows the scope of the code base for developers fixing issues and extending the action, and decouples the action's versioning from the versioning of other application code. -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %}If you're building an action that you don't plan to make available to the public, you {% else %} You{% endif %} can store the action's files in any location in your repository. If you plan to combine action, workflow, and application code in a single repository, we recommend storing actions in the `.github` directory. For example, `.github/actions/action-a` and `.github/actions/action-b`. - -### Compatibility with {% data variables.product.prodname_ghe_server %} - -To ensure that your action is compatible with {% data variables.product.prodname_ghe_server %}, you should make sure that you do not use any hard-coded references to {% data variables.product.prodname_dotcom %} API URLs. You should instead use environment variables to refer to the {% data variables.product.prodname_dotcom %} API: - -- For the REST API, use the `GITHUB_API_URL` environment variable. -- For GraphQL, use the `GITHUB_GRAPHQL_URL` environment variable. - -For more information, see "[Default environment variables](/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables)." - -### Using release management for actions - -This section explains how you can use release management to distribute updates to your actions in a predictable way. - -#### Good practices for release management - -If you're developing an action for other people to use, we recommend using release management to control how you distribute updates. Users can expect an action's major version to include necessary critical fixes and security patches, while still remaining compatible with their existing workflows. You should consider releasing a new major version whenever your changes affect compatibility. - -Under this release management approach, users should not be referencing an action's default branch, as it's likely to contain the latest code and consequently might be unstable. Instead, you can recommend that your users specify a major version when using your action, and only direct them to a more specific version if they encounter issues. - -To use a specific action version, users can configure their {% data variables.product.prodname_actions %} workflow to target a tag, a commit's SHA, or a branch named for a release. - -#### Using tags for release management - -We recommend using tags for actions release management. Using this approach, your users can easily distinguish between major and minor versions: - -- Create and validate a release on a release branch (such as `release/v1`) before creating the release tag (for example, `v1.0.2`). -- Create a release using semantic versioning. For more information, see "[Creating releases](/articles/creating-releases)." -- Move the major version tag (such as `v1`, `v2`) to point to the Git ref of the current release. For more information, see "[Git basics - tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging)." -- Introduce a new major version tag (`v2`) for changes that will break existing workflows. For example, changing an action's inputs would be a breaking change. -- Major versions can be initially released with a `beta` tag to indicate their status, for example, `v2-beta`. The `-beta` tag can then be removed when ready. - -This example demonstrates how a user can reference a major release tag: - -```yaml -steps: - - uses: actions/javascript-action@v1 -``` - -This example demonstrates how a user can reference a specific patch release tag: - -```yaml -steps: - - uses: actions/javascript-action@v1.0.1 -``` - -#### Using branches for release management - -If you prefer to use branch names for release management, this example demonstrates how to reference a named branch: - -```yaml -steps: - - uses: actions/javascript-action@v1-beta -``` - -#### Using a commit's SHA for release management - -Each Git commit receives a calculated SHA value, which is unique and immutable. Your action's users might prefer to rely on a commit's SHA value, as this approach can be more reliable than specifying a tag, which could be deleted or moved. However, this means that users will not receive further updates made to the action. Using a commit's full SHA value instead of the abbreviated value can help prevent people from using a malicious commit that uses the same abbreviation. - -```yaml -steps: - - uses: actions/javascript-action@172239021f7ba04fe7327647b213799853a9eb89 -``` - -### Creating a README file for your action - -We recommend creating a README file to help people learn how to use your action. You can include this information in your `README.md`: - -- A detailed description of what the action does -- Required input and output arguments -- Optional input and output arguments -- Secrets the action uses -- Environment variables the action uses -- An example of how to use your action in a workflow - -### Comparing {% data variables.product.prodname_actions %} to {% data variables.product.prodname_github_apps %} - -{% data variables.product.prodname_marketplace %} offers tools to improve your workflow. Understanding the differences and the benefits of each tool will allow you to select the best tool for your job. For more information about building apps, see "[About apps](/apps/about-apps/)." - -#### Strengths of GitHub Actions and GitHub Apps - -While both {% data variables.product.prodname_actions %} and {% data variables.product.prodname_github_app %}s provide ways to build automation and workflow tools, they each have strengths that make them useful in different ways. - -{% data variables.product.prodname_github_apps %}: -* Run persistently and can react to events quickly. -* Work great when persistent data is needed. -* Work best with API requests that aren't time consuming. -* Run on a server or compute infrastructure that you provide. - -{% data variables.product.prodname_actions %}: -* Provide automation that can perform continuous integration and continuous deployment. -* Can run directly on runner machines or in Docker containers. -* Can include access to a clone of your repository, enabling deployment and publishing tools, code formatters, and command line tools to access your code. -* Don't require you to deploy code or serve an app. -* Have a simple interface to create and use secrets, which enables actions to interact with third-party services without needing to store the credentials of the person using the action. - -### Further reading - -- "[Development tools for {% data variables.product.prodname_actions %}](/articles/development-tools-for-github-actions)" diff --git a/content/actions/creating-actions/creating-a-composite-run-steps-action.md b/content/actions/creating-actions/creating-a-composite-run-steps-action.md deleted file mode 100644 index 34312304fd0c..000000000000 --- a/content/actions/creating-actions/creating-a-composite-run-steps-action.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Creating a composite run steps action -intro: 'In this guide, you''ll learn how to build a composite run steps action.' -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -In this guide, you'll learn about the basic components needed to create and use a packaged composite run steps action. To focus this guide on the components needed to package the action, the functionality of the action's code is minimal. The action prints "Hello World" and then "Goodbye", or if you provide a custom name, it prints "Hello [who-to-greet]" and then "Goodbye". The action also maps a random number to the `random-number` output variable, and runs a script named `goodbye.sh`. - -Once you complete this project, you should understand how to build your own composite run steps action and test it in a workflow. - -### Prerequisites - -Before you begin, you'll create a {% data variables.product.product_name %} repository. - -1. Create a new public repository on {% data variables.product.product_location %}. You can choose any repository name, or use the following `hello-world-composite-run-steps-action` example. You can add these files after your project has been pushed to {% data variables.product.product_name %}. For more information, see "[Create a new repository](/articles/creating-a-new-repository)." - -1. Clone your repository to your computer. For more information, see "[Cloning a repository](/articles/cloning-a-repository)." - -1. From your terminal, change directories into your new repository. - - ```shell - cd hello-world-composite-run-steps-action - ``` - -2. In the `hello-world-composite-run-steps-action` repository, create a new file called `goodbye.sh`, and add the following example code: - - ```bash - echo "Goodbye" - ``` - -3. From your terminal, make `goodbye.sh` executable. - - ```shell - chmod +x goodbye.sh - ``` - -1. From your terminal, check in your `goodbye.sh` file. - ```shell - git add goodbye.sh - git commit -m "Add goodbye script" - git push - ``` - -### Creating an action metadata file - -1. In the `hello-world-composite-run-steps-action` repository, create a new file called `action.yml` and add the following example code. For more information about this syntax, see "[`runs` for a composite run steps](/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-composite-run-steps-actions)". - - {% raw %} - **action.yml** - ```yaml - name: 'Hello World' - description: 'Greet someone' - inputs: - who-to-greet: # id of input - description: 'Who to greet' - required: true - default: 'World' - outputs: - random-number: - description: "Random number" - value: ${{ steps.random-number-generator.outputs.random-id }} - runs: - using: "composite" - steps: - - run: echo Hello ${{ inputs.who-to-greet }}. - shell: bash - - id: random-number-generator - run: echo "::set-output name=random-id::$(echo $RANDOM)" - shell: bash - - run: ${{ github.action_path }}/goodbye.sh - shell: bash - ``` - {% endraw %} - This file defines the `who-to-greet` input, maps the random generated number to the `random-number` output variable, and runs the `goodbye.sh` script. It also tells the runner how to execute the composite run steps action. - - For more information about managing outputs, see "[`outputs` for a composite run steps](/actions/creating-actions/metadata-syntax-for-github-actions#outputs-for-composite-run-steps-actions)". - - For more information about how to use `github.action_path`, see "[`github context`](/actions/reference/context-and-expression-syntax-for-github-actions#github-context)". - -1. From your terminal, check in your `action.yml` file. - - ```shell - git add action.yml - git commit -m "Add action" - git push - ``` - -1. From your terminal, add a tag. This example uses a tag called `v1`. For more information, see "[About actions](/actions/creating-actions/about-actions#using-release-management-for-actions)." - - ```shell - git tag -a -m "Description of this release" v1 - git push --follow-tags - ``` - -### Testing out your action in a workflow - -The following workflow code uses the completed hello world action that you made in "[Creating an action metadata file](/actions/creating-actions/creating-a-composite-run-steps-action#creating-an-action-metadata-file)". - -Copy the workflow code into a `.github/workflows/main.yml` file in another repository, but replace `actions/hello-world-composite-run-steps-action@v1` with the repository and tag you created. You can also replace the `who-to-greet` input with your name. - -{% raw %} -**.github/workflows/main.yml** -```yaml -on: [push] - -jobs: - hello_world_job: - runs-on: ubuntu-latest - name: A job to say hello - steps: - - uses: actions/checkout@v2 - - id: foo - uses: actions/hello-world-composite-run-steps-action@v1 - with: - who-to-greet: 'Mona the Octocat' - - run: echo random-number ${{ steps.foo.outputs.random-number }} - shell: bash -``` -{% endraw %} - -From your repository, click the **Actions** tab, and select the latest workflow run. The output should include: "Hello Mona the Octocat", the result of the "Goodbye" script, and a random number. diff --git a/content/actions/creating-actions/creating-a-docker-container-action.md b/content/actions/creating-actions/creating-a-docker-container-action.md deleted file mode 100644 index a51ab9b2ca7c..000000000000 --- a/content/actions/creating-actions/creating-a-docker-container-action.md +++ /dev/null @@ -1,231 +0,0 @@ ---- -title: Creating a Docker container action -intro: 'This guide shows you the minimal steps required to build a Docker container action. ' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /articles/creating-a-docker-container-action - - /github/automating-your-workflow-with-github-actions/creating-a-docker-container-action - - /actions/automating-your-workflow-with-github-actions/creating-a-docker-container-action - - /actions/building-actions/creating-a-docker-container-action -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -In this guide, you'll learn about the basic components needed to create and use a packaged Docker container action. To focus this guide on the components needed to package the action, the functionality of the action's code is minimal. The action prints "Hello World" in the logs or "Hello [who-to-greet]" if you provide a custom name. - -Once you complete this project, you should understand how to build your own Docker container action and test it in a workflow. - -{% data reusables.github-actions.self-hosted-runner-reqs-docker %} - -### Prerequisites - -You may find it helpful to have a basic understanding of {% data variables.product.prodname_actions %} environment variables and the Docker container filesystem: - -- "[Using environment variables](/actions/automating-your-workflow-with-github-actions/using-environment-variables)" -- "[Virtual environments for {% data variables.product.prodname_dotcom %}](/actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners#docker-container-filesystem)" - -Before you begin, you'll need to create a GitHub repository. - -1. Create a new repository on {% data variables.product.product_location %}. You can choose any repository name or use "hello-world-docker-action" like this example. For more information, see "[Create a new repository](/articles/creating-a-new-repository)." - -1. Clone your repository to your computer. For more information, see "[Cloning a repository](/articles/cloning-a-repository)." - -1. From your terminal, change directories into your new repository. - - ```shell - cd hello-world-docker-action - ``` - -### Creating a Dockerfile - -In your new `hello-world-docker-action` directory, create a new `Dockerfile` file. For more information, see "[Dockerfile support for {% data variables.product.prodname_actions %}](/actions/creating-actions/dockerfile-support-for-github-actions)." - -**Dockerfile** -```dockerfile -# Container image that runs your code -FROM alpine:3.10 - -# Copies your code file from your action repository to the filesystem path `/` of the container -COPY entrypoint.sh /entrypoint.sh - -# Code file to execute when the docker container starts up (`entrypoint.sh`) -ENTRYPOINT ["/entrypoint.sh"] -``` - -### Creating an action metadata file - -Create a new `action.yml` file in the `hello-world-docker-action` directory you created above. For more information, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/actions/creating-actions/metadata-syntax-for-github-actions)." - -{% raw %} -**action.yml** -```yaml -# action.yml -name: 'Hello World' -description: 'Greet someone and record the time' -inputs: - who-to-greet: # id of input - description: 'Who to greet' - required: true - default: 'World' -outputs: - time: # id of output - description: 'The time we greeted you' -runs: - using: 'docker' - image: 'Dockerfile' - args: - - ${{ inputs.who-to-greet }} -``` -{% endraw %} - -This metadata defines one `who-to-greet` input and one `time` output parameter. To pass inputs to the Docker container, you must declare the input using `inputs` and pass the input in the `args` keyword. - -{% data variables.product.prodname_dotcom %} will build an image from your `Dockerfile`, and run commands in a new container using this image. - -### Writing the action code - -You can choose any base Docker image and, therefore, any language for your action. The following shell script example uses the `who-to-greet` input variable to print "Hello [who-to-greet]" in the log file. - -Next, the script gets the current time and sets it as an output variable that actions running later in a job can use. In order for {% data variables.product.prodname_dotcom %} to recognize output variables, you must use a workflow command in a specific syntax: `echo "::set-output name=::"`. For more information, see "[Workflow commands for {% data variables.product.prodname_actions %}](/actions/reference/workflow-commands-for-github-actions#setting-an-output-parameter)." - -1. Create a new `entrypoint.sh` file in the `hello-world-docker-action` directory. - -1. Make your `entrypoint.sh` file executable: - - ```shell - chmod +x entrypoint.sh - ``` - -1. Add the following code to your `entrypoint.sh` file. - - **entrypoint.sh** - ```shell - #!/bin/sh -l - - echo "Hello $1" - time=$(date) - echo "::set-output name=time::$time" - ``` - - If `entrypoint.sh` executes without any errors, the action's status is set to `success`. You can also explicitly set exit codes in your action's code to provide an action's status. For more information, see "[Setting exit codes for actions](/actions/creating-actions/setting-exit-codes-for-actions)." - -### Creating a README - -To let people know how to use your action, you can create a README file. A README is most helpful when you plan to share your action publicly, but is also a great way to remind you or your team how to use the action. - -In your `hello-world-docker-action` directory, create a `README.md` file that specifies the following information: - -- A detailed description of what the action does. -- Required input and output arguments. -- Optional input and output arguments. -- Secrets the action uses. -- Environment variables the action uses. -- An example of how to use your action in a workflow. - -**README.md** -```markdown -# Hello world docker action - -This action prints "Hello World" or "Hello" + the name of a person to greet to the log. - -## Inputs - -### `who-to-greet` - -**Required** The name of the person to greet. Default `"World"`. - -## Outputs - -### `time` - -The time we greeted you. - -## Example usage - -uses: actions/hello-world-docker-action@v1 -with: - who-to-greet: 'Mona the Octocat' -``` - -### Commit, tag, and push your action to {% data variables.product.product_name %} - -From your terminal, commit your `action.yml`, `entrypoint.sh`, `Dockerfile`, and `README.md` files. - -It's best practice to also add a version tag for releases of your action. For more information on versioning your action, see "[About actions](/actions/automating-your-workflow-with-github-actions/about-actions#using-release-management-for-actions)." - -```shell -git add action.yml entrypoint.sh Dockerfile README.md -git commit -m "My first action is ready" -git tag -a -m "My first action release" v1 -git push --follow-tags -``` - -### Testing out your action in a workflow - -Now you're ready to test your action out in a workflow. When an action is in a private repository, the action can only be used in workflows in the same repository. Public actions can be used by workflows in any repository. - -{% data reusables.actions.enterprise-marketplace-actions %} - -#### Example using a public action - -The following workflow code uses the completed hello world action in the public [`actions/hello-world-docker-action`](https://github.com/actions/hello-world-docker-action) repository. Copy the following workflow example code into a `.github/workflows/main.yml` file, but replace the `actions/hello-world-docker-action` with your repository and action name. You can also replace the `who-to-greet` input with your name. - -{% raw %} -**.github/workflows/main.yml** -```yaml -on: [push] - -jobs: - hello_world_job: - runs-on: ubuntu-latest - name: A job to say hello - steps: - - name: Hello world action step - id: hello - uses: actions/hello-world-docker-action@v1 - with: - who-to-greet: 'Mona the Octocat' - # Use the output from the `hello` step - - name: Get the output time - run: echo "The time was ${{ steps.hello.outputs.time }}" -``` -{% endraw %} - -#### Example using a private action - -Copy the following example workflow code into a `.github/workflows/main.yml` file in your action's repository. You can also replace the `who-to-greet` input with your name. - -{% raw %} -**.github/workflows/main.yml** -```yaml -on: [push] - -jobs: - hello_world_job: - runs-on: ubuntu-latest - name: A job to say hello - steps: - # To use this repository's private action, - # you must check out the repository - - name: Checkout - uses: actions/checkout@v2 - - name: Hello world action step - uses: ./ # Uses an action in the root directory - id: hello - with: - who-to-greet: 'Mona the Octocat' - # Use the output from the `hello` step - - name: Get the output time - run: echo "The time was ${{ steps.hello.outputs.time }}" -``` -{% endraw %} - -From your repository, click the **Actions** tab, and select the latest workflow run. You should see "Hello Mona the Octocat" or the name you used for the `who-to-greet` input and the timestamp printed in the log. - -![A screenshot of using your action in a workflow](/assets/images/help/repository/docker-action-workflow-run.png) diff --git a/content/actions/creating-actions/creating-a-javascript-action.md b/content/actions/creating-actions/creating-a-javascript-action.md deleted file mode 100644 index e2987d0d15fd..000000000000 --- a/content/actions/creating-actions/creating-a-javascript-action.md +++ /dev/null @@ -1,270 +0,0 @@ ---- -title: Creating a JavaScript action -intro: 'In this guide, you''ll learn how to build a JavaScript action using the actions toolkit.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /articles/creating-a-javascript-action - - /github/automating-your-workflow-with-github-actions/creating-a-javascript-action - - /actions/automating-your-workflow-with-github-actions/creating-a-javascript-action - - /actions/building-actions/creating-a-javascript-action -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -In this guide, you'll learn about the basic components needed to create and use a packaged JavaScript action. To focus this guide on the components needed to package the action, the functionality of the action's code is minimal. The action prints "Hello World" in the logs or "Hello [who-to-greet]" if you provide a custom name. - -This guide uses the {% data variables.product.prodname_actions %} Toolkit Node.js module to speed up development. For more information, see the [actions/toolkit](https://github.com/actions/toolkit) repository. - -Once you complete this project, you should understand how to build your own JavaScript action and test it in a workflow. - -{% data reusables.github-actions.pure-javascript %} - -### Prerequisites - -Before you begin, you'll need to download Node.js and create a GitHub repository. - -1. Download and install Node.js 12.x, which includes npm. - - https://nodejs.org/en/download/current/ - -1. Create a new repository on {% data variables.product.product_location %}. You can choose any repository name or use "hello-world-javascript-action" like this example. You can add these files after your project has been pushed to {% data variables.product.product_name %}. For more information, see "[Create a new repository](/articles/creating-a-new-repository)." - -1. Clone your repository to your computer. For more information, see "[Cloning a repository](/articles/cloning-a-repository)." - -1. From your terminal, change directories into your new repository. - - ```shell - cd hello-world-javascript-action - ``` - -1. From your terminal, initialize the directory with a `package.json` file. - - ```shell - npm init -y - ``` - -### Creating an action metadata file - -Create a new file `action.yml` in the `hello-world-javascript-action` directory with the following example code. For more information, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/actions/creating-actions/metadata-syntax-for-github-actions)." - - -**action.yml** -```yaml -name: 'Hello World' -description: 'Greet someone and record the time' -inputs: - who-to-greet: # id of input - description: 'Who to greet' - required: true - default: 'World' -outputs: - time: # id of output - description: 'The time we greeted you' -runs: - using: 'node12' - main: 'index.js' -``` - -This file defines the `who-to-greet` input and `time` output. It also tells the action runner how to start running this JavaScript action. - -### Adding actions toolkit packages - -The actions toolkit is a collection of Node.js packages that allow you to quickly build JavaScript actions with more consistency. - -The toolkit [`@actions/core`](https://github.com/actions/toolkit/tree/main/packages/core) package provides an interface to the workflow commands, input and output variables, exit statuses, and debug messages. - -The toolkit also offers a [`@actions/github`](https://github.com/actions/toolkit/tree/main/packages/github) package that returns an authenticated Octokit REST client and access to GitHub Actions contexts. - -The toolkit offers more than the `core` and `github` packages. For more information, see the [actions/toolkit](https://github.com/actions/toolkit) repository. - -At your terminal, install the actions toolkit `core` and `github` packages. - -```shell -npm install @actions/core -npm install @actions/github -``` - -Now you should see a `node_modules` directory with the modules you just installed and a `package-lock.json` file with the installed module dependencies and the versions of each installed module. - -### Writing the action code - -This action uses the toolkit to get the `who-to-greet` input variable required in the action's metadata file and prints "Hello [who-to-greet]" in a debug message in the log. Next, the script gets the current time and sets it as an output variable that actions running later in a job can use. - -GitHub Actions provide context information about the webhook event, Git refs, workflow, action, and the person who triggered the workflow. To access the context information, you can use the `github` package. The action you'll write will print the webhook event payload to the log. - -Add a new file called `index.js`, with the following code. - -**index.js** -```javascript -const core = require('@actions/core'); -const github = require('@actions/github'); - -try { - // `who-to-greet` input defined in action metadata file - const nameToGreet = core.getInput('who-to-greet'); - console.log(`Hello ${nameToGreet}!`); - const time = (new Date()).toTimeString(); - core.setOutput("time", time); - // Get the JSON webhook payload for the event that triggered the workflow - const payload = JSON.stringify(github.context.payload, undefined, 2) - console.log(`The event payload: ${payload}`); -} catch (error) { - core.setFailed(error.message); -} -``` - -If an error is thrown in the above `index.js` example, `core.setFailed(error.message);` uses the actions toolkit [`@actions/core`](https://github.com/actions/toolkit/tree/main/packages/core) package to log a message and set a failing exit code. For more information, see "[Setting exit codes for actions](/actions/creating-actions/setting-exit-codes-for-actions)." - - -### Creating a README - -To let people know how to use your action, you can create a README file. A README is most helpful when you plan to share your action publicly, but is also a great way to remind you or your team how to use the action. - -In your `hello-world-javascript-action` directory, create a `README.md` file that specifies the following information: - -- A detailed description of what the action does. -- Required input and output arguments. -- Optional input and output arguments. -- Secrets the action uses. -- Environment variables the action uses. -- An example of how to use your action in a workflow. - -**README.md** -```markdown -# Hello world javascript action - -This action prints "Hello World" or "Hello" + the name of a person to greet to the log. - -## Inputs - -### `who-to-greet` - -**Required** The name of the person to greet. Default `"World"`. - -## Outputs - -### `time` - -The time we greeted you. - -## Example usage - -uses: actions/hello-world-javascript-action@v1.1 -with: - who-to-greet: 'Mona the Octocat' -``` - -### Commit, tag, and push your action to GitHub - -{% data variables.product.product_name %} downloads each action run in a workflow during runtime and executes it as a complete package of code before you can use workflow commands like `run` to interact with the runner machine. This means you must include any package dependencies required to run the JavaScript code. You'll need to check in the toolkit `core` and `github` packages to your action's repository. - -From your terminal, commit your `action.yml`, `index.js`, `node_modules`, `package.json`, `package-lock.json`, and `README.md` files. If you added a `.gitignore` file that lists `node_modules`, you'll need to remove that line to commit the `node_modules` directory. - -It's best practice to also add a version tag for releases of your action. For more information on versioning your action, see "[About actions](/actions/automating-your-workflow-with-github-actions/about-actions#using-release-management-for-actions)." - - -```shell -git add action.yml index.js node_modules/* package.json package-lock.json README.md -git commit -m "My first action is ready" -git tag -a -m "My first action release" v1 -git push --follow-tags -``` - -As an alternative to checking in your `node_modules` directory you can use a tool called [`@vercel/ncc`](https://github.com/vercel/ncc) to compile your code and modules into one file used for distribution. - -1. Install `vercel/ncc` by running this command in your terminal. - `npm i -g @vercel/ncc` - -1. Compile your `index.js` file. - `ncc build index.js --license licenses.txt` - - You'll see a new `dist/index.js` file with your code and the compiled modules. - You will also see an accompanying `dist/licenses.txt` file containing all the licenses of the `node_modules` you are using. - -1. Change the `main` keyword in your `action.yml` file to use the new `dist/index.js` file. - `main: 'dist/index.js'` - -1. If you already checked in your `node_modules` directory, remove it. - `rm -rf node_modules/*` - -1. From your terminal, commit the updates to your `action.yml`, `dist/index.js`, and `node_modules` files. -```shell -git add action.yml dist/index.js node_modules/* -git commit -m "Use vercel/ncc" -git tag -a -m "My first action release" v1 -git push --follow-tags -``` - -### Testing out your action in a workflow - -Now you're ready to test your action out in a workflow. When an action is in a private repository, the action can only be used in workflows in the same repository. Public actions can be used by workflows in any repository. - -{% data reusables.actions.enterprise-marketplace-actions %} - -#### Example using a public action - -The following workflow code uses the completed hello world action in the `actions/hello-world-javascript-action` repository. Copy the workflow code into a `.github/workflows/main.yml` file, but replace the `actions/hello-world-javascript-action` repository with the repository you created. You can also replace the `who-to-greet` input with your name. - -{% raw %} -**.github/workflows/main.yml** -```yaml -on: [push] - -jobs: - hello_world_job: - runs-on: ubuntu-latest - name: A job to say hello - steps: - - name: Hello world action step - id: hello - uses: actions/hello-world-javascript-action@v1.1 - with: - who-to-greet: 'Mona the Octocat' - # Use the output from the `hello` step - - name: Get the output time - run: echo "The time was ${{ steps.hello.outputs.time }}" -``` -{% endraw %} - -#### Example using a private action - -Copy the workflow code into a `.github/workflows/main.yml` file in your action's repository. You can also replace the `who-to-greet` input with your name. - -{% raw %} -**.github/workflows/main.yml** -```yaml -on: [push] - -jobs: - hello_world_job: - runs-on: ubuntu-latest - name: A job to say hello - steps: - # To use this repository's private action, - # you must check out the repository - - name: Checkout - uses: actions/checkout@v2 - - name: Hello world action step - uses: ./ # Uses an action in the root directory - id: hello - with: - who-to-greet: 'Mona the Octocat' - # Use the output from the `hello` step - - name: Get the output time - run: echo "The time was ${{ steps.hello.outputs.time }}" -``` -{% endraw %} - -From your repository, click the **Actions** tab, and select the latest workflow run. You should see "Hello Mona the Octocat" or the name you used for the `who-to-greet` input and the timestamp printed in the log. - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -![A screenshot of using your action in a workflow](/assets/images/help/repository/javascript-action-workflow-run-updated.png) -{% else %} -![A screenshot of using your action in a workflow](/assets/images/help/repository/javascript-action-workflow-run.png) -{% endif %} diff --git a/content/actions/creating-actions/dockerfile-support-for-github-actions.md b/content/actions/creating-actions/dockerfile-support-for-github-actions.md deleted file mode 100644 index 58809b0f2249..000000000000 --- a/content/actions/creating-actions/dockerfile-support-for-github-actions.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Dockerfile support for GitHub Actions -shortTitle: Docker -intro: 'When creating a `Dockerfile` for a Docker container action, you should be aware of how some Docker instructions interact with GitHub Actions and an action''s metadata file.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/building-actions/dockerfile-support-for-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About Dockerfile instructions - -A `Dockerfile` contains instructions and arguments that define the contents and startup behavior of a Docker container. For more information about the instructions Docker supports, see "[Dockerfile reference](https://docs.docker.com/engine/reference/builder/)" in the Docker documentation. - -### Dockerfile instructions and overrides - -Some Docker instructions interact with GitHub Actions, and an action's metadata file can override some Docker instructions. Ensure that you are familiar with how your Dockerfile interacts with {% data variables.product.prodname_actions %} to prevent any unexpected behavior. - -#### USER - -Docker actions must be run by the default Docker user (root). Do not use the `USER` instruction in your `Dockerfile`, because you won't be able to access the `GITHUB_WORKSPACE`. For more information, see "[Using environment variables](/actions/configuring-and-managing-workflows/using-environment-variables)" and [USER reference](https://docs.docker.com/engine/reference/builder/#user) in the Docker documentation. - -#### FROM - -The first instruction in the `Dockerfile` must be `FROM`, which selects a Docker base image. For more information, see the [FROM reference](https://docs.docker.com/engine/reference/builder/#from) in the Docker documentation. - -These are some best practices when setting the `FROM` argument: - -- It's recommended to use official Docker images. For example, `python` or `ruby`. -- Use a version tag if it exists, preferably with a major version. For example, use `node:10` instead of `node:latest`. -- It's recommended to use Docker images based on the [Debian](https://www.debian.org/) operating system. - -#### WORKDIR - -{% data variables.product.product_name %} sets the working directory path in the `GITHUB_WORKSPACE` environment variable. It's recommended to not use the `WORKDIR` instruction in your `Dockerfile`. Before the action executes, {% data variables.product.product_name %} will mount the `GITHUB_WORKSPACE` directory on top of anything that was at that location in the Docker image and set `GITHUB_WORKSPACE` as the working directory. For more information, see "[Using environment variables](/actions/configuring-and-managing-workflows/using-environment-variables)" and the [WORKDIR reference](https://docs.docker.com/engine/reference/builder/#workdir) in the Docker documentation. - -#### ENTRYPOINT - -If you define `entrypoint` in an action's metadata file, it will override the `ENTRYPOINT` defined in the `Dockerfile`. For more information, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/actions/creating-actions/metadata-syntax-for-github-actions/#runsentrypoint)." - -The Docker `ENTRYPOINT` instruction has a _shell_ form and _exec_ form. The Docker `ENTRYPOINT` documentation recommends using the _exec_ form of the `ENTRYPOINT` instruction. For more information about _exec_ and _shell_ form, see the [ENTRYPOINT reference](https://docs.docker.com/engine/reference/builder/#entrypoint) in the Docker documentation. - -If you configure your container to use the _exec_ form of the `ENTRYPOINT` instruction, the `args` configured in the action's metadata file won't run in a command shell. If the action's `args` contain an environment variable, the variable will not be substituted. For example, using the following _exec_ format will not print the value stored in `$GITHUB_SHA`, but will instead print `"$GITHUB_SHA"`. - -``` -ENTRYPOINT ["echo $GITHUB_SHA"] -``` - - If you want variable substitution, then either use the _shell_ form or execute a shell directly. For example, using the following _exec_ format, you can execute a shell to print the value stored in the `GITHUB_SHA` environment variable. - -``` -ENTRYPOINT ["sh", "-c", "echo $GITHUB_SHA"] -```` - - To supply `args` defined in the action's metadata file to a Docker container that uses the _exec_ form in the `ENTRYPOINT`, we recommend creating a shell script called `entrypoint.sh` that you call from the `ENTRYPOINT` instruction: - -##### Example *Dockerfile* -``` -# Container image that runs your code -FROM debian:9.5-slim - -# Copies your code file from your action repository to the filesystem path `/` of the container -COPY entrypoint.sh /entrypoint.sh - -# Executes `entrypoint.sh` when the Docker container starts up -ENTRYPOINT ["/entrypoint.sh"] -``` - -##### Example *entrypoint.sh* file - -Using the example Dockerfile above, {% data variables.product.product_name %} will send the `args` configured in the action's metadata file as arguments to `entrypoint.sh`. Add the `#!/bin/sh` [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) at the top of the `entrypoint.sh` file to explicitly use the system's [POSIX](https://en.wikipedia.org/wiki/POSIX)-compliant shell. - -``` sh -#!/bin/sh - -# `$*` expands the `args` supplied in an `array` individually -# or splits `args` in a string separated by whitespace. -sh -c "echo $*" -``` - -Your code must be executable. Make sure the `entrypoint.sh` file has `execute` permissions before using it in a workflow. You can modify the permission from your terminal using this command: - ``` sh - chmod +x entrypoint.sh - ``` - -When an `ENTRYPOINT` shell script is not executable, you'll receive an error similar to this: - -``` sh -Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/entrypoint.sh\": permission denied": unknown -``` - -#### CMD - -If you define `args` in the action's metadata file, `args` will override the `CMD` instruction specified in the `Dockerfile`. For more information, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/actions/creating-actions/metadata-syntax-for-github-actions#runsargs)". - -If you use `CMD` in your `Dockerfile`, follow these guidelines: - -{% data reusables.github-actions.dockerfile-guidelines %} - -### Supported Linux capabilities - -{% data variables.product.prodname_actions %} supports the default Linux capabilities that Docker supports. Capabilities can't be added or removed. For more information about the default Linux capabilities that Docker supports, see "[Runtime privilege and Linux capabilities](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities)" in the Docker documentation. To learn more about Linux capabilities, see "[Overview of Linux capabilities](http://man7.org/linux/man-pages/man7/capabilities.7.html)" in the Linux man-pages. diff --git a/content/actions/creating-actions/index.md b/content/actions/creating-actions/index.md deleted file mode 100644 index 966e98032bd1..000000000000 --- a/content/actions/creating-actions/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Creating actions -intro: 'You can create your own actions, use and customize actions shared by the {% data variables.product.prodname_dotcom %} community, or write and share the actions you build.' -redirect_from: - - /articles/building-actions - - /github/automating-your-workflow-with-github-actions/building-actions - - /actions/automating-your-workflow-with-github-actions/building-actions - - /actions/building-actions - - /articles/creating-a-github-action/ -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -{% link_in_list /about-actions %} -{% link_in_list /creating-a-docker-container-action %} -{% link_in_list /creating-a-javascript-action %} -{% link_in_list /creating-a-composite-run-steps-action %} -{% link_in_list /metadata-syntax-for-github-actions %} -{% link_in_list /dockerfile-support-for-github-actions %} -{% link_in_list /setting-exit-codes-for-actions %} -{% link_in_list /publishing-actions-in-github-marketplace %} diff --git a/content/actions/creating-actions/metadata-syntax-for-github-actions.md b/content/actions/creating-actions/metadata-syntax-for-github-actions.md deleted file mode 100644 index 5dfc38f38048..000000000000 --- a/content/actions/creating-actions/metadata-syntax-for-github-actions.md +++ /dev/null @@ -1,757 +0,0 @@ ---- -title: Metadata syntax for GitHub Actions -shortTitle: Metadata syntax -intro: You can create actions to perform tasks in your repository. Actions require a metadata file that uses YAML syntax. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /articles/metadata-syntax-for-github-actions - - /github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions - - /actions/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions - - /actions/building-actions/metadata-syntax-for-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About YAML syntax for {% data variables.product.prodname_actions %} - -Docker and JavaScript actions require a metadata file. The metadata filename must be either `action.yml` or `action.yaml`. The data in the metadata file defines the inputs, outputs and main entrypoint for your action. - -Action metadata files use YAML syntax. If you're new to YAML, you can read "[Learn YAML in five minutes](https://www.codeproject.com/Articles/1214409/Learn-YAML-in-five-minutes)." - -### **`name`** - -**Required** The name of your action. {% data variables.product.prodname_dotcom %} displays the `name` in the **Actions** tab to help visually identify actions in each job. - -### **`author`** - -**Optional** The name of the action's author. - -### **`description`** - -**Required** A short description of the action. - -### **`inputs`** - -**Optional** Input parameters allow you to specify data that the action expects to use during runtime. {% data variables.product.prodname_dotcom %} stores input parameters as environment variables. Input ids with uppercase letters are converted to lowercase during runtime. We recommended using lowercase input ids. - -#### Example - -This example configures two inputs: numOctocats and octocatEyeColor. The numOctocats input is not required and will default to a value of '1'. The octocatEyeColor input is required and has no default value. Workflow files that use this action must use the `with` keyword to set an input value for octocatEyeColor. For more information about the `with` syntax, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/articles/workflow-syntax-for-github-actions/#jobsjob_idstepswith)." - -```yaml -inputs: - numOctocats: - description: 'Number of Octocats' - required: false - default: '1' - octocatEyeColor: - description: 'Eye color of the Octocats' - required: true -``` - -When you specify an input to an action in a workflow file or use a default input value, {% data variables.product.prodname_dotcom %} creates an environment variable for the input with the name `INPUT_`. The environment variable created converts input names to uppercase letters and replaces spaces with `_` characters. - -For example, if a workflow defined the numOctocats and octocatEyeColor inputs, the action code could read the values of the inputs using the `INPUT_NUMOCTOCATS` and `INPUT_OCTOCATEYECOLOR` environment variables. - -#### **`inputs.`** - -**Required** A `string` identifier to associate with the input. The value of `` is a map of the input's metadata. The `` must be a unique identifier within the `inputs` object. The `` must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`. - -#### **`inputs..description`** - -**Required** A `string` description of the input parameter. - -#### **`inputs..required`** - -**Required** A `boolean` to indicate whether the action requires the input parameter. Set to `true` when the parameter is required. - -#### **`inputs..default`** - -**Optional** A `string` representing the default value. The default value is used when an input parameter isn't specified in a workflow file. - -### **`outputs`** - -**Optional** Output parameters allow you to declare data that an action sets. Actions that run later in a workflow can use the output data set in previously run actions. For example, if you had an action that performed the addition of two inputs (x + y = z), the action could output the sum (z) for other actions to use as an input. - -If you don't declare an output in your action metadata file, you can still set outputs and use them in a workflow. For more information on setting outputs in an action, see "[Workflow commands for {% data variables.product.prodname_actions %}](/actions/reference/workflow-commands-for-github-actions/#setting-an-output-parameter)." - -#### Example - -```yaml -outputs: - sum: # id of the output - description: 'The sum of the inputs' -``` - -#### **`outputs.`** - -**Required** A `string` identifier to associate with the output. The value of `` is a map of the output's metadata. The `` must be a unique identifier within the `outputs` object. The `` must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`. - -#### **`outputs..description`** - -**Required** A `string` description of the output parameter. - -### **`outputs`** for composite run steps actions - -**Optional** `outputs` use the same parameters as `outputs.` and `outputs..description` (see "[`outputs` for {% data variables.product.prodname_actions %}](/actions/creating-actions/metadata-syntax-for-github-actions#outputs)"), but also includes the `value` token. - -#### Example - -{% raw %} -```yaml -outputs: - random-number: - description: "Random number" - value: ${{ steps.random-number-generator.outputs.random-id }} -runs: - using: "composite" - steps: - - id: random-number-generator - run: echo "::set-output name=random-id::$(echo $RANDOM)" - shell: bash -``` -{% endraw %} - -#### **`outputs.`** -**Required** The value that the output parameter will be mapped to. You can set this to a `string` or an expression with context. For example, you can use the `steps` context to set the `value` of an output to the output value of a step. - -For more information on how to use context and expression syntax, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions)". - -### **`runs`** for JavaScript actions - -**Required** Configures the path to the action's code and the application used to execute the code. - -#### Example using Node.js - -```yaml -runs: - using: 'node12' - main: 'main.js' -``` - -#### **`runs.using`** - -**Required** The application used to execute the code specified in [`main`](#runsmain). - -#### **`runs.main`** - -**Required** The file that contains your action code. The application specified in [`using`](#runsusing) executes this file. - -#### **`pre`** - -**Optional** Allows you to run a script at the start of a job, before the `main:` action begins. For example, you can use `pre:` to run a prerequisite setup script. The application specified with the [`using`](#runsusing) syntax will execute this file. The `pre:` action always runs by default but you can override this using [`pre-if`](#pre-if). - -In this example, the `pre:` action runs a script called `setup.js`: - -```yaml -runs: - using: 'node12' - pre: 'setup.js' - main: 'index.js' - post: 'cleanup.js' -``` - -#### **`pre-if`** - -**Optional** Allows you to define conditions for the `pre:` action execution. The `pre:` action will only run if the conditions in `pre-if` are met. If not set, then `pre-if` defaults to `always()`. -Note that the `step` context is unavailable, as no steps have run yet. - -In this example, `cleanup.js` only runs on Linux-based runners: - -```yaml - pre: 'cleanup.js' - pre-if: 'runner.os == linux' -``` - -#### **`post`** - -**Optional** Allows you to run a script at the end of a job, once the `main:` action has completed. For example, you can use `post:` to terminate certain processes or remove unneeded files. The application specified with the [`using`](#runsusing) syntax will execute this file. - -In this example, the `post:` action runs a script called `cleanup.js`: - -```yaml -runs: - using: 'node12' - main: 'index.js' - post: 'cleanup.js' -``` - -The `post:` action always runs by default but you can override this using `post-if`. - -#### **`post-if`** - -**Optional** Allows you to define conditions for the `post:` action execution. The `post:` action will only run if the conditions in `post-if` are met. If not set, then `post-if` defaults to `always()`. - -For example, this `cleanup.js` will only run on Linux-based runners: - -```yaml - post: 'cleanup.js' - post-if: 'runner.os == linux' -``` - -### **`runs`** for composite run steps actions - -**Required** Configures the path to the composite action, and the application used to execute the code. - -#### **`runs.using`** - -**Required** To use a composite run steps action, set this to `"composite"`. - -#### **`runs.steps`** - -**Required** The run steps that you plan to run in this action. - -##### **`runs.steps.run`** - -**Required** The command you want to run. This can be inline or a script in your action repository: -```yaml -runs: - using: "composite" - steps: - - run: ${{ github.action_path }}/test/script.sh - shell: bash -``` - -Alternatively, you can use `$GITHUB_ACTION_PATH`: - -```yaml -runs: - using: "composite" - steps: - - run: $GITHUB_ACTION_PATH/script.sh - shell: bash -``` - -For more information, see "[`github context`](/actions/reference/context-and-expression-syntax-for-github-actions#github-context)". - -##### **`runs.steps.shell`** - -**Required** The shell where you want to run the command. You can use any of the shells listed [here](/actions/reference/workflow-syntax-for-github-actions#using-a-specific-shell). - -##### **`runs.steps.name`** - -**Optional** The name of the composite run step. - -##### **`runs.steps.id`** - -**Optional** A unique identifier for the step. You can use the `id` to reference the step in contexts. For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions)". - -##### **`runs.steps.env`** - -**Optional** Sets a `map` of environment variables for only that step. If you want to modify the environment variable stored in the workflow, use {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %}`echo "{name}={value}" >> $GITHUB_ENV`{% else %}`echo "::set-env name={name}::{value}"`{% endif %} in a composite run step. - -##### **`runs.steps.working-directory`** - -**Optional** Specifies the working directory where the command is run. - -### **`runs`** for Docker actions - -**Required** Configures the image used for the Docker action. - -#### Example using a Dockerfile in your repository - -```yaml -runs: - using: 'docker' - image: 'Dockerfile' -``` - -#### Example using public Docker registry container - -```yaml -runs: - using: 'docker' - image: 'docker://debian:stretch-slim' -``` - -#### **`runs.using`** - -**Required** You must set this value to `'docker'`. - -#### **`pre-entrypoint`** - -**Optional** Allows you to run a script before the `entrypoint` action begins. For example, you can use `pre-entrypoint:` to run a prerequisite setup script. {% data variables.product.prodname_actions %} uses `docker run` to launch this action, and runs the script inside a new container that uses the same base image. This means that the runtime state is different from the main `entrypoint` container, and any states you require must be accessed in either the workspace, `HOME`, or as a `STATE_` variable. The `pre-entrypoint:` action always runs by default but you can override this using [`pre-if`](#pre-if). - -The application specified with the [`using`](#runsusing) syntax will execute this file. - -In this example, the `pre-entrypoint:` action runs a script called `setup.sh`: - -```yaml -runs: - using: 'docker' - image: 'Dockerfile' - args: - - 'bzz' - pre-entrypoint: 'setup.sh' - entrypoint: 'main.sh' -``` - -#### **`runs.image`** - -**Required** The Docker image to use as the container to run the action. The value can be the Docker base image name, a local `Dockerfile` in your repository, or a public image in Docker Hub or another registry. To reference a `Dockerfile` local to your repository, use a path relative to your action metadata file. The `docker` application will execute this file. - -#### **`runs.env`** - -**Optional** Specifies a key/value map of environment variables to set in the container environment. - -#### **`runs.entrypoint`** - -**Optional** Overrides the Docker `ENTRYPOINT` in the `Dockerfile`, or sets it if one wasn't already specified. Use `entrypoint` when the `Dockerfile` does not specify an `ENTRYPOINT` or you want to override the `ENTRYPOINT` instruction. If you omit `entrypoint`, the commands you specify in the Docker `ENTRYPOINT` instruction will execute. The Docker `ENTRYPOINT` instruction has a _shell_ form and _exec_ form. The Docker `ENTRYPOINT` documentation recommends using the _exec_ form of the `ENTRYPOINT` instruction. - -For more information about how the `entrypoint` executes, see "[Dockerfile support for {% data variables.product.prodname_actions %}](/actions/creating-actions/dockerfile-support-for-github-actions/#entrypoint)." - -#### **`post-entrypoint`** - -**Optional** Allows you to run a cleanup script once the `runs.entrypoint` action has completed. {% data variables.product.prodname_actions %} uses `docker run` to launch this action. Because {% data variables.product.prodname_actions %} runs the script inside a new container using the same base image, the runtime state is different from the main `entrypoint` container. You can access any state you need in either the workspace, `HOME`, or as a `STATE_` variable. The `post-entrypoint:` action always runs by default but you can override this using [`post-if`](#post-if). - -```yaml -runs: - using: 'docker' - image: 'Dockerfile' - args: - - 'bzz' - entrypoint: 'main.sh' - post-entrypoint: 'cleanup.sh' -``` - -#### **`runs.args`** - -**Optional** An array of strings that define the inputs for a Docker container. Inputs can include hardcoded strings. {% data variables.product.prodname_dotcom %} passes the `args` to the container's `ENTRYPOINT` when the container starts up. - -The `args` are used in place of the `CMD` instruction in a `Dockerfile`. If you use `CMD` in your `Dockerfile`, use the guidelines ordered by preference: - -{% data reusables.github-actions.dockerfile-guidelines %} - -If you need to pass environment variables into an action, make sure your action runs a command shell to perform variable substitution. For example, if your `entrypoint` attribute is set to `"sh -c"`, `args` will be run in a command shell. Alternatively, if your `Dockerfile` uses an `ENTRYPOINT` to run the same command (`"sh -c"`), `args` will execute in a command shell. - -For more information about using the `CMD` instruction with {% data variables.product.prodname_actions %}, see "[Dockerfile support for {% data variables.product.prodname_actions %}](/actions/creating-actions/dockerfile-support-for-github-actions/#cmd)." - -##### Example - -{% raw %} -```yaml -runs: - using: 'docker' - image: 'Dockerfile' - args: - - ${{ inputs.greeting }} - - 'foo' - - 'bar' -``` -{% endraw %} - -### **`branding`** - -You can use a color and [Feather](https://feathericons.com/) icon to create a badge to personalize and distinguish your action. Badges are shown next to your action name in [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=actions). - -#### Example - -```yaml -branding: - icon: 'award' - color: 'green' -``` - -#### **`branding.color`** - -The background color of the badge. Can be one of: `white`, `yellow`, `blue`, `green`, `orange`, `red`, `purple`, or `gray-dark`. - -#### **`branding.icon`** - -The name of the [Feather](https://feathericons.com/) icon to use. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
activityairplayalert-circlealert-octagon
alert-trianglealign-centeralign-justifyalign-left
align-rightanchoraperturearchive
arrow-down-circlearrow-down-leftarrow-down-rightarrow-down
arrow-left-circlearrow-leftarrow-right-circlearrow-right
arrow-up-circlearrow-up-leftarrow-up-rightarrow-up
at-signawardbar-chart-2bar-chart
battery-chargingbatterybell-offbell
bluetoothboldbook-openbook
bookmarkboxbriefcasecalendar
camera-offcameracastcheck-circle
check-squarecheckchevron-downchevron-left
chevron-rightchevron-upchevrons-downchevrons-left
chevrons-rightchevrons-upcircleclipboard
clockcloud-drizzlecloud-lightningcloud-off
cloud-raincloud-snowcloudcode
commandcompasscopycorner-down-left
corner-down-rightcorner-left-downcorner-left-upcorner-right-down
corner-right-upcorner-up-leftcorner-up-rightcpu
credit-cardcropcrosshairdatabase
deletediscdollar-signdownload-cloud
downloaddropletedit-2edit-3
editexternal-linkeye-offeye
facebookfast-forwardfeatherfile-minus
file-plusfile-textfilefilm
filterflagfolder-minusfolder-plus
foldergiftgit-branchgit-commit
git-mergegit-pull-requestglobegrid
hard-drivehashheadphonesheart
help-circlehomeimageinbox
infoitaliclayerslayout
life-buoylink-2linklist
loaderlocklog-inlog-out
mailmap-pinmapmaximize-2
maximizemenumessage-circlemessage-square
mic-offmicminimize-2minimize
minus-circleminus-squareminusmonitor
moonmore-horizontalmore-verticalmove
musicnavigation-2navigationoctagon
packagepaperclippause-circlepause
percentphone-callphone-forwardedphone-incoming
phone-missedphone-offphone-outgoingphone
pie-chartplay-circleplayplus-circle
plus-squarepluspocketpower
printerradiorefresh-ccwrefresh-cw
repeatrewindrotate-ccwrotate-cw
rsssavescissorssearch
sendserversettingsshare-2
shareshield-offshieldshopping-bag
shopping-cartshufflesidebarskip-back
skip-forwardslashsliderssmartphone
speakersquarestarstop-circle
sunsunrisesunsettablet
tagtargetterminalthermometer
thumbs-downthumbs-uptoggle-lefttoggle-right
trash-2trashtrending-downtrending-up
triangletrucktvtype
umbrellaunderlineunlockupload-cloud
uploaduser-checkuser-minususer-plus
user-xuserusersvideo-off
videovoicemailvolume-1volume-2
volume-xvolumewatchwifi-off
wifiwindx-circlex-square
xzap-offzapzoom-in
zoom-out
diff --git a/content/actions/creating-actions/publishing-actions-in-github-marketplace.md b/content/actions/creating-actions/publishing-actions-in-github-marketplace.md deleted file mode 100644 index fb35e6e2e11b..000000000000 --- a/content/actions/creating-actions/publishing-actions-in-github-marketplace.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Publishing actions in GitHub Marketplace -intro: 'You can publish actions in {% data variables.product.prodname_marketplace %} and share actions you''ve created with the {% data variables.product.prodname_dotcom %} community.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /github/automating-your-workflow-with-github-actions/publishing-actions-in-github-marketplace - - /actions/automating-your-workflow-with-github-actions/publishing-actions-in-github-marketplace - - /actions/building-actions/publishing-actions-in-github-marketplace -versions: - free-pro-team: '*' ---- - -You must accept the terms of service to publish actions in {% data variables.product.prodname_marketplace %}. - -### About publishing actions - -Before you can publish an action, you'll need to create an action in your repository. For more information, see "[Creating actions](/actions/creating-actions)." - -When you plan to publish your action to {% data variables.product.prodname_marketplace %}, you'll need ensure that the repository only includes the metadata file, code, and files necessary for the action. Creating a single repository for the action allows you tag, release, and package the code in a single unit. {% data variables.product.prodname_dotcom %} also uses the action's metadata on your {% data variables.product.prodname_marketplace %} page. - -Actions are published to {% data variables.product.prodname_marketplace %} immediately and aren't reviewed by {% data variables.product.prodname_dotcom %} as long as they meet these requirements: - -- The action must be in a public repository. -- Each repository must contain a single action. -- The action's metadata file (`action.yml` or `action.yaml`) must be in the root directory of the repository. -- The `name` in the action's metadata file must be unique. - - The `name` cannot match an existing action name published on {% data variables.product.prodname_marketplace %}. - - The `name` cannot match a user or organization on {% data variables.product.prodname_dotcom %}, unless the user or organization owner is publishing the action. For example, only the {% data variables.product.prodname_dotcom %} organization can publish an action named `github`. - - The `name` cannot match an existing {% data variables.product.prodname_marketplace %} category. - - {% data variables.product.prodname_dotcom %} reserves the names of {% data variables.product.prodname_dotcom %} features. - -### Publishing an action - -You can add the action you've created to {% data variables.product.prodname_marketplace %} by tagging it as a new release and publishing it. - -To draft a new release and publish the action to {% data variables.product.prodname_marketplace %}, follow these instructions: - -{% data reusables.repositories.navigate-to-repo %} -1. When a repository contains an action metadata file (`action.yml` or `action.yaml`), you'll see a banner to publish the action to {% data variables.product.prodname_marketplace %}. Click **Draft a release**. -![Publish this action to markeplace button](/assets/images/help/repository/publish-github-action-to-markeplace-button.png) -1. Select **Publish this action to the {% data variables.product.prodname_marketplace %}**. If you can't select the **Publish this action to the {% data variables.product.prodname_marketplace %}** checkbox, you'll need to read and accept the {% data variables.product.prodname_marketplace %} agreement first. -![Select publish to Marketplace](/assets/images/help/repository/marketplace_actions_publish.png) -1. If the labels in your metadata file contain any problems, you will see an error message. -![See notification](/assets/images/help/repository/marketplace_actions_fixerrors.png) -1. If you see any on-screen suggestions, address them by updating your metadata file. Once complete, you will see an "Everything looks good!" message. -![Fix errors](/assets/images/help/repository/marketplace_actions_looksgood.png) -1. Choose a "Primary Category" and, optionally, "Another Category" which will help people find your action in {% data variables.product.prodname_marketplace %}. -![Choose category](/assets/images/help/repository/marketplace_actions_categories.png) -1. Tag your Action with a version, and add a release title. This helps people know what changes or features the release includes. People will see the version in the action's dedicated {% data variables.product.prodname_marketplace %} page. -![Tag a version](/assets/images/help/repository/marketplace_actions_version.png) -1. Complete all other fields and click **Publish release**. Publishing requires you to use two-factor authentication. For more information, see "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication/)." -![Publish the release](/assets/images/help/repository/marketplace_actions_publishrelease.png) - -### Removing an action from {% data variables.product.prodname_marketplace %} - -To remove a published action from {% data variables.product.prodname_marketplace %}, you'll need to update each published release. Perform the following steps for each release of the action you've published to {% data variables.product.prodname_marketplace %}. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.releases %} -3. On the Releases page, to the right of the release you want to edit, click **Edit**. -![Release edit button](/assets/images/help/releases/release-edit-btn.png) -4. Select **Publish this action to the {% data variables.product.prodname_marketplace %}** to remove the check from the box. -![Publish this action button](/assets/images/help/repository/actions-marketplace-unpublish.png) -5. Click **Update release** at the bottom of the page. -![Update release button](/assets/images/help/repository/actions-marketplace-update-release.png) diff --git a/content/actions/creating-actions/setting-exit-codes-for-actions.md b/content/actions/creating-actions/setting-exit-codes-for-actions.md deleted file mode 100644 index 057c8cd2dcfa..000000000000 --- a/content/actions/creating-actions/setting-exit-codes-for-actions.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Setting exit codes for actions -shortTitle: Setting exit codes -intro: 'You can use exit codes to set the status of an action. {% data variables.product.prodname_dotcom %} displays statuses to indicate passing or failing actions.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/building-actions/setting-exit-codes-for-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About exit codes - -{% data variables.product.prodname_dotcom %} uses the exit code to set the action's check run status, which can be `success` or `failure`. - -Exit status | Check run status | Description -------------|------------------|------------ -`0` | `success` | The action completed successfully and other tasks that depends on it can begin. -Nonzero value | `failure` | Any other exit code indicates the action failed. When an action fails, all concurrent actions are canceled and future actions are skipped. The check run and check suite both get a `failure` status. - -### Setting a failure exit code in a JavaScript action - -If you are creating a JavaScript action, you can use the actions toolkit [`@actions/core`](https://github.com/actions/toolkit/tree/main/packages/core) package to log a message and set a failure exit code. For example: - -```javascript -try { - // something -} catch (error) { - core.setFailed(error.message); -} -``` - -For more information, see "[Creating a JavaScript action](/articles/creating-a-javascript-action)." - -### Setting a failure exit code in a Docker container action - -If you are creating a Docker container action, you can set a failure exit code in your `entrypoint.sh` script. For example: - -``` -if ; then - echo "Game over!" - exit 1 -fi -``` - -For more information, see "[Creating a Docker container action](/articles/creating-a-docker-container-action)." diff --git a/content/actions/guides/about-continuous-integration.md b/content/actions/guides/about-continuous-integration.md deleted file mode 100644 index f11bb2b8597c..000000000000 --- a/content/actions/guides/about-continuous-integration.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: About continuous integration -intro: 'You can create custom continuous integration (CI) and continuous deployment (CD) workflows directly in your {% data variables.product.prodname_dotcom %} repository with {% data variables.product.prodname_actions %}.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /articles/about-continuous-integration - - /github/automating-your-workflow-with-github-actions/about-continuous-integration - - /actions/automating-your-workflow-with-github-actions/about-continuous-integration - - /actions/building-and-testing-code-with-continuous-integration/about-continuous-integration -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About continuous integration - -Continuous integration (CI) is a software practice that requires frequently committing code to a shared repository. Committing code more often detects errors sooner and reduces the amount of code a developer needs to debug when finding the source of an error. Frequent code updates also make it easier to merge changes from different members of a software development team. This is great for developers, who can spend more time writing code and less time debugging errors or resolving merge conflicts. - -When you commit code to your repository, you can continuously build and test the code to make sure that the commit doesn't introduce errors. Your tests can include code linters (which check style formatting), security checks, code coverage, functional tests, and other custom checks. - -Building and testing your code requires a server. You can build and test updates locally before pushing code to a repository, or you can use a CI server that checks for new code commits in a repository. - -### About continuous integration using {% data variables.product.prodname_actions %} - -CI using {% data variables.product.prodname_actions %} offers workflows that can build the code in your repository and run your tests. Workflows can run on {% data variables.product.prodname_dotcom %}-hosted virtual machines, or on machines that you host yourself. For more information, see "[Virtual environments for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners)," and "[About self-hosted runners](/actions/automating-your-workflow-with-github-actions/about-self-hosted-runners)." - -You can configure your CI workflow to run when a {% data variables.product.product_name %} event occurs (for example, when new code is pushed to your repository), on a set schedule, or when an external event occurs using the repository dispatch webhook. - -{% data variables.product.product_name %} runs your CI tests and provides the results of each test in the pull request, so you can see whether the change in your branch introduces an error. When all CI tests in a workflow pass, the changes you pushed are ready to be reviewed by a team member or merged. When a test fails, one of your changes may have caused the failure. - -When you set up CI in your repository, {% data variables.product.product_name %} analyzes the code in your repository and recommends CI workflows based on the language and framework in your repository. For example, if you use [Node.js](https://nodejs.org/en/), {% data variables.product.product_name %} will suggest a template file that installs your Node.js packages and runs your tests. You can use the CI workflow template suggested by {% data variables.product.product_name %}, customize the suggested template, or create your own custom workflow file to run your CI tests. - -![Screenshot of suggested continuous integration templates](/assets/images/help/repository/ci-with-actions-template-picker.png) - -In addition to helping you set up CI workflows for your project, you can use {% data variables.product.prodname_actions %} to create workflows across the full software development life cycle. For example, you can use actions to deploy, package, or release your project. For more information, see "[About {% data variables.product.prodname_actions %}](/articles/about-github-actions)." - -For a definition of common terms, see "[Core concepts for {% data variables.product.prodname_actions %}](/github/automating-your-workflow-with-github-actions/core-concepts-for-github-actions)." - -### Supported languages - -{% data variables.product.product_name %} offers CI workflow templates for a variety of languages and frameworks. - -Browse the complete list of CI workflow templates offered by {% data variables.product.product_name %} in the {% if currentVersion == "free-pro-team@latest" %}[actions/starter-workflows](https://github.com/actions/starter-workflows/tree/main/ci) repository{% else %} `actions/starter-workflows` repository on {% data variables.product.product_location %}{% endif %}. - -### Notifications for workflow runs - -{% data reusables.repositories.workflow-notifications %} - -### Status badges for workflow runs - -{% data reusables.repositories.actions-workflow-status-badge-into %} - -For more information, see "[Configuring a workflow](/articles/configuring-a-workflow)." - -### Further reading - -- "[Setting up continuous integration using {% data variables.product.prodname_actions %}](/articles/setting-up-continuous-integration-using-github-actions)" -{% if currentVersion == "free-pro-team@latest" %} -- "[Managing billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)" -{% endif %} diff --git a/content/actions/guides/about-packaging-with-github-actions.md b/content/actions/guides/about-packaging-with-github-actions.md deleted file mode 100644 index 020c8e636fb2..000000000000 --- a/content/actions/guides/about-packaging-with-github-actions.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: About packaging with GitHub Actions -intro: 'You can set up workflows in {% data variables.product.prodname_actions %} to produce packages and upload them to {% data variables.product.prodname_registry %} or another package hosting provider.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/automating-your-workflow-with-github-actions/about-packaging-with-github-actions - - /actions/publishing-packages-with-github-actions/about-packaging-with-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About packaging steps - -A packaging step is a common part of a continuous integration or continuous delivery workflow. After building and testing your application, a runnable or deployable artifact is produced in the form of a package. For example, a continuous integration workflow for a Java project may run `mvn package` to produce a JAR file. Or, a CI workflow for a Node.js application may create a Docker container. - -Depending on the kind of application you're building, this package can be downloaded locally for manual testing, made available for users to download, or deployed to a staging or production environment. - -### Packaging in continuous integration workflows - -Creating a package at the end of a continuous integration workflow can help during code reviews on a pull request. After building and testing your code, a packaging step can produce a runnable or deployable artifact. Your workflow can then take that artifact and upload it as part of the workflow. - -Now, when reviewing a pull request, you'll be able to look at the workflow run and download the artifact that was produced. - -![Download artifact drop-down menu](/assets/images/help/repository/artifact-drop-down.png) - -This will let you run the code in the pull request on your machine, which can help with debugging or testing the pull request. - -### Workflows for publishing packages - -In addition to uploading packaging artifacts for testing in a continuous integration workflow, you can create workflows that build your project and publish packages to a package registry. - -* **Publish packages to {% data variables.product.prodname_registry %}** - {% data variables.product.prodname_registry %} can act as a package hosting service for many types of packages. You can choose to share your packages with all of {% data variables.product.prodname_dotcom %}, or private packages to share with collaborators or an organization. For more information, see "[About {% data variables.product.prodname_registry %}](/github/managing-packages-with-github-packages/about-github-packages)." - - You may want to publish packages to {% data variables.product.prodname_registry %} on every push into the default branch. This will allow developers on your project to always be able to run and test the latest build out of master easily, by installing it from {% data variables.product.prodname_registry %}. - -* **Publish packages to a package registry** - For many projects, publishing to a package registry is performed whenever a new version of a project is released. For example, a project that produces a JAR file may upload new releases to the Maven Central repository. Or, a .NET project may produce a nuget package and upload it to the NuGet Gallery. - - You can automate this by creating a workflow that publishes packages to a package registry on every release creation. For more information, see "[Creating releases](/github/administering-a-repository/creating-releases)." - -### Further reading - -- "[Publishing Node.js packages](/actions/automating-your-workflow-with-github-actions/publishing-nodejs-packages)" diff --git a/content/actions/guides/about-service-containers.md b/content/actions/guides/about-service-containers.md deleted file mode 100644 index 5575c35355d8..000000000000 --- a/content/actions/guides/about-service-containers.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: About service containers -intro: 'You can use service containers to connect databases, web services, memory caches, and other tools to your workflow.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/automating-your-workflow-with-github-actions/about-service-containers - - /actions/configuring-and-managing-workflows/about-service-containers -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About service containers - -Service containers are Docker containers that provide a simple and portable way for you to host services that you might need to test or operate your application in a workflow. For example, your workflow might need to run integration tests that require access to a database and memory cache. - -You can configure service containers for each job in a workflow. {% data variables.product.prodname_dotcom %} creates a fresh Docker container for each service configured in the workflow, and destroys the service container when the job completes. Steps in a job can communicate with all service containers that are part of the same job. - -{% data reusables.github-actions.docker-container-os-support %} - -### Communicating with service containers - -You can configure jobs in a workflow to run directly on a runner machine or in a Docker container. Communication between a job and its service containers is different depending on whether a job runs directly on the runner machine or in a container. - -#### Running jobs in a container - -When you run jobs in a container, {% data variables.product.prodname_dotcom %} connects service containers to the job using Docker's user-defined bridge networks. For more information, see "[Use bridge networks](https://docs.docker.com/network/bridge/)" in the Docker documentation. - -Running the job and services in a container simplifies network access. You can access a service container using the label you configure in the workflow. The hostname of the service container is automatically mapped to the label name. For example, if you create a service container with the label `redis`, the hostname of the service container is `redis`. - -You don't need to configure any ports for service containers. By default, all containers that are part of the same Docker network expose all ports to each other, and no ports are exposed outside of the Docker network. - -#### Running jobs on the runner machine - -When running jobs directly on the runner machine, you can access service containers using `localhost:` or `127.0.0.1:`. {% data variables.product.prodname_dotcom %} configures the container network to enable communication from the service container to the Docker host. - -When a job runs directly on a runner machine, the service running in the Docker container does not expose its ports to the job on the runner by default. You need to map ports on the service container to the Docker host. For more information, see "[Mapping Docker host and service container ports](/actions/automating-your-workflow-with-github-actions/about-service-containers#mapping-docker-host-and-service-container-ports)." - -### Creating service containers - -You can use the `services` keyword to create service containers that are part of a job in your workflow. For more information, see [`jobs..services`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idservices). - -This example creates a service called `redis` in a job called `container-job`. The Docker host in this example is the `node:10.18-jessie` container. - -{% raw %} -```yaml -name: Redis container example -on: push - -jobs: - # Label of the container job - container-job: - # Containers must run in Linux based operating systems - runs-on: ubuntu-latest - # Docker Hub image that `container-job` executes in - container: node:10.18-jessie - - # Service containers to run with `container-job` - services: - # Label used to access the service container - redis: - # Docker Hub image - image: redis -``` -{% endraw %} - -### Mapping Docker host and service container ports - -If your job runs in a Docker container, you do not need to map ports on the host or the service container. If your job runs directly on the runner machine, you'll need to map any required service container ports to ports on the host runner machine. - -You can map service containers ports to the Docker host using the `ports` keyword. For more information, see [`jobs..services`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idservices). - -| Value of `ports` | Description | -|------------------|--------------| -| `8080:80` | Maps TCP port 80 in the container to port 8080 on the Docker host. | -| `8080:80/udp` | Maps UDP port 80 in the container to port 8080 on the Docker host. | -| `8080/udp` | Map a randomly chosen UDP port in the container to UDP port 8080 on the Docker host. | - -When you map ports using the `ports` keyword, {% data variables.product.prodname_dotcom %} uses the `--publish` command to publish the container’s ports to the Docker host. For more information, see "[Docker container networking](https://docs.docker.com/config/containers/container-networking/)" in the Docker documentation. - -When you specify the Docker host port but not the container port, the container port is randomly assigned to a free port. {% data variables.product.prodname_dotcom %} sets the assigned container port in the service container context. For example, for a `redis` service container, if you configured the Docker host port 5432, you can access the corresponding container port using the `job.services.redis.ports[5432]` context. For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions#job-context)." - -#### Example mapping Redis ports - -This example maps the service container `redis` port 6379 to the Docker host port 6379. - -{% raw %} -```yaml -name: Redis Service Example -on: push - -jobs: - # Label of the container job - runner-job: - # You must use a Linux environment when using service containers or container jobs - runs-on: ubuntu-latest - - # Service containers to run with `runner-job` - services: - # Label used to access the service container - redis: - # Docker Hub image - image: redis - # - ports: - # Opens tcp port 6379 on the host and service container - - 6379:6379 -``` -{% endraw %} - -### Further reading - -- "[Creating Redis service containers](/actions/automating-your-workflow-with-github-actions/creating-redis-service-containers)" -- "[Creating PostgreSQL service containers](/actions/automating-your-workflow-with-github-actions/creating-postgresql-service-containers)" diff --git a/content/actions/guides/building-and-testing-java-with-ant.md b/content/actions/guides/building-and-testing-java-with-ant.md deleted file mode 100644 index 7fed692812f2..000000000000 --- a/content/actions/guides/building-and-testing-java-with-ant.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Building and testing Java with Ant -intro: You can create a continuous integration (CI) workflow in GitHub Actions to build and test your Java project with Ant. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/language-and-framework-guides/building-and-testing-java-with-ant -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -This guide shows you how to create a workflow that performs continuous integration (CI) for your Java project using the Ant build system. The workflow you create will allow you to see when commits to a pull request cause build or test failures against your default branch; this approach can help ensure that your code is always healthy. You can extend your CI workflow to upload artifacts from a workflow run. - -{% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with pre-installed software, which includes Java Development Kits (JDKs) and Ant. For a list of software and the pre-installed versions for JDK and Ant, see "[Specifications for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/reference/specifications-for-github-hosted-runners/#supported-software)". - -### Prerequisites - -You should be familiar with YAML and the syntax for {% data variables.product.prodname_actions %}. For more information, see: -- "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions)" -- "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)" - -We recommend that you have a basic understanding of Java and the Ant framework. For more information, see the [Apache Ant Manual](https://ant.apache.org/manual/). - -{% data reusables.actions.enterprise-setup-prereq %} - -### Starting with an Ant workflow template - -{% data variables.product.prodname_dotcom %} provides an Ant workflow template that will work for most Ant-based Java projects. For more information, see the [Ant workflow template](https://github.com/actions/starter-workflows/blob/main/ci/ant.yml). - -To get started quickly, you can choose the preconfigured Ant template when you create a new workflow. For more information, see the "[{% data variables.product.prodname_actions %} quickstart](/actions/quickstart)." - -You can also add this workflow manually by creating a new file in the `.github/workflows` directory of your repository. - -{% raw %} -```yaml -name: Java CI - -on: [push] - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Build with Ant - run: ant -noinput -buildfile build.xml -``` -{% endraw %} - -This workflow performs the following steps: - -1. The `checkout` step downloads a copy of your repository on the runner. -2. The `setup-java` step configures the Java 1.8 JDK. -3. The "Build with Ant" step runs the default target in your `build.xml` in non-interactive mode. - -The default workflow templates are excellent starting points when creating your build and test workflow, and you can customize the template to suit your project’s needs. - -{% data reusables.github-actions.example-github-runner %} - -{% data reusables.github-actions.java-jvm-architecture %} - -### Building and testing your code - -You can use the same commands that you use locally to build and test your code. - -The starter workflow will run the default target specified in your _build.xml_ file. Your default target will commonly be set to build classes, run tests and package classes into their distributable format, for example, a JAR file. - -If you use different commands to build your project, or you want to run a different target, you can specify those. For example, you may want to run the `jar` target that's configured in your _build-ci.xml_ file. - -{% raw %} -```yaml -steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Run the Ant jar target - run: ant -noinput -buildfile build-ci.xml jar -``` -{% endraw %} - -### Packaging workflow data as artifacts - -After your build has succeeded and your tests have passed, you may want to upload the resulting Java packages as a build artifact. This will store the built packages as part of the workflow run, and allow you to download them. Artifacts can help you test and debug pull requests in your local environment before they're merged. For more information, see "[Persisting workflow data using artifacts](/actions/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts)." - -Ant will usually create output files like JARs, EARs, or WARs in the `build/jar` directory. You can upload the contents of that directory using the `upload-artifact` action. - -{% raw %} -```yaml -steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - - run: ant -noinput -buildfile build.xml - - uses: actions/upload-artifact@v2 - with: - name: Package - path: build/jar -``` -{% endraw %} diff --git a/content/actions/guides/building-and-testing-java-with-gradle.md b/content/actions/guides/building-and-testing-java-with-gradle.md deleted file mode 100644 index 2642fd35ddc8..000000000000 --- a/content/actions/guides/building-and-testing-java-with-gradle.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Building and testing Java with Gradle -intro: You can create a continuous integration (CI) workflow in GitHub Actions to build and test your Java project with Gradle. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/language-and-framework-guides/building-and-testing-java-with-gradle -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -This guide shows you how to create a workflow that performs continuous integration (CI) for your Java project using the Gradle build system. The workflow you create will allow you to see when commits to a pull request cause build or test failures against your default branch; this approach can help ensure that your code is always healthy. You can extend your CI workflow to cache files and upload artifacts from a workflow run. - -{% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with pre-installed software, which includes Java Development Kits (JDKs) and Gradle. For a list of software and the pre-installed versions for JDK and Gradle, see "[Specifications for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/reference/specifications-for-github-hosted-runners/#supported-software)". - -### Prerequisites - -You should be familiar with YAML and the syntax for {% data variables.product.prodname_actions %}. For more information, see: -- "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions)" -- "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)" - -We recommend that you have a basic understanding of Java and the Gradle framework. For more information, see [Getting Started](https://docs.gradle.org/current/userguide/getting_started.html) in the Gradle documentation. - -{% data reusables.actions.enterprise-setup-prereq %} - -### Starting with a Gradle workflow template - -{% data variables.product.prodname_dotcom %} provides a Gradle workflow template that will work for most Gradle-based Java projects. For more information, see the [Gradle workflow template](https://github.com/actions/starter-workflows/blob/main/ci/gradle.yml). - -To get started quickly, you can choose the preconfigured Gradle template when you create a new workflow. For more information, see the "[{% data variables.product.prodname_actions %} quickstart](/actions/quickstart)." - -You can also add this workflow manually by creating a new file in the `.github/workflows` directory of your repository. - -{% raw %} -```yaml -name: Java CI - -on: [push] - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Build with Gradle - run: ./gradlew build -``` -{% endraw %} - -This workflow performs the following steps: - -1. The `checkout` step downloads a copy of your repository on the runner. -2. The `setup-java` step configures the Java 1.8 JDK. -3. The "Build with Gradle" step runs the `gradlew` wrapper script to ensure that your code builds, tests pass, and a package can be created. - -The default workflow templates are excellent starting points when creating your build and test workflow, and you can customize the template to suit your project’s needs. - -{% data reusables.github-actions.example-github-runner %} - -{% data reusables.github-actions.java-jvm-architecture %} - -### Building and testing your code - -You can use the same commands that you use locally to build and test your code. - -The starter workflow will run the `build` task by default. In the default Gradle configuration, this command will download dependencies, build classes, run tests, and package classes into their distributable format, for example, a JAR file. - -If you use different commands to build your project, or you want to use a different task, you can specify those. For example, you may want to run the `package` task that's configured in your _ci.gradle_ file. - -{% raw %} -```yaml -steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Run the Gradle package task - run: ./gradlew -b ci.gradle package -``` -{% endraw %} - -### Caching dependencies - -You can cache your dependencies to speed up your workflow runs. After a successful run, your local Gradle package cache will be stored on GitHub Actions infrastructure. In future workflow runs, the cache will be restored so that dependencies don't need to be downloaded from remote package repositories. For more information, see "[Caching dependencies to speed up workflows](/actions/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows)" and the [`cache` action](https://github.com/marketplace/actions/cache). - -{% raw %} -```yaml -steps: - - uses: actions/checkout@v2 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Cache Gradle packages - uses: actions/cache@v2 - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} - restore-keys: ${{ runner.os }}-gradle - - name: Build with Gradle - run: ./gradlew build -``` -{% endraw %} - -This workflow will save the contents of your local Gradle package cache, located in the `.gradle/caches` directory of the runner's home directory. The cache key will be the hashed contents of the gradle build files, so changes to them will invalidate the cache. - -### Packaging workflow data as artifacts - -After your build has succeeded and your tests have passed, you may want to upload the resulting Java packages as a build artifact. This will store the built packages as part of the workflow run, and allow you to download them. Artifacts can help you test and debug pull requests in your local environment before they're merged. For more information, see "[Persisting workflow data using artifacts](/actions/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts)." - -Gradle will usually create output files like JARs, EARs, or WARs in the `build/libs` directory. You can upload the contents of that directory using the `upload-artifact` action. - -{% raw %} -```yaml -steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - - run: ./gradlew build - - uses: actions/upload-artifact@v2 - with: - name: Package - path: build/libs -``` -{% endraw %} diff --git a/content/actions/guides/building-and-testing-java-with-maven.md b/content/actions/guides/building-and-testing-java-with-maven.md deleted file mode 100644 index 278d8b1ed2fd..000000000000 --- a/content/actions/guides/building-and-testing-java-with-maven.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Building and testing Java with Maven -intro: You can create a continuous integration (CI) workflow in GitHub Actions to build and test your Java project with Maven. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/language-and-framework-guides/building-and-testing-java-with-maven -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -This guide shows you how to create a workflow that performs continuous integration (CI) for your Java project using the Maven software project management tool. The workflow you create will allow you to see when commits to a pull request cause build or test failures against your default branch; this approach can help ensure that your code is always healthy. You can extend your CI workflow to cache files and upload artifacts from a workflow run. - -{% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with pre-installed software, which includes Java Development Kits (JDKs) and Maven. For a list of software and the pre-installed versions for JDK and Maven, see "[Specifications for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/reference/specifications-for-github-hosted-runners/#supported-software)". - -### Prerequisites - -You should be familiar with YAML and the syntax for {% data variables.product.prodname_actions %}. For more information, see: -- "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions)" -- "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)" - -We recommend that you have a basic understanding of Java and the Maven framework. For more information, see the [Maven Getting Started Guide](http://maven.apache.org/guides/getting-started/index.html) in the Maven documentation. - -{% data reusables.actions.enterprise-setup-prereq %} - -### Starting with a Maven workflow template - -{% data variables.product.prodname_dotcom %} provides a Maven workflow template that will work for most Maven-based Java projects. For more information, see the [Maven workflow template](https://github.com/actions/starter-workflows/blob/main/ci/maven.yml). - -To get started quickly, you can choose the preconfigured Maven template when you create a new workflow. For more information, see the "[{% data variables.product.prodname_actions %} quickstart](/actions/quickstart)." - -You can also add this workflow manually by creating a new file in the `.github/workflows` directory of your repository. - -{% raw %} -```yaml -name: Java CI - -on: [push] - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Build with Maven - run: mvn -B package --file pom.xml -``` -{% endraw %} - -This workflow performs the following steps: - -1. The `checkout` step downloads a copy of your repository on the runner. -2. The `setup-java` step configures the Java 1.8 JDK. -3. The "Build with Maven" step runs the Maven `package` target in non-interactive mode to ensure that your code builds, tests pass, and a package can be created. - -The default workflow templates are excellent starting points when creating your build and test workflow, and you can customize the template to suit your project’s needs. - -{% data reusables.github-actions.example-github-runner %} - -{% data reusables.github-actions.java-jvm-architecture %} - -### Building and testing your code - -You can use the same commands that you use locally to build and test your code. - -The starter workflow will run the `package` target by default. In the default Maven configuration, this command will download dependencies, build classes, run tests, and package classes into their distributable format, for example, a JAR file. - -If you use different commands to build your project, or you want to use a different target, you can specify those. For example, you may want to run the `verify` target that's configured in a _pom-ci.xml_ file. - -{% raw %} -```yaml -steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Run the Maven verify phase - run: mvn -B verify --file pom-ci.xml -``` -{% endraw %} - -### Caching dependencies - -You can cache your dependencies to speed up your workflow runs. After a successful run, your local Maven repository will be stored on GitHub Actions infrastructure. In future workflow runs, the cache will be restored so that dependencies don't need to be downloaded from remote Maven repositories. For more information, see "[Caching dependencies to speed up workflows](/actions/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows)" and the [`cache` action](https://github.com/marketplace/actions/cache). - -{% raw %} -```yaml -steps: - - uses: actions/checkout@v2 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Cache Maven packages - uses: actions/cache@v2 - with: - path: ~/.m2 - key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2 - - name: Build with Maven - run: mvn -B package --file pom.xml -``` -{% endraw %} - -This workflow will save the contents of your local Maven repository, located in the `.m2` directory of the runner's home directory. The cache key will be the hashed contents of _pom.xml_, so changes to _pom.xml_ will invalidate the cache. - -### Packaging workflow data as artifacts - -After your build has succeeded and your tests have passed, you may want to upload the resulting Java packages as a build artifact. This will store the built packages as part of the workflow run, and allow you to download them. Artifacts can help you test and debug pull requests in your local environment before they're merged. For more information, see "[Persisting workflow data using artifacts](/actions/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts)." - -Maven will usually create output files like JARs, EARs, or WARs in the `target` directory. To upload those as artifacts, you can copy them into a new directory that contains artifacts to upload. For example, you can create a directory called `staging`. Then you can upload the contents of that directory using the `upload-artifact` action. - -{% raw %} -```yaml -steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - - run: mvn -B package --file pom.xml - - run: mkdir staging && cp target/*.jar staging - - uses: actions/upload-artifact@v2 - with: - name: Package - path: staging -``` -{% endraw %} diff --git a/content/actions/guides/building-and-testing-nodejs.md b/content/actions/guides/building-and-testing-nodejs.md deleted file mode 100644 index b24bc1e181db..000000000000 --- a/content/actions/guides/building-and-testing-nodejs.md +++ /dev/null @@ -1,276 +0,0 @@ ---- -title: Building and testing Node.js -intro: You can create a continuous integration (CI) workflow to build and test your Node.js project. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/automating-your-workflow-with-github-actions/using-nodejs-with-github-actions - - /actions/language-and-framework-guides/using-nodejs-with-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -This guide shows you how to create a continuous integration (CI) workflow that builds and tests Node.js code. If your CI tests pass, you may want to deploy your code or publish a package. - -### Prerequisites - -We recommend that you have a basic understanding of Node.js, YAML, workflow configuration options, and how to create a workflow file. For more information, see: - -- "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)" -- "[Getting started with Node.js](https://nodejs.org/en/docs/guides/getting-started-guide/)" - -{% data reusables.actions.enterprise-setup-prereq %} - -### Starting with the Node.js workflow template - -{% data variables.product.prodname_dotcom %} provides a Node.js workflow template that will work for most Node.js projects. This guide includes npm and Yarn examples that you can use to customize the template. For more information, see the [Node.js workflow template](https://github.com/actions/starter-workflows/blob/main/ci/node.js.yml). - -To get started quickly, add the template to the `.github/workflows` directory of your repository. - -{% raw %} -```yaml{:copy} -name: Node.js CI - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [8.x, 10.x, 12.x] - - steps: - - uses: actions/checkout@v2 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - run: npm install - - run: npm run build --if-present - - run: npm test - env: - CI: true -``` -{% endraw %} - -{% data reusables.github-actions.example-github-runner %} - -### Specifying the Node.js version - -The easiest way to specify a Node.js version is by using the `setup-node` action provided by {% data variables.product.prodname_dotcom %}. For more information see, [`setup-node`](https://github.com/actions/setup-node/). - -The `setup-node` action takes a Node.js version as an input and configures that version on the runner. The `setup-node` action finds a specific version of Node.js from the tools cache on each runner and adds the necessary binaries to `PATH`, which persists for the rest of the job. Using the `setup-node` action is the recommended way of using Node.js with {% data variables.product.prodname_actions %} because it ensures consistent behavior across different runners and different versions of Node.js. If you are using a self-hosted runner, you must install Node.js and add it to `PATH`. - -The template includes a matrix strategy that builds and tests your code with three Node.js versions: 8.x, 10.x, and 12.x. The 'x' is a wildcard character that matches the latest minor and patch release available for a version. Each version of Node.js specified in the `node-version` array creates a job that runs the same steps. - -Each job can access the value defined in the matrix `node-version` array using the `matrix` context. The `setup-node` action uses the context as the `node-version` input. The `setup-node` action configures each job with a different Node.js version before building and testing code. For more information about matrix strategies and contexts, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix)" and "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions)." - -{% raw %} -```yaml -strategy: - matrix: - node-version: [8.x, 10.x, 12.x] - -steps: -- uses: actions/checkout@v2 -- name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} -``` -{% endraw %} - -Alternatively, you can build and test with exact Node.js versions. - -```yaml -strategy: - matrix: - node-version: [8.16.2, 10.17.0] -``` - -Or, you can build and test using a single version of Node.js too. - -{% raw %} -```yaml -name: Node.js CI - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Use Node.js - uses: actions/setup-node@v1 - with: - node-version: '12.x' - - run: npm install - - run: npm run build --if-present - - run: npm test - env: - CI: true -``` -{% endraw %} - -If you don't specify a Node.js version, {% data variables.product.prodname_dotcom %} uses the environment's default Node.js version. For more information, see "[Specifications for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/reference/specifications-for-github-hosted-runners/#supported-software)". - -### Installing dependencies - -{% data variables.product.prodname_dotcom %}-hosted runners have npm and Yarn dependency managers installed. You can use npm and Yarn to install dependencies in your workflow before building and testing your code. The Windows and Linux {% data variables.product.prodname_dotcom %}-hosted runners also have Grunt, Gulp, and Bower installed. - -You can also cache dependencies to speed up your workflow. For more information, see "[Caching dependencies to speed up your workflow](/actions/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows)." - -#### Example using npm - -This example installs the dependencies defined in the *package.json* file. For more information, see [`npm install`](https://docs.npmjs.com/cli/install). - -```yaml -steps: -- uses: actions/checkout@v2 -- name: Use Node.js - uses: actions/setup-node@v1 - with: - node-version: '12.x' -- name: Install dependencies - run: npm install -``` - -Using `npm ci` installs the versions in the *package-lock.json* or *npm-shrinkwrap.json* file and prevents updates to the lock file. Using `npm ci` is generally faster than running `npm install`. For more information, see [`npm ci`](https://docs.npmjs.com/cli/ci.html) and "[Introducing `npm ci` for faster, more reliable builds](https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable)." - -{% raw %} -```yaml -steps: -- uses: actions/checkout@v2 -- name: Use Node.js - uses: actions/setup-node@v1 - with: - node-version: '12.x' -- name: Install dependencies - run: npm ci -``` -{% endraw %} - -#### Example using Yarn - -This example installs the dependencies defined in the *package.json* file. For more information, see [`yarn install`](https://yarnpkg.com/en/docs/cli/install). - -```yaml -steps: -- uses: actions/checkout@v2 -- name: Use Node.js - uses: actions/setup-node@v1 - with: - node-version: '12.x' -- name: Install dependencies - run: yarn -``` - -Alternatively, you can pass `--frozen-lockfile` to install the versions in the *yarn.lock* file and prevent updates to the *yarn.lock* file. - -```yaml -steps: -- uses: actions/checkout@v2 -- name: Use Node.js - uses: actions/setup-node@v1 - with: - node-version: '12.x' -- name: Install dependencies - run: yarn --frozen-lockfile -``` - -#### Example using a private registry and creating the .npmrc file - -{% data reusables.github-actions.setup-node-intro %} - -To authenticate to your private registry, you'll need to store your npm authentication token as a secret in your repository settings. For example, create a secret called `NPM_TOKEN`. For more information, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - -In the example below, the secret `NPM_TOKEN` stores the npm authentication token. The `setup-node` action configures the *.npmrc* file to read the npm authentication token from the `NODE_AUTH_TOKEN` environment variable. When using the `setup-node` action to create an *.npmrc* file, you must set the `NPM_AUTH_TOKEN` environment variable with the secret that contains your npm authentication token. - -Before installing dependencies, use the `setup-node` action to create the *.npmrc* file. The action has two input parameters. The `node-version` parameter sets the Node.js version, and the `registry-url` parameter sets the default registry. If your package registry uses scopes, you must use the `scope` parameter. For more information, see [`npm-scope`](https://docs.npmjs.com/misc/scope). - -{% raw %} -```yaml -steps: -- uses: actions/checkout@v2 -- name: Use Node.js - uses: actions/setup-node@v1 - with: - always-auth: true - node-version: '12.x' - registry-url: https://registry.npmjs.org - scope: '@octocat' -- name: Install dependencies - run: npm ci - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} -``` -{% endraw %} - -The example above creates an *.npmrc* file with the following contents: - -``` -//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN} -@octocat:registry=https://registry.npmjs.org/ -always-auth=true -``` - -#### Example caching dependencies - -You can cache dependencies using a unique key, and restore the dependencies when you run future workflows using the `cache` action. For more information, see "[Caching dependencies to speed up workflows](/actions/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows)" and the [`cache` action](https://github.com/marketplace/actions/cache). - -{% raw %} -```yaml -steps: -- uses: actions/checkout@v2 -- name: Use Node.js - uses: actions/setup-node@v1 - with: - node-version: '12.x' -- name: Cache Node.js modules - uses: actions/cache@v2 - with: - # npm cache files are stored in `~/.npm` on Linux/macOS - path: ~/.npm - key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.OS }}-node- - ${{ runner.OS }}- -- name: Install dependencies - run: npm ci -``` -{% endraw %} - -### Building and testing your code - -You can use the same commands that you use locally to build and test your code. For example, if you run `npm run build` to run build steps defined in your *package.json* file and `npm test` to run your test suite, you would add those commands in your workflow file. - -```yaml -steps: -- uses: actions/checkout@v2 -- name: Use Node.js - uses: actions/setup-node@v1 - with: - node-version: '12.x' -- run: npm install -- run: npm run build --if-present -- run: npm test -``` - -### Packaging workflow data as artifacts - -You can save artifacts from your build and test steps to view after a job completes. For example, you may need to save log files, core dumps, test results, or screenshots. For more information, see "[Persisting workflow data using artifacts](/actions/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts)." - -### Publishing to package registries - -You can configure your workflow to publish your Node.js package to a package registry after your CI tests pass. For more information about publishing to npm and {% data variables.product.prodname_registry %}, see "[Publishing Node.js packages](/actions/automating-your-workflow-with-github-actions/publishing-nodejs-packages)." diff --git a/content/actions/guides/building-and-testing-python.md b/content/actions/guides/building-and-testing-python.md deleted file mode 100644 index 2dcf401f6dfa..000000000000 --- a/content/actions/guides/building-and-testing-python.md +++ /dev/null @@ -1,427 +0,0 @@ ---- -title: Building and testing Python -intro: You can create a continuous integration (CI) workflow to build and test your Python project. -redirect_from: - - /actions/automating-your-workflow-with-github-actions/using-python-with-github-actions - - /actions/language-and-framework-guides/using-python-with-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -This guide shows you how to build, test, and publish a Python package. - -{% data variables.product.prodname_dotcom %}-hosted runners have a tools cache with pre-installed software, which includes Python and PyPy. You don't have to install anything! For a full list of up-to-date software and the pre-installed versions of Python and PyPy, see "[Specifications for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/reference/specifications-for-github-hosted-runners/#supported-software)". - -### Prerequisites - -You should be familiar with YAML and the syntax for {% data variables.product.prodname_actions %}. For more information, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -We recommend that you have a basic understanding of Python, PyPy, and pip. For more information, see: -- [Getting started with Python](https://www.python.org/about/gettingstarted/) -- [PyPy](https://pypy.org/) -- [Pip package manager](https://pypi.org/project/pip/) - -{% data reusables.actions.enterprise-setup-prereq %} - -### Starting with the Python workflow template - -{% data variables.product.prodname_dotcom %} provides a Python workflow template that should work for most Python projects. This guide includes examples that you can use to customize the template. For more information, see the [Python workflow template](https://github.com/actions/starter-workflows/blob/main/ci/python-package.yml). - -To get started quickly, add the template to the `.github/workflows` directory of your repository. - -{% raw %} -```yaml -name: Python package - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [2.7, 3.5, 3.6, 3.7, 3.8] - - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install flake8 pytest - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - - name: Lint with flake8 - run: | - # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: Test with pytest - run: | - pytest -``` -{% endraw %} - -### Specifying a Python version - -To use a pre-installed version of Python or PyPy on a {% data variables.product.prodname_dotcom %}-hosted runner, use the `setup-python` action. This action finds a specific version of Python or PyPy from the tools cache on each runner and adds the necessary binaries to `PATH`, which persists for the rest of the job. If a specific version of Python is not pre-installed in the tools cache, the `setup-python` action will download and set up the appropriate version from the [`python-versions`](https://github.com/actions/python-versions) repository. - -Using the `setup-python` action is the recommended way of using Python with {% data variables.product.prodname_actions %} because it ensures consistent behavior across different runners and different versions of Python. If you are using a self-hosted runner, you must install Python and add it to `PATH`. For more information, see the [`setup-python` action](https://github.com/marketplace/actions/setup-python). - -The table below describes the locations for the tools cache in each {% data variables.product.prodname_dotcom %}-hosted runner. - -|| Ubuntu | Mac | Windows | -|------|-------|------|----------| -|**Tool Cache Directory** |`/opt/hostedtoolcache/*`|`/Users/runner/hostedtoolcache/*`|`C:\hostedtoolcache\windows\*`| -|**Python Tool Cache**|`/opt/hostedtoolcache/Python/*`|`/Users/runner/hostedtoolcache/Python/*`|`C:\hostedtoolcache\windows\Python\*`| -|**PyPy Tool Cache**|`/opt/hostedtoolcache/PyPy/*`|`/Users/runner/hostedtoolcache/PyPy/*`|`C:\hostedtoolcache\windows\PyPy\*`| - -If you are using a self-hosted runner, you can configure the runner to use the `setup-python` action to manage your dependencies. For more information, see [using setup-python with a self-hosted runner](https://github.com/actions/setup-python#using-setup-python-with-a-self-hosted-runner) in the `setup-python` README. - -{% data variables.product.prodname_dotcom %} supports semantic versioning syntax. For more information, see "[Using semantic versioning](https://docs.npmjs.com/about-semantic-versioning#using-semantic-versioning-to-specify-update-types-your-package-can-accept)" and the "[Semantic versioning specification](https://semver.org/)." - -#### Using multiple Python versions - -{% raw %} -```yaml -name: Python package - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - strategy: - # You can use PyPy versions in python-version. - # For example, pypy2 and pypy3 - matrix: - python-version: [2.7, 3.5, 3.6, 3.7, 3.8] - - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - # You can test your matrix by printing the current Python version - - name: Display Python version - run: python -c "import sys; print(sys.version)" -``` -{% endraw %} - -#### Using a specific Python version - -You can configure a specific version of python. For example, 3.8. Alternatively, you can semantic version syntax to get the latest minor release. This example uses the latest minor release of Python 3. - -{% raw %} -```yaml -name: Python package - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.x - uses: actions/setup-python@v2 - with: - # Semantic version range syntax or exact version of a Python version - python-version: '3.x' - # Optional - x64 or x86 architecture, defaults to x64 - architecture: 'x64' - # You can test your matrix by printing the current Python version - - name: Display Python version - run: python -c "import sys; print(sys.version)" -``` -{% endraw %} - -#### Excluding a version - -If you specify a version of Python that is not available, `setup-python` fails with an error such as: `##[error]Version 3.4 with arch x64 not found`. The error message includes the available versions. - -You can also use the `exclude` keyword in your workflow if there is a configuration of Python that you do not wish to run. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategy)." - -{% raw %} -```yaml -name: Python package - -on: [push] - -jobs: - build: - - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - python-version: [2.7, 3.6, 3.7, 3.8, pypy2, pypy3] - exclude: - - os: macos-latest - python-version: 3.6 - - os: windows-latest - python-version: 3.6 -``` -{% endraw %} - -#### Using the default Python version - -We recommend using `setup-python` to configure the version of Python used in your workflows because it helps make your dependencies explicit. If you don't use `setup-python`, the default version of Python set in `PATH` is used in any shell when you call `python`. The default version of Python varies between {% data variables.product.prodname_dotcom %}-hosted runners, which may cause unexpected changes or use an older version than expected. - -| {% data variables.product.prodname_dotcom %}-hosted runner | Description | -|----|----| -| Ubuntu | Ubuntu runners have multiple versions of system Python installed under `/usr/bin/python` and `/usr/bin/python3`. The Python versions that come packaged with Ubuntu are in addition to the versions that {% data variables.product.prodname_dotcom %} installs in the tools cache. | -| Windows | Excluding the versions of Python that are in the tools cache, Windows does not ship with an equivalent version of system Python. To maintain consistent behavior with other runners and to allow Python to be used out-of-the-box without the `setup-python` action, {% data variables.product.prodname_dotcom %} adds a few versions from the tools cache to `PATH`.| -| macOS | The macOS runners have more than one version of system Python installed, in addition to the versions that are part of the tools cache. The system Python versions are located in the `/usr/local/Cellar/python/*` directory. | - -### Installing dependencies - -{% data variables.product.prodname_dotcom %}-hosted runners have the pip package manager installed. You can use pip to install dependencies from the PyPI package registry before building and testing your code. For example, the YAML below installs or upgrades the `pip` package installer and the `setuptools` and `wheel` packages. - -You can also cache dependencies to speed up your workflow. For more information, see "[Caching dependencies to speed up your workflow](/actions/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows)." - -{% raw %} -```yaml -steps: -- uses: actions/checkout@v2 -- name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.x' -- name: Install dependencies - run: python -m pip install --upgrade pip setuptools wheel -``` -{% endraw %} - -#### Requirements file - -After you update `pip`, a typical next step is to install dependencies from *requirements.txt*. - -{% raw %} -```yaml -steps: -- uses: actions/checkout@v2 -- name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.x' -- name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt -``` -{% endraw %} - -#### Caching Dependencies - -You can cache pip dependencies using a unique key, and restore the dependencies when you run future workflows using the [`cache`](https://github.com/marketplace/actions/cache) action. For more information, see "[Caching dependencies to speed up workflows](/actions/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows)." - -Pip caches dependencies in different locations, depending on the operating system of the runner. The path you'll need to cache may differ from the Ubuntu example below depending on the operating system you use. For more information, see [Python caching examples](https://github.com/actions/cache/blob/main/examples.md#python---pip). - -{% raw %} -```yaml -steps: -- uses: actions/checkout@v2 -- name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: '3.x' -- name: Cache pip - uses: actions/cache@v2 - with: - # This path is specific to Ubuntu - path: ~/.cache/pip - # Look to see if there is a cache hit for the corresponding requirements file - key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - ${{ runner.os }}- -- name: Install dependencies - run: pip install -r requirements.txt -``` -{% endraw %} - -{% note %} - -**Note:** Depending on the number of dependencies, it may be faster to use the dependency cache. Projects with many large dependencies should see a performance increase as it cuts down the time required for downloading. Projects with fewer dependencies may not see a significant performance increase and may even see a slight decrease due to how pip installs cached dependencies. The performance varies from project to project. - -{% endnote %} - -### Testing your code - -You can use the same commands that you use locally to build and test your code. - -#### Testing with pytest and pytest-cov - -This example installs or upgrades `pytest` and `pytest-cov`. Tests are then run and output in JUnit format while code coverage results are output in Cobertura. For more information, see [JUnit](https://junit.org/junit5/) and [Cobertura](https://cobertura.github.io/cobertura/). - -{% raw %} -```yaml -steps: -- uses: actions/checkout@v2 -- name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.x' -- name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt -- name: Test with pytest - run: | - pip install pytest - pip install pytest-cov - pytest tests.py --doctest-modules --junitxml=junit/test-results.xml --cov=com --cov-report=xml --cov-report=html -``` -{% endraw %} - -#### Using Flake8 to lint code - -The following example installs or upgrades `flake8` and uses it to lint all files. For more information, see [Flake8](http://flake8.pycqa.org/en/latest/). - -{% raw %} -```yaml -steps: -- uses: actions/checkout@v2 -- name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.x' -- name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt -- name: Lint with flake8 - run: | - pip install flake8 - flake8 . -``` -{% endraw %} - -#### Running tests with tox - -With {% data variables.product.prodname_actions %}, you can run tests with tox and spread the work across multiple jobs. You'll need to invoke tox using the `-e py` option to choose the version of Python in your `PATH`, rather than specifying a specific version. For more information, see [tox](https://tox.readthedocs.io/en/latest/). - -{% raw %} -```yaml -name: Python package - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - strategy: - matrix: - python: [2.7, 3.7, 3.8] - - steps: - - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python }} - - name: Install Tox and any other packages - run: pip install tox - - name: Run Tox - # Run tox using the version of Python in `PATH` - run: tox -e py -``` -{% endraw %} - -### Packaging workflow data as artifacts - -You can upload artifacts to view after a workflow completes. For example, you may need to save log files, core dumps, test results, or screenshots. For more information, see "[Persisting workflow data using artifacts](/github/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts)." - -The following example demonstrates how you can use the `upload-artifact` action to archive test results from running `pytest`. For more information, see the [`upload-artifact` action](https://github.com/actions/upload-artifact). - -{% raw %} -```yaml -name: Python package - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [2.7, 3.5, 3.6, 3.7, 3.8] - - steps: - - uses: actions/checkout@v2 - - name: Setup Python # Set Python version - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - # Install pip and pytest - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install pytest - - name: Test with pytest - run: pytest tests.py --doctest-modules --junitxml=junit/test-results-${{ matrix.python-version }}.xml - - name: Upload pytest test results - uses: actions/upload-artifact@v2 - with: - name: pytest-results-${{ matrix.python-version }} - path: junit/test-results-${{ matrix.python-version }}.xml - # Use always() to always run this step to publish test results when there are test failures - if: ${{ always() }} -``` -{% endraw %} - -### Publishing to package registries - -You can configure your workflow to publish your Python package to any package registry you'd like when your CI tests pass. - -You can store any access tokens or credentials needed to publish your package using repository secrets. The following example creates and publishes a package to PyPI using `twine` and `dist`. For more information, see "[Creating and using encrypted secrets](/github/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - -{% raw %} -```yaml -name: Upload Python Package - -on: - release: - types: [created] - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.x' - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install setuptools wheel twine - - name: Build and publish - env: - TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} - TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} - run: | - python setup.py sdist bdist_wheel - twine upload dist/* -``` -{% endraw %} - -For more information about the template workflow, see [`python-publish`](https://github.com/actions/starter-workflows/blob/main/ci/python-publish.yml). diff --git a/content/actions/guides/caching-dependencies-to-speed-up-workflows.md b/content/actions/guides/caching-dependencies-to-speed-up-workflows.md deleted file mode 100644 index 497bcad57e58..000000000000 --- a/content/actions/guides/caching-dependencies-to-speed-up-workflows.md +++ /dev/null @@ -1,192 +0,0 @@ ---- -title: Caching dependencies to speed up workflows -shortTitle: Caching dependencies -intro: 'To make your workflows faster and more efficient, you can create and use caches for dependencies and other commonly reused files.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /github/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows - - /actions/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows - - /actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows -versions: - free-pro-team: '*' ---- - -### About caching workflow dependencies - -Workflow runs often reuse the same outputs or downloaded dependencies from one run to another. For example, package and dependency management tools such as Maven, Gradle, npm, and Yarn keep a local cache of downloaded dependencies. - -Jobs on {% data variables.product.prodname_dotcom %}-hosted runners start in a clean virtual environment and must download dependencies each time, causing increased network utilization, longer runtime, and increased cost. To help speed up the time it takes to recreate these files, {% data variables.product.prodname_dotcom %} can cache dependencies you frequently use in workflows. - -To cache dependencies for a job, you'll need to use {% data variables.product.prodname_dotcom %}'s `cache` action. The action retrieves a cache identified by a unique key. For more information, see [`actions/cache`](https://github.com/actions/cache). - -{% warning %} - -**Warning**: We recommend that you don't store any sensitive information in the cache of public repositories. For example, sensitive information can include access tokens or login credentials stored in a file in the cache path. Also, command line interface (CLI) programs like `docker login` can save access credentials in a configuration file. Anyone with read access can create a pull request on a repository and access the contents of the cache. Forks of a repository can also create pull requests on the base branch and access caches on the base branch. - -{% endwarning %} - -### Comparing artifacts and dependency caching - -Artifacts and caching are similar because they provide the ability to store files on {% data variables.product.prodname_dotcom %}, but each feature offers different use cases and cannot be used interchangeably. - -- Use caching when you want to reuse files that don't change often between jobs or workflow runs. -- Use artifacts when you want to save files produced by a job to view after a workflow has ended. For more information, see "[Persisting workflow data using artifacts](/github/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts)." - -### Restrictions for accessing a cache - -With `v2` of the `cache` action, you can access the cache in workflows triggered by any event that has a `GITHUB_REF`. If you are using `v1` of the `cache` action, you can only access the cache in workflows triggered by `push` and `pull_request` events, except for the `pull_request` `closed` event. For more information, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." - -A workflow can access and restore a cache created in the current branch, the base branch (including base branches of forked repositories), or the default branch (usually `main`). For example, a cache created on the default branch would be accessible from any pull request. Also, if the branch `feature-b` has the base branch `feature-a`, a workflow triggered on `feature-b` would have access to caches created in the default branch (`main`), `feature-a`, and `feature-b`. - -Access restrictions provide cache isolation and security by creating a logical boundary between different workflows and branches. For example, a cache created for the branch `feature-a` (with the base `main`) would not be accessible to a pull request for the branch `feature-b` (with the base `main`). - -### Using the `cache` action - -The `cache` action will attempt to restore a cache based on the `key` you provide. When the action finds a cache, the action restores the cached files to the `path` you configure. - -If there is no exact match, the action creates a new cache entry if the job completes successfully. The new cache will use the `key` you provided and contains the files in the `path` directory. - -You can optionally provide a list of `restore-keys` to use when the `key` doesn't match an existing cache. A list of `restore-keys` is useful when you are restoring a cache from another branch because `restore-keys` can partially match cache keys. For more information about matching `restore-keys`, see "[Matching a cache key](#matching-a-cache-key)." - -For more information, see [`actions/cache`](https://github.com/actions/cache). - -#### Input parameters for the `cache` action - -- `key`: **Required** The key created when saving a cache and the key used to search for a cache. Can be any combination of variables, context values, static strings, and functions. Keys have a maximum length of 512 characters, and keys longer than the maximum length will cause the action to fail. -- `path`: **Required** The file path on the runner to cache or restore. The path can be an absolute path or relative to the working directory. - - With `v2` of the `cache` action, you can specify a single path, or multiple paths as a list. Paths can be either directories or single files, and glob patterns are supported. - - With `v1` of the `cache` action, only a single path is supported and it must be a directory. You cannot cache a single file. -- `restore-keys`: **Optional** An ordered list of alternative keys to use for finding the cache if no cache hit occurred for `key`. - -#### Output parameters for the `cache` action - -- `cache-hit`: A boolean value to indicate an exact match was found for the key. - -#### Example using the `cache` action - -This example creates a new cache when the packages in `package-lock.json` file change, or when the runner's operating system changes. The cache key uses contexts and expressions to generate a key that includes the runner's operating system and a SHA-256 hash of the `package-lock.json` file. - -{% raw %} -```yaml -name: Caching with npm - -on: push - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - - name: Cache node modules - uses: actions/cache@v2 - env: - cache-name: cache-node-modules - with: - # npm cache files are stored in `~/.npm` on Linux/macOS - path: ~/.npm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - name: Install Dependencies - run: npm install - - - name: Build - run: npm build - - - name: Test - run: npm test - -``` -{% endraw %} - -When `key` matches an existing cache, it's called a cache hit, and the action restores the cached files to the `path` directory. - -When `key` doesn't match an existing cache, it's called a cache miss, and a new cache is created if the job completes successfully. When a cache miss occurs, the action searches for alternate keys called `restore-keys`. - -1. If you provide `restore-keys`, the `cache` action sequentially searches for any caches that match the list of `restore-keys`. - - When there is an exact match, the action restores the files in the cache to the `path` directory. - - If there are no exact matches, the action searches for partial matches of the restore keys. When the action finds a partial match, the most recent cache is restored to the `path` directory. -1. The `cache` action completes and the next workflow step in the job runs. -1. If the job completes successfully, the action creates a new cache with the contents of the `path` directory. - -To cache files in more than one directory, you will need a step that uses the [`cache`](https://github.com/actions/cache) action for each directory. Once you create a cache, you cannot change the contents of an existing cache but you can create a new cache with a new key. - -#### Using contexts to create cache keys - -A cache key can include any of the contexts, functions, literals, and operators supported by {% data variables.product.prodname_actions %}. For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions)." - -Using expressions to create a `key` allows you to automatically create a new cache when dependencies have changed. For example, you can create a `key` using an expression that calculates the hash of an npm `package-lock.json` file. - -{% raw %} -``` -npm-${{ hashFiles('package-lock.json') }} -``` -{% endraw %} - -{% data variables.product.prodname_dotcom %} evaluates the expression `hash "package-lock.json"` to derive the final `key`. - -``` -npm-d5ea0750 -``` - -### Matching a cache key - -The `cache` action first searches for cache hits for `key` and `restore-keys` in the branch containing the workflow run. If there are no hits in the current branch, the `cache` action searches for `key` and `restore-keys` in the parent branch and upstream branches. - -You can provide a list of restore keys to use when there is a cache miss on `key`. You can create multiple restore keys ordered from the most specific to least specific. The `cache` action searches for `restore-keys` in sequential order. When a key doesn't match directly, the action searches for keys prefixed with the restore key. If there are multiple partial matches for a restore key, the action returns the most recently created cache. - -#### Example using multiple restore keys - -{% raw %} -``` -restore-keys: | - npm-foobar-${{ hashFiles('package-lock.json') }} - npm-foobar- - npm- -``` -{% endraw %} - -The runner evaluates the expressions, which resolve to these `restore-keys`: - -{% raw %} -``` -restore-keys: | - npm-foobar-d5ea0750 - npm-foobar- - npm- -``` -{% endraw %} - -The restore key `npm-foobar-` matches any key that starts with the string `npm-foobar-`. For example, both of the keys `npm-foobar-fd3052de` and `npm-foobar-a9b253ff` match the restore key. The cache with the most recent creation date would be used. The keys in this example are searched in the following order: - -1. **`npm-foobar-d5ea0750`** matches a specific hash. -1. **`npm-foobar-`** matches cache keys prefixed with `npm-foobar-`. -1. **`npm-`** matches any keys prefixed with `npm-`. - -##### Example of search priority - -```yaml -key: - npm-feature-d5ea0750 -restore-keys: | - npm-feature- - npm- -``` - -For example, if a pull request contains a `feature` branch (the current scope) and targets the default branch (`main`), the action searches for `key` and `restore-keys` in the following order: - -1. Key `npm-feature-d5ea0750` in the `feature` branch scope -1. Key `npm-feature-` in the `feature` branch scope -2. Key `npm-` in the `feature` branch scope -1. Key `npm-feature-d5ea0750` in the `main` branch scope -3. Key `npm-feature-` in the `main` branch scope -4. Key `npm-` in the `main` branch scope - -### Usage limits and eviction policy - -{% data variables.product.prodname_dotcom %} will remove any cache entries that have not been accessed in over 7 days. There is no limit on the number of caches you can store, but the total size of all caches in a repository is limited to 5 GB. If you exceed this limit, {% data variables.product.prodname_dotcom %} will save your cache but will begin evicting caches until the total size is less than 5 GB. diff --git a/content/actions/guides/creating-postgresql-service-containers.md b/content/actions/guides/creating-postgresql-service-containers.md deleted file mode 100644 index c333d93b5c4c..000000000000 --- a/content/actions/guides/creating-postgresql-service-containers.md +++ /dev/null @@ -1,335 +0,0 @@ ---- -title: Creating PostgreSQL service containers -shortTitle: PostgreSQL service containers -intro: You can create a PostgreSQL service container to use in your workflow. This guide shows examples of creating a PostgreSQL service for jobs that run in containers or directly on the runner machine. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/automating-your-workflow-with-github-actions/creating-postgresql-service-containers - - /actions/configuring-and-managing-workflows/creating-postgresql-service-containers -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -This guide shows you workflow examples that configure a service container using the Docker Hub `postgres` image. The workflow runs a script to create a PostgreSQL client and populate the client with data. To test that the workflow creates and populates the PostgreSQL client, the script prints the client's data to the console. - -{% data reusables.github-actions.docker-container-os-support %} - -### Prerequisites - -{% data reusables.github-actions.service-container-prereqs %} - -You may also find it helpful to have a basic understanding of YAML, the syntax for {% data variables.product.prodname_actions %}, and PostgreSQL. For more information, see: - -- "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)" -- "[PostgreSQL tutorial](https://www.postgresqltutorial.com/)" in the PostgreSQL documentation - -### Running jobs in containers - -{% data reusables.github-actions.container-jobs-intro %} - -{% data reusables.github-actions.copy-workflow-file %} - -{% raw %} -```yaml -name: PostgreSQL service example -on: push - -jobs: - # Label of the container job - container-job: - # Containers must run in Linux based operating systems - runs-on: ubuntu-latest - # Docker Hub image that `container-job` executes in - container: node:10.18-jessie - - # Service containers to run with `container-job` - services: - # Label used to access the service container - postgres: - # Docker Hub image - image: postgres - # Provide the password for postgres - env: - POSTGRES_PASSWORD: postgres - # Set health checks to wait until postgres has started - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - - steps: - # Downloads a copy of the code in your repository before running CI tests - - name: Check out repository code - uses: actions/checkout@v2 - - # Performs a clean installation of all dependencies in the `package.json` file - # For more information, see https://docs.npmjs.com/cli/ci.html - - name: Install dependencies - run: npm ci - - - name: Connect to PostgreSQL - # Runs a script that creates a PostgreSQL client, populates - # the client with data, and retrieves data - run: node client.js - # Environment variable used by the `client.js` script to create a new PostgreSQL client. - env: - # The hostname used to communicate with the PostgreSQL service container - POSTGRES_HOST: postgres - # The default PostgreSQL port - POSTGRES_PORT: 5432 -``` -{% endraw %} - -#### Configuring the runner job - -{% data reusables.github-actions.service-container-host %} - -{% data reusables.github-actions.postgres-label-description %} - -```yaml -jobs: - # Label of the container job - container-job: - # Containers must run in Linux based operating systems - runs-on: ubuntu-latest - # Docker Hub image that `container-job` executes in - container: node:10.18-jessie - - # Service containers to run with `container-job` - services: - # Label used to access the service container - postgres: - # Docker Hub image - image: postgres - # Provide the password for postgres - env: - POSTGRES_PASSWORD: postgres - # Set health checks to wait until postgres has started - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 -``` - -#### Configuring the steps - -{% data reusables.github-actions.service-template-steps %} - -```yaml -steps: - # Downloads a copy of the code in your repository before running CI tests - - name: Check out repository code - uses: actions/checkout@v2 - - # Performs a clean installation of all dependencies in the `package.json` file - # For more information, see https://docs.npmjs.com/cli/ci.html - - name: Install dependencies - run: npm ci - - - name: Connect to PostgreSQL - # Runs a script that creates a PostgreSQL client, populates - # the client with data, and retrieves data - run: node client.js - # Environment variable used by the `client.js` script to create - # a new PostgreSQL client. - env: - # The hostname used to communicate with the PostgreSQL service container - POSTGRES_HOST: postgres - # The default PostgreSQL port - POSTGRES_PORT: 5432 -``` - -{% data reusables.github-actions.postgres-environment-variables %} - -The hostname of the PostgreSQL service is the label you configured in your workflow, in this case, `postgres`. Because Docker containers on the same user-defined bridge network open all ports by default, you'll be able to access the service container on the default PostgreSQL port 5432. - -### Running jobs directly on the runner machine - -When you run a job directly on the runner machine, you'll need to map the ports on the service container to ports on the Docker host. You can access service containers from the Docker host using `localhost` and the Docker host port number. - -{% data reusables.github-actions.copy-workflow-file %} - -{% raw %} -```yaml -name: PostgreSQL Service Example -on: push - -jobs: - # Label of the runner job - runner-job: - # You must use a Linux environment when using service containers or container jobs - runs-on: ubuntu-latest - - # Service containers to run with `runner-job` - services: - # Label used to access the service container - postgres: - # Docker Hub image - image: postgres - # Provide the password for postgres - env: - POSTGRES_PASSWORD: postgres - # Set health checks to wait until postgres has started - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - # Maps tcp port 5432 on service container to the host - - 5432:5432 - - steps: - # Downloads a copy of the code in your repository before running CI tests - - name: Check out repository code - uses: actions/checkout@v2 - - # Performs a clean installation of all dependencies in the `package.json` file - # For more information, see https://docs.npmjs.com/cli/ci.html - - name: Install dependencies - run: npm ci - - - name: Connect to PostgreSQL - # Runs a script that creates a PostgreSQL client, populates - # the client with data, and retrieves data - run: node client.js - # Environment variable used by the `client.js` script to create - # a new PostgreSQL client. - env: - # The hostname used to communicate with the PostgreSQL service container - POSTGRES_HOST: localhost - # The default PostgreSQL port - POSTGRES_PORT: 5432 -``` -{% endraw %} - -#### Configuring the runner job - -{% data reusables.github-actions.service-container-host-runner %} - -{% data reusables.github-actions.postgres-label-description %} - -The workflow maps port 5432 on the PostgreSQL service container to the Docker host. For more information about the `ports` keyword, see "[About service containers](/actions/automating-your-workflow-with-github-actions/about-service-containers#mapping-docker-host-and-service-container-ports)." - -```yaml -jobs: - # Label of the runner job - runner-job: - # You must use a Linux environment when using service containers or container jobs - runs-on: ubuntu-latest - - # Service containers to run with `runner-job` - services: - # Label used to access the service container - postgres: - # Docker Hub image - image: postgres - # Provide the password for postgres - env: - POSTGRES_PASSWORD: postgres - # Set health checks to wait until postgres has started - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - # Maps tcp port 5432 on service container to the host - - 5432:5432 -``` - -#### Configuring the steps - -{% data reusables.github-actions.service-template-steps %} - -```yaml -steps: - # Downloads a copy of the code in your repository before running CI tests - - name: Check out repository code - uses: actions/checkout@v2 - - # Performs a clean installation of all dependencies in the `package.json` file - # For more information, see https://docs.npmjs.com/cli/ci.html - - name: Install dependencies - run: npm ci - - - name: Connect to PostgreSQL - # Runs a script that creates a PostgreSQL client, populates - # the client with data, and retrieves data - run: node client.js - # Environment variable used by the `client.js` script to create - # a new PostgreSQL client. - env: - # The hostname used to communicate with the PostgreSQL service container - POSTGRES_HOST: localhost - # The default PostgreSQL port - POSTGRES_PORT: 5432 -``` - -{% data reusables.github-actions.postgres-environment-variables %} - -{% data reusables.github-actions.service-container-localhost %} - -### Testing the PostgreSQL service container - -You can test your workflow using the following script, which creates a PostgreSQL client and adds a new table with some placeholder data. The script then prints the values stored in the PostgreSQL client to the terminal. Your script can use any language you'd like, but this example uses Node.js and the `pg` npm module. For more information, see the [npm pg module](https://www.npmjs.com/package/pg). - -You can modify *client.js* to include any PostgreSQL operations needed by your workflow. In this example, the script creates the PostgreSQL client instance, creates a table, adds placeholder data, then retrieves the data. - -{% data reusables.github-actions.service-container-add-script %} - -```javascript -const { Client } = require('pg'); - -const pgclient = new Client({ - host: process.env.POSTGRES_HOST, - port: process.env.POSTGRES_PORT, - user: 'postgres', - password: 'postgres', - database: 'postgres' -}); - -pgclient.connect(); - -const table = 'CREATE TABLE student(id SERIAL PRIMARY KEY, firstName VARCHAR(40) NOT NULL, lastName VARCHAR(40) NOT NULL, age INT, address VARCHAR(80), email VARCHAR(40))' -const text = 'INSERT INTO student(firstname, lastname, age, address, email) VALUES($1, $2, $3, $4, $5) RETURNING *' -const values = ['Mona the', 'Octocat', 9, '88 Colin P Kelly Jr St, San Francisco, CA 94107, United States', 'octocat@github.com'] - -pgclient.query(table, (err, res) => { - if (err) throw err -}); - -pgclient.query(text, values, (err, res) => { - if (err) throw err -}); - -pgclient.query('SELECT * FROM student', (err, res) => { - if (err) throw err - console.log(err, res.rows) // Print the data in student table - pgclient.end() -}); -``` - -The script creates a new PostgreSQL `Client`, which accepts a `host` and `port` parameter. The script uses the `POSTGRES_HOST` and `POSTGRES_PORT` environment variables to set the client's IP address and port. If `host` and `port` are not defined, the default host is `localhost` and the default port is 5432. - -The script creates a table and populates it with placeholder data. To test that the PostgreSQL database contains the data, the script prints the contents of the table to the console log. - -When you run this workflow, you should see the following output in the "Connect to PostgreSQL" step confirming you created the PostgreSQL client and added data: - -``` -null [ { id: 1, - firstname: 'Mona the', - lastname: 'Octocat', - age: 9, - address: - '88 Colin P Kelly Jr St, San Francisco, CA 94107, United States', - email: 'octocat@github.com' } ] -``` diff --git a/content/actions/guides/creating-redis-service-containers.md b/content/actions/guides/creating-redis-service-containers.md deleted file mode 100644 index 62cbca2bc912..000000000000 --- a/content/actions/guides/creating-redis-service-containers.md +++ /dev/null @@ -1,325 +0,0 @@ ---- -title: Creating Redis service containers -shortTitle: Redis service containers -intro: You can use service containers to create a Redis client in your workflow. This guide shows examples of creating a Redis service for jobs that run in containers or directly on the runner machine. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/automating-your-workflow-with-github-actions/creating-redis-service-containers - - /actions/configuring-and-managing-workflows/creating-redis-service-containers -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -This guide shows you workflow examples that configure a service container using the Docker Hub `redis` image. The workflow runs a script to create a Redis client and populate the client with data. To test that the workflow creates and populates the Redis client, the script prints the client's data to the console. - -{% data reusables.github-actions.docker-container-os-support %} - -### Prerequisites - -{% data reusables.github-actions.service-container-prereqs %} - -You may also find it helpful to have a basic understanding of YAML, the syntax for {% data variables.product.prodname_actions %}, and Redis. For more information, see: - -- "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)" -- "[Getting Started with Redis](https://redislabs.com/get-started-with-redis/)" in the Redis documentation - -### Running jobs in containers - -{% data reusables.github-actions.container-jobs-intro %} - -{% data reusables.github-actions.copy-workflow-file %} - -{% raw %} -```yaml -name: Redis container example -on: push - -jobs: - # Label of the container job - container-job: - # Containers must run in Linux based operating systems - runs-on: ubuntu-latest - # Docker Hub image that `container-job` executes in - container: node:10.18-jessie - - # Service containers to run with `container-job` - services: - # Label used to access the service container - redis: - # Docker Hub image - image: redis - # Set health checks to wait until redis has started - options: >- - --health-cmd "redis-cli ping" - --health-interval 10s - --health-timeout 5s - --health-retries 5 - - steps: - # Downloads a copy of the code in your repository before running CI tests - - name: Check out repository code - uses: actions/checkout@v2 - - # Performs a clean installation of all dependencies in the `package.json` file - # For more information, see https://docs.npmjs.com/cli/ci.html - - name: Install dependencies - run: npm ci - - - name: Connect to Redis - # Runs a script that creates a Redis client, populates - # the client with data, and retrieves data - run: node client.js - # Environment variable used by the `client.js` script to create a new Redis client. - env: - # The hostname used to communicate with the Redis service container - REDIS_HOST: redis - # The default Redis port - REDIS_PORT: 6379 -``` -{% endraw %} - -#### Configuring the container job - -{% data reusables.github-actions.service-container-host %} - -{% data reusables.github-actions.redis-label-description %} - -```yaml -jobs: - # Label of the container job - container-job: - # Containers must run in Linux based operating systems - runs-on: ubuntu-latest - # Docker Hub image that `container-job` executes in - container: node:10.18-jessie - - # Service containers to run with `container-job` - services: - # Label used to access the service container - redis: - # Docker Hub image - image: redis - # Set health checks to wait until redis has started - options: >- - --health-cmd "redis-cli ping" - --health-interval 10s - --health-timeout 5s - --health-retries 5 -``` - -#### Configuring the steps - -{% data reusables.github-actions.service-template-steps %} - -```yaml -steps: - # Downloads a copy of the code in your repository before running CI tests - - name: Check out repository code - uses: actions/checkout@v2 - - # Performs a clean installation of all dependencies in the `package.json` file - # For more information, see https://docs.npmjs.com/cli/ci.html - - name: Install dependencies - run: npm ci - - - name: Connect to Redis - # Runs a script that creates a Redis client, populates - # the client with data, and retrieves data - run: node client.js - # Environment variable used by the `client.js` script to create a new Redis client. - env: - # The hostname used to communicate with the Redis service container - REDIS_HOST: redis - # The default Redis port - REDIS_PORT: 6379 -``` - -{% data reusables.github-actions.redis-environment-variables %} - -The hostname of the Redis service is the label you configured in your workflow, in this case, `redis`. Because Docker containers on the same user-defined bridge network open all ports by default, you'll be able to access the service container on the default Redis port 6379. - -### Running jobs directly on the runner machine - -When you run a job directly on the runner machine, you'll need to map the ports on the service container to ports on the Docker host. You can access service containers from the Docker host using `localhost` and the Docker host port number. - -{% data reusables.github-actions.copy-workflow-file %} - -{% raw %} -```yaml -name: Redis runner example -on: push - -jobs: - # Label of the runner job - runner-job: - # You must use a Linux environment when using service containers or container jobs - runs-on: ubuntu-latest - - # Service containers to run with `runner-job` - services: - # Label used to access the service container - redis: - # Docker Hub image - image: redis - # Set health checks to wait until redis has started - options: >- - --health-cmd "redis-cli ping" - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - # Maps port 6379 on service container to the host - - 6379:6379 - - steps: - # Downloads a copy of the code in your repository before running CI tests - - name: Check out repository code - uses: actions/checkout@v2 - - # Performs a clean installation of all dependencies in the `package.json` file - # For more information, see https://docs.npmjs.com/cli/ci.html - - name: Install dependencies - run: npm ci - - - name: Connect to Redis - # Runs a script that creates a Redis client, populates - # the client with data, and retrieves data - run: node client.js - # Environment variable used by the `client.js` script to create - # a new Redis client. - env: - # The hostname used to communicate with the Redis service container - REDIS_HOST: localhost - # The default Redis port - REDIS_PORT: 6379 -``` -{% endraw %} - -#### Configuring the runner job - -{% data reusables.github-actions.service-container-host-runner %} - -{% data reusables.github-actions.redis-label-description %} - -The workflow maps port 6379 on the Redis service container to the Docker host. For more information about the `ports` keyword, see "[About service containers](/actions/automating-your-workflow-with-github-actions/about-service-containers#mapping-docker-host-and-service-container-ports)." - -```yaml -jobs: - # Label of the runner job - runner-job: - # You must use a Linux environment when using service containers or container jobs - runs-on: ubuntu-latest - - # Service containers to run with `runner-job` - services: - # Label used to access the service container - redis: - # Docker Hub image - image: redis - # Set health checks to wait until redis has started - options: >- - --health-cmd "redis-cli ping" - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - # Maps port 6379 on service container to the host - - 6379:6379 -``` - -#### Configuring the steps - -{% data reusables.github-actions.service-template-steps %} - -```yaml -steps: - # Downloads a copy of the code in your repository before running CI tests - - name: Check out repository code - uses: actions/checkout@v2 - - # Performs a clean installation of all dependencies in the `package.json` file - # For more information, see https://docs.npmjs.com/cli/ci.html - - name: Install dependencies - run: npm ci - - - name: Connect to Redis - # Runs a script that creates a Redis client, populates - # the client with data, and retrieves data - run: node client.js - # Environment variable used by the `client.js` script to create - # a new Redis client. - env: - # The hostname used to communicate with the Redis service container - REDIS_HOST: localhost - # The default Redis port - REDIS_PORT: 6379 -``` - -{% data reusables.github-actions.redis-environment-variables %} - -{% data reusables.github-actions.service-container-localhost %} - -### Testing the Redis service container - -You can test your workflow using the following script, which creates a Redis client and populates the client with some placeholder data. The script then prints the values stored in the Redis client to the terminal. Your script can use any language you'd like, but this example uses Node.js and the `redis` npm module. For more information, see the [npm redis module](https://www.npmjs.com/package/redis). - -You can modify *client.js* to include any Redis operations needed by your workflow. In this example, the script creates the Redis client instance, adds placeholder data, then retrieves the data. - -{% data reusables.github-actions.service-container-add-script %} - -```javascript -const redis = require("redis"); - -// Creates a new Redis client -// If REDIS_HOST is not set, the default host is localhost -// If REDIS_PORT is not set, the default port is 6379 -const redisClient = redis.createClient({ - host: process.env.REDIS_HOST, - port: process.env.REDIS_PORT -}); - -redisClient.on("error", function(err) { - console.log("Error " + err); -}); - -// Sets the key "octocat" to a value of "Mona the octocat" -redisClient.set("octocat", "Mona the Octocat", redis.print); -// Sets a key to "octocat", field to "species", and "value" to "Cat and Octopus" -redisClient.hset("species", "octocat", "Cat and Octopus", redis.print); -// Sets a key to "octocat", field to "species", and "value" to "Dinosaur and Octopus" -redisClient.hset("species", "dinotocat", "Dinosaur and Octopus", redis.print); -// Sets a key to "octocat", field to "species", and "value" to "Cat and Robot" -redisClient.hset(["species", "robotocat", "Cat and Robot"], redis.print); -// Gets all fields in "species" key - -redisClient.hkeys("species", function (err, replies) { - console.log(replies.length + " replies:"); - replies.forEach(function (reply, i) { - console.log(" " + i + ": " + reply); - }); - redisClient.quit(); -}); -``` - -The script creates a new Redis client using the `createClient` method, which accepts a `host` and `port` parameter. The script uses the `REDIS_HOST` and `REDIS_PORT` environment variables to set the client's IP address and port. If `host` and `port` are not defined, the default host is `localhost` and the default port is 6379. - -The script uses the `set` and `hset` methods to populate the database with some keys, fields, and values. To confirm that the Redis client contains the data, the script prints the contents of the database to the console log. - -When you run this workflow, you should see the following output in the "Connect to Redis" step confirming you created the Redis client and added data: - -``` -Reply: OK -Reply: 1 -Reply: 1 -Reply: 1 -3 replies: - 0: octocat - 1: dinotocat - 2: robotocat -``` diff --git a/content/actions/guides/index.md b/content/actions/guides/index.md deleted file mode 100644 index 74739584d287..000000000000 --- a/content/actions/guides/index.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Guides -shortTitle: Guides -intro: 'These guides for {% data variables.product.prodname_actions %} include specific use cases and examples to help you configure workflows.' -redirect_from: - - /actions/guides/caching-and-storing-workflow-data - - /actions/automating-your-workflow-with-github-actions/using-databases-and-services - - /actions/configuring-and-managing-workflows/using-databases-and-service-containers - - /actions/guides/using-databases-and-service-containers - - /actions/language-and-framework-guides - - /actions/language-and-framework-guides/github-actions-for-docker - - /actions/language-and-framework-guides/github-actions-for-java - - /actions/language-and-framework-guides/github-actions-for-javascript-and-typescript - - /actions/language-and-framework-guides/github-actions-for-python - - /actions/publishing-packages-with-github-actions - - /actions/building-and-testing-code-with-continuous-integration -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Creating custom continuous integration workflows - -You can use {% data variables.product.prodname_actions %} to create custom continuous integration (CI) workflows that build and test projects written in different programming languages. - -{% link_in_list /about-continuous-integration %} -{% link_in_list /setting-up-continuous-integration-using-workflow-templates %} -{% link_in_list /building-and-testing-nodejs %} -{% link_in_list /building-and-testing-python %} -{% link_in_list /building-and-testing-java-with-maven %} -{% link_in_list /building-and-testing-java-with-gradle %} -{% link_in_list /building-and-testing-java-with-ant %} - -### Publishing software packages - -You can automate publishing software packages as part your continuous delivery (CD) workflow. Packages can be published to any package host and to {% data reusables.gated-features.packages %}. - -{% link_in_list /about-packaging-with-github-actions %} -{% link_in_list /publishing-nodejs-packages %} -{% link_in_list /publishing-java-packages-with-maven %} -{% link_in_list /publishing-java-packages-with-gradle %} -{% link_in_list /publishing-docker-images %} - -### Caching and storing workflow data - -Cache dependencies and store artifacts to make your workflow runs more efficient. - -{% link_in_list /storing-workflow-data-as-artifacts %} -{% link_in_list /caching-dependencies-to-speed-up-workflows %} - -### Using service containers in a workflow - -Connect services to your workflow using service containers. - -{% link_in_list /about-service-containers %} -{% link_in_list /creating-redis-service-containers %} -{% link_in_list /creating-postgresql-service-containers %} diff --git a/content/actions/guides/publishing-docker-images.md b/content/actions/guides/publishing-docker-images.md deleted file mode 100644 index a933d62399c7..000000000000 --- a/content/actions/guides/publishing-docker-images.md +++ /dev/null @@ -1,158 +0,0 @@ ---- -title: Publishing Docker images -intro: 'You can publish Docker images to a registry, such as Docker Hub or {% data variables.product.prodname_registry %}, as part of your continuous integration (CI) workflow.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/language-and-framework-guides/publishing-docker-images -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -This guide shows you how to create a workflow that performs a Docker build, and then publishes Docker images to Docker Hub or {% data variables.product.prodname_registry %}. With a single workflow, you can publish images to a single registry or to multiple registries. - -{% note %} - -**Note:** If you want to push to another third-party Docker registry, the example in the "[Publishing images to {% data variables.product.prodname_registry %}](#publishing-images-to-github-packages)" section can serve as a good template. - -{% endnote %} - -### Prerequisites - -We recommend that you have a basic understanding of workflow configuration options and how to create a workflow file. For more information, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -You might also find it helpful to have a basic understanding of the following: - -- "[Encrypted secrets](/actions/reference/encrypted-secrets)" -- "[Authentication in a workflow](/actions/reference/authentication-in-a-workflow)" -- "[Configuring Docker for use with {% data variables.product.prodname_registry %}](/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages)" - -### About image configuration - -This guide assumes that you have a complete definition for a Docker image stored in a {% data variables.product.prodname_dotcom %} repository. For example, your repository must contain a _Dockerfile_, and any other files needed to perform a Docker build to create an image. - -In this guide, we will use the Docker `build-push-action` action to build the Docker image and push it to one or more Docker registries. For more information, see [`build-push-action`](https://github.com/marketplace/actions/build-and-push-docker-images). - -{% data reusables.actions.enterprise-marketplace-actions %} - -### Publishing images to Docker Hub - -{% data reusables.github-actions.release-trigger-workflow %} - -In the example workflow below, we use the Docker `build-push-action` action to build the Docker image and, if the build succeeds, push the built image to Docker Hub. - -To push to Docker Hub, you will need to have a Docker Hub account, and have a Docker Hub repository created. For more information, see "[Share images on Docker Hub](https://docs.docker.com/get-started/part3/)" in the Docker documentation. - -The `build-push-action` options required for Docker Hub are: - -* `username` and `password`: This is your Docker Hub username and password. We recommend storing your Docker Hub username and password as encrypted secrets in your {% data variables.product.prodname_dotcom %} repository so they aren't exposed in your workflow file. For more information, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." -* `repository`: Your Docker Hub repository in the format `DOCKER-HUB-NAMESPACE/DOCKER-HUB-REPOSITORY`. - -{% raw %} -```yaml -name: Publish Docker image -on: - release: - types: [published] -jobs: - push_to_registry: - name: Push Docker image to Docker Hub - runs-on: ubuntu-latest - steps: - - name: Check out the repo - uses: actions/checkout@v2 - - name: Push to Docker Hub - uses: docker/build-push-action@v1 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - repository: my-docker-hub-namespace/my-docker-hub-repository - tag_with_ref: true -``` -{% endraw %} - -{% data reusables.github-actions.docker-tag-with-ref %} - -### Publishing images to {% data variables.product.prodname_registry %} - -{% data reusables.github-actions.release-trigger-workflow %} - -In the example workflow below, we use the Docker `build-push-action` action to build the Docker image, and if the build succeeds, push the built image to {% data variables.product.prodname_registry %}. - -The `build-push-action` options required for {% data variables.product.prodname_registry %} are: - -* `username`: You can use the {% raw %}`${{ github.actor }}`{% endraw %} context to automatically use the username of the user that triggered the workflow run. For more information, see "[Context and expression syntax for GitHub Actions](/actions/reference/context-and-expression-syntax-for-github-actions#github-context)." -* `password`: You can use the automatically-generated `GITHUB_TOKEN` secret for the password. For more information, see "[Authenticating with the GITHUB_TOKEN](/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token)." -* `registry`: Must be set to `docker.pkg.github.com`. -* `repository`: Must be set in the format `OWNER/REPOSITORY/IMAGE_NAME`. For example, for an image named `octo-image` stored on {% data variables.product.prodname_dotcom %} at `http://github.com/octo-org/octo-repo`, the `repository` option should be set to `octo-org/octo-repo/octo-image`. - -{% raw %} -```yaml -name: Publish Docker image -on: - release: - types: [published] -jobs: - push_to_registry: - name: Push Docker image to GitHub Packages - runs-on: ubuntu-latest - steps: - - name: Check out the repo - uses: actions/checkout@v2 - - name: Push to GitHub Packages - uses: docker/build-push-action@v1 - with: - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - registry: docker.pkg.github.com - repository: my-org/my-repo/my-image - tag_with_ref: true - -``` -{% endraw %} - -{% data reusables.github-actions.docker-tag-with-ref %} - -### Publishing images to Docker Hub and {% data variables.product.prodname_registry %} - -In a single workflow, you can publish your Docker image to multiple registries by using the `build-push-action` action for each registry. - -The following example workflow uses the `build-push-action` steps from the previous sections ("[Publishing images to Docker Hub](#publishing-images-to-docker-hub)" and "[Publishing images to {% data variables.product.prodname_registry %}](#publishing-images-to-github-packages)") to create a single workflow that pushes to both registries. - -{% raw %} -```yaml -name: Publish Docker image -on: - release: - types: [published] -jobs: - push_to_registries: - name: Push Docker image to multiple registries - runs-on: ubuntu-latest - steps: - - name: Check out the repo - uses: actions/checkout@v2 - - name: Push to Docker Hub - uses: docker/build-push-action@v1 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - repository: my-docker-hub-namespace/my-docker-hub-repository - tag_with_ref: true - - name: Push to GitHub Packages - uses: docker/build-push-action@v1 - with: - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - registry: docker.pkg.github.com - repository: my-org/my-repo/my-image - tag_with_ref: true -``` -{% endraw %} - -The above workflow checks out the {% data variables.product.prodname_dotcom %} repository, and uses the `build-push-action` action twice to build and push the Docker image to Docker Hub and {% data variables.product.prodname_registry %}. For both steps, it sets the `build-push-action` option [`tag_with_ref`](https://github.com/marketplace/actions/build-and-push-docker-images#tag_with_ref) to automatically tag the built Docker image with the Git reference of the workflow event. This workflow is triggered on publishing a {% data variables.product.prodname_dotcom %} release, so the reference for both registries will be the Git tag for the release. diff --git a/content/actions/guides/publishing-java-packages-with-gradle.md b/content/actions/guides/publishing-java-packages-with-gradle.md deleted file mode 100644 index 4cfbe26bc340..000000000000 --- a/content/actions/guides/publishing-java-packages-with-gradle.md +++ /dev/null @@ -1,219 +0,0 @@ ---- -title: Publishing Java packages with Gradle -intro: You can use Gradle to publish Java packages to a registry as part of your continuous integration (CI) workflow. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/language-and-framework-guides/publishing-java-packages-with-gradle -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -{% data reusables.github-actions.publishing-java-packages-intro %} - -### Prerequisites - -We recommend that you have a basic understanding of workflow files and configuration options. For more information, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -For more information about creating a CI workflow for your Java project with Gradle, see "[Building and testing Java with Gradle](/actions/language-and-framework-guides/building-and-testing-java-with-gradle)." - -You may also find it helpful to have a basic understanding of the following: - -- "[Configuring npm for use with {% data variables.product.prodname_registry %}](/github/managing-packages-with-github-packages/configuring-npm-for-use-with-github-packages)" -- "[Environment variables](/actions/reference/environment-variables)" -- "[Encrypted secrets](/actions/reference/encrypted-secrets)" -- "[Authentication in a workflow](/actions/reference/authentication-in-a-workflow)" - -### About package configuration - -The `groupId` and `artifactId` fields in the `MavenPublication` section of the _build.gradle_ file create a unique identifier for your package that registries use to link your package to a registry. This is similar to the `groupId` and `artifactId` fields of the Maven _pom.xml_ file. For more information, see the "[Maven Publish Plugin](https://docs.gradle.org/current/userguide/publishing_maven.html)" in the Gradle documentation. - -The _build.gradle_ file also contains configuration for the distribution management repositories that Gradle will publish packages to. Each repository must have a name, a deployment URL, and credentials for authentication. - -### Publishing packages to the Maven Central Repository - -Each time you create a new release, you can trigger a workflow to publish your package. The workflow in the example below runs when the `release` event triggers with type `created`. The workflow publishes the package to the Maven Central Repository if CI tests pass. For more information on the `release` event, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#release)." - -You can define a new Maven repository in the publishing block of your _build.gradle_ file that points to your package repository. For example, if you were deploying to the Maven Central Repository through the OSSRH hosting project, your _build.gradle_ could specify a repository with the name `"OSSRH"`. - -{% raw %} -```groovy -publishing { - ... - - repositories { - maven { - name = "OSSRH" - url = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" - credentials { - username = System.getenv("MAVEN_USERNAME") - password = System.getenv("MAVEN_PASSWORD") - } - } - } -} -``` -{% endraw %} - -With this configuration, you can create a workflow that publishes your package to the Maven Central Repository by running the `gradle publish` command. You’ll also need to provide environment variables that contain the username and password to authenticate to the repository. - -In the deploy step, you’ll need to set environment variables for the username and password or token that you use to authenticate to the Maven repository. For more information, see "[Creating and using encrypted secrets](/github/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - - -{% raw %} -```yaml -name: Publish package to the Maven Central Repository -on: - release: - types: [created] -jobs: - publish: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up Java - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Publish package - run: gradle publish - env: - MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} -``` -{% endraw %} - -{% data reusables.github-actions.gradle-workflow-steps %} -1. Runs the `gradle publish` command to publish to the `OSSRH` Maven repository. The `MAVEN_USERNAME` environment variable will be set with the contents of your `OSSRH_USERNAME` secret, and the `MAVEN_PASSWORD` environment variable will be set with the contents of your `OSSRH_TOKEN` secret. - - For more information about using secrets in your workflow, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - -### Publishing packages to {% data variables.product.prodname_registry %} - -Each time you create a new release, you can trigger a workflow to publish your package. The workflow in the example below runs when the `release` event triggers with type `created`. The workflow publishes the package to {% data variables.product.prodname_registry %} if CI tests pass. For more information on the `release` event, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#release)." - -You can define a new Maven repository in the publishing block of your _build.gradle_ that points to {% data variables.product.prodname_registry %}. In that repository configuration, you can also take advantage of environment variables set in your CI workflow run. You can use the `GITHUB_ACTOR` environment variable as a username, and you can set the `GITHUB_TOKEN` environment variable with your `GITHUB_TOKEN` secret. - -The `GITHUB_TOKEN` exists in your repository by default and has read and write permissions for packages in the repository where the workflow runs. For more information, see "[Authenticating with the GITHUB_TOKEN](/actions/configuring-and-managing-workflows/authenticating-with-the-github_token)." - -For example, if your organization is named "octocat" and your repository is named "hello-world", then the {% data variables.product.prodname_registry %} configuration in _build.gradle_ would look similar to the below example. - -{% raw %} -```groovy -publishing { - ... - - repositories { - maven { - name = "GitHubPackages" - url = "https://maven.pkg.github.com/octocat/hello-world" - credentials { - username = System.getenv("GITHUB_ACTOR") - password = System.getenv("GITHUB_TOKEN") - } - } - } -} -``` -{% endraw %} - -With this configuration, you can create a workflow that publishes your package to the Maven Central Repository by running the `gradle publish` command. - -{% raw %} -```yaml -name: Publish package to GitHub Packages -on: - release: - types: [created] -jobs: - publish: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Publish package - run: gradle publish - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` -{% endraw %} - -{% data reusables.github-actions.gradle-workflow-steps %} -1. Runs the `gradle publish` command to publish to {% data variables.product.prodname_registry %}. The `GITHUB_TOKEN` environment variable will be set with the content of the `GITHUB_TOKEN` secret. - - For more information about using secrets in your workflow, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - -### Publishing packages to the Maven Central Repository and {% data variables.product.prodname_registry %} - -You can publish your packages to both the Maven Central Repository and {% data variables.product.prodname_registry %} by configuring each in your _build.gradle_ file. - -Ensure your _build.gradle_ file includes a repository for both your {% data variables.product.prodname_dotcom %} repository and your Maven Central Repository provider. - -For example, if you deploy to the Central Repository through the OSSRH hosting project, you might want to specify it in a distribution management repository with the `name` set to `OSSRH`. If you deploy to {% data variables.product.prodname_registry %}, you might want to specify it in a distribution management repository with the `name` set to `GitHubPackages`. - -If your organization is named "octocat" and your repository is named "hello-world", then the {% data variables.product.prodname_registry %} configuration in _build.gradle_ would look similar to the below example. - -{% raw %} -```groovy -publishing { - ... - - repositories { - maven { - name = "OSSRH" - url = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" - credentials { - username = System.getenv("MAVEN_USERNAME") - password = System.getenv("MAVEN_PASSWORD") - } - } - maven { - name = "GitHubPackages" - url = "https://maven.pkg.github.com/octocat/hello-world" - credentials { - username = System.getenv("GITHUB_ACTOR") - password = System.getenv("GITHUB_TOKEN") - } - } - } -} -``` -{% endraw %} - -With this configuration, you can create a workflow that publishes your package to both the Maven Central Repository and {% data variables.product.prodname_registry %} by running the `gradle publish` command. - -{% raw %} -```yaml -name: Publish package to the Maven Central Repository and GitHub Packages -on: - release: - types: [created] -jobs: - publish: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up Java - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Publish to the Maven Central Repository - run: gradle publish - env: - MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` -{% endraw %} - -{% data reusables.github-actions.gradle-workflow-steps %} -1. Runs the `gradle publish` command to publish to the `OSSRH` Maven repository and {% data variables.product.prodname_registry %}. The `MAVEN_USERNAME` environment variable will be set with the contents of your `OSSRH_USERNAME` secret, and the `MAVEN_PASSWORD` environment variable will be set with the contents of your `OSSRH_TOKEN` secret. The `GITHUB_TOKEN` environment variable will be set with the content of the `GITHUB_TOKEN` secret. - - For more information about using secrets in your workflow, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." diff --git a/content/actions/guides/publishing-java-packages-with-maven.md b/content/actions/guides/publishing-java-packages-with-maven.md deleted file mode 100644 index 9eea5b104747..000000000000 --- a/content/actions/guides/publishing-java-packages-with-maven.md +++ /dev/null @@ -1,210 +0,0 @@ ---- -title: Publishing Java packages with Maven -intro: You can use Maven to publish Java packages to a registry as part of your continuous integration (CI) workflow. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/language-and-framework-guides/publishing-java-packages-with-maven -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -{% data reusables.github-actions.publishing-java-packages-intro %} - -### Prerequisites - -We recommend that you have a basic understanding of workflow files and configuration options. For more information, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -For more information about creating a CI workflow for your Java project with Maven, see "[Building and testing Java with Maven](/actions/language-and-framework-guides/building-and-testing-java-with-maven)." - -You may also find it helpful to have a basic understanding of the following: - -- "[Configuring npm for use with {% data variables.product.prodname_registry %}](/github/managing-packages-with-github-packages/configuring-npm-for-use-with-github-packages)" -- "[Environment variables](/actions/reference/environment-variables)" -- "[Encrypted secrets](/actions/reference/encrypted-secrets)" -- "[Authentication in a workflow](/actions/reference/authentication-in-a-workflow)" - -### About package configuration - -The `groupId` and `artifactId` fields in the _pom.xml_ file create a unique identifier for your package that registries use to link your package to a registry. For more information see [Guide to uploading artifacts to the Central Repository](http://maven.apache.org/repository/guide-central-repository-upload.html) in the Apache Maven documentation. - -The _pom.xml_ file also contains configuration for the distribution management repositories that Maven will deploy packages to. Each repository must have a name and a deployment URL. Authentication for these repositories can be configured in the _.m2/settings.xml_ file in the home directory of the user running Maven. - -You can use the `setup-java` action to configure the deployment repository as well as authentication for that repository. For more information, see [`setup-java`](https://github.com/actions/setup-java). - -### Publishing packages to the Maven Central Repository - -Each time you create a new release, you can trigger a workflow to publish your package. The workflow in the example below runs when the `release` event triggers with type `created`. The workflow publishes the package to the Maven Central Repository if CI tests pass. For more information on the `release` event, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#release)." - -In this workflow, you can use the `setup-java` action. This action installs the given version of the JDK into the `PATH`, but it also configures a Maven _settings.xml_ for publishing packages. By default, the settings file will be configured for {% data variables.product.prodname_registry %}, but it can be configured to deploy to another package registry, such as the Maven Central Repository. If you already have a distribution management repository configured in _pom.xml_, then you can specify that `id` during the `setup-java` action invocation. - -For example, if you were deploying to the Maven Central Repository through the OSSRH hosting project, your _pom.xml_ could specify a distribution management repository with the `id` of `ossrh`. - -{% raw %} -```xml - - ... - - - ossrh - Central Repository OSSRH - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - -``` -{% endraw %} - -With this configuration, you can create a workflow that publishes your package to the Maven Central Repository by specifying the repository management `id` to the `setup-java` action. You’ll also need to provide environment variables that contain the username and password to authenticate to the repository. - -In the deploy step, you’ll need to set the environment variables to the username that you authenticate with to the repository, and to a secret that you’ve configured with the password or token to authenticate with. For more information, see "[Creating and using encrypted secrets](/github/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - - -{% raw %} -```yaml -name: Publish package to the Maven Central Repository -on: - release: - types: [created] -jobs: - publish: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up Maven Central Repository - uses: actions/setup-java@v1 - with: - java-version: 1.8 - server-id: ossrh - server-username: MAVEN_USERNAME - server-password: MAVEN_PASSWORD - - name: Publish package - run: mvn -B deploy - env: - MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} -``` -{% endraw %} - -This workflow performs the following steps: - -1. Checks out a copy of project's repository. -1. Sets up the Java JDK, and also configures the Maven _settings.xml_ file to add authentication for the `ossrh` repository using the `MAVEN_USERNAME` and `MAVEN_PASSWORD` environment variables. -1. {% data reusables.github-actions.publish-to-maven-workflow-step %} - - For more information about using secrets in your workflow, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - -### Publishing packages to {% data variables.product.prodname_registry %} - -Each time you create a new release, you can trigger a workflow to publish your package. The workflow in the example below runs when the `release` event triggers with type `created`. The workflow publishes the package to {% data variables.product.prodname_registry %} if CI tests pass. For more information on the `release` event, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#release)." - -In this workflow, you can use the `setup-java` action. This action installs the given version of the JDK into the `PATH`, and also sets up a Maven _settings.xml_ for publishing the package to {% data variables.product.prodname_registry %}. The generated _settings.xml_ defines authentication for a server with an `id` of `github`, using the `GITHUB_ACTOR` environment variable as the username and the `GITHUB_TOKEN` environment variable as the password. - -The `GITHUB_TOKEN` exists in your repository by default and has read and write permissions for packages in the repository where the workflow runs. For more information, see "[Authenticating with the GITHUB_TOKEN](/actions/configuring-and-managing-workflows/authenticating-with-the-github_token)." - -For a Maven-based project, you can make use of these settings by creating a distribution repository in your _pom.xml_ file with an `id` of `github` that points to your {% data variables.product.prodname_registry %} endpoint. - -For example, if your organization is named "octocat" and your repository is named "hello-world", then the {% data variables.product.prodname_registry %} configuration in _pom.xml_ would look similar to the below example. - -{% raw %} -```xml - - ... - - - github - GitHub Packages - https://maven.pkg.github.com/octocat/hello-world - - - -``` -{% endraw %} - -With this configuration, you can create a workflow that publishes your package to {% data variables.product.prodname_registry %} by making use of the automatically generated _settings.xml_. - -{% raw %} -```yaml -name: Publish package to GitHub Packages -on: - release: - types: [created] -jobs: - publish: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Publish package - run: mvn -B deploy - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` -{% endraw %} - -This workflow performs the following steps: - -1. Checks out a copy of project's repository. -1. Sets up the Java JDK, and also automatically configures the Maven _settings.xml_ file to add authentication for the `github` Maven repository to use the `GITHUB_TOKEN` environment variable. -1. {% data reusables.github-actions.publish-to-packages-workflow-step %} - - For more information about using secrets in your workflow, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - -### Publishing packages to the Maven Central Repository and {% data variables.product.prodname_registry %} - -You can publish your packages to both the Maven Central Repository and {% data variables.product.prodname_registry %} by using the `setup-java` action for each registry. - -Ensure your _pom.xml_ file includes a distribution management repository for both your {% data variables.product.prodname_dotcom %} repository and your Maven Central Repository provider. For example, if you deploy to the Central Repository through the OSSRH hosting project, you might want to specify it in a distribution management repository with the `id` set to `ossrh`, and you might want to specify {% data variables.product.prodname_registry %} in a distribution management repository with the `id` set to `github`. - -{% raw %} -```yaml -name: Publish package to the Maven Central Repository and GitHub Packages -on: - release: - types: [created] -jobs: - publish: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up Java for publishing to Maven Central Repository - uses: actions/setup-java@v1 - with: - java-version: 1.8 - server-id: ossrh - server-username: MAVEN_USERNAME - server-password: MAVEN_PASSWORD - - name: Publish to the Maven Central Repository - run: mvn -B deploy - env: - MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} - - name: Set up Java for publishing to GitHub Packages - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Publish to GitHub Packages - run: mvn -B deploy - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` -{% endraw %} - -This workflow calls the `setup-java` action twice. Each time the `setup-java` action runs, it overwrites the Maven _settings.xml_ file for publishing packages. For authentication to the repository, the _settings.xml_ file references the distribution management repository `id`, and the username and password. - -This workflow performs the following steps: - -1. Checks out a copy of project's repository. -1. Calls `setup-java` the first time. This configures the Maven _settings.xml_ file for the `ossrh` repository, and sets the authentication options to environment variables that are defined in the next step. -1. {% data reusables.github-actions.publish-to-maven-workflow-step %} -1. Calls `setup-java` the second time. This automatically configures the Maven _settings.xml_ file for {% data variables.product.prodname_registry %}. -1. {% data reusables.github-actions.publish-to-packages-workflow-step %} - - For more information about using secrets in your workflow, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." diff --git a/content/actions/guides/publishing-nodejs-packages.md b/content/actions/guides/publishing-nodejs-packages.md deleted file mode 100644 index f428baed2808..000000000000 --- a/content/actions/guides/publishing-nodejs-packages.md +++ /dev/null @@ -1,210 +0,0 @@ ---- -title: Publishing Node.js packages -intro: You can publish Node.js packages to a registry as part of your continuous integration (CI) workflow. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/automating-your-workflow-with-github-actions/publishing-nodejs-packages - - /actions/language-and-framework-guides/publishing-nodejs-packages -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -This guide shows you how to create a workflow that publishes Node.js packages to the {% data variables.product.prodname_registry %} and npm registries after continuous integration (CI) tests pass. With a single workflow, you can publish packages to a single registry or multiple registries. - -### Prerequisites - -We recommend that you have a basic understanding of workflow configuration options and how to create a workflow file. For more information, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -For more information about creating a CI workflow for your Node.js project, see "[Using Node.js with {% data variables.product.prodname_actions %}](/actions/automating-your-workflow-with-github-actions/using-nodejs-with-github-actions)." - -You may also find it helpful to have a basic understanding of the following: - -- "[Configuring npm for use with {% data variables.product.prodname_registry %}](/github/managing-packages-with-github-packages/configuring-npm-for-use-with-github-packages)" -- "[Environment variables](/actions/reference/environment-variables)" -- "[Encrypted secrets](/actions/reference/encrypted-secrets)" -- "[Authentication in a workflow](/actions/reference/authentication-in-a-workflow)" - -### About package configuration - - The `name` and `version` fields in the *package.json* file create a unique identifier that registries use to link your package to a registry. You can add a summary for the package listing page by including a `description` field in the *package.json* file. For more information, see "[Creating a package.json file](https://docs.npmjs.com/creating-a-package-json-file)" and "[Creating Node.js modules](https://docs.npmjs.com/creating-node-js-modules)" in the npm documentation. - -When a local *.npmrc* file exists and has a `registry` value specified, the `npm publish` command uses the registry configured in the *.npmrc* file. {% data reusables.github-actions.setup-node-intro %} - -You can specify the Node.js version installed on the runner using the `setup-node` action. - -If you add steps in your workflow to configure the `publishConfig` fields in your *package.json* file, you don't need to specify the registry-url using the `setup-node` action, but you will be limited to publishing the package to one registry. For more information, see "[publishConfig](https://docs.npmjs.com/files/package.json#publishconfig)" in the npm documentation. - -### Publishing packages to the npm registry - -Each time you create a new release, you can trigger a workflow to publish your package. The workflow in the example below runs when the `release` event triggers with type `created`. The workflow publishes the package to the npm registry if CI tests pass. - -To perform authenticated operations against the npm registry in your workflow, you'll need to store your npm authentication token as a secret in your repository settings. For example, create a secret called `NPM_TOKEN`. For more information, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - -By default, npm uses the `name` field of the *package.json* file to determine the npm registry. When publishing to a global namespace, you only need to include the package name. For example, you would publish a package named `npm-hello-world-test` to the `https://www.npmjs.com/package/npm-hello-world-test`. - -If you're publishing a package that includes a scope prefix, include the scope in the name of your *package.json* file. For example, if your npm scope prefix is octocat and the package name is hello-world, the `name` in your *package.json* file should be `@octocat/hello-world`. If your npm package uses a scope prefix and the package is public, you need to use the option `npm publish --access public`. This is an option that npm requires to prevent someone from publishing a private package unintentionally. - -This example stores the `NPM_TOKEN` secret in the `NODE_AUTH_TOKEN` environment variable. When the `setup-node` action creates an *.npmrc* file, it references the token from the `NODE_AUTH_TOKEN` environment variable. - -{% raw %} -```yaml -name: Node.js Package -on: - release: - types: [created] -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - # Setup .npmrc file to publish to npm - - uses: actions/setup-node@v1 - with: - node-version: '12.x' - registry-url: 'https://registry.npmjs.org' - - run: npm install - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} -``` -{% endraw %} - -In the example above, the `setup-node` action creates an *.npmrc* file on the runner with the following contents: - -``` -//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN} -registry=https://registry.npmjs.org/ -always-auth=true -``` - -### Publishing packages to {% data variables.product.prodname_registry %} - -Each time you create a new release, you can trigger a workflow to publish your package. The workflow in the example below runs anytime the `release` event with type `created` occurs. The workflow publishes the package to {% data variables.product.prodname_registry %} if CI tests pass. - -By default, {% data variables.product.prodname_registry %} publishes a package in the {% data variables.product.prodname_dotcom %} repository you specify in the `name` field of the *package.json* file. For example, you would publish a package named `@my-org/test` to the `my-org/test` {% data variables.product.prodname_dotcom %} repository. For more information, see [`npm-scope`](https://docs.npmjs.com/misc/scope) in the npm documentation. - -To perform authenticated operations against the {% data variables.product.prodname_registry %} registry in your workflow, you can use the `GITHUB_TOKEN`. The `GITHUB_TOKEN` exists in your repository by default and has read and write permissions for packages in the repository where the workflow runs. For more information, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - -This example stores the `GITHUB_TOKEN` secret in the `NODE_AUTH_TOKEN` environment variable. When the `setup-node` action creates an *.npmrc* file, it references the token from the `NODE_AUTH_TOKEN` environment variable. - -{% raw %} -```yaml -name: Node.js Package -on: - release: - types: [created] -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - # Setup .npmrc file to publish to GitHub Packages - - uses: actions/setup-node@v1 - with: - node-version: '12.x' - registry-url: 'https://npm.pkg.github.com' - # Defaults to the user or organization that owns the workflow file - scope: '@octocat' - - run: npm install - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` -{% endraw %} - -The `setup-node` action creates an *.npmrc* file on the runner. When you use the `scope` input to the `setup-node` action, the *.npmrc* file includes the scope prefix. By default, the `setup-node` action sets the scope in the *.npmrc* file to the account that contains that workflow file. - -``` -//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN} -@octocat:registry=https://npm.pkg.github.com -always-auth=true -``` - -### Publishing packages using yarn - -If you use the Yarn package manager, you can install and publish packages using Yarn. - -{% raw %} -```yaml -name: Node.js Package -on: - release: - types: [created] -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - # Setup .npmrc file to publish to npm - - uses: actions/setup-node@v1 - with: - node-version: '12.x' - registry-url: 'https://registry.npmjs.org' - # Defaults to the user or organization that owns the workflow file - scope: '@octocat' - - run: yarn - - run: yarn publish - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} -``` -{% endraw %} - -### Publishing packages to npm and {% data variables.product.prodname_registry %} - -{% note %} - -**Note:** If you need to publish to registries that have different scope prefixes, you'll need to modify the *package.json* file on the runner to change the scope prefix. For example, if you publish a package to the `@mona` scope for npm and `@octocat` scope for {% data variables.product.prodname_registry %}, you can replace the `@mona` scope with `@octocat` in the *package.json* file on the runner after publishing to npm and before publishing to {% data variables.product.prodname_registry %}. - -{% endnote %} - -You can publish your packages to both the npm registry and {% data variables.product.prodname_registry %} by using the `setup-node` action for each registry. - -If you publish a package to both registries, you'll need to ensure that your scope prefix on npm matches your {% data variables.product.prodname_dotcom %} user or organization name. To publish packages to a public registry with a scope prefix, you can use the command `npm publish --access public`. For more information, see [`npm-scope`](https://docs.npmjs.com/misc/scope) and "[Creating and publishing scoped public packages](https://docs.npmjs.com/creating-and-publishing-scoped-public-packages)" in the npm documentation. - -Ensure your *package.json* file includes the scope of your {% data variables.product.prodname_dotcom %} repository and npm registry. For example, if you plan to publish a package in the `octocat/npm-hello-world-test` repository to {% data variables.product.prodname_dotcom %} and https://www.npmjs.com/package/@octocat/npm-hello-world-test, the name in your *package.json* file would be `"name": "@octocat/npm-hello-world-test"`. - -To perform authenticated operations against the {% data variables.product.prodname_registry %} registry in your workflow, you can use the `GITHUB_TOKEN`. The `GITHUB_TOKEN` exists in your repository by default and has read and write permissions for packages in the repository where the workflow runs. For more information, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - -When you use the `scope` input to the `setup-node` action, the action creates an *.npmrc* file that includes the scope prefix. By default, the `setup-node` action sets the scope in the *.npmrc* file to the user or organization that owns the workflow file. - -This workflow calls the `setup-node` action two times. Each time the `setup-node` action runs, it overwrites the *.npmrc* file. The *.npmrc* file references the token that allows you to perform authenticated operations against the package registry from the `NODE_AUTH_TOKEN` environment variable. The workflow sets the `NODE_AUTH_TOKEN` environment variable each time the `npm publish` command is run, first with a token to publish to npm (`NPM_TOKEN`) and then with a token to publish to {% data variables.product.prodname_registry %} (`GITHUB_TOKEN`). - -{% raw %} -```yaml -name: Node.js Package -on: - release: - types: [created] -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - # Setup .npmrc file to publish to npm - - uses: actions/setup-node@v1 - with: - node-version: '10.x' - registry-url: 'https://registry.npmjs.org' - - run: npm install - # Publish to npm - - run: npm publish --access public - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - # Setup .npmrc file to publish to GitHub Packages - - uses: actions/setup-node@v1 - with: - registry-url: 'https://npm.pkg.github.com' - # Defaults to the user or organization that owns the workflow file - scope: '@octocat' - # Publish to GitHub Packages - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` -{% endraw %} diff --git a/content/actions/guides/setting-up-continuous-integration-using-workflow-templates.md b/content/actions/guides/setting-up-continuous-integration-using-workflow-templates.md deleted file mode 100644 index a10ab35eaf7e..000000000000 --- a/content/actions/guides/setting-up-continuous-integration-using-workflow-templates.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Setting up continuous integration using workflow templates -shortTitle: Setting up CI using templates -intro: You can set up continuous integration for your project using a workflow template that matches the language and tooling you want to use. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /articles/setting-up-continuous-integration-using-github-actions - - /github/automating-your-workflow-with-github-actions/setting-up-continuous-integration-using-github-actions - - /actions/automating-your-workflow-with-github-actions/setting-up-continuous-integration-using-github-actions - - /actions/building-and-testing-code-with-continuous-integration/setting-up-continuous-integration-using-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -Anyone with write permission to a repository can set up continuous integration (CI) using {% data variables.product.prodname_actions %}. - -After you set up CI, you can customize the workflow to meet your needs. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -1. Find the template that matches the language and tooling you want to use, then click **Set up this workflow**. - ![Setup workflow button](/assets/images/help/repository/setup-workflow-button.png) -5. Click **Start commit**. - ![Start commit button](/assets/images/help/repository/start-commit.png) -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_new_file %} - -Once a push is made to your repository, you can follow the status and detailed logs of your continuous integration workflow run on {% data variables.product.prodname_dotcom %} and receive customized notifications. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#github-actions-notification-options)" and "[Managing a workflow run](/articles/managing-a-workflow-run)." - -{% data reusables.repositories.actions-workflow-status-badge-into %} - -For more information, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -### Further reading - -- "[About continuous integration](/articles/about-continuous-integration)" -- "[Managing a workflow run](/articles/managing-a-workflow-run)" -{% if currentVersion == "free-pro-team@latest" %} -- "[Managing billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)" -{% endif %} diff --git a/content/actions/guides/storing-workflow-data-as-artifacts.md b/content/actions/guides/storing-workflow-data-as-artifacts.md deleted file mode 100644 index fd103e404287..000000000000 --- a/content/actions/guides/storing-workflow-data-as-artifacts.md +++ /dev/null @@ -1,249 +0,0 @@ ---- -title: Storing workflow data as artifacts -shortTitle: Storing workflow artifacts -intro: Artifacts allow you to share data between jobs in a workflow and store data once that workflow has completed. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /articles/persisting-workflow-data-using-artifacts - - /github/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts - - /actions/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts - - /actions/configuring-and-managing-workflows/persisting-workflow-data-using-artifacts -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About workflow artifacts - -Artifacts allow you to persist data after a job has completed, and share that data with another job in the same workflow. An artifact is a file or collection of files produced during a workflow run. For example, you can use artifacts to save your build and test output after a workflow run has ended. - -{% data reusables.github-actions.artifact-log-retention-statement %} The retention period for a pull request restarts each time someone pushes a new commit to the pull request. - -These are some of the common artifacts that you can upload: - -- Log files and core dumps -- Test results, failures, and screenshots -- Binary or compressed files -- Stress test performance output and code coverage results - -{% if currentVersion == "free-pro-team@latest" %} - -Storing artifacts uses storage space on {% data variables.product.product_name %}. {% data reusables.github-actions.actions-billing %} For more information, see "[Managing billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)." - -{% else %} - -Artifacts consume storage space on the external blob storage that is configured for {% data variables.product.prodname_actions %} on {% data variables.product.product_location %}. - -{% endif %} - -Artifacts are uploaded during a workflow run, and you can view an artifact's name and size in the UI. When an artifact is downloaded using the {% data variables.product.product_name %} UI, all files that were individually uploaded as part of the artifact get zipped together into a single file. This means that billing is calculated based on the size of the uploaded artifact and not the size of the zip file. - -{% data variables.product.product_name %} provides two actions that you can use to upload and download build artifacts. For more information, see the {% if currentVersion == "free-pro-team@latest" %}[actions/upload-artifact](https://github.com/actions/upload-artifact) and [download-artifact](https://github.com/actions/download-artifact) actions{% else %} `actions/upload-artifact` and `download-artifact` actions on {% data variables.product.product_location %}{% endif %}. - -To share data between jobs: - -* **Uploading files**: Give the uploaded file a name and upload the data before the job ends. -* **Downloading files**: You can only download artifacts that were uploaded during the same workflow run. When you download a file, you can reference it by name. - -The steps of a job share the same environment on the runner machine, but run in their own individual processes. To pass data between steps in a job, you can use inputs and outputs. For more information about inputs and outputs, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/articles/metadata-syntax-for-github-actions)." - -### Uploading build and test artifacts - -You can create a continuous integration (CI) workflow to build and test your code. For more information about using {% data variables.product.prodname_actions %} to perform CI, see "[About continuous integration](/articles/about-continuous-integration)." - -The output of building and testing your code often produces files you can use to debug test failures and production code that you can deploy. You can configure a workflow to build and test the code pushed to your repository and report a success or failure status. You can upload the build and test output to use for deployments, debugging failed tests or crashes, and viewing test suite coverage. - -You can use the `upload-artifact` action to upload artifacts. When uploading an artifact, you can specify a single file or directory, or multiple files or directories. You can also exclude certain files or directories, and use wildcard patterns. We recommend that you provide a name for an artifact, but if no name is provided then `artifact` will be used as the default name. For more information on syntax, see the {% if currentVersion == "free-pro-team@latest" %}[actions/upload-artifact](https://github.com/actions/upload-artifact) action{% else %} `actions/upload-artifact` action on {% data variables.product.product_location %}{% endif %}. - -#### Example - -For example, your repository or a web application might contain SASS and TypeScript files that you must convert to CSS and JavaScript. Assuming your build configuration outputs the compiled files in the `dist` directory, you would deploy the files in the `dist` directory to your web application server if all tests completed successfully. - -``` -|-- hello-world (repository) -| └── dist -| └── tests -| └── src -| └── sass/app.scss -| └── app.ts -| └── output -| └── test -| -``` - -This example shows you how to create a workflow for a Node.js project that builds the code in the `src` directory and runs the tests in the `tests` directory. You can assume that running `npm test` produces a code coverage report named `code-coverage.html` stored in the `output/test/` directory. - -The workflow uploads the production artifacts in the `dist` directory, but excludes any markdown files. It also and uploads the `code-coverage.html` report as another artifact. - -```yaml -name: Node CI - -on: [push] - -jobs: - build_and_test: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - name: npm install, build, and test - run: | - npm install - npm run build --if-present - npm test - - name: Archive production artifacts - uses: actions/upload-artifact@v2 - with: - name: dist-without-markdown - path: | - dist - !dist/**/*.md - - name: Archive code coverage results - uses: actions/upload-artifact@v2 - with: - name: code-coverage-report - path: output/test/code-coverage.html -``` - -![Image of workflow upload artifact workflow run](/assets/images/help/repository/upload-build-test-artifact.png) - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -### Configuring a custom artifact retention period - -You can define a custom retention period for individual artifacts created by a workflow. When using a workflow to create a new artifact, you can use `retention-days` with the `upload-artifact` action. This example demonstrates how to set a custom retention period of 5 days for the artifact named `my-artifact`: - -``` - - name: 'Upload Artifact' - uses: actions/upload-artifact@v2 - with: - name: my-artifact - path: my_file.txt - retention-days: 5 -``` - -The `retention-days` value cannot exceed the retention limit set by the repository, organization, or enterprise. -{% endif %} - -### Downloading or deleting artifacts - -During a workflow run, you can use the [`download-artifact`](https://github.com/actions/download-artifact)action to download artifacts that were previously uploaded in the same workflow run. - -After a workflow run has been completed, you can download or delete artifacts on {% data variables.product.prodname_dotcom %} or using the REST API. For more information, see "[Downloading workflow artifacts](/actions/managing-workflow-runs/downloading-workflow-artifacts)," "[Removing workflow artifacts](/actions/managing-workflow-runs/removing-workflow-artifacts)," and the "[Artifacts REST API](/v3/actions/artifacts/)." - -#### Downloading artifacts during a workflow run - -The [`actions/download-artifact`](https://github.com/actions/download-artifact) action can be used to download previously uploaded artifacts during a workflow run. - -{% note %} - -**Note:** You can only download artifacts in a workflow that were uploaded during the same workflow run. - -{% endnote %} - -Specify an artifact's name to download an individual artifact. If you uploaded an artifact without specifying a name, the default name is `artifact`. - -```yaml -- name: Download a single artifact - uses: actions/download-artifact@v2 - with: - name: my-artifact -``` - -You can also download all artifacts in a workflow run by not specifying a name. This can be useful if you are working with lots of artifacts. - -```yaml -- name: Download all workflow run artifacts - uses: actions/download-artifact@v2 -``` - -If you download all a workflow run's artifacts, a directory for each artifact is created using its name. - -For more information on syntax, see the {% if currentVersion == "free-pro-team@latest" %}[actions/download-artifact](https://github.com/actions/download-artifact) action{% else %} `actions/download-artifact` action on {% data variables.product.product_location %}{% endif %}. - -### Passing data between jobs in a workflow - -You can use the `upload-artifact` and `download-artifact` actions to share data between jobs in a workflow. This example workflow illustrates how to pass data between jobs in the same workflow. For more information, see the {% if currentVersion == "free-pro-team@latest" %}[actions/upload-artifact](https://github.com/actions/upload-artifact) and [download-artifact](https://github.com/actions/download-artifact) actions{% else %} `actions/upload-artifact` and `download-artifact` actions on {% data variables.product.product_location %}{% endif %}. - -Jobs that are dependent on a previous job's artifacts must wait for the dependent job to complete successfully. This workflow uses the `needs` keyword to ensure that `job_1`, `job_2`, and `job_3` run sequentially. For example, `job_2` requires `job_1` using the `needs: job_1` syntax. - -Job 1 performs these steps: -- Performs a math calculation and saves the result to a text file called `math-homework.txt`. -- Uses the `upload-artifact` action to upload the `math-homework.txt` file with the name `homework`. The action places the file in a directory named `homework`. - -Job 2 uses the result in the previous job: -- Downloads the `homework` artifact uploaded in the previous job. By default, the `download-artifact` action downloads artifacts to the workspace directory that the step is executing in. You can use the `path` input parameter to specify a different download directory. -- Reads the value in the `homework/math-homework.txt` file, performs a math calculation, and saves the result to `math-homework.txt`. -- Uploads the `math-homework.txt` file. This upload overwrites the previous upload because both of the uploads share the same name. - -Job 3 displays the result uploaded in the previous job: -- Downloads the `homework` artifact. -- Prints the result of the math equation to the log. - -The full math operation performed in this workflow example is `(3 + 7) x 9 = 90`. - -```yaml -name: Share data between jobs - -on: [push] - -jobs: - job_1: - name: Add 3 and 7 - runs-on: ubuntu-latest - steps: - - shell: bash - run: | - expr 3 + 7 > math-homework.txt - - name: Upload math result for job 1 - uses: actions/upload-artifact@v2 - with: - name: homework - path: math-homework.txt - - job_2: - name: Multiply by 9 - needs: job_1 - runs-on: windows-latest - steps: - - name: Download math result for job 1 - uses: actions/download-artifact@v2 - with: - name: homework - - shell: bash - run: | - value=`cat math-homework.txt` - expr $value \* 9 > math-homework.txt - - name: Upload math result for job 2 - uses: actions/upload-artifact@v2 - with: - name: homework - path: math-homework.txt - - job_3: - name: Display results - needs: job_2 - runs-on: macOS-latest - steps: - - name: Download math result for job 2 - uses: actions/download-artifact@v2 - with: - name: homework - - name: Print the final result - shell: bash - run: | - value=`cat math-homework.txt` - echo The result is $value -``` - -![Workflow that passes data between jobs to perform math](/assets/images/help/repository/passing-data-between-jobs-in-a-workflow.png) - -{% if currentVersion == "free-pro-team@latest" %} - -### Further reading - -- "[Managing billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)". - -{% endif %} diff --git a/content/actions/hosting-your-own-runners/about-self-hosted-runners.md b/content/actions/hosting-your-own-runners/about-self-hosted-runners.md deleted file mode 100644 index d9daff6d67c7..000000000000 --- a/content/actions/hosting-your-own-runners/about-self-hosted-runners.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: About self-hosted runners -intro: 'You can host your own runners and customize the environment used to run jobs in your {% data variables.product.prodname_actions %} workflows.' -redirect_from: - - /github/automating-your-workflow-with-github-actions/about-self-hosted-runners - - /actions/automating-your-workflow-with-github-actions/about-self-hosted-runners -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About self-hosted runners - -{% data reusables.github-actions.self-hosted-runner-description %} Self-hosted runners can be physical, virtual, in a container, on-premises, or in a cloud. - -You can add self-hosted runners at various levels in the management hierarchy: -- Repository-level runners are dedicated to a single repository. -- Organization-level runners can process jobs for multiple repositories in an organization. -- Enterprise-level runners can be assigned to multiple organizations in an enterprise account. - -Your runner machine connects to {% data variables.product.product_name %} using the {% data variables.product.prodname_actions %} self-hosted runner application. {% data reusables.github-actions.runner-app-open-source %} When a new version is released, the runner application automatically updates itself when a job is assigned to the runner, or within a week of release if the runner hasn't been assigned any jobs. - -{% data reusables.github-actions.self-hosted-runner-auto-removal %} - -For more information about installing and using self-hosted runners, see "[Adding self-hosted runners](/github/automating-your-workflow-with-github-actions/adding-self-hosted-runners)" and "[Using self-hosted runners in a workflow](/github/automating-your-workflow-with-github-actions/using-self-hosted-runners-in-a-workflow)." - -### Differences between {% data variables.product.prodname_dotcom %}-hosted and self-hosted runners - -{% data variables.product.prodname_dotcom %}-hosted runners offer a quicker, simpler way to run your workflows, while self-hosted runners are a highly configurable way to run workflows in your own custom environment. - -**{% data variables.product.prodname_dotcom %}-hosted runners:** -- Receive automatic updates for the operating system, preinstalled packages and tools, and the self-hosted runner application. -- Are managed and maintained by {% data variables.product.prodname_dotcom %}. -- Provide a clean instance for every job execution. -- Use free minutes on your {% data variables.product.prodname_dotcom %} plan, with per-minute rates applied after surpassing the free minutes. - -**Self-hosted runners:** -- Receive automatic updates for the self-hosted runner application only. You are responsible updating the operating system and all other software. -- Can use cloud services or local machines that you already pay for. -- Are customizable to your hardware, operating system, software, and security requirements. -- Don't need to have a clean instance for every job execution. -- Are free to use with {% data variables.product.prodname_actions %}, but you are responsible for the cost of maintaining your runner machines. - -### Requirements for self-hosted runner machines - -You can use any machine as a self-hosted runner as long at it meets these requirements: - -* You can install and run the self-hosted runner application on the machine. For more information, see "[Supported operating systems for self-hosted runners](#supported-operating-systems-for-self-hosted-runners)." -* The machine can communicate with {% data variables.product.prodname_actions %}. For more information, see "[Communication between self-hosted runners and {% data variables.product.prodname_dotcom %}](#communication-between-self-hosted-runners-and-github)." -* The machine has enough hardware resources for the type of workflows you plan to run. The self-hosted runner application itself only requires minimal resources. -* If you want to run workflows that use Docker container actions or service containers, you must use a Linux machine and Docker must be installed. - -### Usage limits - -There are some limits on {% data variables.product.prodname_actions %} usage when using self-hosted runners. These limits are subject to change. - -{% data reusables.github-actions.usage-workflow-run-time %} -- **Job queue time** - Each job for self-hosted runners can be queued for a maximum of 24 hours. If a self-hosted runner does not start executing the job within this limit, the job is terminated and fails to complete. -{% data reusables.github-actions.usage-api-requests %} -- **Job matrix** - {% data reusables.github-actions.usage-matrix-limits %} - -### Supported operating systems for self-hosted runners - -The following operating systems are supported for the self-hosted runner application. - -#### Linux - -- Red Hat Enterprise Linux 7 -- CentOS 7 -- Oracle Linux 7 -- Fedora 29 or later -- Debian 9 or later -- Ubuntu 16.04 or later -- Linux Mint 18 or later -- openSUSE 15 or later -- SUSE Enterprise Linux (SLES) 12 SP2 or later - -#### Windows - -- Windows 7 64-bit -- Windows 8.1 64-bit -- Windows 10 64-bit -- Windows Server 2012 R2 64-bit -- Windows Server 2016 64-bit -- Windows Server 2019 64-bit - -#### MacOS - -- macOS 10.13 (High Sierra) or later - -{% if enterpriseServerVersions contains currentVersion %} - -### Supported actions on self-hosted runners - -Some extra configuration might be required to use actions from {% data variables.product.prodname_dotcom_the_website %} with {% data variables.product.prodname_ghe_server %}, or to use the `actions/setup-LANGUAGE` actions with self-hosted runners that do not have internet access. For more information, see "[Managing access to actions from {% data variables.product.prodname_dotcom_the_website %}](/enterprise/admin/github-actions/managing-access-to-actions-from-githubcom)" and contact your {% data variables.product.prodname_enterprise %} site administrator. - -{% endif %} - -### Communication between self-hosted runners and {% data variables.product.product_name %} - -The self-hosted runner polls {% data variables.product.product_name %} to retrieve application updates and to check if any jobs are queued for processing. The self-hosted runner uses a HTTPS _long poll_ that opens a connection to {% data variables.product.product_name %} for 50 seconds, and if no response is received, it then times out and creates a new long poll. The application must be running on the machine to accept and run {% data variables.product.prodname_actions %} jobs. - -{% if currentVersion == "free-pro-team@latest" %} - -You must ensure that the machine has the appropriate network access to communicate with the {% data variables.product.prodname_dotcom %} URLs listed below. - -``` -github.com -api.github.com -*.actions.githubusercontent.com -``` - -If you use an IP address allow list for your {% data variables.product.prodname_dotcom %} organization or enterprise account, you must add your self-hosted runner's IP address to the allow list. For more information, see "[Managing allowed IP addresses for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-allowed-ip-addresses-for-your-organization#using-github-actions-with-an-ip-allow-list)" or "[Enforcing security settings in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account#using-github-actions-with-an-ip-allow-list)". - -{% else %} - -You must ensure that the machine has the appropriate network access to communicate with {% data variables.product.product_location %}. - -{% endif %} - -You can also use self-hosted runners with a proxy server. For more information, see "[Using a proxy server with self-hosted runners](/actions/automating-your-workflow-with-github-actions/using-a-proxy-server-with-self-hosted-runners)." - -### Self-hosted runner security with public repositories - -{% data reusables.github-actions.self-hosted-runner-security %} - -This is not an issue with {% data variables.product.prodname_dotcom %}-hosted runners because each {% data variables.product.prodname_dotcom %}-hosted runner is always a clean isolated virtual machine, and it is destroyed at the end of the job execution. - -Untrusted workflows running on your self-hosted runner poses significant security risks for your machine and network environment, especially if your machine persists its environment between jobs. Some of the risks include: - -* Malicious programs running on the machine. -* Escaping the machine's runner sandbox. -* Exposing access to the machine's network environment. -* Persisting unwanted or dangerous data on the machine. diff --git a/content/actions/hosting-your-own-runners/adding-self-hosted-runners.md b/content/actions/hosting-your-own-runners/adding-self-hosted-runners.md deleted file mode 100644 index 4326f54c67d5..000000000000 --- a/content/actions/hosting-your-own-runners/adding-self-hosted-runners.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Adding self-hosted runners -intro: 'You can add a self-hosted runner to a repository, an organization, or an enterprise.' -redirect_from: - - /github/automating-your-workflow-with-github-actions/adding-self-hosted-runners - - /actions/automating-your-workflow-with-github-actions/adding-self-hosted-runners -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -For information on supported operating systems for self-hosted runners, or using self-hosted runners with a proxy server, see "[About self-hosted runners](/github/automating-your-workflow-with-github-actions/about-self-hosted-runners)." - -{% warning %} - -**Warning:** {% data reusables.github-actions.self-hosted-runner-security %} - -For more information, see "[About self-hosted runners](/github/automating-your-workflow-with-github-actions/about-self-hosted-runners#self-hosted-runner-security-with-public-repositories)." - -{% endwarning %} - -### Adding a self-hosted runner to a repository - -You can add self-hosted runners to a single repository. To add a self-hosted runner to a user repository, you must be the repository owner. For an organization repository, you must be an organization owner or have admin access to the repository. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.settings-sidebar-actions %} -1. Under "Self-hosted runners," click **Add runner**. -{% data reusables.github-actions.self-hosted-runner-configure %} -{% data reusables.github-actions.self-hosted-runner-check-installation-success %} - -### Adding a self-hosted runner to an organization - -You can add self-hosted runners at the organization level, where they can be used to process jobs for multiple repositories in an organization. To add a self-hosted runner to an organization, you must be an organization owner. - -{% data reusables.organizations.navigate-to-org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.settings-sidebar-actions %} -1. Under "Self-hosted runners," click **Add new**, then click **New runner**. -{% data reusables.github-actions.self-hosted-runner-configure %} -{% data reusables.github-actions.self-hosted-runner-check-installation-success %} - -### Adding a self-hosted runner to an enterprise - -You can add self-hosted runners to an enterprise, where they can be assigned to multiple organizations. The organization admins are then able to control which repositories can use it. - -{% if currentVersion == "free-pro-team@latest" %} -To add a self-hosted runner to an enterprise account, you must be an enterprise owner. -{% else if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.21"%} -To add a self-hosted runner at the enterprise level of {% data variables.product.product_location %}, you must be a site administrator. -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.enterprise-accounts.access-enterprise %} -{% else if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.21"%} -{% data reusables.enterprise_site_admin_settings.access-settings %} -{% data reusables.enterprise_site_admin_settings.business %} -{% endif %} -{% data reusables.enterprise-accounts.policies-tab %} -{% data reusables.enterprise-accounts.actions-tab %} -1. Click the **Self-hosted runners** tab. -1. Click **Add new**, then click **New runner**. New runners are assigned to the default group. You can modify the runner's group after you've registered the runner. For more information, see "[Managing access to self-hosted runners](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group)." -{% data reusables.github-actions.self-hosted-runner-configure %} -{% data reusables.github-actions.self-hosted-runner-check-installation-success %} diff --git a/content/actions/hosting-your-own-runners/configuring-the-self-hosted-runner-application-as-a-service.md b/content/actions/hosting-your-own-runners/configuring-the-self-hosted-runner-application-as-a-service.md deleted file mode 100644 index ad2f7553f4a5..000000000000 --- a/content/actions/hosting-your-own-runners/configuring-the-self-hosted-runner-application-as-a-service.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Configuring the self-hosted runner application as a service -intro: You can configure the self-hosted runner application as a service to automatically start the runner application when the machine starts. -redirect_from: - - /actions/automating-your-workflow-with-github-actions/configuring-the-self-hosted-runner-application-as-a-service -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -{% capture service_first_step %}1. Stop the self-hosted runner application if it is currently running.{% endcapture %} -{% capture service_non_windows_intro_shell %}On the runner machine, open a shell in the directory where you installed the self-hosted runner application. Use the commands below to install and manage the self-hosted runner service.{% endcapture %} -{% capture service_nonwindows_intro %}You must add a runner to {% data variables.product.product_name %} before you can configure the self-hosted runner application as a service. For more information, see "[Adding self-hosted runners](/github/automating-your-workflow-with-github-actions/adding-self-hosted-runners)."{% endcapture %} -{% capture service_win_name %}actions.runner.*{% endcapture %} - - -{% linux %} - -{{ service_nonwindows_intro }} - -For Linux systems that use `systemd`, you can use the `svc.sh` script distributed with the self-hosted runner application to install and manage using the application as a service. - -{{ service_non_windows_intro_shell }} - -{% endlinux %} - -{% windows %} - -{% note %} - -**Note:** Configuring the self-hosted runner application as a service on Windows is part of the application configuration process. If you have already configured the self-hosted runner application but did not choose to configure it as a service, you must remove the runner from {% data variables.product.prodname_dotcom %} and re-configure the application. When you re-configure the application, choose the option to configure the application as a service. - -For more information, see "[Removing self-hosted runners](/actions/automating-your-workflow-with-github-actions/removing-self-hosted-runners)" and "[Adding self-hosted runners](/actions/automating-your-workflow-with-github-actions/adding-self-hosted-runners)." - -{% endnote %} - -You can manage the runner service in the Windows **Services** application, or you can use PowerShell to run the commands below. - -{% endwindows %} - -{% mac %} - -{{ service_nonwindows_intro }} - -{{ service_non_windows_intro_shell }} - -{% endmac %} - -{% linux %} - -### Installing the service - -{{ service_first_step }} -1. Install the service with the following command: - - ```shell - sudo ./svc.sh install - ``` - -{% endlinux %} -{% mac %} - -### Installing the service - -{{ service_first_step }} -1. Install the service with the following command: - - ```shell - ./svc.sh install - ``` -{% endmac %} - -### Starting the service - -Start the service with the following command: - -{% linux %} -```shell -sudo ./svc.sh start -``` -{% endlinux %} -{% windows %} -```shell -Start-Service "{{ service_win_name }}" -``` -{% endwindows %} -{% mac %} -```shell -./svc.sh start -``` -{% endmac %} - -### Checking the status of the service - -Check the status of the service with the following command: - -{% linux %} -```shell -sudo ./svc.sh status -``` -{% endlinux %} -{% windows %} -```shell -Get-Service "{{ service_win_name }}" -``` -{% endwindows %} -{% mac %} -```shell -./svc.sh status -``` -{% endmac %} - - For more information on viewing the status of your self-hosted runner, see "[Monitoring and troubleshooting self-hosted runners](/actions/hosting-your-own-runners/monitoring-and-troubleshooting-self-hosted-runners)." - -### Stopping the service - -Stop the service with the following command: - -{% linux %} -```shell -sudo ./svc.sh stop -``` -{% endlinux %} -{% windows %} -```shell -Stop-Service "{{ service_win_name }}" -``` -{% endwindows %} -{% mac %} -```shell -./svc.sh stop -``` -{% endmac %} - -### Uninstalling the service - -1. Stop the service if it is currently running. -1. Uninstall the service with the following command: - - {% linux %} - ```shell - sudo ./svc.sh uninstall - ``` - {% endlinux %} - {% windows %} - ```shell - Remove-Service "{{ service_win_name }}" - ``` - {% endwindows %} - {% mac %} - ```shell - ./svc.sh uninstall - ``` - {% endmac %} - - -{% linux %} - -### Customizing the self-hosted runner service - -If you don't want to use the above default `systemd` service configuration, you can create a customized service or use whichever service mechanism you prefer. Consider using the `serviced` template at `actions-runner/bin/actions.runner.service.template` as a reference. If you use a customized service, the self-hosted runner service must always be invoked using the `runsvc.sh` entry point. - -{% endlinux %} - -{% mac %} - -### Customizing the self-hosted runner service - -If you don't want to use the above default launchd service configuration, you can create a customized service or use whichever service mechanism you prefer. Consider using the `plist` template at `actions-runner/bin/actions.runner.plist.template` as a reference. If you use a customized service, the self-hosted runner service must always be invoked using the `runsvc.sh` entry point. - -{% endmac %} diff --git a/content/actions/hosting-your-own-runners/index.md b/content/actions/hosting-your-own-runners/index.md deleted file mode 100644 index f73801b2ed7b..000000000000 --- a/content/actions/hosting-your-own-runners/index.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Hosting your own runners -intro: You can create self-hosted runners to run workflows in a highly customizable environment. -redirect_from: - - /github/automating-your-workflow-with-github-actions/hosting-your-own-runners - - /actions/automating-your-workflow-with-github-actions/hosting-your-own-runners -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -{% link_in_list /about-self-hosted-runners %} -{% link_in_list /adding-self-hosted-runners %} -{% link_in_list /configuring-the-self-hosted-runner-application-as-a-service %} -{% link_in_list /using-a-proxy-server-with-self-hosted-runners %} -{% link_in_list /using-labels-with-self-hosted-runners %} -{% link_in_list /using-self-hosted-runners-in-a-workflow %} -{% link_in_list /managing-access-to-self-hosted-runners-using-groups %} -{% link_in_list /monitoring-and-troubleshooting-self-hosted-runners %} -{% link_in_list /removing-self-hosted-runners %} diff --git a/content/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups.md b/content/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups.md deleted file mode 100644 index 1bc824842615..000000000000 --- a/content/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Managing access to self-hosted runners using groups -intro: You can use policies to limit access to self-hosted runners that have been added to an organization or enterprise. -redirect_from: - - /actions/hosting-your-own-runners/managing-access-to-self-hosted-runners -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About self-hosted runner groups - -{% if currentVersion == "free-pro-team@latest" %} -{% note %} - -**Note:** All organizations have a single default self-hosted runner group. Creating and managing additional self-hosted runner groups is only available to enterprise accounts, and for organizations owned by an enterprise account. - -{% endnote %} -{% endif %} - -Self-hosted runner groups are used to control access to self-hosted runners at the organization and enterprise level. Enterprise admins can configure access policies that control which organizations in an enterprise have access to the runner group. Organization admins can configure access policies that control which repositories in an organization have access to the runner group. - -When an enterprise admin grants an organization access to a runner group, organization admins can see the runner group listed in the organization's self-hosted runner settings. The organizations admins can then assign additional granular repository access policies to the enterprise runner group. - -When new runners are created, they are automatically assigned to the default group. Runners can only be in one group at a time. You can move runners from the default group to another group. For more information, see "[Moving a self-hosted runner to a group](#moving-a-self-hosted-runner-to-a-group)." - -### Creating a self-hosted runner group for an organization - -All organizations have a single default self-hosted runner group. Organizations within an enterprise account can create additional self-hosted groups. Organization admins can allow individual repositories access to a runner group. - -Self-hosted runners are automatically assigned to the default group when created, and can only be members of one group at a time. You can move a runner from the default group to any group you create. - -When creating a group, you must choose a policy that defines which repositories have access to the runner group. You can configure a runner group to be accessible to a specific list of repositories, all private repositories, or all repositories in the organization. - -{% data reusables.organizations.navigate-to-org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.settings-sidebar-actions %} -1. In the **Self-hosted runners** section, click **Add new**, and then **New group**. - - ![Add runner group](/assets/images/help/settings/actions-org-add-runner-group.png) -1. Enter a name for your runner group, and select an access policy from the **Repository access** dropdown list. - - ![Add runner group options](/assets/images/help/settings/actions-org-add-runner-group-options.png) -1. Click **Save group** to create the group and apply the policy. - -### Creating a self-hosted runner group for an enterprise - -Enterprises can add their self-hosted runners to groups for access management. Enterprises can create groups of self-hosted runners that are accessible to specific organizations in the enterprise account. Organization admins can then assign additional granular repository access policies to the enterprise runner groups. - -Self-hosted runners are automatically assigned to the default group when created, and can only be members of one group at a time. You can assign the runner to a specific group during the registration process, or you can later move the runner from the default group to a custom group. - -When creating a group, you must choose a policy that grants access to all organizations in the enterprise or choose specific organizations. - -{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.enterprise-accounts.access-enterprise %} -{% else if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.21"%} -{% data reusables.enterprise_site_admin_settings.access-settings %} -{% data reusables.enterprise_site_admin_settings.business %} -{% endif %} -{% data reusables.enterprise-accounts.policies-tab %} -{% data reusables.enterprise-accounts.actions-tab %} -1. Click the **Self-hosted runners** tab. -1. Click **Add new**, and then **New group**. - - ![Add runner group](/assets/images/help/settings/actions-enterprise-account-add-runner-group.png) -1. Enter a name for your runner group, and select an access policy from the **Organization access** dropdown list. - - ![Add runner group options](/assets/images/help/settings/actions-enterprise-account-add-runner-group-options.png) -1. Click **Save group** to create the group and apply the policy. - -### Changing the access policy of a self-hosted runner group - -You can update the access policy of a runner group, or rename a runner group. - -{% data reusables.github-actions.self-hosted-runner-configure-runner-group-access %} - -### Moving a self-hosted runner to a group - -New self-hosted runners are automatically assigned to the default group, and can then be moved to another group. - -1. In the **Self-hosted runners** section of the settings page, locate the current group of the runner you want to move group and expand the list of group members. - ![View runner group members](/assets/images/help/settings/actions-org-runner-group-members.png) -1. Select the checkbox next to the self-hosted runner, and then click **Move to group** to see the available destinations. - ![Runner group member move](/assets/images/help/settings/actions-org-runner-group-member-move.png) -1. To move the runner, click on the destination group. - ![Runner group member move](/assets/images/help/settings/actions-org-runner-group-member-move-destination.png) - -### Removing a self-hosted runner group - -Self-hosted runners are automatically returned to the default group when their group is removed. - -1. In the **Self-hosted runners** section of the settings page, locate the group you want to delete, and click the {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %} button. - ![View runner group settings](/assets/images/help/settings/actions-org-runner-group-kebab.png) - -1. To remove the group, click **Remove group**. - ![View runner group settings](/assets/images/help/settings/actions-org-runner-group-remove.png) - -1. Review the confirmation prompts, and click **Remove this runner group**. diff --git a/content/actions/hosting-your-own-runners/monitoring-and-troubleshooting-self-hosted-runners.md b/content/actions/hosting-your-own-runners/monitoring-and-troubleshooting-self-hosted-runners.md deleted file mode 100644 index d345f7018b4f..000000000000 --- a/content/actions/hosting-your-own-runners/monitoring-and-troubleshooting-self-hosted-runners.md +++ /dev/null @@ -1,195 +0,0 @@ ---- -title: Monitoring and troubleshooting self-hosted runners -intro: You can monitor your self-hosted runners to view their activity and diagnose common issues. -redirect_from: - - /actions/hosting-your-own-runners/checking-the-status-of-self-hosted-runners - - /github/automating-your-workflow-with-github-actions/checking-the-status-of-self-hosted-runners - - /actions/automating-your-workflow-with-github-actions/checking-the-status-of-self-hosted-runners -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Checking the status of a self-hosted runner - -{% data reusables.github-actions.self-hosted-runner-management-permissions-required %} - -{% data reusables.github-actions.self-hosted-runner-navigate-repo-and-org %} -{% data reusables.organizations.settings-sidebar-actions %} -1. Under "Self-hosted runners," you can view a list of registered runners, including the runner's name, labels, and status. - - ![Runner list](/assets/images/help/settings/actions-runner-list.png) - - The status can be one of the following: - - * **Idle**: The runner is connected to {% data variables.product.product_name %} and is ready to execute jobs. - * **Active**: The runner is currently executing a job. - * **Offline**: The runner is not connected to {% data variables.product.product_name %}. This could be because the machine is offline, the self-hosted runner application is not running on the machine, or the self-hosted runner application cannot communicate with {% data variables.product.product_name %}. - - -### Reviewing the self-hosted runner application log files - -You can monitor the status of the self-hosted runner application and its activities. Log files are kept in the `_diag` directory, and a new one is generated each time the application is started. The filename begins with *Runner_*, and is followed by a UTC timestamp of when the application was started. - -For detailed logs on workflow job executions, see the next section describing the *Worker_* files. - -### Reviewing a job's log file - -The self-hosted runner application creates a detailed log file for each job that it processes. These files are stored in the `_diag` directory, and the filename begins with *Worker_*. - -{% linux %} - -### Using journalctl to check the self-hosted runner application service - -For Linux-based self-hosted runners running the application using a service, you can use `journalctl` to monitor their real-time activity. The default systemd-based service uses the following naming convention: `actions.runner.-..service`. This name is truncated if it exceeds 80 characters, so the preferred way of finding the service's name is by checking the _.service_ file. For example: - -```shell -$ cat ~/actions-runner/.service -actions.runner.octo-org-octo-repo.runner01.service -``` - -You can use `journalctl` to monitor the real-time activity of the self-hosted runner: - -```shell -$ sudo journalctl -u actions.runner.octo-org-octo-repo.runner01.service -f -``` - -In this example output, you can see `runner01` start, receive a job named `testAction`, and then display the resulting status: - -```shell -Feb 11 14:57:07 runner01 runsvc.sh[962]: Starting Runner listener with startup type: service -Feb 11 14:57:07 runner01 runsvc.sh[962]: Started listener process -Feb 11 14:57:07 runner01 runsvc.sh[962]: Started running service -Feb 11 14:57:16 runner01 runsvc.sh[962]: √ Connected to GitHub -Feb 11 14:57:17 runner01 runsvc.sh[962]: 2020-02-11 14:57:17Z: Listening for Jobs -Feb 11 16:06:54 runner01 runsvc.sh[962]: 2020-02-11 16:06:54Z: Running job: testAction -Feb 11 16:07:10 runner01 runsvc.sh[962]: 2020-02-11 16:07:10Z: Job testAction completed with result: Succeeded -``` - -To view the systemd configuration, you can locate the service file here: `/etc/systemd/system/actions.runner.-..service`. -If you want to customize the self-hosted runner application service, do not directly modify this file. Follow the instructions described in "[Configuring the self-hosted runner application as a service](/actions/hosting-your-own-runners/configuring-the-self-hosted-runner-application-as-a-service#customizing-the-self-hosted-runner-service)." - -{% endlinux %} - -{% mac %} - -### Using launchd to check the self-hosted runner application service - -For macOS-based self-hosted runners running the application as a service, you can use `launchctl` to monitor their real-time activity. The default launchd-based service uses the following naming convention: `actions.runner.-.`. This name is truncated if it exceeds 80 characters, so the preferred way of finding the service's name is by checking the _.service_ file in the runner directory: - -```shell -% cat ~/actions-runner/.service -/Users/exampleUsername/Library/LaunchAgents/actions.runner.octo-org-octo-repo.runner01.plist -``` - -The `svc.sh` script uses `launchctl` to check whether the application is running. For example: - -```shell -$ ./svc.sh status -status actions.runner.example.runner01: -/Users/exampleUsername/Library/LaunchAgents/actions.runner.example.runner01.plist -Started: -379 0 actions.runner.example.runner01 -``` - -The resulting output includes the process ID and the name of the application’s launchd service. - -To view the launchd configuration, you can locate the service file here: `/Users/exampleUsername/Library/LaunchAgents/actions.runner...service`. -If you want to customize the self-hosted runner application service, do not directly modify this file. Follow the instructions described in "[Configuring the self-hosted runner application as a service](/actions/hosting-your-own-runners/configuring-the-self-hosted-runner-application-as-a-service#customizing-the-self-hosted-runner-service-1)." - -{% endmac %} - - -{% windows %} - -### Using PowerShell to check the self-hosted runner application service - -For Windows-based self-hosted runners running the application as a service, you can use PowerShell to monitor their real-time activity. The service uses the naming convention `GitHub Actions Runner (-.)`. You can also find the service's name by checking the _.service_ file in the runner directory: - -```shell -PS C:\actions-runner> Get-Content .service -actions.runner.octo-org-octo-repo.runner01.service -``` - -You can view the status of the runner in the Windows _Services_ application (`services.msc`). You can also use PowerShell to check whether the service is running: - -```shell -PS C:\actions-runner> Get-Service "actions.runner.octo-org-octo-repo.runner01.service" | Select-Object Name, Status -Name Status ----- ------ -actions.runner.octo-org-octo-repo.runner01.service Running -``` - -You can use PowerShell to check the recent activity of the self-hosted runner. In this example output, you can see the application start, receive a job named `testAction`, and then display the resulting status: - -```shell -PS C:\actions-runner> Get-EventLog -LogName Application -Source ActionsRunnerService - - Index Time EntryType Source InstanceID Message - ----- ---- --------- ------ ---------- ------- - 136 Mar 17 13:45 Information ActionsRunnerService 100 2020-03-17 13:45:48Z: Job Greeting completed with result: Succeeded - 135 Mar 17 13:45 Information ActionsRunnerService 100 2020-03-17 13:45:34Z: Running job: testAction - 134 Mar 17 13:41 Information ActionsRunnerService 100 2020-03-17 13:41:54Z: Listening for Jobs - 133 Mar 17 13:41 Information ActionsRunnerService 100 û Connected to GitHub - 132 Mar 17 13:41 Information ActionsRunnerService 0 Service started successfully. - 131 Mar 17 13:41 Information ActionsRunnerService 100 Starting Actions Runner listener - 130 Mar 17 13:41 Information ActionsRunnerService 100 Starting Actions Runner Service - 129 Mar 17 13:41 Information ActionsRunnerService 100 create event log trace source for actions-runner service -``` - -{% endwindows %} - -### Monitoring the automatic update process - -We recommend that you regularly check the automatic update process, as the self-hosted runner will not be able to process jobs if it falls below a certain version threshold. The self-hosted runner application automatically updates itself, but note that this process does not include any updates to the operating system or other software; you will need to separately manage these updates. - -You can view the update activities in the *Runner_* log files. For example: - -```shell -[Feb 12 12:37:07 INFO SelfUpdater] An update is available. -``` - -In addition, you can find more information in the _SelfUpdate_ log files located in the `_diag` directory. - -{% linux %} - -### Troubleshooting containers in self-hosted runners - -#### Checking that Docker is installed - -If your jobs require containers, then the self-hosted runner must be Linux-based and needs to have Docker installed. Check that your self-hosted runner has Docker installed and that the service is running. - -You can use `systemctl` to check the service status: - -```shell -$ sudo systemctl is-active docker.service -active -``` - -If Docker is not installed, then dependent actions will fail with the following errors: - -```shell -[2020-02-13 16:56:10Z INFO DockerCommandManager] Which: 'docker' -[2020-02-13 16:56:10Z INFO DockerCommandManager] Not found. -[2020-02-13 16:56:10Z ERR StepsRunner] Caught exception from step: System.IO.FileNotFoundException: File not found: 'docker' -``` - -#### Checking the Docker permissions - -If your job fails with the following error: - -```shell -dial unix /var/run/docker.sock: connect: permission denied -``` - -Check that the self-hosted runner's service account has permission to use the Docker service. You can identify this account by checking the configuration of the self-hosted runner in systemd. For example: - -```shell -$ sudo systemctl show -p User actions.runner.octo-org-octo-repo.runner01.service -User=runner-user -``` - -{% endlinux %} diff --git a/content/actions/hosting-your-own-runners/removing-self-hosted-runners.md b/content/actions/hosting-your-own-runners/removing-self-hosted-runners.md deleted file mode 100644 index 45697d25c54e..000000000000 --- a/content/actions/hosting-your-own-runners/removing-self-hosted-runners.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Removing self-hosted runners -intro: 'You can permanently remove a self-hosted runner from a repository, an organization, or an enterprise.' -redirect_from: - - /github/automating-your-workflow-with-github-actions/removing-self-hosted-runners - - /actions/automating-your-workflow-with-github-actions/removing-self-hosted-runners -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Removing a runner from a repository - -{% note %} - -**Note:** {% data reusables.github-actions.self-hosted-runner-removal-impact %} - -{% data reusables.github-actions.self-hosted-runner-auto-removal %} - -{% endnote %} - -To remove a self-hosted runner from a user repository you must be the repository owner. For an organization repository, you must be an organization owner or have admin access to the repository. We recommend that you also have access to the self-hosted runner machine. - -{% data reusables.github-actions.self-hosted-runner-reusing %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.settings-sidebar-actions %} -{% data reusables.github-actions.self-hosted-runner-removing-a-runner %} - -### Removing a runner from an organization - -{% note %} - -**Note:** {% data reusables.github-actions.self-hosted-runner-removal-impact %} - -{% data reusables.github-actions.self-hosted-runner-auto-removal %} - -{% endnote %} - -To remove a self-hosted runner from an organization, you must be an organization owner. We recommend that you also have access to the self-hosted runner machine. - -{% data reusables.github-actions.self-hosted-runner-reusing %} - -{% data reusables.organizations.navigate-to-org %} -{% data reusables.organizations.org_settings %} -{% data reusables.repositories.settings-sidebar-actions %} -{% data reusables.github-actions.self-hosted-runner-removing-a-runner %} - -### Removing a runner from an enterprise - -{% note %} - -**Note:** {% data reusables.github-actions.self-hosted-runner-removal-impact %} - -{% data reusables.github-actions.self-hosted-runner-auto-removal %} - -{% endnote %} - -{% if currentVersion == "free-pro-team@latest" %} -To remove a self-hosted runner from an enterprise account, you must be an enterprise owner. We recommend that you also have access to the self-hosted runner machine. -{% else if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.21"%} -To remove a self-hosted runner at the enterprise level of {% data variables.product.product_location %}, you must be a site administrator. We recommend that you also have access to the self-hosted runner machine. -{% endif %} - -{% data reusables.github-actions.self-hosted-runner-reusing %} - -{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.enterprise-accounts.access-enterprise %} -{% else if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.21"%} -{% data reusables.enterprise_site_admin_settings.access-settings %} -{% data reusables.enterprise_site_admin_settings.business %} -{% endif %} -{% data reusables.enterprise-accounts.policies-tab %} -{% data reusables.enterprise-accounts.actions-tab %} -{% data reusables.github-actions.self-hosted-runner-removing-a-runner %} diff --git a/content/actions/hosting-your-own-runners/using-a-proxy-server-with-self-hosted-runners.md b/content/actions/hosting-your-own-runners/using-a-proxy-server-with-self-hosted-runners.md deleted file mode 100644 index df6458092ed2..000000000000 --- a/content/actions/hosting-your-own-runners/using-a-proxy-server-with-self-hosted-runners.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Using a proxy server with self-hosted runners -intro: 'You can configure self-hosted runners to use a proxy server to communicate with {% data variables.product.product_name %}.' -redirect_from: - - /actions/automating-your-workflow-with-github-actions/using-a-proxy-server-with-self-hosted-runners -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Configuring a proxy server using environment variables - -If you need a self-hosted runner to communicate via a proxy server, the self-hosted runner application uses proxy configurations set in the following environment variables: - -* `https_proxy`: Proxy URL for HTTPS traffic. You can also include basic authentication credentials, if required. For example: - * `http://proxy.local` - * `http://192.168.1.1:8080` - * `http://username:password@proxy.local` -* `http_proxy`: Proxy URL for HTTP traffic. You can also include basic authentication credentials, if required. For example: - * `http://proxy.local` - * `http://192.168.1.1:8080` - * `http://username:password@proxy.local` -* `no_proxy`: Comma separated list of hosts that should not use a proxy. Only hostnames are allowed in `no_proxy`, you cannot use IP addresses. For example: - * `example.com` - * `example.com,myserver.local:443,example.org` - -The proxy environment variables are read when the self-hosted runner application starts, so you must set the environment variables before configuring or starting the self-hosted runner application. If your proxy configuration changes, you must restart the self-hosted runner application. - -On Windows machines, the proxy environment variable names are not case-sensitive. On Linux and macOS machines, we recommend that you use all lowercase environment variables. If you have an environment variable in both lowercase and uppercase on Linux or macOS, for example `https_proxy` and `HTTPS_PROXY`, the self-hosted runner application uses the lowercase environment variable. - -### Using a .env file to set the proxy configuration - -If setting environment variables is not practical, you can set the proxy configuration variables in a file named _.env_ in the self-hosted runner application directory. For example, this might be necessary if you want to configure the runner application as a service under a system account. When the runner application starts, it reads the variables set in _.env_ for the proxy configuration. - -An example _.env_ proxy configuration is shown below: - -``` -https_proxy=http://proxy.local:8080 -no_proxy=example.com,myserver.local:443 -``` - -### Setting proxy configuration for Docker containers - -If you use Docker container actions or service containers in your workflows, you might also need to configure Docker to use your proxy server in addition to setting the above environment variables. - -For information on the required Docker configuration, see "[Configure Docker to use a proxy server](https://docs.docker.com/network/proxy/)" in the Docker documentation. diff --git a/content/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners.md b/content/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners.md deleted file mode 100644 index ba23713fbbcb..000000000000 --- a/content/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Using labels with self-hosted runners -intro: You can use labels to organize your self-hosted runners based on their characteristics. -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -For information on how to use labels to route jobs to specific types of self-hosted runners, see "[Using self-hosted runners in a workflow](/actions/hosting-your-own-runners/using-self-hosted-runners-in-a-workflow)." - -{% data reusables.github-actions.self-hosted-runner-management-permissions-required %} - -### Creating a custom label - -{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %} -{% data reusables.github-actions.self-hosted-runner-list %} -{% data reusables.github-actions.self-hosted-runner-list-group %} -{% data reusables.github-actions.self-hosted-runner-labels-view-assigned-labels %} -1. In the "Filter labels" field, type the name of your new label, and click **Create new label**. - ![Add runner label](/assets/images/help/settings/actions-add-runner-label.png) - -The custom label is created and assigned to the self-hosted runner. Custom labels can be removed from self-hosted runners, but they currently can't be manually deleted. {% data reusables.github-actions.actions-unused-labels %} - -### Assigning a label to a self-hosted runner - -{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %} -{% data reusables.github-actions.self-hosted-runner-list %} -{% data reusables.github-actions.self-hosted-runner-list-group %} -{% data reusables.github-actions.self-hosted-runner-labels-view-assigned-labels %} -1. Click on a label to assign it to your self-hosted runner. - -### Removing a custom label from a self-hosted runner - -{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %} -{% data reusables.github-actions.self-hosted-runner-list %} -{% data reusables.github-actions.self-hosted-runner-list-group %} -{% data reusables.github-actions.self-hosted-runner-labels-view-assigned-labels %} -1. Click on the assigned label to remove it from your self-hosted runner. {% data reusables.github-actions.actions-unused-labels %} - -### Using the configuration script to create and assign labels - -You can use the configuration script on the self-hosted runner to create and assign custom labels. For example, this command assigns a label named `gpu` to the self-hosted runner. - -```shell -./config.sh --labels gpu -``` - -The label is created if it does not already exist. You can also use this approach to assign the default labels to runners, such as `x64` or `linux`. When default labels are assigned using the configuration script, {% data variables.product.prodname_actions %} accepts them as given and does not validate that the runner is actually using that operating system or architecture. - -You can use comma separation to assign multiple labels. For example: - -```shell -./config.sh --labels gpu,x64,linux -``` - -{% note %} - -** Note:** If you replace an existing runner, then you must reassign any custom labels. - -{% endnote %} diff --git a/content/actions/hosting-your-own-runners/using-self-hosted-runners-in-a-workflow.md b/content/actions/hosting-your-own-runners/using-self-hosted-runners-in-a-workflow.md deleted file mode 100644 index 06a4e41dfdcc..000000000000 --- a/content/actions/hosting-your-own-runners/using-self-hosted-runners-in-a-workflow.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Using self-hosted runners in a workflow -intro: 'To use self-hosted runners in a workflow, you can use labels to specify the runner type for a job.' -redirect_from: - - /github/automating-your-workflow-with-github-actions/using-self-hosted-runners-in-a-workflow - - /actions/automating-your-workflow-with-github-actions/using-self-hosted-runners-in-a-workflow -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -For information on creating custom and default labels, see "[Using labels with self-hosted runners](/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners)." - -### Using self-hosted runners in a workflow - -Labels allow you to send workflow jobs to specific types of self-hosted runners, based on their shared characteristics. For example, if your job requires a particular hardware component or software package, you can assign a custom label to a runner and then configure your job to only execute on runners with that label. - -{% data reusables.github-actions.self-hosted-runner-labels-runs-on %} - -For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idruns-on)." - -### Using default labels to route jobs - -A self-hosted runner automatically receives certain labels when it is added to {% data variables.product.prodname_actions %}. These are used to indicate its operating system and hardware platform: - -* `self-hosted`: Default label applied to all self-hosted runners. -* `linux`, `windows`, or `macOS`: Applied depending on operating system. -* `x86`, `x64`, `ARM`, or `ARM64`: Applied depending on hardware architecture. - -You can use your workflow's YAML to send jobs to a combination of these labels. In this example, a self-hosted runner that matches all three labels will be eligible to run the job: - -```yaml -runs-on: [self-hosted, linux, ARM64] -``` - -- `self-hosted` - Run this job on a self-hosted runner. -- `linux` - Only use a Linux-based runner. -- `ARM64` - Only use a runner based on ARM64 hardware. - -The default labels are fixed and cannot be changed or removed. Consider using custom labels if you need more control over job routing. - -### Using custom labels to route jobs - -You can create custom labels and assign them to your self-hosted runners at any time. Custom labels let you send jobs to particular types of self-hosted runners, based on how they're labeled. - -For example, if you have a job that requires a specific type of graphics hardware, you can create a custom label called `gpu` and assign it to the runners that have the hardware installed. A self-hosted runner that matches all the assigned labels will then be eligible to run the job. - -This example shows a job that combines default and custom labels: - -```yaml -runs-on: [self-hosted, linux, x64, gpu] -``` - -- `self-hosted` - Run this job on a self-hosted runner. -- `linux` - Only use a Linux-based runner. -- `x64` - Only use a runner based on x64 hardware. -- `gpu` - This custom label has been manually assigned to self-hosted runners with the GPU hardware installed. - -These labels operate cumulatively, so a self-hosted runner’s labels must match all four to be eligible to process the job. - -### Routing precedence for self-hosted runners - -If you use both repository-level and organization-level runners, {% data variables.product.prodname_dotcom %} follows an order of precedence when routing jobs to self-hosted runners: - -1. The job's `runs-on` labels are processed. {% data variables.product.prodname_dotcom %} then attempts to locate a runner that matches the label requirements: -2. The job is sent to a repository-level runner that matches the job labels. If no repository-level runner is available (either busy, offline, or no matching labels): -3. The job is sent to an organization-level runner that matches the job labels. If no organization-level runner is available, the job request fails with an error. diff --git a/content/actions/index.md b/content/actions/index.md deleted file mode 100644 index 7cbfa4232164..000000000000 --- a/content/actions/index.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: GitHub Actions Documentation -shortTitle: GitHub Actions -intro: 'Automate, customize, and execute your software development workflows right in your repository with {% data variables.product.prodname_actions %}. You can discover, create, and share actions to perform any job you''d like, including CI/CD, and combine actions in a completely customized workflow.' -introLinks: - quickstart: /actions/quickstart - learn: /actions/learn-github-actions -featuredLinks: - gettingStarted: - - /actions/managing-workflow-runs - - /actions/hosting-your-own-runners - guide: - - /actions/guides/setting-up-continuous-integration-using-workflow-templates - - /actions/guides/about-packaging-with-github-actions - popular: - - /actions/reference/workflow-syntax-for-github-actions - - /actions/reference/events-that-trigger-workflows -redirect_from: - - /articles/automating-your-workflow-with-github-actions/ - - /articles/customizing-your-project-with-github-actions/ - - /github/automating-your-workflow-with-github-actions - - /actions/automating-your-workflow-with-github-actions/ - - /categories/automating-your-workflow-with-github-actions - - /marketplace/actions -layout: product-landing -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - - - - - - - - - - -
-
- -
    - {% for link in featuredLinks.guide %} -
  • {% include featured-link %}
  • - {% endfor %} -
-
- -
- -
    - {% for link in featuredLinks.popular %} -
  • {% include featured-link %}
  • - {% endfor %} -
-
- -
- -
    - {% for link in featuredLinks.gettingStarted %} -
  • {% include featured-link %}
  • - {% endfor %} -
-
-
- - - diff --git a/content/actions/learn-github-actions/essential-features-of-github-actions.md b/content/actions/learn-github-actions/essential-features-of-github-actions.md deleted file mode 100644 index 1c580cd36aa2..000000000000 --- a/content/actions/learn-github-actions/essential-features-of-github-actions.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Essential features of GitHub Actions -shortTitle: Essential features -intro: '{% data variables.product.prodname_actions %} are designed to help you build robust and dynamic automations. This guide will show you how to craft {% data variables.product.prodname_actions %} workflows that include environment variables, customized scripts, and more.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Overview - -{% data variables.product.prodname_actions %} allow you to customize your workflows to meet the unique needs of your application and team. In this guide, we'll discuss some of the essential customization techniques such as using variables, running scripts, and sharing data and artifacts between jobs. - -### Using variables in your workflows - -{% data variables.product.prodname_actions %} include default environment variables for each workflow run. If you need to use custom environment variables, you can set these in your YAML workflow file. This example demonstrates how to create custom variables named `POSTGRES_HOST` and `POSTGRES_PORT`. These variables are then available to the `node client.js` script. - -```yaml -jobs: - example-job: - steps: - - name: Connect to PostgreSQL - run: node client.js - env: - POSTGRES_HOST: postgres - POSTGRES_PORT: 5432 -``` - -For more information, see "[Using environment variables](/actions/configuring-and-managing-workflows/using-environment-variables)." - -### Adding scripts to your workflow - -You can use actions to run scripts and shell commands, which are then executed on the assigned runner. This example demonstrates how an action can use the `run` keyword to execute `npm install -g bats` on the runner. - -```yaml -jobs: - example-job: - steps: - - run: npm install -g bats -``` - -For example, to run a script as an action, you can store the script in your repository and supply the path and shell type. - -```yaml -jobs: - example-job: - steps: - - name: Run build script - run: ./.github/scripts/build.sh - shell: bash -``` - -For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun)." - -### Sharing data between jobs - -If your job generates files that you want to share with another job in the same workflow, or if you want to save the files for later reference, you can store them in {% data variables.product.prodname_dotcom %} as _artifacts_. Artifacts are the files created when you build and test your code. For example, artifacts might include binary or package files, test results, screenshots, or log files. Artifacts are associated with the workflow run where they were created and can be used by another job. - -For example, you can create a file and then upload it as an artifact. - -```yaml -jobs: - example-job: - name: Save output - steps: - - shell: bash - run: | - expr 1 + 1 > output.log - - name: Upload output file - uses: actions/upload-artifact@v1 - with: - name: output-log-file - path: output.log -``` - -To download an artifact from a separate workflow run, you can use the `actions/download-artifact` action. For example, you can download the artifact named `output-log-file`. - -```yaml -jobs: - example-job: - steps: - - name: Download a single artifact - uses: actions/download-artifact@v2 - with: - name: output-log-file -``` - -For more information about artifacts, see "[Persisting workflow data using artifacts](/actions/configuring-and-managing-workflows/persisting-workflow-data-using-artifacts)." - -### Next steps - -To continue learning about {% data variables.product.prodname_actions %}, see "[Managing complex workflows](/actions/learn-github-actions/managing-complex-workflows)." diff --git a/content/actions/learn-github-actions/finding-and-customizing-actions.md b/content/actions/learn-github-actions/finding-and-customizing-actions.md deleted file mode 100644 index 4f1a287d3d01..000000000000 --- a/content/actions/learn-github-actions/finding-and-customizing-actions.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: Finding and customizing actions -shortTitle: Finding and customizing actions -intro: 'Actions are the building blocks that power your workflow. A workflow can contain actions created by the community, or you can create your own actions directly within your application''s repository. This guide will show you how to discover, use, and customize actions.' -redirect_from: - - /actions/automating-your-workflow-with-github-actions/using-github-marketplace-actions - - /actions/automating-your-workflow-with-github-actions/using-actions-from-github-marketplace-in-your-workflow - - /actions/getting-started-with-github-actions/using-actions-from-github-marketplace - - /actions/getting-started-with-github-actions/using-community-workflows-and-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Overview - -The actions you use in your workflow can be defined in: - -- A public repository -- The same repository where your workflow file references the action -- A published Docker container image on Docker Hub - -{% data variables.product.prodname_marketplace %} is a central location for you to find actions created by the {% data variables.product.prodname_dotcom %} community. [{% data variables.product.prodname_marketplace %} page](https://github.com/marketplace/actions/) enables you to filter for actions by category. - -{% data reusables.actions.enterprise-marketplace-actions %} - -### Browsing Marketplace actions in the workflow editor - -You can search and browse actions directly in your repository's workflow editor. From the sidebar, you can search for a specific action, view featured actions, and browse featured categories. You can also view the number of stars an action has received from the {% data variables.product.prodname_dotcom %} community. - -1. In your repository, browse to the workflow file you want to edit. -1. In the upper right corner of the file view, to open the workflow editor, click {% octicon "pencil" aria-label="The edit icon" %}. -![Edit workflow file button](/assets/images/help/repository/actions-edit-workflow-file.png) -1. To the right of the editor, use the {% data variables.product.prodname_marketplace %} sidebar to browse actions. Actions with the {% octicon "verified" aria-label="The verified badge" %} badge indicate {% data variables.product.prodname_dotcom %} has verified the creator of the action as a partner organization. -![Marketplace workflow sidebar](/assets/images/help/repository/actions-marketplace-sidebar.png) - -### Adding an action to your workflow - -An action's listing page includes the action's version and the workflow syntax required to use the action. To keep your workflow stable even when updates are made to an action, you can reference the version of the action to use by specifying the Git or Docker tag number in your workflow file. - -1. Navigate to the action you want to use in your workflow. -1. Under "Installation", click {% octicon "clippy" aria-label="The edit icon" %} to copy the workflow syntax. -![View action listing](/assets/images/help/repository/actions-sidebar-detailed-view.png) -1. Paste the syntax as a new step in your workflow. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idsteps)." -1. If the action requires you to provide inputs, set them in your workflow. For information on inputs an action might require, see "[Using inputs and outputs with an action](/actions/learn-github-actions/finding-and-customizing-actions#using-inputs-and-outputs-with-an-action)." - -{% if currentVersion == "free-pro-team@latest" %} - -{% data reusables.dependabot.version-updates-for-actions %} - -{% endif %} - -### Using release management for your custom actions - -The creators of a community action have the option to use tags, branches, or SHA values to manage releases of the action. Similar to any dependency, you should indicate the version of the action you'd like to use based on your comfort with automatically accepting updates to the action. - -You will designate the version of the action in your workflow file. Check the action's documentation for information on their approach to release management, and to see which tag, branch, or SHA value to use. - -#### Using tags - -Tags are useful for letting you decide when to switch between major and minor versions, but these are more ephemeral and can be moved or deleted by the maintainer. This example demonstrates how to target an action that's been tagged as `v1.0.1`: - -```yaml -steps: - - uses: actions/javascript-action@v1.0.1 -``` - -#### Using SHAs - -If you need more reliable versioning, you should use the SHA value associated with the version of the action. SHAs are immutable and therefore more reliable than tags or branches. However this approach means you will not automatically receive updates for an action, including important bug fixes and security updates. This example targets an action's SHA: - -```yaml -steps: - - uses: actions/javascript-action@172239021f7ba04fe7327647b213799853a9eb89 -``` - -#### Using branches - -Referring to a specific branch means that the action will always use include the latest updates on the target branch, but can create problems if those updates include breaking changes. This example targets a branch named `@main`: - -```yaml -steps: - - uses: actions/javascript-action@main -``` - -For more information, see "[Using release management for actions](/actions/creating-actions/about-actions#using-release-management-for-actions)." - -### Using inputs and outputs with an action - -An action often accepts or requires inputs and generates outputs that you can use. For example, an action might require you to specify a path to a file, the name of a label, or other data it will uses as part of the action processing. - -To see the inputs and outputs of an action, check the `action.yml` or `action.yaml` in the root directory of the repository. - -In this example `action.yml`, the `inputs` keyword defines a required input called `file-path`, and includes a default value that will be used if none is specified. The `outputs` keyword defines an output called `results-file`, which tells you where to locate the results. - -```yaml -name: 'Example' -description: 'Receives file and generates output' -inputs: - file-path: # id of input - description: "Path to test script" - required: true - default: 'test-file.js' -outputs: - results-file: # id of output - description: "Path to results file" -``` - -### Referencing an action in the same repository where a workflow file uses the action - -If an action is defined in the same repository where your workflow file uses the action, you can reference the action with either the ‌`{owner}/{repo}@{ref}` or `./path/to/dir` syntax in your workflow file. - -Example repository file structure: - -``` -|-- hello-world (repository) -| |__ .github -| └── workflows -| └── my-first-workflow.yml -| └── actions -| |__ hello-world-action -| └── action.yml -``` - -Example workflow file: - -```yaml -jobs: - build: - runs-on: ubuntu-latest - steps: - # This step checks out a copy of your repository. - - uses: actions/checkout@v2 - # This step references the directory that contains the action. - - uses: ./.github/actions/hello-world-action -``` - -The `action.yml` file is used to provide metadata for the action. Learn about the content of this file in "[Metadata syntax for GitHub Actions](/actions/creating-actions/metadata-syntax-for-github-actions)" - -### Referencing a container on Docker Hub - -If an action is defined in a published Docker container image on Docker Hub, you must reference the action with the `docker://{image}:{tag}` syntax in your workflow file. To protect your code and data, we strongly recommend you verify the integrity of the Docker container image from Docker Hub before using it in your workflow. - -```yaml -jobs: - my_first_job: - steps: - - name: My first step - uses: docker://alpine:3.8 -``` - -For some examples of Docker actions, see the [Docker-image.yml workflow](https://github.com/actions/starter-workflows/blob/main/ci/docker-image.yml) and "[Creating a Docker container action](/articles/creating-a-docker-container-action)." - -### Next steps - -To continue learning about {% data variables.product.prodname_actions %}, see "[Essential features of {% data variables.product.prodname_actions %}](/actions/learn-github-actions/essential-features-of-github-actions)." diff --git a/content/actions/learn-github-actions/index.md b/content/actions/learn-github-actions/index.md deleted file mode 100644 index 8bc97d038f8e..000000000000 --- a/content/actions/learn-github-actions/index.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Learn GitHub Actions -shortTitle: Learn GitHub Actions -intro: 'Whether you are new to {% data variables.product.prodname_actions %} or interested in learning all they have to offer, this guide will help you use {% data variables.product.prodname_actions %} to accelerate your application development workflows.' -redirect_from: - - /articles/about-github-actions - - /github/automating-your-workflow-with-github-actions/about-github-actions - - /actions/automating-your-workflow-with-github-actions/about-github-actions - - /actions/getting-started-with-github-actions - - /actions/getting-started-with-github-actions/about-github-actions - - /actions/getting-started-with-github-actions/overview - - /actions/getting-started-with-github-actions/getting-started-with-github-actions - - /articles/migrating-github-actions-from-hcl-syntax-to-yaml-syntax/ - - /actions/configuring-and-managing-workflows/configuring-a-workflow - - /articles/creating-a-workflow-with-github-actions/ - - /articles/configuring-a-workflow - - /github/automating-your-workflow-with-github-actions/configuring-a-workflow - - /actions/automating-your-workflow-with-github-actions/configuring-a-workflow - - /actions/creating-workflows/workflow-configuration-options - - /articles/configuring-workflows - - /github/automating-your-workflow-with-github-actions/configuring-workflows - - /actions/automating-your-workflow-with-github-actions/configuring-workflows - - /github/automating-your-workflow-with-github-actions/getting-started-with-github-actions - - /actions/automating-your-workflow-with-github-actions/getting-started-with-github-actions - - /actions/configuring-and-managing-workflows - - /articles/getting-started-with-github-actions - - /actions/migrating-to-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% link_with_intro /introduction-to-github-actions %} -{% link_with_intro /finding-and-customizing-actions %} -{% link_with_intro /essential-features-of-github-actions %} -{% link_with_intro /managing-complex-workflows %} -{% link_with_intro /sharing-workflows-with-your-organization %} -{% link_with_intro /security-hardening-for-github-actions %} -{% link_with_intro /migrating-from-circleci-to-github-actions %} -{% link_with_intro /migrating-from-gitlab-cicd-to-github-actions %} -{% link_with_intro /migrating-from-azure-pipelines-to-github-actions %} -{% link_with_intro /migrating-from-jenkins-to-github-actions %} diff --git a/content/actions/learn-github-actions/introduction-to-github-actions.md b/content/actions/learn-github-actions/introduction-to-github-actions.md deleted file mode 100644 index 7c2fa9ec700a..000000000000 --- a/content/actions/learn-github-actions/introduction-to-github-actions.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -title: Introduction to GitHub Actions -shortTitle: Introduction to GitHub Actions -intro: 'Learn about the core concepts and various components of {% data variables.product.prodname_actions %}, and see an example that shows you how to add automation to your repository.' -redirect_from: - - /github/automating-your-workflow-with-github-actions/core-concepts-for-github-actions - - /actions/automating-your-workflow-with-github-actions/core-concepts-for-github-actions - - /actions/getting-started-with-github-actions/core-concepts-for-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Overview - -{% data variables.product.prodname_actions %} help you automate tasks within your software development life cycle. {% data variables.product.prodname_actions %} are event-driven, meaning that you can run a series of commands after a specified event has occurred. For example, every time someone creates a pull request for a repository, you can automatically run a command that executes a software testing script. - -This diagram demonstrates how you can use {% data variables.product.prodname_actions %} to automatically run your software testing scripts. An event automatically triggers the _workflow_, which contains a _job_. The job then uses _steps_ to control the order in which _actions_ are run. These actions are the commands that automate your software testing. - -![Workflow overview](/assets/images/help/images/overview-actions-simple.png) - -### The components of {% data variables.product.prodname_actions %} - -Below is a list of the multiple {% data variables.product.prodname_actions %} components that work together to run jobs. You can see how these components interact with each other. - -![Component and service overview](/assets/images/help/images/overview-actions-design.png) - -#### Workflows - -The workflow is an automated procedure that you add to your repository. Workflows are made up of one or more jobs and can be scheduled or triggered by an event. The workflow can be used to build, test, package, release, or deploy a project on {% data variables.product.prodname_dotcom %}. - -#### Events - -An event is a specific activity that triggers a workflow. For example, activity can originate from {% data variables.product.prodname_dotcom %} when someone pushes a commit to a repository or when an issue or pull request is created. You can also use the repository dispatch webhook to trigger a workflow when an external event occurs. For a complete list of events that can be used to trigger workflows, see [Events that trigger workflows](/actions/reference/events-that-trigger-workflows). - -#### Jobs - -A job is a set of steps that execute on the same runner. By default, a workflow with multiple jobs will run those jobs in parallel. You can also configure a workflow to run jobs sequentially. For example, a workflow can have two sequential jobs that build and test code, where the test job is dependent on the status of the build job. If the build job fails, the test job will not run. - -#### Steps - -A step is an individual task that can run commands (known as _actions_). Each step in a job executes on the same runner, allowing the actions in that job to share data with each other. - -#### Actions - -_Actions_ are standalone commands that are combined into _steps_ to create a _job_. Actions are the smallest portable building block of a workflow. You can create your own actions, or use actions created by the {% data variables.product.prodname_dotcom %} community. To use an action in a workflow, you must include it as a step. - -#### Runners - -A runner is a server that has the {% data variables.product.prodname_actions %} runner application installed. You can use a runner hosted by {% data variables.product.prodname_dotcom %}, or you can host your own. A runner listens for available jobs, runs one job at a time, and reports the progress, logs, and results back to {% data variables.product.prodname_dotcom %}. For {% data variables.product.prodname_dotcom %}-hosted runners, each job in a workflow runs in a fresh virtual environment. - -{% data variables.product.prodname_dotcom %}-hosted runners are based on Ubuntu Linux, Microsoft Windows, and macOS. For information on {% data variables.product.prodname_dotcom %}-hosted runners, see "[Virtual environments for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/reference/virtual-environments-for-github-hosted-runners)." If you need a different operating system or require a specific hardware configuration, you can host your own runners. For information on self-hosted runners, see "[Hosting your own runners](/actions/hosting-your-own-runners)." - -### Create an example workflow - -{% data variables.product.prodname_actions %} uses YAML syntax to define the events, jobs, and steps. These YAML files are stored in your code repository, in a directory called `.github/workflows`. - -You can create an example workflow in your repository that automatically triggers a series of commands whenever code is pushed. In this workflow, {% data variables.product.prodname_actions %} checks out the pushed code, installs the software dependencies, and runs `bats -v`. - -1. In your repository, create the `.github/workflows/` directory to store your workflow files. -1. In the `.github/workflows/` directory, create a new file called `learn-github-actions.yml` and add the following code. - ```yaml - name: learn-github-actions - on: [push] - jobs: - check-bats-version: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - - run: npm install -g bats - - run: bats -v - ``` -1. Commit these changes and push them to your {% data variables.product.prodname_dotcom %} repository. - -Your new {% data variables.product.prodname_actions %} workflow file is now installed in your repository and will run automatically each time someone pushes a change to the repository. For details about a job's execution history, see "[Viewing the workflow's activity](/actions/learn-github-actions/introduction-to-github-actions#viewing-the-jobs-activity)." - -### Understanding the workflow file - -To help you understand how YAML syntax is used to create a workflow file, this section explains each line of the introduction's example: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - ```yaml - name: learn-github-actions - ``` - - Optional - The name of the workflow as it will appear in the Actions tab of the {% data variables.product.prodname_dotcom %} repository. -
- - ```yaml - on: [push] - ``` - - Specify the event that automatically triggers the workflow file. This example uses the push event, so that the jobs run every time someone pushes a change to the repository. You can set up the workflow to only run on certain branches, paths, or tags. For syntax examples including or excluding branches, paths, or tags, see "Workflow syntax for {% data variables.product.prodname_actions %}." -
- - ```yaml - jobs: - ``` - - Groups together all the jobs that run in the learn-github-actions workflow file. -
- - ```yaml - check-bats-version: - ``` - - Defines the name of the check-bats-version job stored within the jobs section. -
- - ```yaml - runs-on: ubuntu-latest - ``` - - Configures the job to run on an Ubuntu Linux runner. This means that the job will execute on a fresh virtual machine hosted by GitHub. For syntax examples using other runners, see "Workflow syntax for {% data variables.product.prodname_actions %}." -
- - ```yaml - steps: - ``` - - Groups together all the steps that run in the check-bats-version job. Each line nested under this section is a separate action. -
- - ```yaml - - uses: actions/checkout@v2 - ``` - - The uses keyword tells the job to retrieve v2 of the community action named actions/checkout@v2. This is an action that checks out your repository and downloads it to the runner, allowing you to run actions against your code (such as testing tools). You must use the checkout action any time your workflow will run against the repository's code or you are using an action defined in the repository. -
- - ```yaml - - uses: actions/setup-node@v1 - ``` - - This action installs the node software package on the runner, giving you access to the npm command. -
- - ```yaml - - run: npm install -g bats - ``` - - The run keyword tells the job to execute a command on the runner. In this case, you are using npm to install the bats software testing package. -
- - ```yaml - - run: bats -v - ``` - - Finally, you'll run the bats command with a parameter that outputs the software version. -
- -#### Visualizing the workflow file - -In this diagram, you can see the workflow file you just created and how the {% data variables.product.prodname_actions %} components are organized in a hierarchy. Each step executes a single action. Steps 1 and 2 use prebuilt community actions. To find more prebuilt actions for your workflows, see "[Finding and customizing actions](/actions/learn-github-actions/finding-and-customizing-actions)." - -![Workflow overview](/assets/images/help/images/overview-actions-event.png) - - -### Viewing the job's activity - -Once your job has started running, you can view each step's activity on {% data variables.product.prodname_dotcom %}. - -{% data reusables.repositories.navigate-to-repo %} -1. Under your repository name, click **Actions**. - ![Navigate to repository](/assets/images/help/images/learn-github-actions-repository.png) -1. In the left sidebar, click the workflow you want to see. - ![Screenshot of workflow results](/assets/images/help/images/learn-github-actions-workflow.png) -1. Under "Workflow runs", click the name of the run you want to see. - ![Screenshot of workflow runs](/assets/images/help/images/learn-github-actions-run.png) -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -1. Click on the job name to see the results of each step. - ![Screenshot of workflow run details](/assets/images/help/images/overview-actions-result-updated.png) -{% else %} -1. Click on the job name to see the results of each step. - ![Screenshot of workflow run details](/assets/images/help/images/overview-actions-result.png) -{% endif %} - -### Next steps - -To continue learning about {% data variables.product.prodname_actions %}, see "[Finding and customizing actions](/actions/learn-github-actions/finding-and-customizing-actions)." - -### Contacting support - -{% data reusables.github-actions.contacting-support %} diff --git a/content/actions/learn-github-actions/managing-complex-workflows.md b/content/actions/learn-github-actions/managing-complex-workflows.md deleted file mode 100644 index 38e7e68e94cd..000000000000 --- a/content/actions/learn-github-actions/managing-complex-workflows.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Managing complex workflows -shortTitle: Managing complex workflows -intro: 'This guide shows you how to use the advanced features of {% data variables.product.prodname_actions %}, with secret management, dependent jobs, caching, build matrices, and labels.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Overview - -This article describes some of the advanced features of {% data variables.product.prodname_actions %} that help you work create more complex workflows. - -### Storing secrets - -If your workflows use sensitive data, such as passwords or certificates, you can save these in {% data variables.product.prodname_dotcom %} as _secrets_ and then use them in your workflows as environment variables. This means that you will be able to create and share workflows without having to embed sensitive values directly in the YAML workflow. - -This example action demonstrates how to reference an existing secret as an environment variable, and send it as a parameter to an example command. - -{% raw %} -```yaml -jobs: - example-job: - steps: - - name: Retrieve secret - env: - super_secret: ${{ secrets.SUPERSECRET }} - run: | - example-command "$SUPER_SECRET" -``` -{% endraw %} - -For more information, see "[Creating and storing encrypted secrets](/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets)." - -### Creating dependent jobs - -By default, the jobs in your workflow all run in parallel at the same time. So if you have a job that must only run after another job has completed, you can use the `needs` keyword to create this dependency. If one of the jobs fails, all dependent jobs are skipped; however, if you need the jobs to continue, you can define this using the [`if`](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idif) conditional statement. - -In this example, the `setup`, `build`, and `test` jobs run in series, with `build` and `test` being dependent on the successful completion of the job that precedes them: - -```yaml -jobs: - setup: - runs-on: ubuntu-latest - steps: - - run: ./setup_server.sh - build: - needs: setup - steps: - - run: ./build_server.sh - test: - needs: build - runs-on: ubuntu-latest - steps: - - run: ./test_server.sh -``` - -For more information, see [`jobs..needs`](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idneeds). - -### Using a build matrix - -You can use a build matrix if you want your workflow to run tests across multiple combinations of operating systems, platforms, and languages. The build matrix is created using the `strategy` keyword, which receives the build options as an array. For example, this build matrix will run the job multiple times, using different versions of Node.js: - -{% raw %} -```yaml -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - node: [6, 8, 10] - steps: - - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node }} -``` -{% endraw %} - -For more information, see [`jobs..strategy.matrix`](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix). - -### Caching dependencies - -{% data variables.product.prodname_dotcom %}-hosted runners are started as fresh environments for each job, so if your jobs regularly reuse dependencies, you can consider caching these files to help improve performance. Once the cache is created, it is available to all workflows in the same repository. - -This example demonstrates how to cache the ` ~/.npm` directory: - -{% raw %} -```yaml -jobs: - example-job: - steps: - - name: Cache node modules - uses: actions/cache@v2 - env: - cache-name: cache-node-modules - with: - path: ~/.npm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- -``` -{% endraw %} - -For more information, see "[Caching dependencies to speed up workflows](/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows)." - -### Using databases and service containers - -If your job requires a database or cache service, you can use the [`services`](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idservices) keyword to create an ephemeral container to host the service; the resulting container is then available to all steps in that job and is removed when the job has completed. This example demonstrates how a job can use `services` to create a `postgres` container, and then use `node` to connect to the service. - -```yaml -jobs: - container-job: - runs-on: ubuntu-latest - container: node:10.18-jessie - services: - postgres: - image: postgres - steps: - - name: Check out repository code - uses: actions/checkout@v2 - - name: Install dependencies - run: npm ci - - name: Connect to PostgreSQL - run: node client.js - env: - POSTGRES_HOST: postgres - POSTGRES_PORT: 5432 -``` - -For more information, see "[Using databases and service containers](/actions/configuring-and-managing-workflows/using-databases-and-service-containers)." - -### Using labels to route workflows - -This feature helps you assign jobs to a specific self-hosted runner. If you want to be sure that a particular type of runner will process your job, you can use labels to control where jobs are executed. You can assign labels to a self-hosted runner, and then refer to these labels in your YAML workflow, ensuring that the job is routed in a predictable way. - -This example shows how a workflow can use labels to specify the required runner: - -```yaml -jobs: - example-job: - runs-on: [self-hosted, linux, x64, gpu] -``` - -For more information, see ["Using labels with self-hosted runners](/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners)." - -### Next steps - -To continue learning about {% data variables.product.prodname_actions %}, see "[Sharing workflows with your organization](/actions/learn-github-actions/sharing-workflows-with-your-organization)." diff --git a/content/actions/learn-github-actions/migrating-from-azure-pipelines-to-github-actions.md b/content/actions/learn-github-actions/migrating-from-azure-pipelines-to-github-actions.md deleted file mode 100644 index c27988992679..000000000000 --- a/content/actions/learn-github-actions/migrating-from-azure-pipelines-to-github-actions.md +++ /dev/null @@ -1,327 +0,0 @@ ---- -title: Migrating from Azure Pipelines to GitHub Actions -intro: '{% data variables.product.prodname_actions %} and Azure Pipelines share several configuration similarities, which makes migrating to {% data variables.product.prodname_actions %} relatively straightforward.' -redirect_from: - - /actions/migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -Azure Pipelines and {% data variables.product.prodname_actions %} both allow you to create workflows that automatically build, test, publish, release, and deploy code. Azure Pipelines and {% data variables.product.prodname_actions %} share some similarities in workflow configuration: - -- Workflow configuration files are written in YAML and are stored in the code's repository. -- Workflows include one or more jobs. -- Jobs include one or more steps or individual commands. -- Steps or tasks can be reused and shared with the community. - -For more information, see "[Core concepts for {% data variables.product.prodname_actions %}](/actions/getting-started-with-github-actions/core-concepts-for-github-actions)." - -### Key differences - -When migrating from Azure Pipelines, consider the following differences: - -- Azure Pipelines supports a legacy _classic editor_, which lets you define your CI configuration in a GUI editor instead of creating the pipeline definition in a YAML file. {% data variables.product.prodname_actions %} uses YAML files to define workflows and does not support a graphical editor. -- Azure Pipelines allows you to omit some structure in job definitions. For example, if you only have a single job, you don't need to define the job and only need to define its steps. {% data variables.product.prodname_actions %} requires explicit configuration, and YAML structure cannot be omitted. -- Azure Pipelines supports _stages_ defined in the YAML file, which can be used to create deployment workflows. {% data variables.product.prodname_actions %} requires you to separate stages into separate YAML workflow files. -- On-premises Azure Pipelines build agents can be selected with capabilities. {% data variables.product.prodname_actions %} self-hosted runners can be selected with labels. - -### Migrating jobs and steps - -Jobs and steps in Azure Pipelines are very similar to jobs and steps in {% data variables.product.prodname_actions %}. In both systems, jobs have the following characteristics: - -* Jobs contain a series of steps that run sequentially. -* Jobs run on separate virtual machines or in separate containers. -* Jobs run in parallel by default, but can be configured to run sequentially. - -### Migrating script steps - -You can run a script or a shell command as a step in a workflow. In Azure Pipelines, script steps can be specified using the `script` key, or with the `bash`, `powershell`, or `pwsh` keys. Scripts can also be specified as an input to the [Bash task](https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/bash?view=azure-devops) or the [PowerShell task](https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/powershell?view=azure-devops). - -In {% data variables.product.prodname_actions %}, all scripts are specified using the `run` key. To select a particular shell, you can specify the `shell` key when providing the script. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun)." - -Below is an example of the syntax for each system: - - - - - - - - - - -
-Azure Pipelines - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -jobs: -- job: scripts - pool: - vmImage: 'windows-latest' - steps: - - script: echo "This step runs in the default shell" - - bash: echo "This step runs in bash" - - pwsh: Write-Host "This step runs in PowerShell Core" - - task: PowerShell@2 - inputs: - script: Write-Host "This step runs in PowerShell" -``` -{% endraw %} - -{% raw %} -```yaml -jobs: - scripts: - runs-on: windows-latest - steps: - - run: echo "This step runs in the default shell" - - run: echo "This step runs in bash" - shell: bash - - run: Write-Host "This step runs in PowerShell Core" - shell: pwsh - - run: Write-Host "This step runs in PowerShell" - shell: powershell -``` -{% endraw %} -
- -### Differences in script error handling - -In Azure Pipelines, scripts can be configured to error if any output is sent to `stderr`. {% data variables.product.prodname_actions %} does not support this configuration. - -{% data variables.product.prodname_actions %} configures shells to "fail fast" whenever possible, which stops the script immediately if one of the commands in a script exits with an error code. In contrast, Azure Pipelines requires explicit configuration to exit immediately on an error. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference)." - -### Differences in the default shell on Windows - -In Azure Pipelines, the default shell for scripts on Windows platforms is the Command shell (_cmd.exe_). In {% data variables.product.prodname_actions %}, the default shell for scripts on Windows platforms is PowerShell. PowerShell has several differences in built-in commands, variable expansion, and flow control. - -If you're running a simple command, you might be able to run a Command shell script in PowerShell without any changes. But in most cases, you will either need to update your script with PowerShell syntax or instruct {% data variables.product.prodname_actions %} to run the script with the Command shell instead of PowerShell. You can do this by specifying `shell` as `cmd`. - -Below is an example of the syntax for each system: - - - - - - - - - - -
-Azure Pipelines - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -jobs: -- job: run_command - pool: - vmImage: 'windows-latest' - steps: - - script: echo "This step runs in CMD on Windows by default" -``` -{% endraw %} - -{% raw %} -```yaml -jobs: - run_command: - runs-on: windows-latest - steps: - - run: echo "This step runs in PowerShell on Windows by default" - - run: echo "This step runs in CMD on Windows explicitly" - shell: cmd -``` -{% endraw %} -
- -For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#using-a-specific-shell)." - -### Migrating conditionals and expression syntax - -Azure Pipelines and {% data variables.product.prodname_actions %} can both run steps conditionally. In Azure Pipelines, conditional expressions are specified using the `condition` key. In {% data variables.product.prodname_actions %}, conditional expressions are specified using the `if` key. - -Azure Pipelines uses functions within expressions to execute steps conditionally. In contrast, {% data variables.product.prodname_actions %} uses an infix notation. For example, you must replace the `eq` function in Azure Pipelines with the `==` operator in {% data variables.product.prodname_actions %}. - -Below is an example of the syntax for each system: - - - - - - - - - - -
-Azure Pipelines - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -jobs: -- job: conditional - pool: - vmImage: 'ubuntu-latest' - steps: - - script: echo "This step runs with str equals 'ABC' and num equals 123" - condition: and(eq(variables.str, 'ABC'), eq(variables.num, 123)) -``` -{% endraw %} - -{% raw %} -```yaml -jobs: - conditional: - runs-on: ubuntu-latest - steps: - - run: echo "This step runs with str equals 'ABC' and num equals 123" - if: ${{ env.str == 'ABC' && env.num == 123 }} -``` -{% endraw %} -
- -For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions)." - -### Dependencies between jobs - -Both Azure Pipelines and {% data variables.product.prodname_actions %} allow you to set dependencies for a job. In both systems, jobs run in parallel by default, but job dependencies can be specified explicitly. In Azure Pipelines, this is done with the `dependsOn` key. In {% data variables.product.prodname_actions %}, this is done with the `needs` key. - -Below is an example of the syntax for each system. The workflows start a first job named `initial`, and when that job completes, two jobs named `fanout1` and `fanout2` will run. Finally, when those jobs complete, the job `fanin` will run. - - - - - - - - - - -
-Azure Pipelines - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -jobs: -- job: initial - pool: - vmImage: 'ubuntu-latest' - steps: - - script: echo "This job will be run first." -- job: fanout1 - pool: - vmImage: 'ubuntu-latest' - dependsOn: initial - steps: - - script: echo "This job will run after the initial job, in parallel with fanout2." -- job: fanout2 - pool: - vmImage: 'ubuntu-latest' - dependsOn: initial - steps: - - script: echo "This job will run after the initial job, in parallel with fanout1." -- job: fanin: - pool: - vmImage: 'ubuntu-latest' - dependsOn: [fanout1, fanout2] - steps: - - script: echo "This job will run after fanout1 and fanout2 have finished." -``` -{% endraw %} - -{% raw %} -```yaml -jobs: - initial: - runs-on: ubuntu-latest - steps: - - run: echo "This job will be run first." - fanout1: - runs-on: ubuntu-latest - needs: initial - steps: - - run: echo "This job will run after the initial job, in parallel with fanout2." - fanout2: - runs-on: ubuntu-latest - needs: initial - steps: - - run: echo "This job will run after the initial job, in parallel with fanout1." - fanin: - runs-on: ubuntu-latest - needs: [fanout1, fanout2] - steps: - - run: echo "This job will run after fanout1 and fanout2 have finished." -``` -{% endraw %} -
- -For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idneeds)." - -### Migrating tasks to actions - -Azure Pipelines uses _tasks_, which are application components that can be re-used in multiple workflows. {% data variables.product.prodname_actions %} uses _actions_, which can be used to perform tasks and customize your workflow. In both systems, you can specify the name of the task or action to run, along with any required inputs as key/value pairs. - -Below is an example of the syntax for each system: - - - - - - - - - - -
-Azure Pipelines - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -jobs: -- job: run_python - pool: - vmImage: 'ubuntu-latest' - steps: - - task: UsePythonVersion@0 - inputs: - versionSpec: '3.7' - architecture: 'x64' - - script: python script.py -``` -{% endraw %} - -{% raw %} -```yaml -jobs: - run_python: - runs-on: ubuntu-latest - steps: - - uses: actions/setup-python@v2 - with: - python-version: '3.7' - architecture: 'x64' - - run: python script.py -``` -{% endraw %} -
- -You can find actions that you can use in your workflow in [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=actions), or you can create your own actions. For more information, see "[Creating actions](/actions/creating-actions)." - diff --git a/content/actions/learn-github-actions/migrating-from-circleci-to-github-actions.md b/content/actions/learn-github-actions/migrating-from-circleci-to-github-actions.md deleted file mode 100644 index 17d1431c827d..000000000000 --- a/content/actions/learn-github-actions/migrating-from-circleci-to-github-actions.md +++ /dev/null @@ -1,447 +0,0 @@ ---- -title: Migrating from CircleCI to GitHub Actions -intro: 'GitHub Actions and CircleCI share several similarities in configuration, which makes migration to GitHub Actions relatively straightforward.' -redirect_from: - - /actions/migrating-to-github-actions/migrating-from-circleci-to-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -CircleCI and {% data variables.product.prodname_actions %} both allow you to create workflows that automatically build, test, publish, release, and deploy code. CircleCI and {% data variables.product.prodname_actions %} share some similarities in workflow configuration: - -- Workflow configuration files are written in YAML and stored in the repository. -- Workflows include one or more jobs. -- Jobs include one or more steps or individual commands. -- Steps or tasks can be reused and shared with the community. - -For more information, see "[Core concepts for {% data variables.product.prodname_actions %}](/actions/getting-started-with-github-actions/core-concepts-for-github-actions)." - -### Key differences - -When migrating from CircleCI, consider the following differences: - -- CircleCI’s automatic test parallelism automatically groups tests according to user-specified rules or historical timing information. This functionality is not built into {% data variables.product.prodname_actions %}. -- Actions that execute in Docker containers are sensitive to permissions problems since containers have a different mapping of users. You can avoid many of these problems by not using the `USER` instruction in your *Dockerfile*. For more information about the Docker filesystem on {% data variables.product.product_name %}-hosted runners, see "[Virtual environments for {% data variables.product.product_name %}-hosted runners](/actions/reference/virtual-environments-for-github-hosted-runners#docker-container-filesystem)." - -### Migrating workflows and jobs - -CircleCI defines `workflows` in the *config.yml* file, which allows you to configure more than one workflow. {% data variables.product.product_name %} requires one workflow file per workflow, and as a consequence, does not require you to declare `workflows`. You'll need to create a new workflow file for each workflow configured in *config.yml*. - -Both CircleCI and {% data variables.product.prodname_actions %} configure `jobs` in the configuration file using similar syntax. If you configure any dependencies between jobs using `requires` in your CircleCI workflow, you can use the equivalent {% data variables.product.prodname_actions %} `needs` syntax. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idneeds)." - -### Migrating orbs to actions - -Both CircleCI and {% data variables.product.prodname_actions %} provide a mechanism to reuse and share tasks in a workflow. CircleCI uses a concept called orbs, written in YAML, to provide tasks that people can reuse in a workflow. {% data variables.product.prodname_actions %} has powerful and flexible reusable components called actions, which you build with either JavaScript files or Docker images. You can create actions by writing custom code that interacts with your repository in any way you'd like, including integrating with {% data variables.product.product_name %}'s APIs and any publicly available third-party API. For example, an action can publish npm modules, send SMS alerts when urgent issues are created, or deploy production-ready code. For more information, see "[Creating actions](/actions/creating-actions)." - -CircleCI can reuse pieces of workflows with YAML anchors and aliases. {% data variables.product.prodname_actions %} supports the most common need for reusability using build matrixes. For more information about build matrixes, see "[Managing complex workflows](/actions/learn-github-actions/managing-complex-workflows/#using-a-build-matrix)." - -### Using Docker images - - -Both CircleCI and {% data variables.product.prodname_actions %} support running steps inside of a Docker image. - -CircleCI provides a set of pre-built images with common dependencies. These images have the `USER` set to `circleci`, which causes permissions to conflict with {% data variables.product.prodname_actions %}. - -We recommend that you move away from CircleCI's pre-built images when you migrate to {% data variables.product.prodname_actions %}. In many cases, you can use actions to install the additional dependencies you need. - -For more information about the Docker filesystem, see "[Virtual environments for {% data variables.product.product_name %}-hosted runners](/actions/reference/virtual-environments-for-github-hosted-runners#docker-container-filesystem)." - -For more information about the tools and packages available on {% data variables.product.prodname_dotcom %}-hosted virtual environments, see "[Specifications for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/reference/specifications-for-github-hosted-runners/#supported-software)". - -### Using variables and secrets - -CircleCI and {% data variables.product.prodname_actions %} support setting environment variables in the configuration file and creating secrets using the CircleCI or {% data variables.product.product_name %} UI. - -For more information, see "[Using environment variables](/actions/configuring-and-managing-workflows/using-environment-variables)" and "[Creating and using encrypted secrets](/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets)." - -### Caching - -CircleCI and {% data variables.product.prodname_actions %} provide a method to manually cache files in the configuration file. - -Below is an example of the syntax for each system. - - - - - - - - - - -
-CircleCI - -GitHub Actions -
-{% raw %} -```yaml -- restore_cache: - keys: - - v1-npm-deps-{{ checksum "package-lock.json" }} - - v1-npm-deps- -``` -{% endraw %} - -{% raw %} -```yaml -- name: Cache node modules - uses: actions/cache@v2 - with: - path: ~/.npm - key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }} - restore-keys: v1-npm-deps- -``` -{% endraw %} -
- -For more information, see "[Caching dependencies to speed up workflows](/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows)." - -{% data variables.product.prodname_actions %} does not have an equivalent of CircleCI’s Docker Layer Caching (or DLC). - -### Persisting data between jobs - -Both CircleCI and {% data variables.product.prodname_actions %} provide mechanisms to persist data between jobs. - -Below is an example in CircleCI and {% data variables.product.prodname_actions %} configuration syntax. - - - - - - - - - - -
-CircleCI - -GitHub Actions -
-{% raw %} -```yaml -- persist_to_workspace: - root: workspace - paths: - - math-homework.txt - -... - -- attach_workspace: - at: /tmp/workspace -``` -{% endraw %} - -{% raw %} -```yaml -- name: Upload math result for job 1 - uses: actions/upload-artifact@v2 - with: - name: homework - path: math-homework.txt - -... - -- name: Download math result for job 1 - uses: actions/download-artifact@v2 - with: - name: homework -``` -{% endraw %} -
- -For more information, see "[Persisting workflow data using artifacts](/actions/configuring-and-managing-workflows/persisting-workflow-data-using-artifacts)." - -### Using databases and service containers - -Both systems enable you to include additional containers for databases, caching, or other dependencies. - -In CircleCI, the first image listed in the *config.yaml* is the primary image used to run commands. {% data variables.product.prodname_actions %} uses explicit sections: use `container` for the primary container, and list additional containers in `services`. - -Below is an example in CircleCI and {% data variables.product.prodname_actions %} configuration syntax. - - - - - - - - - - -
-CircleCI - -GitHub Actions -
-{% raw %} -```yaml ---- -version: 2.1 - -jobs: - - ruby-26: - docker: - - image: circleci/ruby:2.6.3-node-browsers-legacy - environment: - PGHOST: localhost - PGUSER: administrate - RAILS_ENV: test - - image: postgres:10.1-alpine - environment: - POSTGRES_USER: administrate - POSTGRES_DB: ruby26 - POSTGRES_PASSWORD: "" - - working_directory: ~/administrate - - steps: - - checkout - - # Bundle install dependencies - - run: bundle install --path vendor/bundle - - # Wait for DB - - run: dockerize -wait tcp://localhost:5432 -timeout 1m - - # Setup the environment - - run: cp .sample.env .env - - # Setup the database - - run: bundle exec rake db:setup - - # Run the tests - - run: bundle exec rake - - -workflows: - version: 2 - build: - jobs: - - ruby-26 -... - -- attach_workspace: - at: /tmp/workspace -``` -{% endraw %} - -{% raw %} -```yaml -name: Containers - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - container: circleci/ruby:2.6.3-node-browsers-legacy - - env: - PGHOST: postgres - PGUSER: administrate - RAILS_ENV: test - - services: - postgres: - image: postgres:10.1-alpine - env: - POSTGRES_USER: administrate - POSTGRES_DB: ruby25 - POSTGRES_PASSWORD: "" - ports: - - 5432:5432 - # Add a health check - options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 - - steps: - # This Docker file changes sets USER to circleci instead of using the default user, so we need to update file permissions for this image to work on GH Actions. - # See https://docs.github.com/actions/reference/virtual-environments-for-github-hosted-runners#docker-container-filesystem - - name: Setup file system permissions - run: sudo chmod -R 777 $GITHUB_WORKSPACE /github /__w/_temp - - uses: actions/checkout@v2 - - name: Install dependencies - run: bundle install --path vendor/bundle - - name: Setup environment configuration - run: cp .sample.env .env - - name: Setup database - run: bundle exec rake db:setup - - name: Run tests - run: bundle exec rake -``` -{% endraw %} -
- -For more information, see "[About service containers](/actions/configuring-and-managing-workflows/about-service-containers)." - -### Complete Example - -Below is a real-world example. The left shows the actual CircleCI *config.yml* for the [thoughtbot/administrator](https://github.com/thoughtbot/administrate) repository. The right shows the {% data variables.product.prodname_actions %} equivalent. - - - - - - - - - - -
-CircleCI - -GitHub Actions -
-{% raw %} -```yaml ---- -version: 2.1 - -commands: - shared_steps: - steps: - - checkout - - # Restore Cached Dependencies - - restore_cache: - name: Restore bundle cache - key: administrate-{{ checksum "Gemfile.lock" }} - - # Bundle install dependencies - - run: bundle install --path vendor/bundle - - # Cache Dependencies - - save_cache: - name: Store bundle cache - key: administrate-{{ checksum "Gemfile.lock" }} - paths: - - vendor/bundle - - # Wait for DB - - run: dockerize -wait tcp://localhost:5432 -timeout 1m - - # Setup the environment - - run: cp .sample.env .env - - # Setup the database - - run: bundle exec rake db:setup - - # Run the tests - - run: bundle exec rake - -default_job: &default_job - working_directory: ~/administrate - steps: - - shared_steps - # Run the tests against multiple versions of Rails - - run: bundle exec appraisal install - - run: bundle exec appraisal rake - -jobs: - ruby-25: - <<: *default_job - docker: - - image: circleci/ruby:2.5.0-node-browsers - environment: - PGHOST: localhost - PGUSER: administrate - RAILS_ENV: test - - image: postgres:10.1-alpine - environment: - POSTGRES_USER: administrate - POSTGRES_DB: ruby25 - POSTGRES_PASSWORD: "" - - ruby-26: - <<: *default_job - docker: - - image: circleci/ruby:2.6.3-node-browsers-legacy - environment: - PGHOST: localhost - PGUSER: administrate - RAILS_ENV: test - - image: postgres:10.1-alpine - environment: - POSTGRES_USER: administrate - POSTGRES_DB: ruby26 - POSTGRES_PASSWORD: "" - - -workflows: - version: 2 - multiple-rubies: - jobs: - - ruby-26 - - ruby-25 -``` -{% endraw %} - -{% raw %} -```yaml -name: Containers - -on: [push] - -jobs: - build: - - strategy: - matrix: - ruby: [2.5, 2.6.3] - - runs-on: ubuntu-latest - - env: - PGHOST: localhost - PGUSER: administrate - RAILS_ENV: test - - services: - postgres: - image: postgres:10.1-alpine - env: - POSTGRES_USER: administrate - POSTGRES_DB: ruby25 - POSTGRES_PASSWORD: "" - ports: - - 5432:5432 - # Add a health check - options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 - - steps: - - uses: actions/checkout@v2 - - name: Setup Ruby - uses: eregon/use-ruby-action@master - with: - ruby-version: ${{ matrix.ruby }} - - name: Cache dependencies - uses: actions/cache@v2 - with: - path: vendor/bundle - key: administrate-${{ matrix.image }}-${{ hashFiles('Gemfile.lock') }} - - name: Install postgres headers - run: sudo apt-get install libpq-dev - - name: Install dependencies - run: bundle install --path vendor/bundle - - name: Setup environment configuration - run: cp .sample.env .env - - name: Setup database - run: bundle exec rake db:setup - - name: Run tests - run: bundle exec rake - - name: Install appraisal - run: bundle exec appraisal install - - name: Run appraisal - run: bundle exec appraisal rake -``` -{% endraw %} -
diff --git a/content/actions/learn-github-actions/migrating-from-gitlab-cicd-to-github-actions.md b/content/actions/learn-github-actions/migrating-from-gitlab-cicd-to-github-actions.md deleted file mode 100644 index 873144e8fe04..000000000000 --- a/content/actions/learn-github-actions/migrating-from-gitlab-cicd-to-github-actions.md +++ /dev/null @@ -1,476 +0,0 @@ ---- -title: Migrating from GitLab CI/CD to GitHub Actions -intro: '{% data variables.product.prodname_actions %} and GitLab CI/CD share several configuration similarities, which makes migrating to {% data variables.product.prodname_actions %} relatively straightforward.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -GitLab CI/CD and {% data variables.product.prodname_actions %} both allow you to create workflows that automatically build, test, publish, release, and deploy code. GitLab CI/CD and {% data variables.product.prodname_actions %} share some similarities in workflow configuration: - -- Workflow configuration files are written in YAML and are stored in the code's repository. -- Workflows include one or more jobs. -- Jobs include one or more steps or individual commands. -- Jobs can run on either managed or self-hosted machines. - -There are a few differences, and this guide will show you the important differences so that you can migrate your workflow to {% data variables.product.prodname_actions %}. - -### Jobs - -Jobs in GitLab CI/CD are very similar to jobs in {% data variables.product.prodname_actions %}. In both systems, jobs have the following characteristics: - -* Jobs contain a series of steps or scripts that run sequentially. -* Jobs can run on separate machines or in separate containers. -* Jobs run in parallel by default, but can be configured to run sequentially. - -You can run a script or a shell command in a job. In GitLab CI/CD, script steps are specified using the `script` key. In {% data variables.product.prodname_actions %}, all scripts are specified using the `run` key. - -Below is an example of the syntax for each system: - - - - - - - - - - -
-GitLab CI/CD - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -job1: - variables: - GIT_CHECKOUT: "true" - script: - - echo "Run your script here" -``` -{% endraw %} - -{% raw %} -```yaml -jobs: - job1: - steps: - - uses: actions/checkout@v2 - - run: echo "Run your script here" -``` -{% endraw %} -
- -### Runners - -Runners are machines on which the jobs run. Both GitLab CI/CD and {% data variables.product.prodname_actions %} offer managed and self-hosted variants of runners. In GitLab CI/CD, `tags` are used to run jobs on different platforms, while in {% data variables.product.prodname_actions %} it is done with the `runs-on` key. - -Below is an example of the syntax for each system: - - - - - - - - - - -
-GitLab CI/CD - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -windows_job: - tags: - - windows - script: - - echo Hello, %USERNAME%! - -linux_job: - tags: - - linux - script: - - echo "Hello, $USER!" -``` -{% endraw %} - -{% raw %} -```yaml -windows_job: - runs-on : windows-latest - steps: - - run: echo Hello, %USERNAME%! - -linux_job: - runs-on: ubuntu-latest - steps: - - run: echo "Hello, $USER!" -``` -{% endraw %} -
- -For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)." - -### Docker images - -Both GitLab CI/CD and {% data variables.product.prodname_actions %} support running jobs in a Docker image. In GitLab CI/CD, Docker images are defined with a `image` key, while in {% data variables.product.prodname_actions %} it is done with the `container` key. - -Below is an example of the syntax for each system: - - - - - - - - - - -
-GitLab CI/CD - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -my_job: - image: node:10.16-jessie -``` -{% endraw %} - -{% raw %} -```yaml -jobs: - my_job: - container: node:10.16-jessie -``` -{% endraw %} -
- -For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontainer)." - -### Condition and expression syntax - -GitLab CI/CD uses `rules` to determine if a job will run for a specific condition. {% data variables.product.prodname_actions %} uses the `if` keyword to prevent a job from running unless a condition is met. - -Below is an example of the syntax for each system: - - - - - - - - - - -
-GitLab CI/CD - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -deploy_prod: - stage: deploy - script: - - echo "Deply to production server" - rules: - - if: '$CI_COMMIT_BRANCH == "master"' -``` -{% endraw %} - -{% raw %} -```yaml -jobs: - deploy_prod: - if: contains( github.ref, 'master') - runs-on: ubuntu-latest - steps: - - run: echo "Deply to production server" -``` -{% endraw %} -
- -For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions)." - -### Dependencies between Jobs - -Both GitLab CI/CD and {% data variables.product.prodname_actions %} allow you to set dependencies for a job. In both systems, jobs run in parallel by default, but job dependencies in {% data variables.product.prodname_actions %} can be specified explicitly with the `needs` key. GitLab CI/CD also has a concept of `stages`, where jobs in a stage run concurrently, but the next stage will start when all the jobs in the previous stage have completed. You can recreate this scenario in {% data variables.product.prodname_actions %} with the `needs` key. - -Below is an example of the syntax for each system. The workflows start with two jobs named `build_a` and `build_b` running in parallel, and when those jobs complete, another job called `test_ab` will run. Finally, when `test_ab` completes, the `deploy_ab` job will run. - - - - - - - - - - -
-GitLab CI/CD - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -stages: - - build - - test - - deploy - -build_a: - stage: build - script: - - echo "This job will run first." - -build_b: - stage: build - script: - - echo "This job will run first, in parallel with build_a." - -test_ab: - stage: test - script: - - echo "This job will run after build_a and build_b have finished." - -deploy_ab: - stage: deploy - script: - - echo "This job will run after test_ab is complete" -``` -{% endraw %} - -{% raw %} -```yaml -jobs: - build_a: - runs-on: ubuntu-latest - steps: - - run: echo "This job will be run first." - - build_b: - runs-on: ubuntu-latest - steps: - - run: echo "This job will be run first, in parallel with build_a" - - test_ab: - runs-on: ubuntu-latest - needs: [build_a,build_b] - steps: - - run: echo "This job will run after build_a and build_b have finished" - - deploy_ab: - runs-on: ubuntu-latest - needs: [test_ab] - steps: - - run: echo "This job will run after test_ab is complete" -``` -{% endraw %} -
- -For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idneeds)." - -### Scheduling workflows - -Both GitLab CI/CD and {% data variables.product.prodname_actions %} allow you to run workflows at a specific interval. In GitLab CI/CD, pipeline schedules are configured with the UI, while in {% data variables.product.prodname_actions %} you can trigger a workflow on a scheduled interval with the "on" key. - -For more information, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows#scheduled-events)." - -### Variables and secrets - -GitLab CI/CD and {% data variables.product.prodname_actions %} support setting environment variables in the pipeline or workflow configuration file, and creating secrets using the GitLab or {% data variables.product.product_name %} UI. - -For more information, see "[Environment variables](/actions/reference/environment-variables)" and "[Encrypted secrets](/actions/reference/encrypted-secrets)." - -### Caching - -GitLab CI/CD and {% data variables.product.prodname_actions %} provide a method in the configuration file to manually cache workflow files. - -Below is an example of the syntax for each system: - - - - - - - - - - -
-GitLab CI/CD - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -image: node:latest - -cache: - key: $CI_COMMIT_REF_SLUG - paths: - - .npm/ - -before_script: - - npm ci --cache .npm --prefer-offline - -test_async: - script: - - node ./specs/start.js ./specs/async.spec.js -``` -{% endraw %} - -{% raw %} -```yaml -jobs: - test_async: - - name: Cache node modules - uses: actions/cache@v2 - with: - path: ~/.npm - key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }} - restore-keys: v1-npm-deps- -``` -{% endraw %} -
- -For more information, see "[Caching dependencies to speed up workflows](/actions/guides/caching-dependencies-to-speed-up-workflows)." - -### Artifacts - -Both GitLab CI/CD and {% data variables.product.prodname_actions %} can upload files and directories created by a job as artifacts. In {% data variables.product.prodname_actions %}, artifacts can be used to persist data across multiple jobs. - -Below is an example of the syntax for each system: - - - - - - - - - - -
-GitLab CI/CD - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -script: -artifacts: - paths: - - math-homework.txt -``` -{% endraw %} - -{% raw %} -```yaml -- name: Upload math result for job 1 - uses: actions/upload-artifact@v2 - with: - name: homework - path: math-homework.txt -``` -{% endraw %} -
- -For more information, see "[Storing workflow data as artifacts](/actions/guides/storing-workflow-data-as-artifacts)." - -### Databases and service containers - -Both systems enable you to include additional containers for databases, caching, or other dependencies. - -In GitLab CI/CD, a container for the job is specified with the `image` key, while {% data variables.product.prodname_actions %} uses the `container` key. In both systems, additional service containers are specified with the `services` key. - -Below is an example of the syntax for each system: - - - - - - - - - - -
-GitLab CI/CD - -{% data variables.product.prodname_actions %} -
-{% raw %} -```yaml -container-job: - variables: - POSTGRES_PASSWORD: postgres - # The hostname used to communicate with the - # PostgreSQL service container - POSTGRES_HOST: postgres - # The default PostgreSQL port - POSTGRES_PORT: 5432 - image: node:10.18-jessie - services: - - postgres - script: - # Performs a clean installation of all dependencies - # in the `package.json` file - - npm ci - # Runs a script that creates a PostgreSQL client, - # populates the client with data, and retrieves data - - node client.js - tags: - - docker -``` -{% endraw %} - -{% raw %} -```yaml -jobs: - container-job: - runs-on: ubuntu-latest - container: node:10.18-jessie - - services: - postgres: - image: postgres - env: - POSTGRES_PASSWORD: postgres - - steps: - - name: Check out repository code - uses: actions/checkout@v2 - - # Performs a clean installation of all dependencies - # in the `package.json` file - - name: Install dependencies - run: npm ci - - - name: Connect to PostgreSQL - # Runs a script that creates a PostgreSQL client, - # populates the client with data, and retrieves data - run: node client.js - env: - # The hostname used to communicate with the - # PostgreSQL service container - POSTGRES_HOST: postgres - # The default PostgreSQL port - POSTGRES_PORT: 5432 -``` -{% endraw %} -
- -For more information, see "[About service containers](/actions/guides/about-service-containers)." diff --git a/content/actions/learn-github-actions/migrating-from-jenkins-to-github-actions.md b/content/actions/learn-github-actions/migrating-from-jenkins-to-github-actions.md deleted file mode 100644 index d7c662b90dba..000000000000 --- a/content/actions/learn-github-actions/migrating-from-jenkins-to-github-actions.md +++ /dev/null @@ -1,293 +0,0 @@ ---- -title: Migrating from Jenkins to GitHub Actions -intro: '{% data variables.product.prodname_actions %} and Jenkins share multiple similarities, which makes migration to {% data variables.product.prodname_actions %} relatively straightforward.' -redirect_from: - - /actions/migrating-to-github-actions/migrating-from-jenkins-to-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -Jenkins and {% data variables.product.prodname_actions %} both allow you to create workflows that automatically build, test, publish, release, and deploy code. Jenkins and {% data variables.product.prodname_actions %} share some similarities in workflow configuration: - -- Jenkins creates workflows using _Declarative Pipelines_, which are similar to {% data variables.product.prodname_actions %} workflow files. -- Jenkins uses _stages_ to run a collection of steps, while {% data variables.product.prodname_actions %} uses jobs to group one or more steps or individual commands. -- Jenkins and {% data variables.product.prodname_actions %} support container-based builds. For more information, see "[Creating a Docker container action](/articles/creating-a-docker-container-action)." -- Steps or tasks can be reused and shared with the community. - -For more information, see "[Core concepts for {% data variables.product.prodname_actions %}](/actions/getting-started-with-github-actions/core-concepts-for-github-actions)." - -### Key differences - -- Jenkins has two types of syntax for creating pipelines: Declarative Pipeline and Scripted Pipeline. {% data variables.product.prodname_actions %} uses YAML to create workflows and configuration files. For more information, see "[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions)." -- Jenkins deployments are typically self-hosted, with users maintaining the servers in their own data centers. {% data variables.product.prodname_actions %} offers a hybrid cloud approach by hosting its own runners that you can use to run jobs, while also supporting self-hosted runners. For more information, see [About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners). - -### Comparing capabilities - -#### Distributing your builds - -Jenkins lets you send builds to a single build agent, or you can distribute them across multiple agents. You can also classify these agents according to various attributes, such as operating system types. - -Similarly, {% data variables.product.prodname_actions %} can send jobs to {% data variables.product.prodname_dotcom %}-hosted or self-hosted runners, and you can use labels to classify runners according to various attributes. The following table compares how the distributed build concept is implemented for both Jenkins and {% data variables.product.prodname_actions %}. - -| Jenkins | {% data variables.product.prodname_actions %} | -| ------------- | ------------- | -| [`agents`](https://wiki.jenkins.io/display/JENKINS/Distributed+builds) | [`runners`](/actions/learn-github-actions/introduction-to-github-actions#runners)
[`self-hosted runners`](/actions/hosting-your-own-runners/about-self-hosted-runners)| - -#### Using sections to organize pipelines - -Jenkins splits its Declarative Pipelines into multiple sections. Similarly, {% data variables.product.prodname_actions %} organizes its workflows into separate sections. The table below compares Jenkins sections with the {% data variables.product.prodname_actions %} workflow. - -|Jenkins Directives | {% data variables.product.prodname_actions %} | -| ------------- | ------------- | -| [`agent`](https://jenkins.io/doc/book/pipeline/syntax/#agent) | [`jobs..runs-on`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idruns-on)
[`jobs..container`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainer)| -| [`post`](https://jenkins.io/doc/book/pipeline/syntax/#post) | | -| [`stages`](https://jenkins.io/doc/book/pipeline/syntax/#stages) | [`jobs`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobs) | -| [`steps`](https://jenkins.io/doc/book/pipeline/syntax/#steps) | [`jobs..steps`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idsteps) | - - -### Using directives - -Jenkins uses directives to manage _Declarative Pipelines_. These directives define the characteristics of your workflow and how it will execute. The table below demonstrates how these directives map to concepts within {% data variables.product.prodname_actions %}. - -| Jenkins Directives | {% data variables.product.prodname_actions %} | -| ------------- | ------------- | -| [`environment`](https://jenkins.io/doc/book/pipeline/syntax/#environment) | [`jobs..env`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#env)
[`jobs..steps.env`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsenv) | -| [`options`](https://jenkins.io/doc/book/pipeline/syntax/#parameters) | [`jobs..strategy`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategy)
[`jobs..strategy.fail-fast`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast)
[`jobs..timeout-minutes`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes)| -| [`parameters`](https://jenkins.io/doc/book/pipeline/syntax/#parameters) | [`inputs`](/actions/creating-actions/metadata-syntax-for-github-actions#inputs)
[`outputs`](/actions/creating-actions/metadata-syntax-for-github-actions#outputs) | -| [`triggers`](https://jenkins.io/doc/book/pipeline/syntax/#triggers) | [`on`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#on)
[`on..types`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onevent_nametypes)
[on..](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onpushpull_requestbranchestags)
[on..paths](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onpushpull_requestpaths) | -| [`triggers { upstreamprojects() }`](https://jenkins.io/doc/book/pipeline/syntax/#triggers) | [`jobs..needs`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idneeds) | -| [Jenkins cron syntax](https://jenkins.io/doc/book/pipeline/syntax/#cron-syntax) | [`on.schedule`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onschedule) | -| [`stage`](https://jenkins.io/doc/book/pipeline/syntax/#stage) | [`jobs.`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_id)
[`jobs..name`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idname)| -| [`tools`](https://jenkins.io/doc/book/pipeline/syntax/#tools) | [Specifications for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/reference/specifications-for-github-hosted-runners/#supported-software) | -| [`input`](https://jenkins.io/doc/book/pipeline/syntax/#input) | [`inputs`](/actions/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputs) | -| [`when`](https://jenkins.io/doc/book/pipeline/syntax/#when) | [`jobs..if`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idif) | - - -### Using sequential stages - -#### Parallel job processing - -Jenkins can run the `stages` and `steps` in parallel, while {% data variables.product.prodname_actions %} currently only runs jobs in parallel. - -| Jenkins Parallel | {% data variables.product.prodname_actions %} | -| ------------- | ------------- | -| [`parallel`](https://jenkins.io/doc/book/pipeline/syntax/#parallel) | [`jobs..strategy.max-parallel`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategymax-parallel) | - -#### Build matrix - -Both {% data variables.product.prodname_actions %} and Jenkins let you use a build matrix to define various system combinations. - -| Jenkins | {% data variables.product.prodname_actions %} | -| ------------- | ------------- | -| [`axis`](https://jenkins.io/doc/book/pipeline/syntax/#matrix-axes) | [`strategy/matrix`](/actions/learn-github-actions/managing-complex-workflows/#using-a-build-matrix)
[`context`](/actions/reference/context-and-expression-syntax-for-github-actions) | -| [`stages`](https://jenkins.io/doc/book/pipeline/syntax/#matrix-stages) | [`steps-context`](/actions/reference/context-and-expression-syntax-for-github-actions#steps-context) | -| [`excludes`](https://jenkins.io/doc/book/pipeline/syntax/#matrix-stages) | | - -#### Using steps to execute tasks - -Jenkins groups `steps` together in `stages`. Each of these steps can be a script, function, or command, among others. Similarly, {% data variables.product.prodname_actions %} uses `jobs` to execute specific groups of `steps`. - -| Jenkins steps | {% data variables.product.prodname_actions %} | -| ------------- | ------------- | -| [`script`](https://jenkins.io/doc/book/pipeline/syntax/#script) | [`jobs..steps`](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idsteps) | - -### Examples of common tasks - -#### Scheduling a pipeline to run with `cron` - - - - - - - - - - -
-Jenkins Pipeline - -{% data variables.product.prodname_actions %} Workflow -
- - ```yaml - pipeline { - agent any - triggers { - cron('H/15 * * * 1-5') - } - } - ``` - - - - ```yaml - on: - schedule: - - cron: '*/15 * * * 1-5' - ``` - -
- -#### Configuring environment variables in a pipeline - - - - - - - - - - -
-Jenkins Pipeline - -{% data variables.product.prodname_actions %} Workflow -
- - ```yaml - pipeline { - agent any - environment { - MAVEN_PATH = '/usr/local/maven' - } - } - ``` - - - - ```yaml - jobs: - maven-build: - env: - MAVEN_PATH: '/usr/local/maven' - - ``` - -
- -#### Building from upstream projects - - - - - - - - - - -
-Jenkins Pipeline - -{% data variables.product.prodname_actions %} Workflow -
- - ```yaml - pipeline { - triggers { - upstream( - upstreamProjects: 'job1,job2', - threshold: hudson.model.Result.SUCCESS) - } - } - } - - ``` - - - - ```yaml - jobs: - job1: - job2: - needs: job1 - job3: - needs: [job1, job2] - - ``` - -
- -#### Building with multiple operating systems - - - - - - - - - - -
-Jenkins Pipeline - -{% data variables.product.prodname_actions %} Workflow -
- - ```yaml -pipeline { - agent none - stages { - stage('Run Tests') { - parallel { - stage('Test On MacOS') { - agent { label "macos" } - tools { nodejs "node-12" } - steps { - dir("scripts/myapp") { - sh(script: "npm install -g bats") - sh(script: "bats tests") - } - } - } - stage('Test On Linux') { - agent { label "linux" } - tools { nodejs "node-12" } - steps { - dir("script/myapp") { - sh(script: "npm install -g bats") - sh(script: "bats tests") - } - } - } - } - } - } -} - ``` - - - -{% raw %} - ```yaml - name: demo-workflow - on: - push: - jobs: - test: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [macos-latest, ubuntu-latest] - steps: - - uses: actions/checkout@v1 - - uses: actions/setup-node@v1 - with: - node-version: 12 - - run: npm install -g bats - - run: bats tests - working-directory: scripts/myapp - ``` -{% endraw %} - -
diff --git a/content/actions/learn-github-actions/security-hardening-for-github-actions.md b/content/actions/learn-github-actions/security-hardening-for-github-actions.md deleted file mode 100644 index 57cef7eb3ed2..000000000000 --- a/content/actions/learn-github-actions/security-hardening-for-github-actions.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: Security hardening for GitHub Actions -shortTitle: Security hardening -intro: 'Good security practices for using {% data variables.product.prodname_actions %} features.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/getting-started-with-github-actions/security-hardening-for-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Overview - -This guide explains how to configure security hardening for certain {% data variables.product.prodname_actions %} features. If the {% data variables.product.prodname_actions %} concepts are unfamiliar, see "[Core concepts for GitHub Actions](/actions/getting-started-with-github-actions/core-concepts-for-github-actions)." - -### Using secrets - -Sensitive values should never be stored as plaintext in workflow files, but rather as secrets. [Secrets](/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets) can be configured at the organization or repository level, and allow you to store sensitive information in {% data variables.product.product_name %}. - -Secrets use [Libsodium sealed boxes](https://libsodium.gitbook.io/doc/public-key_cryptography/sealed_boxes), so that they are encrypted before reaching {% data variables.product.product_name %}. This occurs when the secret is submitted [using the UI](/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository) or through the [REST API](/rest/reference/actions#secrets). This client-side encryption helps the minimize risks related to accidental logging (for example, exception logs and request logs, among others) within {% data variables.product.product_name %}'s infrastructure. Once the secret is uploaded, {% data variables.product.product_name %} is then able to decrypt it so that it can be injected into the workflow runtime. - -To help prevent accidental disclosure, {% data variables.product.product_name %} uses a mechanism that attempts to redact any secrets that appear in run logs. This redaction looks for exact matches of any configured secrets, as well as common encodings of the values, such as Base64. However, because there are multiple ways a secret value can be transformed, this redaction is not guaranteed. As a result, there are certain proactive steps and good practices you should follow to help ensure secrets are redacted, and to limit other risks associated with secrets: - -- **Never use structured data as a secret** - - Unstructured data can cause secret redaction within logs to fail, because redaction largely relies on finding an exact match for the specific secret value. For example, do not use a blob of JSON, XML, or YAML (or similar) to encapsulate a secret value, as this significantly reduces the probability the secrets will be properly redacted. Instead, create individual secrets for each sensitive value. -- **Register all secrets used within workflows** - - If a secret is used to generate another sensitive value within a workflow, that generated value should be formally [registered as a secret](https://github.com/actions/toolkit/tree/main/packages/core#setting-a-secret), so that it will be redacted if it ever appears in the logs. For example, if using a private key to generate a signed JWT to access a web API, be sure to register that JWT as a secret or else it won’t be redacted if it ever enters the log output. - - Registering secrets applies to any sort of transformation/encoding as well. If your secret is transformed in some way (such as Base64 or URL-encoded), be sure to register the new value as a secret too. -- **Audit how secrets are handled** - - Audit how secrets are used, to help ensure they’re being handled as expected. You can do this by reviewing the source code of the repository executing the workflow, and checking any actions used in the workflow. For example, check that they’re not sent to unintended hosts, or explicitly being printed to log output. - - View the run logs for your workflow after testing valid/invalid inputs, and check that secrets are properly redacted, or not shown. It's not always obvious how a command or tool you’re invoking will send errors to `STDOUT` and `STDERR`, and secrets might subsequently end up in error logs. As a result, it is good practice to manually review the workflow logs after testing valid and invalid inputs. -- **Use credentials that are minimally scoped** - - Make sure the credentials being used within workflows have the least privileges required, and be mindful that any user with write access to your repository has read access to all secrets configured in your repository. -- **Audit and rotate registered secrets** - - Periodically review the registered secrets to confirm they are still required. Remove those that are no longer needed. - - Rotate secrets periodically to reduce the window of time during which a compromised secret is valid. - -### Using third-party actions - -The individual jobs in a workflow can interact with (and compromise) other jobs. For example, a job querying the environment variables used by a later job, writing files to a shared directory that a later job processes, or even more directly by interacting with the Docker socket and inspecting other running containers and executing commands in them. - -This means that a compromise of a single action within a workflow can be very significant, as that compromised action would have access to all secrets configured on your repository, and can use the `GITHUB_TOKEN` to write to the repository. Consequently, there is significant risk in sourcing actions from third-party repositories on {% data variables.product.prodname_dotcom %}. You can help mitigate this risk by following these good practices: - -* **Pin actions to a full length commit SHA** - - Pinning an action to a full length commit SHA is currently the only way to use an action as an immutable release. Pinning to a particular SHA helps mitigate the risk of a bad actor adding a backdoor to the action's repository, as they would need to generate a SHA-1 collision for a valid Git object payload. - - {% warning %} - - **Warning:** The short version of the commit SHA is insecure and should never be used for specifying an action's Git reference. Because of how repository networks work, any user can fork the repository and push a crafted commit to it that collides with the short SHA. This causes subsequent clones at that SHA to fail because it becomes an ambiguous commit. As a result, any workflows that use the shortened SHA will immediately fail. - - {% endwarning %} -* **Audit the source code of the action** - - Ensure that the action is handling the content of your repository and secrets as expected. For example, check that secrets are not sent to unintended hosts, or are not inadvertently logged. - -* **Pin actions to a tag only if you trust the creator** - - Although pinning to a commit SHA is the most secure option, specifying a tag is more convenient and is widely used. If you’d like to specify a tag, then be sure that you trust the action's creators. The ‘Verified creator’ badge on {% data variables.product.prodname_marketplace %} is a useful signal, as it indicates that the action was written by a team whose identity has been verified by {% data variables.product.prodname_dotcom %}. Note that there is risk to this approach even if you trust the author, because a tag can be moved or deleted if a bad actor gains access to the repository storing the action. - -### Considering cross-repository access - -{% data variables.product.product_name %} is intentionally scoped for a single repository at a time. The `GITHUB_TOKEN` used in the workflow environment grants the same level of access as a write-access user, because any write-access user can access this token by creating or modifying workflow files. Users have specific permissions for each repository, so having the `GITHUB_TOKEN` for one repository grant access to another would impact the {% data variables.product.prodname_dotcom %} permission model if not implemented carefully. Similarly, caution must be taken when adding {% data variables.product.prodname_dotcom %} authentication tokens to the workflow environment, because this can also affect the {% data variables.product.prodname_dotcom %} permission model by inadvertently granting broad access to collaborators. - -We have [a plan on the {% data variables.product.prodname_dotcom %} roadmap](https://github.com/github/roadmap/issues/74) to support a flow that allows cross-repository access within {% data variables.product.product_name %}, but this is not yet a supported feature. Currently, the only way to perform privileged cross-repository interactions is to place a {% data variables.product.prodname_dotcom %} authentication token or SSH key as a secret within the workflow environment. Because many authentication token types do not allow for granular access to specific resources, there is significant risk in using the wrong token type, as it can grant much broader access than intended. - -This list describes the recommended approaches for accessing repository data within a workflow, in descending order of preference: - -1. **The `GITHUB_TOKEN` in the workflow environment** - - This token is intentionally scoped to the single repository that invoked the workflow, and has the same level of access as a write-access user on the repository. The token is created before each job begins and expires when the job is finished. For more information, see "[Authenticating with the GITHUB_TOKEN](/actions/configuring-and-managing-workflows/authenticating-with-the-github_token)." - - The `GITHUB_TOKEN` should be used whenever possible. -2. **Repository deploy key** - - Deploy keys are one of the only credential types that grant read or write access to a single repository, and can be used to interact with another repository within a workflow. For more information, see "[Managing deploy keys](/developers/overview/managing-deploy-keys#deploy-keys)." - - Note that deploy keys can only clone and push to the repository using Git, and cannot be used to interact with the REST or GraphQL API, so they may not be appropriate for your requirements. -3. **{% data variables.product.prodname_github_app %} tokens** - - {% data variables.product.prodname_github_apps %} can be installed on select repositories, and even have granular permissions on the resources within them. You could create a {% data variables.product.prodname_github_app %} internal to your organization, install it on the repositories you need access to within your workflow, and authenticate as the installation within your workflow to access those repositories. -4. **Personal access tokens** - - You should never use personal access tokens from your own account. These tokens grant access to all repositories within the organizations that you have access to, as well as all personal repositories in your user account. This indirectly grants broad access to all write-access users of the repository the workflow is in. In addition, if you later leave an organization, workflows using this token will immediately break, and debugging this issue can be challenging. - - If a personal access token is used, it should be one that was generated for a new account that is only granted access to the specific repositories that are needed for the workflow. Note that this approach is not scalable and should be avoided in favor of alternatives, such as deploy keys. -5. **SSH keys on a user account** - - Workflows should never use the SSH keys on a user account. Similar to personal access tokens, they grant read/write permissions to all of your personal repositories as well as all the repositories you have access to through organization membership. This indirectly grants broad access to all write-access users of the repository the workflow is in. If you're intending to use an SSH key because you only need to perform repository clones or pushes, and do not need to interact with public APIs, then you should use individual deploy keys instead. - -### Hardening for self-hosted runners - -**{% data variables.product.prodname_dotcom %}-hosted** runners execute code within ephemeral and clean isolated virtual machines, meaning there is no way to persistently compromise this environment, or otherwise gain access to more information than was placed in this environment during the bootstrap process. - -**Self-hosted** runners on {% data variables.product.product_name %} do not have guarantees around running in ephemeral clean virtual machines, and can be persistently compromised by untrusted code in a workflow. - -As a result, self-hosted runners should almost [never be used for public repositories](/actions/hosting-your-own-runners/about-self-hosted-runners#self-hosted-runner-security-with-public-repositories) on {% data variables.product.product_name %}, because any user can open pull requests against the repository and compromise the environment. Similarly, be cautious when using self-hosted runners on private repositories, as anyone who can fork the repository and open a PR (generally those with read-access to the repository) are able to compromise the self-hosted runner environment, including gaining access to secrets and the more privileged `GITHUB_TOKEN` which grants write-access permissions on the repository. - -You should also consider the environment of the self-hosted runner machines: -- What sensitive information resides on the machine configured as a self-hosted runner? For example, private SSH keys, API access tokens, among others. -- Does the machine have network access to sensitive services? For example, Azure or AWS metadata services. The amount of sensitive information in this environment should be kept to a minimum, and you should always be mindful that any user capable of invoking workflows has access to this environment. - -### Auditing {% data variables.product.prodname_actions %} events - -You can use the audit log to monitor administrative tasks in an organization. The audit log records the type of action, when it was run, and which user account perfomed the action. - -For example, you can use the audit log to track the `action:org.update_actions_secret` event, which tracks changes to organization secrets: - ![Audit log entries](/assets/images/help/repository/audit-log-entries.png) - -The following tables describe the {% data variables.product.prodname_actions %} events that you can find in the audit log. For more information on using the audit log, see -"[Reviewing the audit log for your organization](/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization#searching-the-audit-log)." - -#### Events for secret management -| Action | Description -|------------------|------------------- -| `action:org.create_actions_secret` | Triggered when a organization admin [creates a {% data variables.product.prodname_actions %} secret](/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-an-organization). -| `action:org.remove_actions_secret` | Triggered when a organization admin removes a {% data variables.product.prodname_actions %} secret. -| `action:org.update_actions_secret` | Triggered when a organization admin updates a {% data variables.product.prodname_actions %} secret. -| `action:repo.create_actions_secret ` | Triggered when a repository admin [creates a {% data variables.product.prodname_actions %} secret](/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository). -| `action:repo.remove_actions_secret` | Triggered when a repository admin removes a {% data variables.product.prodname_actions %} secret. -| `action:repo.update_actions_secret` | Triggered when a repository admin updates a {% data variables.product.prodname_actions %} secret. - -#### Events for self-hosted runners -| Action | Description -|------------------|------------------- -| `action:org.register_self_hosted_runner` | Triggered when an organization owner [registers a new self-hosted runner](/actions/hosting-your-own-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-an-organization). -| `action:org.remove_self_hosted_runner` | Triggered when an organization owner [removes a self-hosted runner](/actions/hosting-your-own-runners/removing-self-hosted-runners#removing-a-runner-from-an-organization). -| `action:repo.register_self_hosted_runner` | Triggered when a repository admin [registers a new self-hosted runner](/actions/hosting-your-own-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-a-repository). -| `action:repo.remove_self_hosted_runner` | Triggered when a repository admin [removes a self-hosted runner](/actions/hosting-your-own-runners/removing-self-hosted-runners#removing-a-runner-from-a-repository). - -#### Events for self-hosted runner groups -| Action | Description -|------------------|------------------- -| `action:org.runner_group_created` | Triggered when an organization admin [creates a self-hosted runner group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#creating-a-self-hosted-runner-group-for-an-organization). -| `action:org.runner_group_removed` | Triggered when an organization admin removes a self-hosted runner group. -| `action:org.runner_group_renamed` | Triggered when an organization admin renames a self-hosted runner group. -| `action:org.runner_group_runners_added` | Triggered when an organization admin [adds a self-hosted runner to a group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group). -| `action:org.runner_group_runners_removed` | Triggered when an organization admin removes a self-hosted runner from a group. - - diff --git a/content/actions/learn-github-actions/sharing-workflows-with-your-organization.md b/content/actions/learn-github-actions/sharing-workflows-with-your-organization.md deleted file mode 100644 index 4dc25fdd48af..000000000000 --- a/content/actions/learn-github-actions/sharing-workflows-with-your-organization.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: Sharing workflows with your organization -shortTitle: Sharing workflows with your organization -intro: 'Learn how you can use organization features to collaborate with your team, by sharing workflow templates, secrets, and self-hosted runners.' -redirect_from: - - /actions/configuring-and-managing-workflows/sharing-workflow-templates-within-your-organization -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Overview - -If you need to share workflows and other {% data variables.product.prodname_actions %} features with your team, then consider collaborating within a {% data variables.product.prodname_dotcom %} organization. An organization allows you to centrally store and manage secrets, artifacts, and self-hosted runners. You can also create workflow templates in the `.github` repository and share them with other users in your organization. - -### Creating a workflow template - -Workflow templates can be created by users with write access to the organization's `.github` repository. The templates can then be used by organization members who have permission to create workflows. Workflow templates can be used to create new workflows in an organizations' public repositories; to use templates to create workflows in private repositories, the organization must be part of an enterprise or GitHub One plan. - -This procedure demonstrates how to create a workflow template and metadata file. The metadata file describes how the template is presented to users when they are creating a new workflow. - -1. If it doesn't already exist, create a new public repository named `.github` in your organization. -1. Create a directory named `workflow-templates`. -1. Create your new workflow file inside the `workflow-templates` directory. - - If you need to refer to a repository's default branch, you can use the `$default-branch` placeholder. When a workflow is created using your template, the placeholder will be automatically replaced with the name of the repository's default branch. - - For example, this file named `octo-organization-ci.yml` demonstrates a basic workflow. - - ```yaml - name: Octo Organization CI - - on: - push: - branches: [ $default-branch ] - pull_request: - branches: [ $default-branch ] - - jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - - name: Run a one-line script - run: echo Hello from Octo Organization - ``` -1. Create a metadata file inside the `workflow-templates` directory. The metadata file must have the same name as the workflow file, but instead of the `.yml` extension, it must be appended with `.properties.json`. For example, this file named `octo-organization-ci.properties.json` contains the metadata for a workflow file named `octo-organization-ci.yml`: - ```yaml - { - "name": "Octo Organization Workflow", - "description": "Octo Organization CI workflow template.", - "iconName": "example-icon", - "categories": [ - "Go" - ], - "filePatterns": [ - "package.json$", - "^Dockerfile", - ".*\\.md$" - ] - } - ``` - * `name` - **Required.** The name of the workflow template. This is displayed in the list of available templates. - * `description` - **Required.** The description of the workflow template. This is displayed in the list of available templates. - * `iconName` - **Required.** Defines an icon for the workflow's entry in the template list. The `iconName` must be an SVG icon of the same name, and must be stored in the `workflow-templates` directory. For example, a SVG file named `example-icon.svg` is referenced as `example-icon`. - * `categories` - **Optional.** Defines the language category of the workflow. When a user views the available templates, those templates that match the same language will feature more prominently. For information on the available language categories, see https://github.com/github/linguist/blob/master/lib/linguist/languages.yml. - * `filePatterns` - **Optional.** Allows the template to be used if the user's repository has a file in its root directory that matches a defined regular expression. - -To add another workflow template, add your files to the same `workflow-templates` directory. For example: - -![Workflow template files](/assets/images/help/images/workflow-template-files.png) - -### Using a workflow template - -This procedure demonstrates how a member of your organization can find and use a workflow template to create a new workflow. An organization's workflow templates can be used by anyone who is a member of the organization. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -1. If your repository already has existing workflows: In the upper-left corner, click **New workflow**. - ![Create a new workflow](/assets/images/help/repository/actions-new-workflow.png) -1. Your organization's workflow templates are located in their own section titled "Workflows created by _organization name_". Under the name of the template you'd like to use, click **Set up this workflow**. - ![Set up this workflow](/assets/images/help/settings/actions-create-starter-workflow.png) - - -### Sharing secrets within an organization - -You can centrally manage your secrets within an organization, and then make them available to selected repositories. This also means that you can update a secret in one location, and have the change apply to all repository workflows that use the secret. - -When creating a secret in an organization, you can use a policy to limit which repositories can access that secret. For example, you can grant access to all repositories, or limit access to only private repositories or a specified list of repositories. - -{% data reusables.github-actions.permissions-statement-secrets-organization %} - -{% data reusables.organizations.navigate-to-org %} -{% data reusables.organizations.org_settings %} -{% data reusables.github-actions.sidebar-secret %} -1. Click **New secret**. -1. Type a name for your secret in the **Name** input box. -1. Enter the **Value** for your secret. -1. From the **Repository access** dropdown list, choose an access policy. -1. Click **Add secret**. - -### Share self-hosted runners within an organization - -Organization admins can add their self-hosted runners to groups, and then create policies that control which repositories can access the group. - -For more information, see "[Managing access to self-hosted runners using groups](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups)." - - -### Next steps - -To continue learning about {% data variables.product.prodname_actions %}, see "[Security hardening for {% data variables.product.prodname_actions %}](/actions/learn-github-actions/security-hardening-for-github-actions)." diff --git a/content/actions/managing-workflow-runs/adding-a-workflow-status-badge.md b/content/actions/managing-workflow-runs/adding-a-workflow-status-badge.md deleted file mode 100644 index 162499b98ad3..000000000000 --- a/content/actions/managing-workflow-runs/adding-a-workflow-status-badge.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Adding a workflow status badge -intro: You can display a status badge in your repository to indicate the status of your workflows. -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -{% data reusables.repositories.actions-workflow-status-badge-into %} - -If your workflow uses the `name` keyword, you must reference the workflow by name. If the name of your workflow contains white space, you'll need to replace the space with the URL encoded string `%20`. For more information about the `name` keyword, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/articles/workflow-syntax-for-github-actions#name)." - -``` -https://github.com///workflows//badge.svg -``` - -Alternatively, if your workflow doesn't have a `name`, you must reference the workflow file using the file path relative to the repository's root directory. - -{% note %} - -**Note:** Referencing the workflow file using the file path does not work if the workflow has a `name`. - -{% endnote %} - -``` -https://github.com///workflows//badge.svg -``` - -### Using a workflow name - -This Markdown example adds a status badge for a workflow with the name "Greet Everyone." The `OWNER` of the repository is the `actions` organization and the `REPOSITORY` name is `hello-world`. - -``` -![example workflow name](https://github.com/actions/hello-world/workflows/Greet%20Everyone/badge.svg) -``` - -### Using a workflow file path - -This Markdown example adds a status badge for a workflow with the file path `.github/workflows/main.yml`. The `OWNER` of the repository is the `actions` organization and the `REPOSITORY` name is `hello-world`. - -``` -![example workflow file path](https://github.com/actions/hello-world/workflows/.github/workflows/main.yml/badge.svg) -``` - -### Using the `branch` parameter - -This Markdown example adds a status badge for a branch with the name `feature-1`. - -``` -![example branch parameter](https://github.com/actions/hello-world/workflows/Greet%20Everyone/badge.svg?branch=feature-1) -``` - -### Using the `event` parameter - -This Markdown example adds a badge that displays the status of workflow runs triggered by the `pull_request` event. - -``` -![example event parameter](https://github.com/actions/hello-world/workflows/Greet%20Everyone/badge.svg?event=pull_request) -``` diff --git a/content/actions/managing-workflow-runs/canceling-a-workflow.md b/content/actions/managing-workflow-runs/canceling-a-workflow.md deleted file mode 100644 index 20b9ba1cb4dd..000000000000 --- a/content/actions/managing-workflow-runs/canceling-a-workflow.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Canceling a workflow -intro: 'You can cancel a workflow run that is in progress. When you cancel a workflow run, {% data variables.product.prodname_dotcom %} cancels all jobs and steps that are a part of that workflow.' -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -{% data reusables.repositories.permissions-statement-write %} - -### Canceling a workflow run - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -{% data reusables.repositories.navigate-to-workflow %} -{% data reusables.repositories.view-run %} -1. In the upper-right corner of the workflow, click **Cancel workflow**. - ![Cancel check suite button](/assets/images/help/repository/cancel-check-suite.png) - -### Steps {% data variables.product.prodname_dotcom %} takes to cancel a workflow run - -When canceling workflow run, you may be running other software that uses resources that are related to the workflow run. To help you free up resources related to the workflow run, it may help to understand the steps {% data variables.product.prodname_dotcom %} performs to cancel a workflow run. - -1. To cancel the workflow run, the server re-evaluates `if` conditions for all currently running jobs. If the condition evaluates to `true`, the job will not get canceled. For example, the condition `if: always()` would evaluate to true and the job continues to run. When there is no condition, that is the equivalent of the condition `if: success()`, which only runs if the previous step finished successfully. -2. For jobs that need to be canceled, the server sends a cancellation message to all the runner machines with jobs that need to be canceled. -3. For jobs that continue to run, the server re-evaluates `if` conditions for the unfinished steps. If the condition evaluates to `true`, the step continues to run. -4. For steps that need to be canceled, the runner machine sends `SIGINT/Ctrl-C` to the step's entry process (`node` for javascript action, `docker` for container action, and `bash/cmd/pwd` when using `run` in a step). If the process doesn't exit within 7500 ms, the runner will send `SIGTERM/Ctrl-Break` to the process, then wait for 2500 ms for the process to exit. If the process is still running, the runner kills the process tree. -5. After the 5 minutes cancellation timeout period, the server will force terminate all jobs and steps that don't finish running or fail to complete the cancellation process. diff --git a/content/actions/managing-workflow-runs/deleting-a-workflow-run.md b/content/actions/managing-workflow-runs/deleting-a-workflow-run.md deleted file mode 100644 index 18ebe8c5ccb3..000000000000 --- a/content/actions/managing-workflow-runs/deleting-a-workflow-run.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Deleting a workflow run -intro: 'You can delete a workflow run that has been completed, or is more than two weeks old.' -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -{% data reusables.repositories.permissions-statement-write %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -{% data reusables.repositories.navigate-to-workflow %} -1. To delete a workflow run, use the {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %} drop-down menu, and select **Delete workflow run**. - - ![Deleting a workflow run](/assets/images/help/settings/workflow-delete-run.png) -2. Review the confirmation prompt and click **Yes, permanently delete this workflow run**. - - ![Deleting a workflow run confirmation](/assets/images/help/settings/workflow-delete-run-confirmation.png) diff --git a/content/actions/managing-workflow-runs/disabling-and-enabling-a-workflow.md b/content/actions/managing-workflow-runs/disabling-and-enabling-a-workflow.md deleted file mode 100644 index c4dbd756452e..000000000000 --- a/content/actions/managing-workflow-runs/disabling-and-enabling-a-workflow.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Disabling and enabling a workflow -intro: 'You can disable and re-enable a workflow using {% data variables.product.prodname_dotcom %} or the REST API.' -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.23' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -Disabling a workflow allows you to stop a workflow from being triggered without having to delete the file from the repo. You can easily re-enable the workflow again on {% data variables.product.prodname_dotcom %}. You can also disable and enable a workflow using the REST API. For more information, see the "[Actions REST API](/rest/reference/actions#workflows)." - -Temporarily disabling a workflow can be useful in many scenarios. These are a few examples where disabling a workflow might be helpful: - -- A workflow error that produces too many or wrong requests, impacting external services negatively. -- A workflow that is not critical and is consuming too many minutes on your account. -- A workflow that sends requests to a service that is down. -- Workflows on a forked repository that aren't needed (for example, scheduled workflows). - -{% warning %} - -**Warning:** {% data reusables.actions.scheduled-workflows-disabled %} - -{% endwarning %} - -### Disabling a workflow - -You can manually disable a workflow so that it won't execute any workflow runs. A disabled workflow is not deleted, and can be re-enabled. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -1. In the left sidebar, click the workflow you want to disable. -![actions select workflow](/assets/images/actions-select-workflow.png) -1. Click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}. -![actions kebab menu](/assets/images/help/repository/actions-workflow-menu-kebab.png) -1. Click **Disable workflow**. -![actions disable workflow](/assets/images/help/repository/actions-disable-workflow.png) -The disabled workflow is marked {% octicon "stop" aria-label="The stop icon" %} to indicate its status. -![actions list disabled workflow](/assets/images/help/repository/actions-find-disabled-workflow.png) - -### Enabling a workflow - -You can re-enable a workflow that was previously disabled. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -1. In the left sidebar, click the workflow you want to enable. -![actions select disabled workflow](/assets/images/help/repository/actions-select-disabled-workflow.png) -1. Click **Enable workflow**. -![actions enable workflow](/assets/images/help/repository/actions-enable-workflow.png) diff --git a/content/actions/managing-workflow-runs/downloading-workflow-artifacts.md b/content/actions/managing-workflow-runs/downloading-workflow-artifacts.md deleted file mode 100644 index 22d5651efe6e..000000000000 --- a/content/actions/managing-workflow-runs/downloading-workflow-artifacts.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Downloading workflow artifacts -intro: You can download archived artifacts before they automatically expire. -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} By default, {% data variables.product.product_name %} stores build logs and artifacts for 90 days, and you can customize this retention period, depending on the type of repository. For more information, see "[Configuring the retention period for GitHub Actions artifacts and logs in your repository](/github/administering-a-repository/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository)."{% endif %} -{% if currentVersion == "enterprise-server@2.22" %} {% data variables.product.product_name %} stores full build logs and artifacts for 90 days.{% endif %} - -{% data reusables.repositories.permissions-statement-read %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -{% data reusables.repositories.navigate-to-workflow %} -{% data reusables.repositories.view-run %} -1. Under **Artifacts**, click the artifact you want to download. - ![Download artifact drop-down menu](/assets/images/help/repository/artifact-drop-down.png) diff --git a/content/actions/managing-workflow-runs/enabling-debug-logging.md b/content/actions/managing-workflow-runs/enabling-debug-logging.md deleted file mode 100644 index f28a20c8b64e..000000000000 --- a/content/actions/managing-workflow-runs/enabling-debug-logging.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Enabling debug logging -intro: 'If the workflow logs do not provide enough detail to diagnose why a workflow, job, or step is not working as expected, you can enable additional debug logging.' -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -These extra logs are enabled by setting secrets in the repository containing the workflow, so the same permissions requirements will apply: - -- {% data reusables.github-actions.permissions-statement-secrets-repository %} -- {% data reusables.github-actions.permissions-statement-secrets-organization %} -- {% data reusables.github-actions.permissions-statement-secrets-api %} - -For more information on setting secrets, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - -### Enabling runner diagnostic logging - -Runner diagnostic logging provides additional log files that contain information about how a runner is executing a job. Two extra log files are added to the log archive: - -* The runner process log, which includes information about coordinating and setting up runners to execute jobs. -* The worker process log, which logs the execution of a job. - -1. To enable runner diagnostic logging, set the following secret in the repository that contains the workflow: `ACTIONS_RUNNER_DEBUG` to `true`. - -1. To download runner diagnostic logs, download the log archive of the workflow run. The runner diagnostic logs are contained in the `runner-diagnostic-logs` folder. For more information on downloading logs, see "[Downloading logs](/actions/managing-workflow-runs/using-workflow-run-logs/#downloading-logs)." - -### Enabling step debug logging - -Step debug logging increases the verbosity of a job's logs during and after a job's execution. - -1. To enable step debug logging, you must set the following secret in the repository that contains the workflow: `ACTIONS_STEP_DEBUG` to `true`. - -1. After setting the secret, more debug events are shown in the step logs. For more information, see ["Viewing logs to diagnose failures"](/actions/managing-workflow-runs/using-workflow-run-logs/#viewing-logs-to-diagnose-failures). diff --git a/content/actions/managing-workflow-runs/index.md b/content/actions/managing-workflow-runs/index.md deleted file mode 100644 index 5096b761c732..000000000000 --- a/content/actions/managing-workflow-runs/index.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Managing workflow runs -shortTitle: Managing workflow runs -intro: 'You can view the status and results of each step in your workflow, cancel a pending workflow, view billable job execution minutes, debug and re-run a failed workflow, search and download logs, and download artifacts.' -redirect_from: - - /actions/configuring-and-managing-workflows/managing-a-workflow-run - - /articles/viewing-your-repository-s-workflows - - /articles/viewing-your-repositorys-workflows - - /articles/managing-a-workflow-run - - /github/automating-your-workflow-with-github-actions/managing-a-workflow-run - - /actions/automating-your-workflow-with-github-actions/managing-a-workflow-run - - /actions/configuring-and-managing-workflows/configuring-and-managing-workflow-files-and-runs -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -{% link_in_list /viewing-workflow-run-history %} -{% link_in_list /using-workflow-run-logs %} -{% link_in_list /manually-running-a-workflow %} -{% link_in_list /re-running-a-workflow %} -{% link_in_list /canceling-a-workflow %} -{% link_in_list /disabling-and-enabling-a-workflow %} -{% link_in_list /deleting-a-workflow-run %} -{% link_in_list /viewing-job-execution-time %} -{% link_in_list /downloading-workflow-artifacts %} -{% link_in_list /removing-workflow-artifacts %} -{% link_in_list /enabling-debug-logging %} -{% link_in_list /adding-a-workflow-status-badge %} diff --git a/content/actions/managing-workflow-runs/manually-running-a-workflow.md b/content/actions/managing-workflow-runs/manually-running-a-workflow.md deleted file mode 100644 index f89a9ab972a9..000000000000 --- a/content/actions/managing-workflow-runs/manually-running-a-workflow.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Manually running a workflow -intro: 'When a workflow is configured to run on the `workflow_dispatch` event, you can run the workflow using the REST API or from the Actions tab on {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -To run a workflow manually, the workflow must be configured to run on the `workflow_dispatch` event. For more information, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." - -### Running a workflow on {% data variables.product.prodname_dotcom %} - -To trigger the `workflow_dispatch` event on {% data variables.product.prodname_dotcom %}, your workflow must be in the default branch. Follow these steps to manually trigger a workflow run. - -{% data reusables.repositories.permissions-statement-read %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -1. In the left sidebar, click the workflow you want to run. -![actions select workflow](/assets/images/actions-select-workflow.png) -1. Above the list of workflow runs, select **Run workflow**. -![actions workflow dispatch](/assets/images/actions-workflow-dispatch.png) -1. Select the branch where the workflow will run and type the input parameters used by the workflow. Click **Run workflow**. -![actions manually run workflow](/assets/images/actions-manually-run-workflow.png) - -### Running a workflow using the REST API - -When using the REST API, you configure the `inputs` and `ref` as request body parameters. If the inputs are omitted, the default values defined in the workflow file are used. - -For more information about using the REST API, see the "[Create a workflow dispatch event](/rest/reference/actions/#create-a-workflow-dispatch-event)." diff --git a/content/actions/managing-workflow-runs/re-running-a-workflow.md b/content/actions/managing-workflow-runs/re-running-a-workflow.md deleted file mode 100644 index 240f9d662a83..000000000000 --- a/content/actions/managing-workflow-runs/re-running-a-workflow.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Re-running a workflow -intro: You can re-run an instance of a workflow. Re-running a workflow uses the same `GITHUB_SHA` (commit SHA) and `GITHUB_REF` (Git ref) of the original event that triggered the workflow run. -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -{% data reusables.repositories.permissions-statement-read %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -{% data reusables.repositories.navigate-to-workflow %} -{% data reusables.repositories.view-run %} -1. In the upper-right corner of the workflow, use the **Re-run jobs** drop-down menu, and select **Re-run all jobs**. - ![Re-run checks drop-down menu](/assets/images/help/repository/rerun-checks-drop-down.png) diff --git a/content/actions/managing-workflow-runs/removing-workflow-artifacts.md b/content/actions/managing-workflow-runs/removing-workflow-artifacts.md deleted file mode 100644 index 9c7e96fe7914..000000000000 --- a/content/actions/managing-workflow-runs/removing-workflow-artifacts.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Removing workflow artifacts -intro: 'You can reclaim used {% data variables.product.prodname_actions %} storage by deleting artifacts before they expire on {% data variables.product.product_name %}.' -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Deleting an artifact - -{% warning %} - -**Warning:** Once you delete an artifact, it can not be restored. - -{% endwarning %} - -{% data reusables.repositories.permissions-statement-write %} - -{% data reusables.github-actions.artifact-log-retention-statement %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -{% data reusables.repositories.navigate-to-workflow %} -{% data reusables.repositories.view-run %} -1. Under **Artifacts**, click {% octicon "trashcan" aria-label="The trashcan icon" %} next to the artifact you want to remove. - ![Delete artifact drop-down menu](/assets/images/help/repository/actions-delete-artifact.png) - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -### Setting the retention period for an artifact - -Retention periods for artifacts and logs can be configured at the repository, organization, and enterprise level. For more information, see "[Usage limits, billing, and administration](/actions/reference/usage-limits-billing-and-administration#artifact-and-log-retention-policy)." - -You can also define a custom retention period for individual artifacts using the `actions/upload-artifact` action in a workflow. For more information, see "[Storing workflow data as artifacts](/actions/guides/storing-workflow-data-as-artifacts#configuring-a-custom-artifact-retention-period)." - -### Finding the expiration date of an artifact - -You can use the API to confirm the date that an artifact is scheduled to be deleted. For more information, see the `expires_at` value returned by "[List artifacts for a repository](/rest/reference/actions#artifacts)." -{% endif %} diff --git a/content/actions/managing-workflow-runs/using-workflow-run-logs.md b/content/actions/managing-workflow-runs/using-workflow-run-logs.md deleted file mode 100644 index 7d32e82a08fa..000000000000 --- a/content/actions/managing-workflow-runs/using-workflow-run-logs.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Using workflow run logs -intro: 'You can view, search, and download the logs for each job in a workflow run.' -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -You can see whether a workflow run is in progress or complete from the workflow run page. You must be logged in to a {% data variables.product.prodname_dotcom %} account to view workflow run information, including for public repositories. For more information, see "[Access permissions on GitHub](/articles/access-permissions-on-github)." - -If the run is complete, you can see whether the result was a success, failure, canceled, or neutral. If the run failed, you can view and search the build logs to diagnose the failure and re-run the workflow. You can also view billable job execution minutes, or download logs and build artifacts. - -{% data variables.product.prodname_actions %} use the Checks API to output statuses, results, and logs for a workflow. {% data variables.product.prodname_dotcom %} creates a new check suite for each workflow run. The check suite contains a check run for each job in the workflow, and each job includes steps. {% data variables.product.prodname_actions %} are run as a step in a workflow. For more information about the Checks API, see "[Checks](/v3/checks/)." - -{% data reusables.github-actions.invalid-workflow-files %} - -### Viewing logs to diagnose failures - -If your workflow run fails, you can see which step caused the failure and review the failed step's build logs to troubleshoot. You can see the time it took for each step to run. You can also copy a permalink to a specific line in the log file to share with your team. {% data reusables.repositories.permissions-statement-read %} - -In addition to the steps configured in the workflow file, {% data variables.product.prodname_dotcom %} adds two additional steps to each job to set up and complete the job's execution. These steps are logged in the workflow run with the names "Set up job" and "Complete job". - -For jobs run on {% data variables.product.prodname_dotcom %}-hosted runners, "Set up job" records details of the runner's virtual environment, and includes a link to the list of preinstalled tools that were present on the runner machine. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -{% data reusables.repositories.navigate-to-workflow-superlinter %} -{% data reusables.repositories.view-run-superlinter %} -{% data reusables.repositories.navigate-to-job-superlinter %} -{% data reusables.repositories.view-failed-job-results-superlinter %} -{% data reusables.repositories.view-specific-line-superlinter %} - -### Searching logs - -You can search the build logs for a particular step. When you search logs, only expanded steps are included in the results. {% data reusables.repositories.permissions-statement-read %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -{% data reusables.repositories.navigate-to-workflow-superlinter %} -{% data reusables.repositories.view-run-superlinter %} -{% data reusables.repositories.navigate-to-job-superlinter %} -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -1. In the upper-right corner of the log output, in the **Search logs** search box, type a search query. - ![Search box to search logs](/assets/images/help/repository/search-log-box-updated.png) -{% else %} -1. To expand each step you want to include in your search, click the step. - ![Step name](/assets/images/help/repository/failed-check-step.png) -1. In the upper-right corner of the log output, in the **Search logs** search box, type a search query. - ![Search box to search logs](/assets/images/help/repository/search-log-box.png) -{% endif %} - -### Downloading logs - -You can download the log files from your workflow run. You can also download a workflow's artifacts. For more information, see "[Persisting workflow data using artifacts](/actions/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts)." {% data reusables.repositories.permissions-statement-read %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -{% data reusables.repositories.navigate-to-workflow-superlinter %} -{% data reusables.repositories.view-run-superlinter %} -{% data reusables.repositories.navigate-to-job-superlinter %} -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -1. In the upper right corner, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %} and select **Download log archive**. - ![Download logs drop-down menu](/assets/images/help/repository/download-logs-drop-down-updated.png) -{% else %} -1. In the upper right corner, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %} and select **Download log archive**. - ![Download logs drop-down menu](/assets/images/help/repository/download-logs-drop-down.png) -{% endif %} - -### Deleting logs - -You can delete the log files from your workflow run. {% data reusables.repositories.permissions-statement-write %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -{% data reusables.repositories.navigate-to-workflow-superlinter %} -{% data reusables.repositories.view-run-superlinter %} -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -1. In the upper right corner, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}. - ![Kebab-horizontal icon](/assets/images/help/repository/workflow-run-kebab-horizontal-icon-updated.png) -2. To delete the log files, click the **Delete all logs** button and review the confirmation prompt. - ![Delete all logs](/assets/images/help/repository/delete-all-logs-updated.png) -After deleting logs, the **Delete all logs** button is removed to indicate that no log files remain in the workflow run. -{% else %} -1. In the upper right corner, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}. - ![Kebab-horizontal icon](/assets/images/help/repository/workflow-run-kebab-horizontal-icon.png) -2. To delete the log files, click the **Delete all logs** button and review the confirmation prompt. - ![Delete all logs](/assets/images/help/repository/delete-all-logs.png) -After the logs have been deleted, the **Delete all logs** button is removed to indicate that no log files remain in the workflow run. -{% endif %} diff --git a/content/actions/managing-workflow-runs/viewing-job-execution-time.md b/content/actions/managing-workflow-runs/viewing-job-execution-time.md deleted file mode 100644 index 5b4d222793e6..000000000000 --- a/content/actions/managing-workflow-runs/viewing-job-execution-time.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Viewing job execution time -intro: 'You can view the execution time of a job, including the billable minutes that a job accrued.' -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -Billable job execution minutes are only shown for jobs run on private repositories that use {% data variables.product.prodname_dotcom %}-hosted runners. There are no billable minutes when using {% data variables.product.prodname_actions %} in public repositories or for jobs run on self-hosted runners. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -{% data reusables.repositories.navigate-to-workflow %} -{% data reusables.repositories.view-run %} -1. Under the job summary, you can view the job's execution time. To view the billable job execution time, click **Run and billable time details**. - ![Run and billable time details link](/assets/images/help/repository/view-run-billable-time.png) - - {% note %} - - **Note:** The billable time shown does not include any rounding or minute multipliers. To view your total {% data variables.product.prodname_actions %} usage, including rounding and minute multipliers, see "[Viewing your {% data variables.product.prodname_actions %} usage](/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-actions-usage)." - - {% endnote %} diff --git a/content/actions/managing-workflow-runs/viewing-workflow-run-history.md b/content/actions/managing-workflow-runs/viewing-workflow-run-history.md deleted file mode 100644 index 47ca04068ef3..000000000000 --- a/content/actions/managing-workflow-runs/viewing-workflow-run-history.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Viewing workflow run history -intro: You can view logs for each run of a workflow. Logs include the status for each job and step in a workflow. -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -{% data reusables.repositories.permissions-statement-read %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -{% data reusables.repositories.navigate-to-workflow %} -{% data reusables.repositories.view-run %} diff --git a/content/actions/quickstart.md b/content/actions/quickstart.md deleted file mode 100644 index 5dbd3b07c203..000000000000 --- a/content/actions/quickstart.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Quickstart for GitHub Actions -intro: 'Add a {% data variables.product.prodname_actions %} workflow to an existing repository in 5 minutes or less.' -allowTitleToDifferFromFilename: true -redirect_from: - - /actions/getting-started-with-github-actions/starting-with-preconfigured-workflow-templates -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Introduction - -You only need an existing {% data variables.product.prodname_dotcom %} repository to create and run a {% data variables.product.prodname_actions %} workflow. In this guide, you'll add a workflow that lints multiple coding languages using the [{% data variables.product.prodname_dotcom %} Super-Linter action](https://github.com/github/super-linter). The workflow uses Super-Linter to validate your source code every time a new commit is pushed to your repository. - -### Creating your first workflow - -1. From your repository on {% data variables.product.prodname_dotcom %}, create a new file in the `.github/workflows` directory named `superlinter.yml`. For more information, see "[Creating new files](/github/managing-files-in-a-repository/creating-new-files)." -2. Copy the following YAML contents into the `superlinter.yml` file. **Note:** If your default branch is not `main`, update the value of `DEFAULT_BRANCH` to match your repository's default branch name. - {% raw %} - ```yaml{:copy} - name: Super-Linter - - # Run this workflow every time a new commit pushed to your repository - on: push - - jobs: - # Set the job key. The key is displayed as the job name - # when a job name is not provided - super-lint: - # Name the Job - name: Lint code base - # Set the type of machine to run on - runs-on: ubuntu-latest - - steps: - # Checks out a copy of your repository on the ubuntu-latest machine - - name: Checkout code - uses: actions/checkout@v2 - - # Runs the Super-Linter action - - name: Run Super-Linter - uses: github/super-linter@v3 - env: - DEFAULT_BRANCH: main - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - ``` - {% endraw %} -3. To run your workflow, scroll to the bottom of the page and select **Create a new branch for this commit and start a pull request**. Then, to create a pull request, click **Propose new file**. - ![Commit workflow file](/assets/images/commit-workflow-file.png) - -Committing the workflow file in your repository triggers the `push` event and runs your workflow. - -### Viewing your workflow results - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.actions-tab %} -{% data reusables.repositories.navigate-to-workflow-superlinter %} -{% data reusables.repositories.view-run-superlinter %} -1. In the left sidebar, click the **Lint code base** job. - ![Lint code base job](/assets/images/help/repository/superlinter-lint-code-base-job.png) -{% data reusables.repositories.view-failed-job-results-superlinter %} - -### More starter workflows - -{% data variables.product.prodname_dotcom %} provides preconfigured workflow templates that you can start from to automate or create a continuous integration workflows. You can browse the full list of workflow templates in the {% if currentVersion == "free-pro-team@latest" %}[actions/starter-workflows](https://github.com/actions/starter-workflows) repository{% else %} `actions/starter-workflows` repository on {% data variables.product.product_location %}{% endif %}. - -### Next steps - -The super-linter workflow you just added runs any time code is pushed to your repository to help you spot errors and inconsistencies in your code. But, this is only the beginning of what you can do with {% data variables.product.prodname_actions %}. Your repository can contain multiple workflows that trigger different jobs based on different events. {% data variables.product.prodname_actions %} can help you automate nearly every aspect of your application development processes. Ready to get started? Here are some helpful resources for taking your next steps with {% data variables.product.prodname_actions %}: - -- "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)" for an in-depth tutorial -- "[Guides](/actions/guides)" for specific uses cases and examples -- [github/super-linter](https://github.com/github/super-linter) for more details about configuring the Super-Linter action diff --git a/content/actions/reference/authentication-in-a-workflow.md b/content/actions/reference/authentication-in-a-workflow.md deleted file mode 100644 index 9bff5669641e..000000000000 --- a/content/actions/reference/authentication-in-a-workflow.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Authentication in a workflow -intro: '{% data variables.product.prodname_dotcom %} provides a token that you can use to authenticate on behalf of {% data variables.product.prodname_actions %}.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /github/automating-your-workflow-with-github-actions/authenticating-with-the-github_token - - /actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token - - /actions/configuring-and-managing-workflows/authenticating-with-the-github_token -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -Anyone with `write` access to a repository can create, read, and use secrets. - -### About the `GITHUB_TOKEN` secret - -{% data variables.product.prodname_dotcom %} automatically creates a `GITHUB_TOKEN` secret to use in your workflow. You can use the `GITHUB_TOKEN` to authenticate in a workflow run. - -When you enable {% data variables.product.prodname_actions %}, {% data variables.product.prodname_dotcom %} installs a {% data variables.product.prodname_github_app %} on your repository. The `GITHUB_TOKEN` secret is a {% data variables.product.prodname_github_app %} installation access token. You can use the installation access token to authenticate on behalf of the {% data variables.product.prodname_github_app %} installed on your repository. The token's permissions are limited to the repository that contains your workflow. For more information, see "[Permissions for the `GITHUB_TOKEN`](#permissions-for-the-github_token)." - -Before each job begins, {% data variables.product.prodname_dotcom %} fetches an installation access token for the job. The token expires when the job is finished. - -The token is also available in the `github.token` context. For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions#github-context)." - -### Using the `GITHUB_TOKEN` in a workflow - -To use the `GITHUB_TOKEN` secret, you must reference it in your workflow file. Using a token might include passing the token as an input to an action that requires it, or making authenticated {% data variables.product.prodname_dotcom %} API calls. - -{% data reusables.github-actions.actions-do-not-trigger-workflows %} - -#### Example passing `GITHUB_TOKEN` as an input - -This example workflow uses the [labeler action](https://github.com/actions/labeler), which requires the `GITHUB_TOKEN` as the value for the `repo-token` input parameter: - - {% raw %} - ```yaml - name: Pull request labeler - on: - - pull_request - jobs: - triage: - runs-on: ubuntu-latest - steps: - - uses: actions/labeler@v2 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - ``` - {% endraw %} - -#### Example calling the REST API - -You can use the `GITHUB_TOKEN` to make authenticated API calls. This example workflow creates an issue using the {% data variables.product.prodname_dotcom %} REST API: - - {% raw %} - ```yaml - name: Create issue on commit - on: - - push - jobs: - create_commit: - runs-on: ubuntu-latest - steps: - - name: Create issue using REST API - run: | - curl --request POST \ - --url https://api.github.com/repos/${{ github.repository }}/issues \ - --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \ - --header 'content-type: application/json' \ - --data '{ - "title": "Automated issue for commit: ${{ github.sha }}", - "body": "This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**. \n\n The commit hash was: _${{ github.sha }}_." - }' - ``` - {% endraw %} - -### Permissions for the `GITHUB_TOKEN` - -For information about the API endpoints {% data variables.product.prodname_github_apps %} can access with each permission, see "[{% data variables.product.prodname_github_app %} Permissions](/v3/apps/permissions/)." - -| Permission | Access type | Access by forked repos | -|------------|-------------|--------------------------| -| actions | read/write | read | -| checks | read/write | read | -| contents | read/write | read | -| deployments | read/write | read | -| issues | read/write | read | -| metadata | read | read | -| packages | read/write | read | -| pull requests | read/write | read | -| repository projects | read/write | read | -| statuses | read/write | read | - -If you need a token that requires permissions that aren't available in the `GITHUB_TOKEN`, you can create a personal access token and set it as a secret in your repository: - -1. Use or create a token with the appropriate permissions for that repository. For more information, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." -1. Add the token as a secret in your workflow's repository, and refer to it using the {%raw%}`${{ secrets.SECRET_NAME }}`{% endraw %} syntax. For more information, see "[Creating and using encrypted secrets](/github/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." diff --git a/content/actions/reference/context-and-expression-syntax-for-github-actions.md b/content/actions/reference/context-and-expression-syntax-for-github-actions.md deleted file mode 100644 index ba100c62739c..000000000000 --- a/content/actions/reference/context-and-expression-syntax-for-github-actions.md +++ /dev/null @@ -1,474 +0,0 @@ ---- -title: Context and expression syntax for GitHub Actions -shortTitle: Context and expression syntax -intro: You can access context information and evaluate expressions in workflows and actions. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /articles/contexts-and-expression-syntax-for-github-actions - - /github/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions - - /actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions - - /actions/reference/contexts-and-expression-syntax-for-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About contexts and expressions - -You can use expressions to programmatically set variables in workflow files and access contexts. An expression can be any combination of literal values, references to a context, or functions. You can combine literals, context references, and functions using operators. - -Expressions are commonly used with the conditional `if` keyword in a workflow file to determine whether a step should run. When an `if` conditional is `true`, the step will run. - -You need to use specific syntax to tell {% data variables.product.prodname_dotcom %} to evaluate an expression rather than treat it as a string. - -{% raw %} -`${{ }}` -{% endraw %} - -{% data reusables.github-actions.expression-syntax-if %} For more information about `if` conditionals, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/articles/workflow-syntax-for-github-actions/#jobsjob_idif)." - -#### Example expression in an `if` conditional - -```yaml -steps: - - uses: actions/hello-world-javascript-action@v1.1 - if: {% raw %}${{ }}{% endraw %} -``` - -#### Example setting an environment variable - -{% raw %} -```yaml -env: - my_env_var: ${{ }} -``` -{% endraw %} - -### Contexts - -Contexts are a way to access information about workflow runs, runner environments, jobs, and steps. Contexts use the expression syntax. - -{% raw %} -`${{ }}` -{% endraw %} - -| Context name | Type | Description | -|---------------|------|-------------| -| `github` | `object` | Information about the workflow run. For more information, see [`github` context](#github-context). | -| `env` | `object` | Contains environment variables set in a workflow, job, or step. For more information, see [`env` context](#env-context) . | -| `job` | `object` | Information about the currently executing job. For more information, see [`job` context](#job-context). | -| `steps` | `object` | Information about the steps that have been run in this job. For more information, see [`steps` context](#steps-context). | -| `runner` | `object` | Information about the runner that is running the current job. For more information, see [`runner` context](#runner-context). | -| `secrets` | `object` | Enables access to secrets. For more information about secrets, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." | -| `strategy` | `object` | Enables access to the configured strategy parameters and information about the current job. Strategy parameters include `fail-fast`, `job-index`, `job-total`, and `max-parallel`. | -| `matrix` | `object` | Enables access to the matrix parameters you configured for the current job. For example, if you configure a matrix build with the `os` and `node` versions, the `matrix` context object includes the `os` and `node` versions of the current job. | -| `needs` | `object` | Enables access to the outputs of all jobs that are defined as a dependency of the current job. For more information, see [`needs` context](#needs-context). | - -As part of an expression, you may access context information using one of two syntaxes. -- Index syntax: `github['sha']` -- Property dereference syntax: `github.sha` - -In order to use property dereference syntax, the property name must: -- start with `a-Z` or `_`. -- be followed by `a-Z` `0-9` `-` or `_`. - -#### **`github` context** - -The `github` context contains information about the workflow run and the event that triggered the run. You can read most of the `github` context data in environment variables. For more information about environment variables, see "[Using environment variables](/actions/automating-your-workflow-with-github-actions/using-environment-variables)." - -{% data reusables.github-actions.github-context-warning %} - -| Property name | Type | Description | -|---------------|------|-------------| -| `github` | `object` | The top-level context available during any job or step in a workflow. | -| `github.action` | `string` | The name of the action currently running. {% data variables.product.prodname_dotcom %} removes special characters or uses the name `run` when the current step runs a script. If you use the same action more than once in the same job, the name will include a suffix with the sequence number. For example, the first script you run will have the name `run1`, and the second script will be named `run2`. Similarly, the second invocation of `actions/checkout` will be `actionscheckout2`. | -| `github.action_path` | `string` | The path where your action is located. You can use this path to easily access files located in the same repository as your action. This attribute is only supported in composite run steps actions. | -| `github.actor` | `string` | The login of the user that initiated the workflow run. | -| `github.base_ref` | `string` | The `base_ref` or target branch of the pull request in a workflow run. This property is only available when the event that triggers a workflow run is a `pull_request`. | -| `github.event` | `object` | The full event webhook payload. For more information, see "[Events that trigger workflows](/articles/events-that-trigger-workflows/)." You can access individual properties of the event using this context. | -| `github.event_name` | `string` | The name of the event that triggered the workflow run. | -| `github.event_path` | `string` | The path to the full event webhook payload on the runner. | -| `github.head_ref` | `string` | The `head_ref` or source branch of the pull request in a workflow run. This property is only available when the event that triggers a workflow run is a `pull_request`. | -| `github.job` | `string` | The [`job_id`](/actions/reference/workflow-syntax-for-github-actions#jobsjob_id) of the current job. | -| `github.ref` | `string` | The branch or tag ref that triggered the workflow run. For branches this in the format `refs/heads/`, and for tags it is `refs/tags/`. | -| `github.repository` | `string` | The owner and repository name. For example, `Codertocat/Hello-World`. | -| `github.repository_owner` | `string` | The repository owner's name. For example, `Codertocat`. | -| `github.run_id` | `string` | {% data reusables.github-actions.run_id_description %} | -| `github.run_number` | `string` | {% data reusables.github-actions.run_number_description %} | -| `github.sha` | `string` | The commit SHA that triggered the workflow run. | -| `github.token` | `string` | A token to authenticate on behalf of the GitHub App installed on your repository. This is functionally equivalent to the `GITHUB_TOKEN` secret. For more information, see "[Authenticating with the GITHUB_TOKEN](/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token)." | -| `github.workflow` | `string` | The name of the workflow. If the workflow file doesn't specify a `name`, the value of this property is the full path of the workflow file in the repository. | -| `github.workspace` | `string` | The default working directory for steps and the default location of your repository when using the [`checkout`](https://github.com/actions/checkout) action. | - -#### **`env` context** - -The `env` context contains environment variables that have been set in a workflow, job, or step. For more information about setting environment variables in your workflow, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#env)." - -The `env` context syntax allows you to use the value of an environment variable in your workflow file. If you want to use the value of an environment variable inside a runner, use the runner operating system's normal method for reading environment variables. - -You can only use the `env` context in the value of the `with` and `name` keys, or in a step's `if` conditional. For more information on the step syntax, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idsteps)." - -| Property name | Type | Description | -|---------------|------|-------------| -| `env` | `object` | This context changes for each step in a job. You can access this context from any step in a job. | -| `env.` | `string` | The value of a specific environment variable. | - - -#### **`job` context** - -The `job` context contains information about the currently running job. - -| Property name | Type | Description | -|---------------|------|-------------| -| `job` | `object` | This context changes for each job in a workflow run. You can access this context from any step in a job. | -| `job.container` | `object` | Information about the job's container. For more information about containers, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/articles/workflow-syntax-for-github-actions#jobsjob_idcontainer)." | -| `job.container.id` | `string` | The id of the container. | -| `job.container.network` | `string` | The id of the container network. The runner creates the network used by all containers in a job. | -| `job.services` | `object` | The service containers created for a job. For more information about service containers, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/articles/workflow-syntax-for-github-actions#jobsjob_idservices)." | -| `job.services..id` | `string` | The id of the service container. | -| `job.services..network` | `string` | The id of the service container network. The runner creates the network used by all containers in a job. | -| `job.services..ports` | `object` | The exposed ports of the service container. | -| `job.status` | `string` | The current status of the job. Possible values are `success`, `failure`, or `cancelled`. | - -#### **`steps` context** - -The `steps` context contains information about the steps in the current job that have already run. - -| Property name | Type | Description | -|---------------|------|-------------| -| `steps` | `object` | This context changes for each step in a job. You can access this context from any step in a job. | -| `steps..outputs` | `object` | The set of outputs defined for the step. For more information, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/articles/metadata-syntax-for-github-actions#outputs)." | -| `steps..conclusion` | `string` | The result of a completed step after [`continue-on-error`](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepscontinue-on-error) is applied. Possible values are `success`, `failure`, `cancelled`, or `skipped`. When a `continue-on-error` step fails, the `outcome` is `failure`, but the final `conclusion` is `success`. | -| `steps..outcome` | `string` | The result of a completed step before [`continue-on-error`](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepscontinue-on-error) is applied. Possible values are `success`, `failure`, `cancelled`, or `skipped`. When a `continue-on-error` step fails, the `outcome` is `failure`, but the final `conclusion` is `success`. | -| `steps..outputs.` | `string` | The value of a specific output. | - -#### **`runner` context** - -The `runner` context contains information about the runner that is executing the current job. - -| Property name | Type | Description | -|---------------|------|-------------| -| `runner.os` | `string` | The operating system of the runner executing the job. Possible values are `Linux`, `Windows`, or `macOS`. | -| `runner.temp` | `string` | The path of the temporary directory for the runner. This directory is guaranteed to be empty at the start of each job, even on self-hosted runners. | -| `runner.tool_cache` | `string` | The path of the directory containing some of the preinstalled tools for {% data variables.product.prodname_dotcom %}-hosted runners. For more information, see "[Specifications for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/reference/specifications-for-github-hosted-runners/#supported-software)". | - -#### **`needs` context** - -The `needs` context contains outputs from all jobs that are defined as a dependency of the current job. For more information on defining job dependencies, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idneeds)." - -| Property name | Type | Description | -|---------------|------|-------------| -| `needs.` | `object` | A single job that the current job depends on. | -| `needs..outputs` | `object` | The set of outputs of a job that the current job depends on. | -| `needs..outputs.` | `string` | The value of a specific output for a job that the current job depends on. | -| `needs..result` | `string` | The result of a job that the current job depends on. Possible values are `success`, `failure`, `cancelled`, or `skipped`. | - -#### Example printing context information to the log file - -To inspect the information that is accessible in each context, you can use this workflow file example. - -{% data reusables.github-actions.github-context-warning %} - -**.github/workflows/main.yml** -{% raw %} -```yaml -on: push - -jobs: - one: - runs-on: ubuntu-latest - steps: - - name: Dump GitHub context - env: - GITHUB_CONTEXT: ${{ toJson(github) }} - run: echo "$GITHUB_CONTEXT" - - name: Dump job context - env: - JOB_CONTEXT: ${{ toJson(job) }} - run: echo "$JOB_CONTEXT" - - name: Dump steps context - env: - STEPS_CONTEXT: ${{ toJson(steps) }} - run: echo "$STEPS_CONTEXT" - - name: Dump runner context - env: - RUNNER_CONTEXT: ${{ toJson(runner) }} - run: echo "$RUNNER_CONTEXT" - - name: Dump strategy context - env: - STRATEGY_CONTEXT: ${{ toJson(strategy) }} - run: echo "$STRATEGY_CONTEXT" - - name: Dump matrix context - env: - MATRIX_CONTEXT: ${{ toJson(matrix) }} - run: echo "$MATRIX_CONTEXT" -``` -{% endraw %} - -### Literals - -As part of an expression, you can use `boolean`, `null`, `number`, or `string` data types. Boolean literals are not case sensitive, so you can use `true` or `True`. - -| Data type | Literal value | -|-----------|---------------| -| `boolean` | `true` or `false` | -| `null` | `null` | -| `number` | Any number format supported by JSON. -| `string` | You must use single quotes. Escape literal single-quotes with a single quote. - -#### Example - -{% raw %} -```yaml -env: - myNull: ${{ null }} - myBoolean: ${{ false }} - myIntegerNumber: ${{ 711 }} - myFloatNumber: ${{ -9.2 }} - myHexNumber: ${{ 0xff }} - myExponentialNumber: ${{ -2.99-e2 }} - myString: ${{ 'Mona the Octocat' }} - myEscapedString: ${{ 'It''s open source!' }} -``` -{% endraw %} - -### Operators - -| Operator | Description | -| --- | --- | -| `( )` | Logical grouping | -| `[ ]` | Index -| `.` | Property dereference | -| `!` | Not | -| `<` | Less than | -| `<=` | Less than or equal | -| `>` | Greater than | -| `>=` | Greater than or equal | -| `==` | Equal | -| `!=` | Not equal | -| `&&` | And | -| \|\| | Or | - -{% data variables.product.prodname_dotcom %} performs loose equality comparisons. - -* If the types do not match, {% data variables.product.prodname_dotcom %} coerces the type to a number. {% data variables.product.prodname_dotcom %} casts data types to a number using these conversions: - - | Type | Result | - | --- | --- | - | Null | `0` | - | Boolean | `true` returns `1`
`false` returns `0` | - | String | Parsed from any legal JSON number format, otherwise `NaN`.
Note: empty string returns `0`. | - | Array | `NaN` | - | Object | `NaN` | -* A comparison of one `NaN` to another `NaN` does not result in `true`. For more information, see the "[NaN Mozilla docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN)." -* {% data variables.product.prodname_dotcom %} ignores case when comparing strings. -* Objects and arrays are only considered equal when they are the same instance. - -### Functions - -{% data variables.product.prodname_dotcom %} offers a set of built-in functions that you can use in expressions. Some functions cast values to a string to perform comparisons. {% data variables.product.prodname_dotcom %} casts data types to a string using these conversions: - -| Type | Result | -| --- | --- | -| Null | `''` | -| Boolean | `'true'` or `'false'` | -| Number | Decimal format, exponential for large numbers | -| Array | Arrays are not converted to a string | -| Object | Objects are not converted to a string | - -#### contains - -`contains( search, item )` - -Returns `true` if `search` contains `item`. If `search` is an array, this function returns `true` if the `item` is an element in the array. If `search` is a string, this function returns `true` if the `item` is a substring of `search`. This function is not case sensitive. Casts values to a string. - -##### Example using an array - -`contains(github.event.issue.labels.*.name, 'bug')` - -##### Example using a string - -`contains('Hello world', 'llo')` returns `true` - -#### startsWith - -`startsWith( searchString, searchValue )` - -Returns `true` when `searchString` starts with `searchValue`. This function is not case sensitive. Casts values to a string. - -##### Example - -`startsWith('Hello world', 'He')` returns `true` - -#### endsWith - -`endsWith( searchString, searchValue )` - -Returns `true` if `searchString` ends with `searchValue`. This function is not case sensitive. Casts values to a string. - -##### Example - -`endsWith('Hello world', 'ld')` returns `true` - -#### format - -`format( string, replaceValue0, replaceValue1, ..., replaceValueN)` - -Replaces values in the `string`, with the variable `replaceValueN`. Variables in the `string` are specified using the `{N}` syntax, where `N` is an integer. You must specify at least one `replaceValue` and `string`. There is no maximum for the number of variables (`replaceValueN`) you can use. Escape curly braces useing double braces. - -##### Example - -Returns 'Hello Mona the Octocat' - -`format('Hello {0} {1} {2}', 'Mona', 'the', 'Octocat')` - -##### Example escaping braces - -Returns '{Hello Mona the Octocat!}' - -{% raw %} -```js -format('{{Hello {0} {1} {2}!}}', 'Mona', 'the', 'Octocat') -``` -{% endraw %} - -#### join - -`join( array, optionalSeparator )` - -The value for `array` can be an array or a string. All values in `array` are concatenated into a string. If you provide `optionalSeparator`, it is inserted between the concatenated values. Otherwise, the default separator `,` is used. Casts values to a string. - -##### Example - -`join(github.event.issue.labels.*.name, ', ')` may return 'bug, help wanted' - -#### toJson - -`toJSON(value)` - -Returns a pretty-print JSON representation of `value`. You can use this function to debug the information provided in contexts. - -##### Example - -`toJSON(job)` might return `{ "status": "Success" }` - -#### fromJson - -`fromJSON(value)` - -Returns a JSON object for `value`. You can use this function to provide a JSON object as an evaluated expression. - -##### Example - -This workflow sets a JSON matrix in one job, and passes it to the next job using an output and `fromJSON`. - -{% raw %} -```yaml -name: build -on: push -jobs: - job1: - runs-on: ubuntu-latest - outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} - steps: - - id: set-matrix - run: echo "::set-output name=matrix::{\"include\":[{\"project\":\"foo\",\"config\":\"Debug\"},{\"project\":\"bar\",\"config\":\"Release\"}]}" - job2: - needs: job1 - runs-on: ubuntu-latest - strategy: - matrix: ${{fromJson(needs.job1.outputs.matrix)}} - steps: - - run: build -``` -{% endraw %} - -#### hashFiles - -`hashFiles(path)` - -Returns a single hash for the set of files that matches the `path` pattern. You can provide a single `path` pattern or multiple `path` patterns separated by commas. The `path` is relative to the `GITHUB_WORKSPACE` directory and can only include files inside of the `GITHUB_WORKSPACE`. This function calculates an individual SHA-256 hash for each matched file, and then uses those hashes to calculate a final SHA-256 hash for the set of files. For more information about SHA-256, see "[SHA-2](https://en.wikipedia.org/wiki/SHA-2)." - -You can use pattern matching characters to match file names. Pattern matching is case-insensitive on Windows. For more information about supported pattern matching characters, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions/#filter-pattern-cheat-sheet)." - -##### Example with a single pattern - -Matches any `package-lock.json` file in the repository. - -`hashFiles('**/package-lock.json')` - -##### Example with multiple patterns - -Creates a hash for any `package-lock.json` and `Gemfile.lock` files in the repository. - -`hashFiles('**/package-lock.json', '**/Gemfile.lock')` - -### Job status check functions - -You can use the following status check functions as expressions in `if` conditionals. If your `if` expression does not contain any of the status functions it will automatically result with `success()`. For more information about `if` conditionals, see "[Workflow syntax for GitHub Actions](/articles/workflow-syntax-for-github-actions/#jobsjob_idif)." - -#### success - -Returns `true` when none of the previous steps have failed or been canceled. - -##### Example - -```yaml -steps: - ... - - name: The job has succeeded - if: {% raw %}${{ success() }}{% endraw %} -``` - -#### always - -Always returns `true`, even when canceled. A job or step will not run when a critical failure prevents the task from running. For example, if getting sources failed. - -##### Example - -```yaml -if: {% raw %}${{ always() }}{% endraw %} -``` - -#### cancelled - -Returns `true` if the workflow was canceled. - -##### Example - -```yaml -if: {% raw %}${{ cancelled() }}{% endraw %} -``` - -#### failure - -Returns `true` when any previous step of a job fails. - -##### Example - -```yaml -steps: - ... - - name: The job has failed - if: {% raw %}${{ failure() }}{% endraw %} -``` - -### Object filters - -You can use the `*` syntax to apply a filter and select matching items in a collection. - -For example, consider an array of objects named `fruits`. - -```json -[ - { "name": "apple", "quantity": 1 }, - { "name": "orange", "quantity": 2 }, - { "name": "pear", "quantity": 1 } -] -``` - -The filter `fruits.*.name` returns the array `[ "apple", "orange", "pear" ]` diff --git a/content/actions/reference/encrypted-secrets.md b/content/actions/reference/encrypted-secrets.md deleted file mode 100644 index dbb301e52e8c..000000000000 --- a/content/actions/reference/encrypted-secrets.md +++ /dev/null @@ -1,222 +0,0 @@ ---- -title: Encrypted secrets -intro: Encrypted secrets allow you to store sensitive information in your repository or organization. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /github/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets - - /actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets - - /actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About encrypted secrets - -Secrets are encrypted environment variables that you create in a repository or organization. The secrets you create are available to use in {% data variables.product.prodname_actions %} workflows. {% data variables.product.prodname_dotcom %} uses a [libsodium sealed box](https://libsodium.gitbook.io/doc/public-key_cryptography/sealed_boxes) to help ensure that secrets are encrypted before they reach {% data variables.product.prodname_dotcom %}, and remain encrypted until you use them in a workflow. - -{% data reusables.github-actions.secrets-org-level-overview %} - -#### Naming your secrets - -The following rules apply to secret names: - -* Secret names can only contain alphanumeric characters (`[a-z]`, `[A-Z]`, `[0-9]`) or underscores (`_`). Spaces are not allowed. -* Secret names must not start with the `GITHUB_` prefix. -* Secret names must not start with a number. -* Secret names must be unique at the level they are created at. For example, a secret created at the organization-level must have a unique name at that level, and a secret created at the repository-level must have a unique name in that repository. If an organization-level secret has the same name as a repository-level secret, then the repository-level secret takes precedence. - -To help ensure that {% data variables.product.prodname_dotcom %} redacts your secret in logs, avoid using structured data as the values of secrets. For example, avoid creating secrets that contain JSON or encoded Git blobs. - -#### Accessing your secrets - -To make a secret available to an action, you must set the secret as an input or environment variable in the workflow file. Review the action's README file to learn about which inputs and environment variables the action expects. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/articles/workflow-syntax-for-github-actions/#jobsjob_idstepsenv)." - -You can use and read encrypted secrets in a workflow file if you have access to edit the file. For more information, see "[Access permissions on {% data variables.product.prodname_dotcom %}](/github/getting-started-with-github/access-permissions-on-github)." - -{% warning %} - -**Warning:** {% data variables.product.prodname_dotcom %} automatically redacts secrets printed to the log, but you should avoid printing secrets to the log intentionally. - -{% endwarning %} - -You can also manage secrets using the REST API. For more information, see "[Secrets](/v3/actions/secrets/)." - -#### Limiting credential permissions - -When generating credentials, we recommend that you grant the minimum permissions possible. For example, instead of using personal credentials, use [deploy keys](/v3/guides/managing-deploy-keys/#deploy-keys) or a service account. Consider granting read-only permissions if that's all that is needed, and limit access as much as possible. When generating a personal access token (PAT), select the fewest scopes necessary. - -### Creating encrypted secrets for a repository - -{% data reusables.github-actions.permissions-statement-secrets-repository %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.github-actions.sidebar-secret %} -1. Click **Add a new secret**. -1. Type a name for your secret in the **Name** input box. -1. Enter the value for your secret. -1. Click **Add secret**. - -If your repository can access secrets from the parent organization, then those secrets are also listed on this page. - -### Creating encrypted secrets for an organization - -When creating a secret in an organization, you can use a policy to limit which repositories can access that secret. For example, you can grant access to all repositories, or limit access to only private repositories or a specified list of repositories. - -{% data reusables.github-actions.permissions-statement-secrets-organization %} - -{% data reusables.organizations.navigate-to-org %} -{% data reusables.organizations.org_settings %} -{% data reusables.github-actions.sidebar-secret %} -1. Click **New secret**. -1. Type a name for your secret in the **Name** input box. -1. Enter the **Value** for your secret. -1. From the **Repository access** dropdown list, choose an access policy. -1. Click **Add secret**. - -### Reviewing access to organization-level secrets - -You can check which access policies are being applied to a secret in your organization. - -{% data reusables.organizations.navigate-to-org %} -{% data reusables.organizations.org_settings %} -{% data reusables.github-actions.sidebar-secret %} -1. The list of secrets includes any configured permissions and policies. For example: -![Secrets list](/assets/images/help/settings/actions-org-secrets-list.png) -1. For more details on the configured permissions for each secret, click **Update**. - -### Using encrypted secrets in a workflow - -With the exception of `GITHUB_TOKEN`, secrets are not passed to the runner when a workflow is triggered from a forked repository. - -To provide an action with a secret as an input or environment variable, you can use the `secrets` context to access secrets you've created in your repository. For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions)" and "[Workflow syntax for {% data variables.product.prodname_actions %}](/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions)." - -{% raw %} -```yaml -steps: - - name: Hello world action - with: # Set the secret as an input - super_secret: ${{ secrets.SuperSecret }} - env: # Or as an environment variable - super_secret: ${{ secrets.SuperSecret }} -``` -{% endraw %} - -Avoid passing secrets between processes from the command line, whenever possible. Command-line processes may be visible to other users (using the `ps` command) or captured by [security audit events](https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing). To help protect secrets, consider using environment variables, `STDIN`, or other mechanisms supported by the target process. - -If you must pass secrets within a command line, then enclose them within the proper quoting rules. Secrets often contain special characters that may unintentionally affect your shell. To escape these special characters, use quoting with your environment variables. For example: - -#### Example using Bash - -{% raw %} -```yaml -steps: - - shell: bash - env: - SUPER_SECRET: ${{ secrets.SuperSecret }} - run: | - example-command "$SUPER_SECRET" -``` -{% endraw %} - -#### Example using PowerShell - -{% raw %} -```yaml -steps: - - shell: pwsh - env: - SUPER_SECRET: ${{ secrets.SuperSecret }} - run: | - example-command "$env:SUPER_SECRET" -``` -{% endraw %} - -#### Example using Cmd.exe - -{% raw %} -```yaml -steps: - - shell: cmd - env: - SUPER_SECRET: ${{ secrets.SuperSecret }} - run: | - example-command "%SUPER_SECRET%" -``` -{% endraw %} - -### Limits for secrets - -Your workflow can have up to 100 secrets. The names of secret environment variables must be unique in a repository. - -Secrets are limited to 64 KB in size. To use secrets that are larger than 64 KB, you can store encrypted secrets in your repository and save the decryption passphrase as a secret on {% data variables.product.prodname_dotcom %}. For example, you can use `gpg` to encrypt your credentials locally before checking the file in to your repository on {% data variables.product.prodname_dotcom %}. For more information, see the "[gpg manpage](https://www.gnupg.org/gph/de/manual/r1023.html)." - -{% warning %} - -**Warning**: Be careful that your secrets do not get printed when your action runs. When using this workaround, {% data variables.product.prodname_dotcom %} does not redact secrets that are printed in logs. - -{% endwarning %} - -1. Run the following command from your terminal to encrypt the `my_secret.json` file using `gpg` and the AES256 cipher algorithm. - - ``` shell - $ gpg --symmetric --cipher-algo AES256 my_secret.json - ``` - -1. You will be prompted to enter a passphrase. Remember the passphrase, because you'll need to create a new secret on {% data variables.product.prodname_dotcom %} that uses the passphrase as the value. - -1. Create a new secret that contains the passphrase. For example, create a new secret with the name `LARGE_SECRET_PASSPHRASE` and set the value of the secret to the passphrase you selected in the step above. - -1. Copy your encrypted file into your repository and commit it. In this example, the encrypted file is `my_secret.json.gpg`. - -1. Create a shell script to decrypt the password. Save this file as `decrypt_secret.sh`. - - ``` shell - #!/bin/sh - - # Decrypt the file - mkdir $HOME/secrets - # --batch to prevent interactive command - # --yes to assume "yes" for questions - gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \ - --output $HOME/secrets/my_secret.json my_secret.json.gpg - ``` - -1. Ensure your shell script is executable before checking it in to your repository. - - ``` shell - $ chmod +x decrypt_secret.sh - $ git add decrypt_secret.sh - $ git commit -m "Add new decryption script" - $ git push - ``` - -1. From your workflow, use a `step` to call the shell script and decrypt the secret. To have a copy of your repository in the environment that your workflow runs in, you'll need to use the [`actions/checkout`](https://github.com/actions/checkout) action. Reference your shell script using the `run` command relative to the root of your repository. - -{% raw %} - ```yaml - name: Workflows with large secrets - - on: push - - jobs: - my-job: - name: My Job - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Decrypt large secret - run: ./.github/scripts/decrypt_secret.sh - env: - LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} - # This command is just an example to show your secret being printed - # Ensure you remove any print statements of your secrets. GitHub does - # not hide secrets that use this workaround. - - name: Test printing your secret (Remove this step in production) - run: cat $HOME/secrets/my_secret.json - ``` -{% endraw %} diff --git a/content/actions/reference/environment-variables.md b/content/actions/reference/environment-variables.md deleted file mode 100644 index 0d2a15674f57..000000000000 --- a/content/actions/reference/environment-variables.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Environment variables -intro: '{% data variables.product.prodname_dotcom %} sets default environment variables for each {% data variables.product.prodname_actions %} workflow run. You can also set custom environment variables in your workflow file.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /github/automating-your-workflow-with-github-actions/using-environment-variables - - /actions/automating-your-workflow-with-github-actions/using-environment-variables - - /actions/configuring-and-managing-workflows/using-environment-variables -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About environment variables - -{% data variables.product.prodname_dotcom %} sets default environment variables that are available to every step in a workflow run. Environment variables are case-sensitive. Commands run in actions or steps can create, read, and modify environment variables. - -To set custom environment variables, you need to specify the variables in the workflow file. You can define environment variables for a step, job, or entire workflow using the [`jobs..steps.env`](/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsenv), [`jobs..env`](/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idenv), and [`env`](/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#env) keywords. For more information, see "[Workflow syntax for {% data variables.product.prodname_dotcom %}](/articles/workflow-syntax-for-github-actions/#jobsjob_idstepsenv)." - -```yaml -steps: - - name: Hello world - run: echo Hello world $FIRST_NAME $middle_name $Last_Name! - env: - FIRST_NAME: Mona - middle_name: The - Last_Name: Octocat -``` - -You can also use the {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %}`GITHUB_ENV` environment file{% else %} `set-env` workflow command{% endif %} to set an environment variable that the following steps in a workflow can use. The {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %}environment file{% else %} `set-env` command{% endif %} can be used directly by an action or as a shell command in a workflow file using the `run` keyword. For more information, see "[Workflow commands for {% data variables.product.prodname_actions %}](/actions/reference/workflow-commands-for-github-actions/#setting-an-environment-variable)." - -### Default environment variables - -We strongly recommend that actions use environment variables to access the filesystem rather than using hardcoded file paths. {% data variables.product.prodname_dotcom %} sets environment variables for actions to use in all runner environments. - -| Environment variable | Description | -| ---------------------|------------ | -| `CI` | Always set to `true`. | -| `GITHUB_WORKFLOW` | The name of the workflow. | -| `GITHUB_RUN_ID` | {% data reusables.github-actions.run_id_description %} | -| `GITHUB_RUN_NUMBER` | {% data reusables.github-actions.run_number_description %} | -| `GITHUB_ACTION` | The unique identifier (`id`) of the action. | -| `GITHUB_ACTIONS` | Always set to `true` when {% data variables.product.prodname_actions %} is running the workflow. You can use this variable to differentiate when tests are being run locally or by {% data variables.product.prodname_actions %}. -| `GITHUB_ACTOR` | The name of the person or app that initiated the workflow. For example, `octocat`. | -| `GITHUB_REPOSITORY` | The owner and repository name. For example, `octocat/Hello-World`. | -| `GITHUB_EVENT_NAME` | The name of the webhook event that triggered the workflow. | -| `GITHUB_EVENT_PATH` | The path of the file with the complete webhook event payload. For example, `/github/workflow/event.json`. | -| `GITHUB_WORKSPACE` | The {% data variables.product.prodname_dotcom %} workspace directory path. The workspace directory is a copy of your repository if your workflow uses the [actions/checkout](https://github.com/actions/checkout) action. If you don't use the `actions/checkout` action, the directory will be empty. For example, `/home/runner/work/my-repo-name/my-repo-name`. | -| `GITHUB_SHA` | The commit SHA that triggered the workflow. For example, `ffac537e6cbbf934b08745a378932722df287a53`. | -| `GITHUB_REF` | The branch or tag ref that triggered the workflow. For example, `refs/heads/feature-branch-1`. If neither a branch or tag is available for the event type, the variable will not exist. | -| `GITHUB_HEAD_REF` | Only set for forked repositories. The branch of the head repository. -| `GITHUB_BASE_REF` | Only set for forked repositories. The branch of the base repository. -| `GITHUB_SERVER_URL`| Returns the URL of the {% data variables.product.product_name %} server. For example: `https://{% data variables.product.product_url %}`. -| `GITHUB_API_URL` | Returns the API URL. For example: `{% data variables.product.api_url_code %}`. -| `GITHUB_GRAPHQL_URL` | Returns the GraphQL API URL. For example: `{% data variables.product.graphql_url_code %}`. - -### Naming conventions for environment variables - -{% note %} - -**Note:** {% data variables.product.prodname_dotcom %} reserves the `GITHUB_` environment variable prefix for internal use by {% data variables.product.prodname_dotcom %}. Setting an environment variable or secret with the `GITHUB_` prefix will result in an error. - -{% endnote %} - -Any new environment variables you set that point to a location on the filesystem should have a `_PATH` suffix. The `HOME` and `GITHUB_WORKSPACE` default variables are exceptions to this convention because the words "home" and "workspace" already imply a location. diff --git a/content/actions/reference/events-that-trigger-workflows.md b/content/actions/reference/events-that-trigger-workflows.md deleted file mode 100644 index 279e7c34c526..000000000000 --- a/content/actions/reference/events-that-trigger-workflows.md +++ /dev/null @@ -1,676 +0,0 @@ ---- -title: Events that trigger workflows -intro: 'You can configure your workflows to run when specific activity on {% data variables.product.product_name %} happens, at a scheduled time, or when an event outside of {% data variables.product.product_name %} occurs.' -product: '{% data reusables.gated-features.actions %}' -miniTocMaxHeadingLevel: 4 -redirect_from: - - /articles/events-that-trigger-workflows - - /github/automating-your-workflow-with-github-actions/events-that-trigger-workflows - - /actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Configuring workflow events - -You can configure workflows to run for one or more events using the `on` workflow syntax. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/articles/workflow-syntax-for-github-actions#on)." - -{% data reusables.github-actions.actions-on-examples %} - -{% note %} - -**Note:** You cannot trigger new workflow runs using the `GITHUB_TOKEN`. For more information, see "[Triggering new workflows using a personal access token](#triggering-new-workflows-using-a-personal-access-token)." - -{% endnote %} - -The following steps occur to trigger a workflow run: - -1. An event occurs on your repository, and the resulting event has an associated commit SHA and Git ref. -2. The `.github/workflows` directory in your repository is searched for workflow files at the associated commit SHA or Git ref. The workflow files must be present in that commit SHA or Git ref to be considered. - - For example, if the event occurred on a particular repository branch, then the workflow files must be present in the repository on that branch. -1. The workflow files for that commit SHA and Git ref are inspected, and a new workflow run is triggered for any workflows that have `on:` values that match the triggering event. - - The workflow runs on your repository's code at the same commit SHA and Git ref that triggered the event. When a workflow runs, {% data variables.product.product_name %} sets the `GITHUB_SHA` (commit SHA) and `GITHUB_REF` (Git ref) environment variables in the runner environment. For more information, see "[Using environment variables](/actions/automating-your-workflow-with-github-actions/using-environment-variables)." - -### Scheduled events - -The `schedule` event allows you to trigger a workflow at a scheduled time. - -#### `schedule` - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| n/a | n/a | Last commit on default branch | Default branch | When the scheduled workflow is set to run. A scheduled workflow uses [POSIX cron syntax](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07). For more information, see "[Triggering a workflow with events](/articles/configuring-a-workflow/#triggering-a-workflow-with-events)." | - -{% data reusables.repositories.actions-scheduled-workflow-example %} - -Cron syntax has five fields separated by a space, and each field represents a unit of time. - -``` -┌───────────── minute (0 - 59) -│ ┌───────────── hour (0 - 23) -│ │ ┌───────────── day of the month (1 - 31) -│ │ │ ┌───────────── month (1 - 12 or JAN-DEC) -│ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT) -│ │ │ │ │ -│ │ │ │ │ -│ │ │ │ │ -* * * * * -``` - -You can use these operators in any of the five fields: - -| Operator | Description | Example | -| -------- | ----------- | ------- | -| * | Any value | `* * * * *` runs every minute of every day. | -| , | Value list separator | `2,10 4,5 * * *` runs at minute 2 and 10 of the 4th and 5th hour of every day. | -| - | Range of values | `0 4-6 * * *` runs at minute 0 of the 4th, 5th, and 6th hour. | -| / | Step values | `20/15 * * * *` runs every 15 minutes starting from minute 20 through 59 (minutes 20, 35, and 50). | - -{% note %} - -**Note:** {% data variables.product.prodname_actions %} does not support the non-standard syntax `@yearly`, `@monthly`, `@weekly`, `@daily`, `@hourly`, and `@reboot`. - -{% endnote %} - -You can use [crontab guru](https://crontab.guru/) to help generate your cron syntax and confirm what time it will run. To help you get started, there is also a list of [crontab guru examples](https://crontab.guru/examples.html). - -### Manual events - -You can manually trigger workflow runs. To trigger specific workflows in a repository, use the `workflow_dispatch` event. To trigger more than one workflow in a repository and create custom events and event types, use the `repository_dispatch` event. - -#### `workflow_dispatch` - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| ------------------ | ------------ | ------------ | ------------------| -| [workflow_dispatch](/webhooks/event-payloads/#workflow_dispatch) | n/a | Last commit on the `GITHUB_REF` branch | Branch that received dispatch | - -You can configure custom-defined input properties, default input values, and required inputs for the event directly in your workflow. When the workflow runs, you can access the input values in the `github.event.inputs` context. For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions#github-context)." - -You can manually trigger a workflow run using the {% data variables.product.product_name %} API and from {% data variables.product.product_name %}. For more information, see "[Manually running a workflow](/actions/managing-workflow-runs/manually-running-a-workflow)." - - When you trigger the event on {% data variables.product.prodname_dotcom %}, you can provide the `ref` and any `inputs` directly on {% data variables.product.prodname_dotcom %}. For more information, see "[Using inputs and outputs with an action](/actions/learn-github-actions/finding-and-customizing-actions#using-inputs-and-outputs-with-an-action)." - - To trigger the custom `workflow_dispatch` webhook event using the REST API, you must send a `POST` request to a {% data variables.product.prodname_dotcom %} API endpoint and provide the `ref` and any required `inputs`. For more information, see the "[Create a workflow dispatch event](/rest/reference/actions/#create-a-workflow-dispatch-event)" REST API endpoint. - -##### Example workflow configuration - -This example defines the `name` and `home` inputs and prints them using the `github.event.inputs.name` and `github.event.inputs.home` contexts. If a `name` isn't provided, the default value 'Mona the Octocat' is printed. - -{% raw %} -```yaml -name: Manually triggered workflow -on: - workflow_dispatch: - inputs: - name: - description: 'Person to greet' - required: true - default: 'Mona the Octocat' - home: - description: 'location' - required: false - -jobs: - say_hello: - runs-on: ubuntu-latest - steps: - - run: | - echo "Hello ${{ github.event.inputs.name }}!" - echo "- in ${{ github.event.inputs.home }}!" -``` -{% endraw %} - -#### `repository_dispatch` - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| ------------------ | ------------ | ------------ | ------------------| -| [repository_dispatch](/webhooks/event-payloads/#repository_dispatch) | n/a | Last commit on the `GITHUB_REF` branch | Branch that received dispatch | - -{% data reusables.github-actions.branch-requirement %} - -You can use the {% data variables.product.product_name %} API to trigger a webhook event called [`repository_dispatch`](/webhooks/event-payloads/#repository_dispatch) when you want to trigger a workflow for activity that happens outside of {% data variables.product.prodname_dotcom %}. For more information, see "[Create a repository dispatch event](/v3/repos/#create-a-repository-dispatch-event)." - -To trigger the custom `repository_dispatch` webhook event, you must send a `POST` request to a {% data variables.product.product_name %} API endpoint and provide an `event_type` name to describe the activity type. To trigger a workflow run, you must also configure your workflow to use the `repository_dispatch` event. - -##### Example - -By default, all `event_types` trigger a workflow to run. You can limit your workflow to run when a specific `event_type` value is sent in the `repository_dispatch` webhook payload. You define the event types sent in the `repository_dispatch` payload when you create the repository dispatch event. - -```yaml -on: - repository_dispatch: - types: [opened, deleted] -``` - -### Webhook events - -You can configure your workflow to run when webhook events are created on {% data variables.product.product_name %}. Some events have more than one activity type that triggers the event. If more than one activity type triggers the event, you can specify which activity types will trigger the workflow to run. For more information, see "[Webhooks](/webhooks)." - -#### `check_run` - -Runs your workflow anytime the `check_run` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Check runs](/v3/checks/runs/)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`check_run`](/webhooks/event-payloads/#check_run) | - `created`
- `rerequested`
- `completed`
- `requested_action` | Last commit on default branch | Default branch | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when a check run has been `rerequested` or `requested_action`. - -```yaml -on: - check_run: - types: [rerequested, requested_action] -``` - -#### `check_suite` - -Runs your workflow anytime the `check_suite` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Check suites](/v3/checks/suites/)." - -{% data reusables.github-actions.branch-requirement %} - -{% note %} - -**Note:** To prevent recursive workflows, this event does not trigger workflows if the check suite was created by {% data variables.product.prodname_actions %}. - -{% endnote %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`check_suite`](/webhooks/event-payloads/#check_suite) | - `completed`
- `requested`
- `rerequested`
| Last commit on default branch | Default branch | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when a check suite has been `rerequested` or `completed`. - -```yaml -on: - check_suite: - types: [rerequested, completed] -``` - -#### `create` - -Runs your workflow anytime someone creates a branch or tag, which triggers the `create` event. For information about the REST API, see "[Create a reference](/v3/git/refs/#create-a-reference)." - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`create`](/webhooks/event-payloads/#create) | n/a | Last commit on the created branch or tag | Branch or tag created | - -For example, you can run a workflow when the `create` event occurs. - -```yaml -on: - create -``` - -#### `delete` - -Runs your workflow anytime someone deletes a branch or tag, which triggers the `delete` event. For information about the REST API, see "[Delete a reference](/v3/git/refs/#delete-a-reference)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`delete`](/webhooks/event-payloads/#delete) | n/a | Last commit on default branch | Default branch | - -For example, you can run a workflow when the `delete` event occurs. - -```yaml -on: - delete -``` - -#### `deployment` - -Runs your workflow anytime someone creates a deployment, which triggers the `deployment` event. Deployments created with a commit SHA may not have a Git ref. For information about the REST API, see "[Deployments](/rest/reference/repos#deployments)." - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`deployment`](/webhooks/event-payloads/#deployment) | n/a | Commit to be deployed | Branch or tag to be deployed (empty if commit)| - -For example, you can run a workflow when the `deployment` event occurs. - -```yaml -on: - deployment -``` - -#### `deployment_status` - -Runs your workflow anytime a third party provides a deployment status, which triggers the `deployment_status` event. Deployments created with a commit SHA may not have a Git ref. For information about the REST API, see "[Create a deployment status](/rest/reference/repos#create-a-deployment-status)." - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`deployment_status`](/webhooks/event-payloads/#deployment_status) | n/a | Commit to be deployed | Branch or tag to be deployed (empty if commit)| - -For example, you can run a workflow when the `deployment_status` event occurs. - -```yaml -on: - deployment_status -``` - -#### `fork` - -Runs your workflow anytime when someone forks a repository, which triggers the `fork` event. For information about the REST API, see "[Create a fork](/v3/repos/forks/#create-a-fork)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`fork`](/webhooks/event-payloads/#fork) | n/a | Last commit on default branch | Default branch | - -For example, you can run a workflow when the `fork` event occurs. - -```yaml -on: - fork -``` - -#### `gollum` - -Runs your workflow when someone creates or updates a Wiki page, which triggers the `gollum` event. - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`gollum`](/webhooks/event-payloads/#gollum) | n/a | Last commit on default branch | Default branch | - -For example, you can run a workflow when the `gollum` event occurs. - -```yaml -on: - gollum -``` - -#### `issue_comment` - -Runs your workflow anytime the `issue_comment` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Issue comments](/developers/webhooks-and-events/webhook-events-and-payloads#issue_comment)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`issue_comment`](/rest/reference/activity#issue_comment) | - `created`
- `edited`
- `deleted`
| Last commit on default branch | Default branch | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when an issue comment has been `created` or `deleted`. - -```yaml -on: - issue_comment: - types: [created, deleted] -``` - -#### `issues` - -Runs your workflow anytime the `issues` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Issues](/v3/issues)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`issues`](/webhooks/event-payloads/#issues) | - `opened`
- `edited`
- `deleted`
- `transferred`
- `pinned`
- `unpinned`
- `closed`
- `reopened`
- `assigned`
- `unassigned`
- `labeled`
- `unlabeled`
- `locked`
- `unlocked`
- `milestoned`
- `demilestoned` | Last commit on default branch | Default branch | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when an issue has been `opened`, `edited`, or `milestoned`. - -```yaml -on: - issues: - types: [opened, edited, milestoned] -``` - -#### `label` - -Runs your workflow anytime the `label` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Labels](/v3/issues/labels/)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`label`](/webhooks/event-payloads/#label) | - `created`
- `edited`
- `deleted`
| Last commit on default branch | Default branch | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when a label has been `created` or `deleted`. - -```yaml -on: - label: - types: [created, deleted] -``` - -#### `milestone` - -Runs your workflow anytime the `milestone` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Milestones](/v3/issues/milestones/)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`milestone`](/webhooks/event-payloads/#milestone) | - `created`
- `closed`
- `opened`
- `edited`
- `deleted`
| Last commit on default branch | Default branch | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when a milestone has been `opened` or `deleted`. - -```yaml -on: - milestone: - types: [opened, deleted] -``` - -#### `page_build` - -Runs your workflow anytime someone pushes to a {% data variables.product.product_name %} Pages-enabled branch, which triggers the `page_build` event. For information about the REST API, see "[Pages](/rest/reference/repos#pages)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`page_build`](/webhooks/event-payloads/#page_build) | n/a | Last commit on default branch | n/a | - -For example, you can run a workflow when the `page_build` event occurs. - -```yaml -on: - page_build -``` - -#### `project` - -Runs your workflow anytime the `project` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Projects](/v3/projects/)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`project`](/webhooks/event-payloads/#project) | - `created`
- `updated`
- `closed`
- `reopened`
- `edited`
- `deleted`
| Last commit on default branch | Default branch | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when a project has been `created` or `deleted`. - -```yaml -on: - project: - types: [created, deleted] -``` - -#### `project_card` - -Runs your workflow anytime the `project_card` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Project cards](/v3/projects/cards)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`project_card`](/webhooks/event-payloads/#project_card) | - `created`
- `moved`
- `converted` to an issue
- `edited`
- `deleted` | Last commit on default branch | Default branch | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when a project card has been `opened` or `deleted`. - -```yaml -on: - project_card: - types: [opened, deleted] -``` - -#### `project_column` - -Runs your workflow anytime the `project_column` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Project columns](/v3/projects/columns)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`project_column`](/webhooks/event-payloads/#project_column) | - `created`
- `updated`
- `moved`
- `deleted` | Last commit on default branch | Default branch | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when a project column has been `created` or `deleted`. - -```yaml -on: - project_column: - types: [created, deleted] -``` - -#### `public` - -Runs your workflow anytime someone makes a private repository public, which triggers the `public` event. For information about the REST API, see "[Edit repositories](/v3/repos/#edit)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`public`](/webhooks/event-payloads/#public) | n/a | Last commit on default branch | Default branch | - -For example, you can run a workflow when the `public` event occurs. - -```yaml -on: - public -``` - -#### `pull_request` - -Runs your workflow anytime the `pull_request` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Pull requests](/v3/pulls)." - -{% note %} - -**Note:** By default, a workflow only runs when a `pull_request`'s activity type is `opened`, `synchronize`, or `reopened`. To trigger workflows for more activity types, use the `types` keyword. - -{% endnote %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`pull_request`](/webhooks/event-payloads/#pull_request) | - `assigned`
- `unassigned`
- `labeled`
- `unlabeled`
- `opened`
- `edited`
- `closed`
- `reopened`
- `synchronize`
- `ready_for_review`
- `locked`
- `unlocked`
- `review_requested`
- `review_request_removed` | Last merge commit on the `GITHUB_REF` branch | PR merge branch `refs/pull/:prNumber/merge` | - -You extend or limit the default activity types using the `types` keyword. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/articles/workflow-syntax-for-github-actions#onevent_nametypes)." - -For example, you can run a workflow when a pull request has been `assigned`, `opened`, `synchronize`, or `reopened`. - -```yaml -on: - pull_request: - types: [assigned, opened, synchronize, reopened] -``` - -{% data reusables.developer-site.pull_request_forked_repos_link %} - -#### `pull_request_review` - -Runs your workflow anytime the `pull_request_review` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Pull request reviews](/v3/pulls/reviews)." - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`pull_request_review`](/webhooks/event-payloads/#pull_request_review) | - `submitted`
- `edited`
- `dismissed` | Last merge commit on the `GITHUB_REF` branch | PR merge branch `refs/pull/:prNumber/merge` | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when a pull request review has been `edited` or `dismissed`. - -```yaml -on: - pull_request_review: - types: [edited, dismissed] -``` - -{% data reusables.developer-site.pull_request_forked_repos_link %} - -#### `pull_request_review_comment` - -Runs your workflow anytime a comment on a pull request's unified diff is modified, which triggers the `pull_request_review_comment` event. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see [Review comments](/v3/pulls/comments). - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`pull_request_review_comment`](/webhooks/event-payloads/#pull_request_review_comment) | - `created`
- `edited`
- `deleted`| Last merge commit on the `GITHUB_REF` branch | PR merge branch `refs/pull/:prNumber/merge` | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when a pull request review comment has been `created` or `deleted`. - -```yaml -on: - pull_request_review_comment: - types: [created, deleted] -``` - -{% data reusables.developer-site.pull_request_forked_repos_link %} - -#### `pull_request_target` - -This event is similar to `pull_request`, except that it runs in the context of the base repository of the pull request, rather than in the merge commit. This means that you can more safely make your secrets available to the workflows triggered by the pull request, because only workflows defined in the commit on the base repository are run. For example, this event allows you to create workflows that label and comment on pull requests, based on the contents of the event payload. - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`pull_request`](/webhooks/event-payloads/#pull_request) | - `assigned`
- `unassigned`
- `labeled`
- `unlabeled`
- `opened`
- `edited`
- `closed`
- `reopened`
- `synchronize`
- `ready_for_review`
- `locked`
- `unlocked`
- `review_requested`
- `review_request_removed` | Last commit on the PR base branch | PR base branch | - -By default, a workflow only runs when a `pull_request_target`'s activity type is `opened`, `synchronize`, or `reopened`. To trigger workflows for more activity types, use the `types` keyword. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/articles/workflow-syntax-for-github-actions#onevent_nametypes)." - -For example, you can run a workflow when a pull request has been `assigned`, `opened`, `synchronize`, or `reopened`. - -```yaml -on: pull_request_target - types: [assigned, opened, synchronize, reopened] -``` - -#### `push` - -{% note %} - -**Note:** The webhook payload available to GitHub Actions does not include the `added`, `removed`, and `modified` attributes in the `commit` object. You can retrieve the full commit object using the REST API. For more information, see "[Get a single commit](/v3/repos/commits/#get-a-single-commit)"". - -{% endnote %} - -Runs your workflow when someone pushes to a repository branch, which triggers the `push` event. - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`push`](/webhooks/event-payloads/#push) | n/a | Commit pushed, unless deleting a branch (when it's the default branch) | Updated ref | - -For example, you can run a workflow when the `push` event occurs. - -```yaml -on: - push -``` - -#### `registry_package` - -Runs your workflow anytime a package is `published` or `updated`. For more information, see "[Managing packages with {% data variables.product.prodname_registry %}](/github/managing-packages-with-github-packages)." - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`registry_package`](/webhooks/event-payloads/#package) | - `published`
- `updated` | Commit of the published package | Branch or tag of the published package | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when a package has been `published`. - -```yaml -on: - registry_package: - types: [published] -``` - -#### `release` - -{% note %} - -**Note:** The `release` event is not triggered for draft releases. - -{% endnote %} - -Runs your workflow anytime the `release` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Releases](/v3/repos/releases/)." - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`release`](/webhooks/event-payloads/#release) | - `published`
- `unpublished`
- `created`
- `edited`
- `deleted`
- `prereleased`
- `released` | Last commit in the tagged release | Tag of release | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when a release has been `published`. - -```yaml -on: - release: - types: [published] -``` - -#### `status` - -Runs your workflow anytime the status of a Git commit changes, which triggers the `status` event. For information about the REST API, see [Statuses](/v3/repos/statuses/). - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`status`](/webhooks/event-payloads/#status) | n/a | Last commit on default branch | n/a | - -For example, you can run a workflow when the `status` event occurs. - -```yaml -on: - status -``` - -#### `watch` - -Runs your workflow anytime the `watch` event occurs. {% data reusables.developer-site.multiple_activity_types %} For information about the REST API, see "[Starring](/v3/activity/starring/)." - -{% data reusables.github-actions.branch-requirement %} - -| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` | -| --------------------- | -------------- | ------------ | -------------| -| [`watch`](/webhooks/event-payloads/#watch) | - `started` | Last commit on default branch | Default branch | - -{% data reusables.developer-site.limit_workflow_to_activity_types %} - -For example, you can run a workflow when someone stars a repository, which is the `started` activity type that triggers the watch event. - -```yaml -on: - watch: - types: [started] -``` - -#### `workflow_run` - -{% data reusables.webhooks.workflow_run_desc %} - -If you need to filter branches from this event, you can use `branches` or `branches-ignore`. - -In this example, a workflow is configured to run after the separate “Run Tests” workflow completes. - -```yaml -on: - workflow_run: - workflows: ["Run Tests"] - branches: [main] - types: - - completed - - requested -``` - -### Triggering new workflows using a personal access token - -{% data reusables.github-actions.actions-do-not-trigger-workflows %} For more information, see "[Authenticating with the GITHUB_TOKEN](/actions/configuring-and-managing-workflows/authenticating-with-the-github_token)." - -If you would like to trigger a workflow from a workflow run, you can trigger the event using a personal access token. You'll need to create a personal access token and store it as a secret. To minimize your {% data variables.product.prodname_actions %} usage costs, ensure that you don't create recursive or unintended workflow runs. For more information, see "[Creating and storing encrypted secrets](/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets)." diff --git a/content/actions/reference/index.md b/content/actions/reference/index.md deleted file mode 100644 index 885e33838a22..000000000000 --- a/content/actions/reference/index.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Reference -intro: 'Reference documentation for creating workflows, using GitHub-hosted runners, and authentication.' -redirect_from: - - /actions/configuring-and-managing-workflows/using-variables-and-secrets-in-a-workflow -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### Workflow syntax - -The workflow file is written in YAML. In the YAML workflow file, you can use expression syntax to evaluate contextual information, literals, operators, and functions. Contextual information includes workflow, environment variables, secrets, and the events that triggered the workflow. When you use [`run`](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun) in a workflow step to run shell commands, you can use specific workflow command syntax to set environment variables, set output parameters for subsequent steps, and set error or debug messages. - -{% link_in_list /workflow-syntax-for-github-actions %} -{% link_in_list /context-and-expression-syntax-for-github-actions %} -{% link_in_list /workflow-commands-for-github-actions %} - -### Events - -You can configure workflows to run when specific GitHub events occur, at a scheduled time, manually, or when events outside of GitHub occur. - -{% link_in_list /events-that-trigger-workflows %} - -### Authentication and secrets - -{% data variables.product.prodname_dotcom %} provides a token that you can use to authenticate on behalf of {% data variables.product.prodname_actions %}. You can also store sensitive information as a secret in your organization or repository. {% data variables.product.prodname_dotcom %} encrypts all secrets. - -{% link_in_list /authentication-in-a-workflow %} -{% link_in_list /encrypted-secrets %} - -### {% data variables.product.prodname_dotcom %}-hosted runners - -GitHub offers hosted virtual machines to run workflows. The virtual machine contains an environment with tools, packages, and environment variables for GitHub Actions to use. - -{% link_in_list /environment-variables %} -{% link_in_list /specifications-for-github-hosted-runners %} - -{% if currentVersion == "free-pro-team@latest" %} -### Administration - -When you run workflows on {% data variables.product.prodname_dotcom %}-hosted runners, there are usage limits and potential usage charges. You can also disable or restrict the usage of {% data variables.product.prodname_actions %} in a repository and organization. - -{% link_in_list /usage-limits-billing-and-administration %} - -{% endif %} diff --git a/content/actions/reference/specifications-for-github-hosted-runners.md b/content/actions/reference/specifications-for-github-hosted-runners.md deleted file mode 100644 index e0174430c832..000000000000 --- a/content/actions/reference/specifications-for-github-hosted-runners.md +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Specifications for GitHub-hosted runners -intro: '{% data variables.product.prodname_dotcom %} offers hosted virtual machines to run workflows. The virtual machine contains an environment of tools, packages, and settings available for {% data variables.product.prodname_actions %} to use.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /articles/virtual-environments-for-github-actions - - /github/automating-your-workflow-with-github-actions/virtual-environments-for-github-actions - - /github/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners - - /actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners - - /actions/reference/virtual-environments-for-github-hosted-runners - - /actions/reference/software-installed-on-github-hosted-runners -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About {% data variables.product.prodname_dotcom %}-hosted runners - -A {% data variables.product.prodname_dotcom %}-hosted runner is a virtual machine hosted by {% data variables.product.prodname_dotcom %} with the {% data variables.product.prodname_actions %} runner application installed. {% data variables.product.prodname_dotcom %} offers runners with Linux, Windows, and macOS operating systems. - -When you use a {% data variables.product.prodname_dotcom %}-hosted runner, machine maintenance and upgrades are taken care of for you. You can run workflows directly on the virtual machine or in a Docker container. - -You can specify the runner type for each job in a workflow. Each job in a workflow executes in a fresh instance of the virtual machine. All steps in the job execute in the same instance of the virtual machine, allowing the actions in that job to share information using the filesystem. - -{% data reusables.github-actions.runner-app-open-source %} - -#### Cloud hosts for {% data variables.product.prodname_dotcom %}-hosted runners - -{% data variables.product.prodname_dotcom %} hosts Linux and Windows runners on Standard_DS2_v2 virtual machines in Microsoft Azure with the {% data variables.product.prodname_actions %} runner application installed. The {% data variables.product.prodname_dotcom %}-hosted runner application is a fork of the Azure Pipelines Agent. Inbound ICMP packets are blocked for all Azure virtual machines, so ping or traceroute commands might not work. For more information about the Standard_DS2_v2 machine resources, see "[Dv2 and DSv2-series](https://docs.microsoft.com/en-us/azure/virtual-machines/dv2-dsv2-series#dsv2-series)" in the Microsoft Azure documentation. - -{% data variables.product.prodname_dotcom %} uses [MacStadium](https://www.macstadium.com/) to host the macOS runners. - -#### Administrative privileges of {% data variables.product.prodname_dotcom %}-hosted runners - -The Linux and macOS virtual machines both run using passwordless `sudo`. When you need to execute commands or install tools that require more privileges than the current user, you can use `sudo` without needing to provide a password. For more information, see the "[Sudo Manual](https://www.sudo.ws/man/1.8.27/sudo.man.html)." - -Windows virtual machines are configured to run as administrators with User Account Control (UAC) disabled. For more information, see "[How User Account Control works](https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works)" in the Windows documentation. - -### Supported runners and hardware resources - -Each virtual machine has the same hardware resources available. - -- 2-core CPU -- 7 GB of RAM memory -- 14 GB of SSD disk space - -{% data reusables.github-actions.supported-github-runners %} - -{% data reusables.github-actions.ubuntu-runner-preview %} -{% data reusables.github-actions.macos-runner-preview %} - -Workflow logs list the runner used to run a job. For more information, see "[Viewing workflow run history](/actions/managing-workflow-runs/viewing-workflow-run-history)." - -### Supported software - -The software tools included in {% data variables.product.prodname_dotcom %}-hosted runners are updated weekly. For the latest list of included tools for each runner operating system, see the links below: - -* [Ubuntu 20.04 LTS](https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md) -* [Ubuntu 18.04 LTS](https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu1804-README.md) -* [Ubuntu 16.04 LTS](https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu1604-README.md) -* [Windows Server 2019](https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md) -* [Windows Server 2016](https://github.com/actions/virtual-environments/blob/main/images/win/Windows2016-Readme.md) -* [MacOS 10.15](https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md) -* [MacOS 11.0](https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11.0-Readme.md) - -{% data reusables.github-actions.ubuntu-runner-preview %} -{% data reusables.github-actions.macos-runner-preview %} - -{% data variables.product.prodname_dotcom %}-hosted runners include the operating system's default built-in tools, in addition to the packages listed in the above references. For example, Ubuntu and macOS runners include `grep`, `find`, and `which`, among other default tools. - -Workflow logs include a link to the preinstalled tools on the runner. For more information, see "[Viewing workflow run history](/actions/managing-workflow-runs/viewing-workflow-run-history)." - -If there is a tool that you'd like to request, please open an issue at [actions/virtual-environments](https://github.com/actions/virtual-environments). - -### IP addresses - -{% note %} - -**Note:** If you use an IP address allow list for your {% data variables.product.prodname_dotcom %} organization or enterprise account, you cannot use {% data variables.product.prodname_dotcom %}-hosted runners and must instead use self-hosted runners. For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners)." - -{% endnote %} - -Windows and Ubuntu runners are hosted in Azure and have the same IP address ranges as Azure Data centers. Currently, all Windows and Ubuntu {% data variables.product.prodname_dotcom %}-hosted runners are in the following Azure regions: - -- East US (`eastus`) -- East US 2 (`eastus2`) -- West US 2 (`westus2`) -- Central US (`centralus`) -- South Central US (`southcentralus`) - -Microsoft updates the Azure IP address ranges weekly in a JSON file that you can download from the [Azure IP Ranges and Service Tags - Public Cloud](https://www.microsoft.com/en-us/download/details.aspx?id=56519) website. You can use this range of IP addresses if you require an allow-list to prevent unauthorized access to your internal resources. - -The JSON file contains an array called `values`. Inside that array, you can find the supported IP addresses in an object with a `name` and `id` of the Azure region, for example `"AzureCloud.eastus2"`. - -You can find the supported IP address ranges in the `"addressPrefixes"` object. This is a condensed example of the JSON file. - -```json -{ - "changeNumber": 84, - "cloud": "Public", - "values": [ - { - "name": "AzureCloud.eastus2", - "id": "AzureCloud.eastus2", - "properties": { - "changeNumber": 33, - "region": "eastus2", - "platform": "Azure", - "systemService": "", - "addressPrefixes": [ - "13.68.0.0/17", - "13.77.64.0/18", - "13.104.147.0/25", - ... - ] - } - } - ] -} -``` - -### File systems - -{% data variables.product.prodname_dotcom %} executes actions and shell commands in specific directories on the virtual machine. The file paths on virtual machines are not static. Use the environment variables {% data variables.product.prodname_dotcom %} provides to construct file paths for the `home`, `workspace`, and `workflow` directories. - -| Directory | Environment variable | Description | -|-----------|----------------------|-------------| -| `home` | `HOME` | Contains user-related data. For example, this directory could contain credentials from a login attempt. | -| `workspace` | `GITHUB_WORKSPACE` | Actions and shell commands execute in this directory. An action can modify the contents of this directory, which subsequent actions can access. | -| `workflow/event.json` | `GITHUB_EVENT_PATH` | The `POST` payload of the webhook event that triggered the workflow. {% data variables.product.prodname_dotcom %} rewrites this each time an action executes to isolate file content between actions. - -For a list of the environment variables {% data variables.product.prodname_dotcom %} creates for each workflow, see "[Using environment variables](/github/automating-your-workflow-with-github-actions/using-environment-variables)." - -#### Docker container filesystem - -Actions that run in Docker containers have static directories under the `/github` path. However, we strongly recommend using the default environment variables to construct file paths in Docker containers. - -{% data variables.product.prodname_dotcom %} reserves the `/github` path prefix and creates three directories for actions. - -- `/github/home` -- `/github/workspace` - {% data reusables.repositories.action-root-user-required %} -- `/github/workflow` - -{% if currentVersion == "free-pro-team@latest" %} - -### Further reading -- "[Managing billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions)" - -{% endif %} diff --git a/content/actions/reference/usage-limits-billing-and-administration.md b/content/actions/reference/usage-limits-billing-and-administration.md deleted file mode 100644 index d457fd8ce1c0..000000000000 --- a/content/actions/reference/usage-limits-billing-and-administration.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: 'Usage limits, billing, and administration' -intro: 'There are usage limits for {% data variables.product.prodname_actions %} workflows. Usage charges apply to repositories that go beyond the amount of free minutes and storage for a repository.' -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /actions/getting-started-with-github-actions/usage-and-billing-information-for-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About billing for {% data variables.product.prodname_actions %} - -{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.github-actions.actions-billing %} For more information, see "[About billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions)." -{% else %} -GitHub Actions usage is free for {% data variables.product.prodname_ghe_server %} that use self-hosted runners. -{% endif %} - -### Usage limits - -{% if currentVersion == "free-pro-team@latest" %} -There are some limits on {% data variables.product.prodname_actions %} usage when using {% data variables.product.prodname_dotcom %}-hosted runners. These limits are subject to change. - -{% note %} - -**Note:** For self-hosted runners, different usage limits apply. For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners/#usage-limits)." - -{% endnote %} - -- **Job execution time** - Each job in a workflow can run for up to 6 hours of execution time. If a job reaches this limit, the job is terminated and fails to complete. -{% data reusables.github-actions.usage-workflow-run-time %} -{% data reusables.github-actions.usage-api-requests %} -- **Concurrent jobs** - The number of concurrent jobs you can run in your account depends on your GitHub plan, as indicated in the following table. If exceeded, any additional jobs are queued. - - | GitHub plan | Total concurrent jobs | Maximum concurrent macOS jobs | - |---|---|---| - | Free | 20 | 5 | - | Pro | 40 | 5 | - | Team | 60 | 5 | - | Enterprise | 180 | 50 | -- **Job matrix** - {% data reusables.github-actions.usage-matrix-limits %} -{% else %} -Usage limits apply to self-hosted runners. For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners/#usage-limits)." -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -### Usage policy - -In addition to the usage limits, you must ensure that you use {% data variables.product.prodname_actions %} within the [GitHub Terms of Service](/articles/github-terms-of-service/). For more information on {% data variables.product.prodname_actions %}-specific terms, see the [GitHub Additional Product Terms](/github/site-policy/github-additional-product-terms#a-actions-usage). -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -### Artifact and log retention policy - -You can configure the artifact and log retention period for your repository, organization, or enterprise account. - -{% data reusables.actions.about-artifact-log-retention %} - -For more information, see: - -- [Configuring the retention period for {% data variables.product.prodname_actions %} for artifacts and logs in your repository](/github/administering-a-repository/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository) -- [Configuring the retention period for {% data variables.product.prodname_actions %} for artifacts and logs in your organization](/github/setting-up-and-managing-organizations-and-teams/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization) -- [Configuring the retention period for {% data variables.product.prodname_actions %} for artifacts and logs in your enterprise](/github/setting-up-and-managing-your-enterprise-account/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-enterprise-account) -{% endif %} - -### Disabling or limiting {% data variables.product.prodname_actions %} for your repository or organization - -{% data reusables.github-actions.disabling-github-actions %} - -For more information, see: -- "[Disabling or limiting {% data variables.product.prodname_actions %} for a repository](/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository)" -- "[Disabling or limiting {% data variables.product.prodname_actions %} for your organization](/github/setting-up-and-managing-organizations-and-teams/disabling-or-limiting-github-actions-for-your-organization)"{% if currentVersion == "free-pro-team@latest" %} -- "[Enforcing {% data variables.product.prodname_actions %} policies in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-github-actions-policies-in-your-enterprise-account)" for {% data variables.product.prodname_ghe_cloud %}{% endif %} - -### Disabling and enabling workflows - -You can enable and disable individual workflows in your repository on {% data variables.product.prodname_dotcom %}. - -{% data reusables.actions.scheduled-workflows-disabled %} - -For more information, see "[Disabling and enabling a workflow](/actions/managing-workflow-runs/disabling-and-enabling-a-workflow)." diff --git a/content/actions/reference/workflow-commands-for-github-actions.md b/content/actions/reference/workflow-commands-for-github-actions.md deleted file mode 100644 index ca8001978556..000000000000 --- a/content/actions/reference/workflow-commands-for-github-actions.md +++ /dev/null @@ -1,290 +0,0 @@ ---- -title: Workflow commands for GitHub Actions -shortTitle: Workflow commands -intro: You can use workflow commands when running shell commands in a workflow or in an action's code. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /articles/development-tools-for-github-actions - - /github/automating-your-workflow-with-github-actions/development-tools-for-github-actions - - /actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions - - /actions/reference/development-tools-for-github-actions - - /actions/reference/logging-commands-for-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About workflow commands - -Actions can communicate with the runner machine to set environment variables, output values used by other actions, add debug messages to the output logs, and other tasks. - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -Most workflow commands use the `echo` command in a specific format, while others are invoked by writing to a file. For more information, see ["Environment files".](#environment-files) -{% else %} -Workflow commands use the `echo` command in a specific format. -{% endif %} - -``` bash -echo "::workflow-command parameter1={data},parameter2={data}::{command value}" -``` - -{% note %} - -**Note:** Workflow command and parameter names are not case-sensitive. - -{% endnote %} - -{% warning %} - -**Warning:** If you are using Command Prompt, omit double quote characters (`"`) when using workflow commands. - -{% endwarning %} - -### Using workflow commands to access toolkit functions - -The [actions/toolkit](https://github.com/actions/toolkit) includes a number of functions that can be executed as workflow commands. Use the `::` syntax to run the workflow commands within your YAML file; these commands are then sent to the runner over `stdout`. For example, instead of using code to set an output, as below: - -```javascript -core.setOutput('SELECTED_COLOR', 'green'); -``` - -You can use the `set-output` command in your workflow to set the same value: - -{% raw %} -``` yaml - - name: Set selected color - run: echo '::set-output name=SELECTED_COLOR::green' - id: random-color-generator - - name: Get color - run: echo "The selected color is ${{ steps.random-color-generator.outputs.SELECTED_COLOR }}" -``` -{% endraw %} - -The following table shows which toolkit functions are available within a workflow: - -| Toolkit function| Equivalent workflow command| -| ------------- | ------------- | -| `core.addPath` | {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %}Accessible using environment file `GITHUB_PATH`{% else %} `add-path` {% endif %} | -| `core.debug` | `debug` | -| `core.error` | `error` | -| `core.endGroup` | `endgroup` | -| `core.exportVariable` | {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %}Accessible using environment file `GITHUB_ENV`{% else %} `set-env` {% endif %} | -| `core.getInput` | Accessible using environment variable `INPUT_{NAME}` | -| `core.getState` | Accessible using environment variable `STATE_{NAME}` | -| `core.isDebug` | Accessible using environment variable `RUNNER_DEBUG` | -| `core.saveState` | `save-state` | -| `core.setFailed` | Used as a shortcut for `::error` and `exit 1` | -| `core.setOutput` | `set-output` | -| `core.setSecret` | `add-mask` | -| `core.startGroup` | `group` | -| `core.warning` | `warning file` | - -{% if currentVersion ver_lt "enterprise-server@2.23" %} -### Setting an environment variable - -`::set-env name={name}::{value}` - -Creates or updates an environment variable for any actions running next in a job. The action that creates or updates the environment variable does not have access to the new value, but all subsequent actions in a job will have access. Environment variables are case-sensitive and you can include punctuation. - -#### Example - -``` bash -echo "::set-env name=action_state::yellow" -``` -{% endif %} - -### Setting an output parameter - -`::set-output name={name}::{value}` - -Sets an action's output parameter. - -Optionally, you can also declare output parameters in an action's metadata file. For more information, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/articles/metadata-syntax-for-github-actions#outputs)." - -#### Example - -``` bash -echo "::set-output name=action_fruit::strawberry" -``` - -{% if currentVersion ver_lt "enterprise-server@2.23" %} -### Adding a system path - -`::add-path::{path}` - -Prepends a directory to the system `PATH` variable for all subsequent actions in the current job. The currently running action cannot access the new path variable. - -#### Example - -``` bash -echo "::add-path::/path/to/dir" -``` -{% endif %} - -### Setting a debug message - -`::debug::{message}` - -Prints a debug message to the log. You must create a secret named `ACTIONS_STEP_DEBUG` with the value `true` to see the debug messages set by this command in the log. For more information, see "[Enabling debug logging](/actions/managing-workflow-runs/enabling-debug-logging)." - -#### Example - -``` bash -echo "::debug::Set the Octocat variable" -``` - -### Setting a warning message - -`::warning file={name},line={line},col={col}::{message}` - -Creates a warning message and prints the message to the log. You can optionally provide a filename (`file`), line number (`line`), and column (`col`) number where the warning occurred. - -#### Example - -``` bash -echo "::warning file=app.js,line=1,col=5::Missing semicolon" -``` - -### Setting an error message - -`::error file={name},line={line},col={col}::{message}` - -Creates an error message and prints the message to the log. You can optionally provide a filename (`file`), line number (`line`), and column (`col`) number where the error occurred. - -#### Example - -``` bash -echo "::error file=app.js,line=10,col=15::Something went wrong" -``` - -### Masking a value in log - -`::add-mask::{value}` - -Masking a value prevents a string or variable from being printed in the log. Each masked word separated by whitespace is replaced with the `*` character. You can use an environment variable or string for the mask's `value`. - -#### Example masking a string - -When you print `"Mona The Octocat"` in the log, you'll see `"***"`. - -```bash -echo "::add-mask::Mona The Octocat" -``` - -#### Example masking an environment variable - -When you print the variable `MY_NAME` or the value `"Mona The Octocat"` in the log, you'll see `"***"` instead of `"Mona The Octocat"`. - -```bash -MY_NAME="Mona The Octocat" -echo "::add-mask::$MY_NAME" -``` - -### Stopping and starting workflow commands - -`::stop-commands::{endtoken}` - -Stops processing any workflow commands. This special command allows you to log anything without accidentally running a workflow command. For example, you could stop logging to output an entire script that has comments. - -#### Example stopping workflow commands - -``` bash -echo "::stop-commands::pause-logging" -``` - -To start workflow commands, pass the token that you used to stop workflow commands. - -`::{endtoken}::` - -#### Example starting workflow commands - -``` bash -echo "::pause-logging::" -``` - -### Sending values to the pre and post actions - -You can use the `save-state` command to create environment variables for sharing with your workflow's `pre:` or `post:` actions. For example, you can create a file with the `pre:` action, pass the file location to the `main:` action, and then use the `post:` action to delete the file. Alternatively, you could create a file with the `main:` action, pass the file location to the `post:` action, and also use the `post:` action to delete the file. - -If you have multiple `pre:` or `post:` actions, you can only access the saved value in the action where `save-state` was used. For more information on the `post:` action, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/actions/creating-actions/metadata-syntax-for-github-actions#post)." - -The `save-state` command can only be run within an action, and is not available to YAML files. The saved value is stored as an environment value with the `STATE_` prefix. - -This example uses JavaScript to run the `save-state` command. The resulting environment variable is named `STATE_processID` with the value of `12345`: - -``` javascript -console.log('::save-state name=processID::12345') -``` - -The `STATE_processID` variable is then exclusively available to the cleanup script running under the `main` action. This example runs in `main` and uses JavaScript to display the value assigned to the `STATE_processID` environment variable: - -``` javascript -console.log("The running PID from the main action is: " + process.env.STATE_processID); -``` - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -## Environment Files - -During the execution of a workflow, the runner generates temporary files that can be used to perform certain actions. The path to these files are exposed via environment variables. You will need to use UTF-8 encoding when writing to these files to ensure proper processing of the commands. Multiple commands can be written to the same file, separated by newlines. - -{% warning %} - -**Warning:** Powershell does not use UTF-8 by default. Make sure you write files using the correct encoding. For example, you need to set UTF-8 encoding when you set the path: - -``` -steps: - - run: echo "mypath" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append -``` - -{% endwarning %} - -### Setting an environment variable - -`echo "{name}={value}" >> $GITHUB_ENV` - -Creates or updates an environment variable for any actions running next in a job. The action that creates or updates the environment variable does not have access to the new value, but all subsequent actions in a job will have access. Environment variables are case-sensitive and you can include punctuation. - -#### Example - -```bash -echo "action_state=yellow" >> $GITHUB_ENV -``` - -Running `$action_state` in a future step will now return `yellow` - -#### Multline strings -For multiline strings, you may use a delimiter with the following syntax. - -``` -{name}<<{delimiter} -{value} -{delimiter} -``` - -#### Example -In this example, we use `EOF` as a delimiter and set the `JSON_RESPONSE` environment variable to the value of the curl response. -``` -steps: - - name: Set the value - id: step_one - run: | - echo 'JSON_RESPONSE<> $GITHUB_ENV - curl https://httpbin.org/json >> $GITHUB_ENV - echo 'EOF' >> $GITHUB_ENV -``` - -### Adding a system path - -`echo "{path}" >> $GITHUB_PATH` - -Prepends a directory to the system `PATH` variable for all subsequent actions in the current job. The currently running action cannot access the new path variable. - -#### Example - -``` bash -echo "/path/to/dir" >> $GITHUB_PATH -``` -{% endif %} diff --git a/content/actions/reference/workflow-syntax-for-github-actions.md b/content/actions/reference/workflow-syntax-for-github-actions.md deleted file mode 100644 index 2d4d9a44dfb1..000000000000 --- a/content/actions/reference/workflow-syntax-for-github-actions.md +++ /dev/null @@ -1,1146 +0,0 @@ ---- -title: Workflow syntax for GitHub Actions -shortTitle: Workflow syntax -intro: A workflow is a configurable automated process made up of one or more jobs. You must create a YAML file to define your workflow configuration. -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /articles/workflow-syntax-for-github-actions - - /github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions - - /actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About YAML syntax for workflows - -Workflow files use YAML syntax, and must have either a `.yml` or `.yaml` file extension. If you're new to YAML and want to learn more, see "[Learn YAML in five minutes](https://www.codeproject.com/Articles/1214409/Learn-YAML-in-five-minutes)." - -You must store workflow files in the `.github/workflows` directory of your repository. - -### **`name`** - -The name of your workflow. {% data variables.product.prodname_dotcom %} displays the names of your workflows on your repository's actions page. If you omit `name`, {% data variables.product.prodname_dotcom %} sets it to the workflow file path relative to the root of the repository. - -### **`on`** - -**Required** The name of the {% data variables.product.prodname_dotcom %} event that triggers the workflow. You can provide a single event `string`, `array` of events, `array` of event `types`, or an event configuration `map` that schedules a workflow or restricts the execution of a workflow to specific files, tags, or branch changes. For a list of available events, see "[Events that trigger workflows](/articles/events-that-trigger-workflows)." - -{% data reusables.github-actions.actions-on-examples %} - -### **`on..types`** - -Selects the types of activity that will trigger a workflow run. Most GitHub events are triggered by more than one type of activity. For example, the event for the release resource is triggered when a release is `published`, `unpublished`, `created`, `edited`, `deleted`, or `prereleased`. The `types` keyword enables you to narrow down activity that causes the workflow to run. When only one activity type triggers a webhook event, the `types` keyword is unnecessary. - -You can use an array of event `types`. For more information about each event and their activity types, see "[Events that trigger workflows](/articles/events-that-trigger-workflows#webhook-events)." - -```yaml -# Trigger the workflow on pull request activity -on: - release: - # Only use the types keyword to narrow down the activity types that will trigger your workflow. - types: [published, created, edited] -``` - -### **`on..`** - -When using the `push` and `pull_request` events, you can configure a workflow to run on specific branches or tags. For a `pull_request` event, only branches and tags on the base are evaluated. If you define only `tags` or only `branches`, the workflow won't run for events affecting the undefined Git ref. - -The `branches`, `branches-ignore`, `tags`, and `tags-ignore` keywords accept glob patterns that use the `*` and `**` wildcard characters to match more than one branch or tag name. For more information, see the "[Filter pattern cheat sheet](#filter-pattern-cheat-sheet)." - -#### Example including branches and tags - -The patterns defined in `branches` and `tags` are evaluated against the Git ref's name. For example, defining the pattern `mona/octocat` in `branches` will match the `refs/heads/mona/octocat` Git ref. The pattern `releases/**` will match the `refs/heads/releases/10` Git ref. - -```yaml -on: - push: - # Sequence of patterns matched against refs/heads - branches: - # Push events on main branch - - main - # Push events to branches matching refs/heads/mona/octocat - - 'mona/octocat' - # Push events to branches matching refs/heads/releases/10 - - 'releases/**' - # Sequence of patterns matched against refs/tags - tags: - - v1 # Push events to v1 tag - - v1.* # Push events to v1.0, v1.1, and v1.9 tags -``` - -#### Example ignoring branches and tags - -Anytime a pattern matches the `branches-ignore` or `tags-ignore` pattern, the workflow will not run. The patterns defined in `branches-ignore` and `tags-ignore` are evaluated against the Git ref's name. For example, defining the pattern `mona/octocat` in `branches` will match the `refs/heads/mona/octocat` Git ref. The pattern `releases/**-alpha` in `branches` will match the `refs/releases/beta/3-alpha` Git ref. - -```yaml -on: - push: - # Sequence of patterns matched against refs/heads - branches-ignore: - # Push events to branches matching refs/heads/mona/octocat - - 'mona/octocat' - # Push events to branches matching refs/heads/releases/beta/3-alpha - - 'releases/**-alpha' - # Sequence of patterns matched against refs/tags - tags-ignore: - - v1.* # Push events to tags v1.0, v1.1, and v1.9 -``` - -#### Excluding branches and tags - -You can use two types of filters to prevent a workflow from running on pushes and pull requests to tags and branches. -- `branches` or `branches-ignore` - You cannot use both the `branches` and `branches-ignore` filters for the same event in a workflow. Use the `branches` filter when you need to filter branches for positive matches and exclude branches. Use the `branches-ignore` filter when you only need to exclude branch names. -- `tags` or `tags-ignore` - You cannot use both the `tags` and `tags-ignore` filters for the same event in a workflow. Use the `tags` filter when you need to filter tags for positive matches and exclude tags. Use the `tags-ignore` filter when you only need to exclude tag names. - -#### Example using positive and negative patterns - -You can exclude `tags` and `branches` using the `!` character. The order that you define patterns matters. - - A matching negative pattern (prefixed with `!`) after a positive match will exclude the Git ref. - - A matching positive pattern after a negative match will include the Git ref again. - -The following workflow will run on pushes to `releases/10` or `releases/beta/mona`, but not on `releases/10-alpha` or `releases/beta/3-alpha` because the negative pattern `!releases/**-alpha` follows the positive pattern. - -```yaml -on: - push: - branches: - - 'releases/**' - - '!releases/**-alpha' -``` - -### **`on..paths`** - -When using the `push` and `pull_request` events, you can configure a workflow to run when at least one file does not match `paths-ignore` or at least one modified file matches the configured `paths`. Path filters are not evaluated for pushes to tags. - -The `paths-ignore` and `paths` keywords accept glob patterns that use the `*` and `**` wildcard characters to match more than one path name. For more information, see the "[Filter pattern cheat sheet](#filter-pattern-cheat-sheet)." - -#### Example ignoring paths - -Anytime a path name matches a pattern in `paths-ignore`, the workflow will not run. {% data variables.product.prodname_dotcom %} evaluates patterns defined in `paths-ignore` against the path name. A workflow with the following path filter will only run on `push` events that include at least one file outside the `docs` directory at the root of the repository. - -```yaml -on: - push: - paths-ignore: - - 'docs/**' -``` - -#### Example including paths - -If at least one path matches a pattern in the `paths` filter, the workflow runs. To trigger a build anytime you push a JavaScript file, you can use a wildcard pattern. - -```yaml -on: - push: - paths: - - '**.js' -``` - -#### Excluding paths - -You can exclude paths using two types of filters. You cannot use both of these filters for the same event in a workflow. -- `paths-ignore` - Use the `paths-ignore` filter when you only need to exclude path names. -- `paths` - Use the `paths` filter when you need to filter paths for positive matches and exclude paths. - -#### Example using positive and negative patterns - -You can exclude `paths` using the `!` character. The order that you define patterns matters: - - A matching negative pattern (prefixed with `!`) after a positive match will exclude the path. - - A matching positive pattern after a negative match will include the path again. - -This example runs anytime the `push` event includes a file in the `sub-project` directory or its subdirectories, unless the file is in the `sub-project/docs` directory. For example, a push that changed `sub-project/index.js` or `sub-project/src/index.js` will trigger a workflow run, but a push changing only `sub-project/docs/readme.md` will not. - -```yaml -on: - push: - paths: - - 'sub-project/**' - - '!sub-project/docs/**' -``` - -#### Git diff comparisons - -{% note %} - -**Note:** If you push more than 1,000 commits, or if {% data variables.product.prodname_dotcom %} does not generate the diff due to a timeout (diffs that are too large diffs), the workflow will always run. - -{% endnote %} - -The filter determines if a workflow should run by evaluating the changed files and running them against the `paths-ignore` or `paths` list. If there are no files changed, the workflow will not run. - -{% data variables.product.prodname_dotcom %} generates the list of changed files using two-dot diffs for pushes and three-dot diffs for pull requests: -- **Pull requests:** Three-dot diffs are a comparison between the most recent version of the topic branch and the commit where the topic branch was last synced with the base branch. -- **Pushes to existing branches:** A two-dot diff compares the head and base SHAs directly with each other. -- **Pushes to new branches:** A two-dot diff against the parent of the ancestor of the deepest commit pushed. - -For more information, see "[About comparing branches in pull requests](/articles/about-comparing-branches-in-pull-requests)." - -### **`on.schedule`** - -{% data reusables.repositories.actions-scheduled-workflow-example %} - -For more information about cron syntax, see "[Events that trigger workflows](/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows#scheduled-events)." - -### **`env`** - -A `map` of environment variables that are available to all jobs and steps in the workflow. You can also set environment variables that are only available to a job or step. For more information, see [`jobs..env`](#jobsjob_idenv) and [`jobs..steps.env`](#jobsjob_idstepsenv). - -{% data reusables.repositories.actions-env-var-note %} - -#### Example - -```yaml -env: - SERVER: production -``` - -### **`defaults`** - -A `map` of default settings that will apply to all jobs in the workflow. You can also set default settings that are only available to a job. For more information, see [`jobs..defaults`](#jobsjob_iddefaults). - -{% data reusables.github-actions.defaults-override %} - -### **`defaults.run`** - -You can provide default `shell` and `working-directory` options for all [`run`](#jobsjob_idstepsrun) steps in a workflow. You can also set default settings for `run` that are only available to a job. For more information, see [`jobs..defaults.run`](#jobsjob_iddefaultsrun). You cannot use contexts or expressions in this keyword. - -{% data reusables.github-actions.defaults-override %} - -#### Example - -```yaml -defaults: - run: - shell: bash - working-directory: scripts -``` - -### **`jobs`** - -A workflow run is made up of one or more jobs. Jobs run in parallel by default. To run jobs sequentially, you can define dependencies on other jobs using the `jobs..needs` keyword. - -Each job runs in an environment specified by `runs-on`. - -You can run an unlimited number of jobs as long as you are within the workflow usage limits. For more information, see "[Usage limits and billing](/actions/reference/usage-limits-billing-and-administration)" for {% data variables.product.prodname_dotcom %}-hosted runners and "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners/#usage-limits)" for self-hosted runner usage limits. - -If you need to find the unique identifier of a job running in a workflow run, you can use the {% data variables.product.prodname_dotcom %} API. For more information, see "[Workflow Jobs](/v3/actions/workflow-jobs)." - -### **`jobs.`** - -Each job must have an id to associate with the job. The key `job_id` is a string and its value is a map of the job's configuration data. You must replace `` with a string that is unique to the `jobs` object. The `` must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`. - -#### Example - -```yaml -jobs: - my_first_job: - name: My first job - my_second_job: - name: My second job -``` - -### **`jobs..name`** - -The name of the job displayed on {% data variables.product.prodname_dotcom %}. - -### **`jobs..needs`** - -Identifies any jobs that must complete successfully before this job will run. It can be a string or array of strings. If a job fails, all jobs that need it are skipped unless the jobs use a conditional statement that causes the job to continue. - -#### Example - -```yaml -jobs: - job1: - job2: - needs: job1 - job3: - needs: [job1, job2] -``` - -In this example, `job1` must complete successfully before `job2` begins, and `job3` waits for both `job1` and `job2` to complete. - -The jobs in this example run sequentially: - -1. `job1` -2. `job2` -3. `job3` - -### **`jobs..runs-on`** - -**Required** The type of machine to run the job on. The machine can be either a {% data variables.product.prodname_dotcom %}-hosted runner or a self-hosted runner. - -{% data reusables.actions.enterprise-github-hosted-runners %} - -#### {% data variables.product.prodname_dotcom %}-hosted runners - -If you use a {% data variables.product.prodname_dotcom %}-hosted runner, each job runs in a fresh instance of a virtual environment specified by `runs-on`. - -Available {% data variables.product.prodname_dotcom %}-hosted runner types are: - -{% data reusables.github-actions.supported-github-runners %} - -{% data reusables.github-actions.ubuntu-runner-preview %} - -##### **Example** - -```yaml -runs-on: ubuntu-latest -``` - -For more information, see "[Virtual environments for {% data variables.product.prodname_dotcom %}-hosted runners](/github/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners)." - -#### Self-hosted runners - -{% data reusables.github-actions.self-hosted-runner-labels-runs-on %} - -##### **Example** - -```yaml -runs-on: [self-hosted, linux] -``` - -For more information, see "[About self-hosted runners](/github/automating-your-workflow-with-github-actions/about-self-hosted-runners)" and "[Using self-hosted runners in a workflow](/github/automating-your-workflow-with-github-actions/using-self-hosted-runners-in-a-workflow)." - -### **`jobs..outputs`** - -A `map` of outputs for a job. Job outputs are available to all downstream jobs that depend on this job. For more information on defining job dependencies, see [`jobs..needs`](#jobsjob_idneeds). - -Job outputs are strings, and job outputs containing expressions are evaluated on the runner at the end of each job. Outputs containing secrets are redacted on the runner and not sent to {% data variables.product.prodname_actions %}. - -To use job outputs in a dependent job, you can use the `needs` context. For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions#needs-context)." - -#### **Example** - -{% raw %} -```yaml -jobs: - job1: - runs-on: ubuntu-latest - # Map a step output to a job output - outputs: - output1: ${{ steps.step1.outputs.test }} - output2: ${{ steps.step2.outputs.test }} - steps: - - id: step1 - run: echo "::set-output name=test::hello" - - id: step2 - run: echo "::set-output name=test::world" - job2: - runs-on: ubuntu-latest - needs: job1 - steps: - - run: echo ${{needs.job1.outputs.output1}} ${{needs.job1.outputs.output2}} -``` -{% endraw %} - -### **`jobs..env`** - -A `map` of environment variables that are available to all steps in the job. You can also set environment variables for the entire workflow or an individual step. For more information, see [`env`](#env) and [`jobs..steps.env`](#jobsjob_idstepsenv). - -{% data reusables.repositories.actions-env-var-note %} - -#### **Example** - -```yaml -jobs: - job1: - env: - FIRST_NAME: Mona -``` - -### **`jobs..defaults`** - -A `map` of default settings that will apply to all steps in the job. You can also set default settings for the entire workflow. For more information, see [`defaults`](#defaults). - -{% data reusables.github-actions.defaults-override %} - -### **`jobs..defaults.run`** - -Provide default `shell` and `working-directory` to all `run` steps in the job. Context and expression are not allowed in this section. - -You can provide default `shell` and `working-directory` options for all [`run`](#jobsjob_idstepsrun) steps in a job. You can also set default settings for `run` for the entire workflow. For more information, see [`jobs.defaults.run`](#defaultsrun). You cannot use contexts or expressions in this keyword. - -{% data reusables.github-actions.defaults-override %} - -#### Example - -```yaml -jobs: - job1: - runs-on: ubuntu-latest - defaults: - run: - shell: bash - working-directory: scripts -``` - -### **`jobs..if`** - -You can use the `if` conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional. - -{% data reusables.github-actions.expression-syntax-if %} For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions)." - -### **`jobs..steps`** - -A job contains a sequence of tasks called `steps`. Steps can run commands, run setup tasks, or run an action in your repository, a public repository, or an action published in a Docker registry. Not all steps run actions, but all actions run as a step. Each step runs in its own process in the runner environment and has access to the workspace and filesystem. Because steps run in their own process, changes to environment variables are not preserved between steps. {% data variables.product.prodname_dotcom %} provides built-in steps to set up and complete a job. - -You can run an unlimited number of steps as long as you are within the workflow usage limits. For more information, see "[Usage limits and billing](/actions/reference/usage-limits-billing-and-administration)" for {% data variables.product.prodname_dotcom %}-hosted runners and "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners/#usage-limits)" for self-hosted runner usage limits. - -#### Example - -{% raw %} -```yaml -name: Greeting from Mona - -on: push - -jobs: - my-job: - name: My Job - runs-on: ubuntu-latest - steps: - - name: Print a greeting - env: - MY_VAR: Hi there! My name is - FIRST_NAME: Mona - MIDDLE_NAME: The - LAST_NAME: Octocat - run: | - echo $MY_VAR $FIRST_NAME $MIDDLE_NAME $LAST_NAME. -``` -{% endraw %} - -#### **`jobs..steps.id`** - -A unique identifier for the step. You can use the `id` to reference the step in contexts. For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions)." - -#### **`jobs..steps.if`** - -You can use the `if` conditional to prevent a step from running unless a condition is met. You can use any supported context and expression to create a conditional. - -{% data reusables.github-actions.expression-syntax-if %} For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions)." - -##### Example using contexts - - This step only runs when the event type is a `pull_request` and the event action is `unassigned`. - - ```yaml -steps: - - name: My first step - if: {% raw %}${{ github.event_name == 'pull_request' && github.event.action == 'unassigned' }}{% endraw %} - run: echo This event is a pull request that had an assignee removed. -``` - -##### Example using status check functions - -The `my backup step` only runs when the previous step of a job fails. For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions#job-status-check-functions)." - -```yaml -steps: - - name: My first step - uses: monacorp/action-name@main - - name: My backup step - if: {% raw %}${{ failure() }}{% endraw %} - uses: actions/heroku@master -``` - -#### **`jobs..steps.name`** - -A name for your step to display on {% data variables.product.prodname_dotcom %}. - -#### **`jobs..steps.uses`** - -Selects an action to run as part of a step in your job. An action is a reusable unit of code. You can use an action defined in the same repository as the workflow, a public repository, or in a [published Docker container image](https://hub.docker.com/). - -We strongly recommend that you include the version of the action you are using by specifying a Git ref, SHA, or Docker tag number. If you don't specify a version, it could break your workflows or cause unexpected behavior when the action owner publishes an update. -- Using the commit SHA of a released action version is the safest for stability and security. -- Using the specific major action version allows you to receive critical fixes and security patches while still maintaining compatibility. It also assures that your workflow should still work. -- Using the default branch of an action may be convenient, but if someone releases a new major version with a breaking change, your workflow could break. - -Some actions require inputs that you must set using the [`with`](#jobsjob_idstepswith) keyword. Review the action's README file to determine the inputs required. - -Actions are either JavaScript files or Docker containers. If the action you're using is a Docker container you must run the job in a Linux environment. For more details, see [`runs-on`](#jobsjob_idruns-on). - -##### Example using versioned actions - -```yaml -steps: - # Reference a specific commit - - uses: actions/setup-node@74bc508 - # Reference the major version of a release - - uses: actions/setup-node@v1 - # Reference a minor version of a release - - uses: actions/setup-node@v1.2 - # Reference a branch - - uses: actions/setup-node@main -``` - -##### Example using a public action - -`{owner}/{repo}@{ref}` - -You can specific branch, ref, or SHA in a public {% data variables.product.prodname_dotcom %} repository. - -```yaml -jobs: - my_first_job: - steps: - - name: My first step - # Uses the default branch of a public repository - uses: actions/heroku@master - - name: My second step - # Uses a specific version tag of a public repository - uses: actions/aws@v2.0.1 -``` - -##### Example using a public action in a subdirectory - -`{owner}/{repo}/{path}@{ref}` - -A subdirectory in a public {% data variables.product.prodname_dotcom %} repository at a specific branch, ref, or SHA. - -```yaml -jobs: - my_first_job: - steps: - - name: My first step - uses: actions/aws/ec2@main -``` - -##### Example using action in the same repository as the workflow - -`./path/to/dir` - -The path to the directory that contains the action in your workflow's repository. You must check out your repository before using the action. - -```yaml -jobs: - my_first_job: - steps: - - name: Check out repository - uses: actions/checkout@v2 - - name: Use local my-action - uses: ./.github/actions/my-action -``` - -##### Example using a Docker Hub action - -`docker://{image}:{tag}` - -A Docker image published on [Docker Hub](https://hub.docker.com/). - -```yaml -jobs: - my_first_job: - steps: - - name: My first step - uses: docker://alpine:3.8 -``` - -##### Example using a Docker public registry action - -`docker://{host}/{image}:{tag}` - -A Docker image in a public registry. - -```yaml -jobs: - my_first_job: - steps: - - name: My first step - uses: docker://gcr.io/cloud-builders/gradle -``` - -#### **`jobs..steps.run`** - -Runs command-line programs using the operating system's shell. If you do not provide a `name`, the step name will default to the text specified in the `run` command. - -Commands run using non-login shells by default. You can choose a different shell and customize the shell used to run commands. For more information, see "[Using a specific shell](#using-a-specific-shell)." - -Each `run` keyword represents a new process and shell in the runner environment. When you provide multi-line commands, each line runs in the same shell. For example: - -* A single-line command: - - ```yaml - - name: Install Dependencies - run: npm install - ``` - -* A multi-line command: - - ```yaml - - name: Clean install dependencies and build - run: | - npm ci - npm run build - ``` - -Using the `working-directory` keyword, you can specify the working directory of where to run the command. - -```yaml -- name: Clean temp directory - run: rm -rf * - working-directory: ./temp -``` - -##### Using a specific shell - -You can override the default shell settings in the runner's operating system using the `shell` keyword. You can use built-in `shell` keywords, or you can define a custom set of shell options. - -| Supported platform | `shell` parameter | Description | Command run internally | -|--------------------|-------------------|-------------|------------------------| -| All | `bash` | The default shell on non-Windows platforms with a fallback to `sh`. When specifying a bash shell on Windows, the bash shell included with Git for Windows is used. | `bash --noprofile --norc -eo pipefail {0}` | -| All | `pwsh` | The PowerShell Core. {% data variables.product.prodname_dotcom %} appends the extension `.ps1` to your script name. | `pwsh -command ". '{0}'"` | -| All | `python` | Executes the python command. | `python {0}` | -| Linux / macOS | `sh` | The fallback behavior for non-Windows platforms if no shell is provided and `bash` is not found in the path. | `sh -e {0}` | -| Windows | `cmd` | {% data variables.product.prodname_dotcom %} appends the extension `.cmd` to your script name and substitutes for `{0}`. | `%ComSpec% /D /E:ON /V:OFF /S /C "CALL "{0}""`. | -| Windows | `powershell` | This is the default shell used on Windows. The Desktop PowerShell. {% data variables.product.prodname_dotcom %} appends the extension `.ps1` to your script name. | `powershell -command ". '{0}'"`. | - -##### Example running a script using bash - -```yaml -steps: - - name: Display the path - run: echo $PATH - shell: bash -``` - -##### Example running a script using Windows `cmd` - -```yaml -steps: - - name: Display the path - run: echo %PATH% - shell: cmd -``` - -##### Example running a script using PowerShell Core - -```yaml -steps: - - name: Display the path - run: echo ${env:PATH} - shell: pwsh -``` - -##### Example running a python script - -```yaml -steps: - - name: Display the path - run: | - import os - print(os.environ['PATH']) - shell: python -``` - -##### Custom shell - -You can set the `shell` value to a template string using `command […options] {0} [..more_options]`. {% data variables.product.prodname_dotcom %} interprets the first whitespace-delimited word of the string as the command, and inserts the file name for the temporary script at `{0}`. - -##### Exit codes and error action preference - -For built-in shell keywords, we provide the following defaults that are executed by {% data variables.product.prodname_dotcom %}-hosted runners. You should use these guidelines when running shell scripts. - -- `bash`/`sh`: - - Fail-fast behavior using `set -e o pipefail`: Default for `bash` and built-in `shell`. It is also the default when you don't provide an option on non-Windows platforms. - - You can opt out of fail-fast and take full control by providing a template string to the shell options. For example, `bash {0}`. - - sh-like shells exit with the exit code of the last command executed in a script, which is also the default behavior for actions. The runner will report the status of the step as fail/succeed based on this exit code. - -- `powershell`/`pwsh` - - Fail-fast behavior when possible. For `pwsh` and `powershell` built-in shell, we will prepend `$ErrorActionPreference = 'stop'` to script contents. - - We append `if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE }` to powershell scripts so action statuses reflect the script's last exit code. - - Users can always opt out by not using the built-in shell, and providing a custom shell option like: `pwsh -File {0}`, or `powershell -Command "& '{0}'"`, depending on need. - -- `cmd` - - There doesn't seem to be a way to fully opt into fail-fast behavior other than writing your script to check each error code and respond accordingly. Because we can't actually provide that behavior by default, you need to write this behavior into your script. - - `cmd.exe` will exit with the error level of the last program it executed, and it will and return the error code to the runner. This behavior is internally consistent with the previous `sh` and `pwsh` default behavior and is the `cmd.exe` default, so this behavior remains intact. - -#### **`jobs..steps.with`** - -A `map` of the input parameters defined by the action. Each input parameter is a key/value pair. Input parameters are set as environment variables. The variable is prefixed with `INPUT_` and converted to upper case. - -##### Example - -Defines the three input parameters (`first_name`, `middle_name`, and `last_name`) defined by the `hello_world` action. These input variables will be accessible to the `hello-world` action as `INPUT_FIRST_NAME`, `INPUT_MIDDLE_NAME`, and `INPUT_LAST_NAME` environment variables. - -```yaml -jobs: - my_first_job: - steps: - - name: My first step - uses: actions/hello_world@main - with: - first_name: Mona - middle_name: The - last_name: Octocat -``` - -#### **`jobs..steps.with.args`** - -A `string` that defines the inputs for a Docker container. {% data variables.product.prodname_dotcom %} passes the `args` to the container's `ENTRYPOINT` when the container starts up. An `array of strings` is not supported by this parameter. - -##### Example - -{% raw %} -```yaml -steps: - - name: Explain why this job ran - uses: monacorp/action-name@main - with: - entrypoint: /bin/echo - args: The ${{ github.event_name }} event triggered this step. -``` -{% endraw %} - -The `args` are used in place of the `CMD` instruction in a `Dockerfile`. If you use `CMD` in your `Dockerfile`, use the guidelines ordered by preference: - -1. Document required arguments in the action's README and omit them from the `CMD` instruction. -1. Use defaults that allow using the action without specifying any `args`. -1. If the action exposes a `--help` flag, or something similar, use that as the default to make your action self-documenting. - -#### **`jobs..steps.with.entrypoint`** - -Overrides the Docker `ENTRYPOINT` in the `Dockerfile`, or sets it if one wasn't already specified. Unlike the Docker `ENTRYPOINT` instruction which has a shell and exec form, `entrypoint` keyword accepts only a single string defining the executable to be run. - -##### Example - -```yaml -steps: - - name: Run a custom command - uses: monacorp/action-name@main - with: - entrypoint: /a/different/executable -``` - -The `entrypoint` keyword is meant to use with Docker container actions, but you can also use it with JavaScript actions that don't define any inputs. - -#### **`jobs..steps.env`** - -Sets environment variables for steps to use in the runner environment. You can also set environment variables for the entire workflow or a job. For more information, see [`env`](#env) and [`jobs..env`](#jobsjob_idenv). - -{% data reusables.repositories.actions-env-var-note %} - -Public actions may specify expected environment variables in the README file. If you are setting a secret in an environment variable, you must set secrets using the `secrets` context. For more information, see "[Using environment variables](/actions/automating-your-workflow-with-github-actions/using-environment-variables)" and "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions)." - -##### Example - -{% raw %} -```yaml -steps: - - name: My first action - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - FIRST_NAME: Mona - LAST_NAME: Octocat -``` -{% endraw %} - -#### **`jobs..steps.continue-on-error`** - -Prevents a job from failing when a step fails. Set to `true` to allow a job to pass when this step fails. - -#### **`jobs..steps.timeout-minutes`** - -The maximum number of minutes to run the step before killing the process. - -### **`jobs..timeout-minutes`** - -The maximum number of minutes to let a job run before {% data variables.product.prodname_dotcom %} automatically cancels it. Default: 360 - -### **`jobs..strategy`** - -A strategy creates a build matrix for your jobs. You can define different variations of an environment to run each job in. - -#### **`jobs..strategy.matrix`** - -You can define a matrix of different job configurations. A matrix allows you to create multiple jobs by performing variable substitution in a single job definition. For example, you can use a matrix to create jobs for more than one supported version of a programming language, operating system, or tool. A matrix reuses the job's configuration and creates a job for each matrix you configure. - -{% data reusables.github-actions.usage-matrix-limits %} - -Each option you define in the `matrix` has a key and value. The keys you define become properties in the `matrix` context and you can reference the property in other areas of your workflow file. For example, if you define the key `os` that contains an array of operating systems, you can use the `matrix.os` property as the value of the `runs-on` keyword to create a job for each operating system. For more information, see "[Context and expression syntax for {% data variables.product.prodname_actions %}](/actions/reference/context-and-expression-syntax-for-github-actions)." - -The order that you define a `matrix` matters. The first option you define will be the first job that runs in your workflow. - -##### Example running with more than one version of Node.js - -You can specify a matrix by supplying an array for the configuration options. For example, if the runner supports Node.js versions 6, 8, and 10, you could specify an array of those versions in the `matrix`. - -This example creates a matrix of three jobs by setting the `node` key to an array of three Node.js versions. To use the matrix, the example sets the `matrix.node` context property as the value of the `setup-node` action's input parameter `node-version`. As a result, three jobs will run, each using a different Node.js version. - -{% raw %} -```yaml -strategy: - matrix: - node: [6, 8, 10] -steps: - # Configures the node version used on GitHub-hosted runners - - uses: actions/setup-node@v1 - with: - # The Node.js version to configure - node-version: ${{ matrix.node }} -``` -{% endraw %} - -The `setup-node` action is the recommended way to configure a Node.js version when using {% data variables.product.prodname_dotcom %}-hosted runners. For more information, see the [`setup-node`](https://github.com/actions/setup-node) action. - -##### Example running with more than one operating system - -You can create a matrix to run workflows on more than one runner operating system. You can also specify more than one matrix configuration. This example creates a matrix of 6 jobs: - -- 2 operating systems specified in the `os` array -- 3 Node.js versions specified in the `node` array - -{% data reusables.repositories.actions-matrix-builds-os %} - -{% raw %} -```yaml -runs-on: ${{ matrix.os }} -strategy: - matrix: - os: [ubuntu-16.04, ubuntu-18.04] - node: [6, 8, 10] -steps: - - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node }} -``` -{% endraw %} - -To find supported configuration options for {% data variables.product.prodname_dotcom %}-hosted runners, see "[Virtual environments for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners)." - -##### Example including additional values into combinations - -You can add additional configuration options to a build matrix job that already exists. For example, if you want to use a specific version of `npm` when the job that uses `windows-latest` and version 4 of `node` runs, you can use `include` to specify that additional option. - -{% raw %} -```yaml -runs-on: ${{ matrix.os }} -strategy: - matrix: - os: [macos-latest, windows-latest, ubuntu-18.04] - node: [4, 6, 8, 10] - include: - # includes a new variable of npm with a value of 2 - # for the matrix leg matching the os and version - - os: windows-latest - node: 4 - npm: 2 -``` -{% endraw %} - -##### Example including new combinations - -You can use `include` to add new jobs to a build matrix. Any unmatched include configurations are added to the matrix. For example, if you want to use `node` version 12 to build on multiple operating systems, but wanted one extra experimental job using node version 13 on Ubuntu, you can use `include` to specify that additional job. - -{% raw %} -```yaml -runs-on: ${{ matrix.os }} -strategy: - matrix: - node: [12] - os: [macos-latest, windows-latest, ubuntu-18.04] - include: - - node: 13 - os: ubuntu-18.04 - experimental: true -``` -{% endraw %} - -##### Example excluding configurations from a matrix - -You can remove a specific configurations defined in the build matrix using the `exclude` option. Using `exclude` removes a job defined by the build matrix. The number of jobs is the cross product of the number of operating systems (`os`) included in the arrays you provide, minus any subtractions (`exclude`). - -{% raw %} -```yaml -runs-on: ${{ matrix.os }} -strategy: - matrix: - os: [macos-latest, windows-latest, ubuntu-18.04] - node: [4, 6, 8, 10] - exclude: - # excludes node 4 on macOS - - os: macos-latest - node: 4 -``` -{% endraw %} - -{% note %} - -**Note:** All `include` combinations are processed after `exclude`. This allows you to use `include` to add back combinations that were previously excluded. - -{% endnote %} - -### **`jobs..strategy.fail-fast`** - -When set to `true`, {% data variables.product.prodname_dotcom %} cancels all in-progress jobs if any `matrix` job fails. Default: `true` - -### **`jobs..strategy.max-parallel`** - -The maximum number of jobs that can run simultaneously when using a `matrix` job strategy. By default, {% data variables.product.prodname_dotcom %} will maximize the number of jobs run in parallel depending on the available runners on {% data variables.product.prodname_dotcom %}-hosted virtual machines. - -```yaml -strategy: - max-parallel: 2 -``` - -### **`jobs..continue-on-error`** - -Prevents a workflow run from failing when a job fails. Set to `true` to allow a workflow run to pass when this job fails. - -#### Example preventing a specific failing matrix job from failing a workflow run - -You can allow specific jobs in a job matrix to fail without failing the workflow run. For example, if you wanted to only allow an experimental job with `node` set to `13` to fail without failing the workflow run. - -{% raw %} -```yaml -runs-on: ${{ matrix.os }} -continue-on-error: ${{ matrix.experimental }} -strategy: - fail-fast: false - matrix: - node: [11, 12] - os: [macos-latest, ubuntu-18.04] - experimental: [false] - include: - - node: 13 - os: ubuntu-18.04 - experimental: true -``` -{% endraw %} - -### **`jobs..container`** - -A container to run any steps in a job that don't already specify a container. If you have steps that use both script and container actions, the container actions will run as sibling containers on the same network with the same volume mounts. - -If you do not set a `container`, all steps will run directly on the host specified by `runs-on` unless a step refers to an action configured to run in a container. - -#### Example - -```yaml -jobs: - my_job: - container: - image: node:10.16-jessie - env: - NODE_ENV: development - ports: - - 80 - volumes: - - my_docker_volume:/volume_mount - options: --cpus 1 -``` - -When you only specify a container image, you can omit the `image` keyword. - -```yaml -jobs: - my_job: - container: node:10.16-jessie -``` - -#### **`jobs..container.image`** - -The Docker image to use as the container to run the action. The value can be the Docker Hub image name or a {% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.23" %}public{% endif %} registry name. - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -#### **`jobs..container.credentials`** - -{% data reusables.actions.registry-credentials %} - -##### Example - -{% raw %} -```yaml -container: - image: ghcr.io/owner/image - credentials: - username: ${{ github.actor }} - password: ${{ secrets.ghcr_token }} -``` -{% endraw %} -{% endif %} - -#### **`jobs..container.env`** - -Sets a `map` of environment variables in the container. - -#### **`jobs..container.ports`** - -Sets an `array` of ports to expose on the container. - -#### **`jobs..container.volumes`** - -Sets an `array` of volumes for the container to use. You can use volumes to share data between services or other steps in a job. You can specify named Docker volumes, anonymous Docker volumes, or bind mounts on the host. - -To specify a volume, you specify the source and destination path: - -`:`. - -The `` is a volume name or an absolute path on the host machine, and `` is an absolute path in the container. - -##### Example - -```yaml -volumes: - - my_docker_volume:/volume_mount - - /data/my_data - - /source/directory:/destination/directory -``` - -#### **`jobs..container.options`** - -Additional Docker container resource options. For a list of options, see "[`docker create` options](https://docs.docker.com/engine/reference/commandline/create/#options)." - -### **`jobs..services`** - -{% data reusables.github-actions.docker-container-os-support %} - -Used to host service containers for a job in a workflow. Service containers are useful for creating databases or cache services like Redis. The runner automatically creates a Docker network and manages the life cycle of the service containers. - -If you configure your job to run in a container, or your step uses container actions, you don't need to map ports to access the service or action. Docker automatically exposes all ports between containers on the same Docker user-defined bridge network. You can directly reference the service container by its hostname. The hostname is automatically mapped to the label name you configure for the service in the workflow. - -If you configure the job to run directly on the runner machine and your step doesn't use a container action, you must map any required Docker service container ports to the Docker host (the runner machine). You can access the service container using localhost and the mapped port. - -For more information about the differences between networking service containers, see "[About service containers](/actions/automating-your-workflow-with-github-actions/about-service-containers)." - -#### Example using localhost - -This example creates two services: nginx and redis. When you specify the Docker host port but not the container port, the container port is randomly assigned to a free port. {% data variables.product.prodname_dotcom %} sets the assigned container port in the {% raw %}`${{job.services..ports}}`{% endraw %} context. In this example, you can access the service container ports using the {% raw %}`${{ job.services.nginx.ports['8080'] }}`{% endraw %} and {% raw %}`${{ job.services.redis.ports['6379'] }}`{% endraw %} contexts. - -```yaml -services: - nginx: - image: nginx - # Map port 8080 on the Docker host to port 80 on the nginx container - ports: - - 8080:80 - redis: - image: redis - # Map TCP port 6379 on Docker host to a random free port on the Redis container - ports: - - 6379/tcp -``` - -#### **`jobs..services..image`** - -The Docker image to use as the service container to run the action. The value can be the Docker Hub image name or a {% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.23" %}public{% endif %} registry name. - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -#### **`jobs..services..credentials`** - -{% data reusables.actions.registry-credentials %} - -##### Example - -{% raw %} -```yaml -services: - myservice1: - image: ghcr.io/owner/myservice1 - credentials: - username: ${{ github.actor }} - password: ${{ secrets.ghcr_token }} - myservice2: - image: dockerhub_org/myservice2 - credentials: - username: ${{ secrets.DOCKER_USER }} - password: ${{ secrets.DOCKER_PASSWORD }} -``` -{% endraw %} -{% endif %} - -#### **`jobs..services..env`** - -Sets a `map` of environment variables in the service container. - -#### **`jobs..services..ports`** - -Sets an `array` of ports to expose on the service container. - -#### **`jobs..services..volumes`** - -Sets an `array` of volumes for the service container to use. You can use volumes to share data between services or other steps in a job. You can specify named Docker volumes, anonymous Docker volumes, or bind mounts on the host. - -To specify a volume, you specify the source and destination path: - -`:`. - -The `` is a volume name or an absolute path on the host machine, and `` is an absolute path in the container. - -##### Example - -```yaml -volumes: - - my_docker_volume:/volume_mount - - /data/my_data - - /source/directory:/destination/directory -``` - -#### **`jobs..services..options`** - -Additional Docker container resource options. For a list of options, see "[`docker create` options](https://docs.docker.com/engine/reference/commandline/create/#options)." - -### Filter pattern cheat sheet - -You can use special characters in path, branch, and tag filters. - -- `*`: Matches zero or more characters, but does not match the `/` character. For example, `Octo*` matches `Octocat`. -- `**`: Matches zero or more of any character. -- `?`: Matches zero or one single character. For example, `Octoc?t` matches `Octocat`. -- `+`: Matches one or more of the preceding character. -- `[]` Matches one character listed in the brackets or included in ranges. Ranges can only include `a-z`, `A-Z`, and `0-9`. For example, the range`[0-9a-f]` matches any digits or lowercase letter. For example, `[CB]at` matches `Cat` or `Bat` and `[1-2]00` matches `100` and `200`. -- `!`: At the start of a pattern makes it negate previous positive patterns. It has no special meaning if not the first character. - -The characters `*`, `[`, and `!` are special characters in YAML. If you start a pattern with `*`, `[`, or `!`, you must enclose the pattern in quotes. - -```yaml -# Valid -- '**/README.md' - -# Invalid - creates a parse error that -# prevents your workflow from running. -- **/README.md -``` - -For more information about branch, tag, and path filter syntax, see "[`on..`](#onpushpull_requestbranchestags)" and "[`on..paths`](#onpushpull_requestpaths)." - -#### Patterns to match branches and tags - -| Pattern | Description | Example matches | -|---------|------------------------|---------| -| `feature/*` | The `*` wildcard matches any character, but does not match slash (`/`). | -`feature/my-branch`
-`feature/your-branch` | -| `feature/**` | The `**` wildcard matches any character including slash (`/`) in branch and tag names. | -`feature/beta-a/my-branch`
-`feature/your-branch`
-`feature/mona/the/octocat` | -| -`main`
-`releases/mona-the-octcat` | Matches the exact name of a branch or tag name. | -`main`
-`releases/mona-the-octocat` | -| `'*'` | Matches all branch and tag names that don't contain a slash (`/`). The `*` character is a special character in YAML. When you start a pattern with `*`, you must use quotes. | -`main`
-`releases` | -| `'**'` | Matches all branch and tag names. This is the default behavior when you don't use a `branches` or `tags` filter. | -`all/the/branches`
-`every/tag` | -| `'*feature'` | The `*` character is a special character in YAML. When you start a pattern with `*`, you must use quotes. | -`mona-feature`
-`feature`
-`ver-10-feature` | -| `v2*` | Matches branch and tag names that start with `v2`. | -`v2`
-`v2.0`
-`v2.9` | -| `v[12].[0-9]+.[0-9]+` | Matches all semantic versioning tags with major version 1 or 2 | -`v1.10.1`
-`v2.0.0` | - -#### Patterns to match file paths - -Path patterns must match the whole path, and start from the repository's root. - -| Pattern | Description of matches | Example matches | -|---------|------------------------|-----------------| -| `'*'` | The `*` wildcard matches any character, but does not match slash (`/`). The `*` character is a special character in YAML. When you start a pattern with `*`, you must use quotes. | -`README.md`
-`server.rb` | -| `'*.jsx?'` | The `?` character matches zero or one of the preceding character. | -`page.js`
-`page.jsx` | -| `'**'` | The `**` wildcard matches any character including slash (`/`). This is the default behavior when you don't use a `path` filter. | -`all/the/files.md` | -| `'*.js'` | The `*` wildcard matches any character, but does not match slash (`/`). Matches all `.js` files at the root of the repository. | -`app.js`
-`index.js` -| `'**.js'` | Matches all `.js` files in the repository. | -`index.js`
-`js/index.js`
-`src/js/app.js` | -| `docs/*` | All files within the root of the `docs` directory, at the root of the repository. | -`docs/README.md`
-`docs/file.txt` | -| `docs/**` | Any files in the `/docs` directory at the root of the repository. | -`docs/README.md`
-`docs/mona/octocat.txt` | -| `docs/**/*.md` | A file with a `.md` suffix anywhere in the `docs` directory. | -`docs/README.md`
-`docs/mona/hello-world.md`
-`docs/a/markdown/file.md` -| `'**/docs/**'` | Any files in a `docs` directory anywhere in the repository. | -`/docs/hello.md`
-`dir/docs/my-file.txt`
-`space/docs/plan/space.doc` -| `'**/README.md'` | A README.md file anywhere in the repository. | -`README.md`
-`js/README.md` -| `'**/*src/**'` | Any file in a folder with a `src` suffix anywhere in the repository. | -`a/src/app.js`
-`my-src/code/js/app.js` -| `'**/*-post.md'` | A file with the suffix `-post.md` anywhere in the repository. | -`my-post.md`
-`path/their-post.md` | -| `'**/migrate-*.sql'` | A file with the prefix `migrate-` and suffix `.sql` anywhere in the repository. | -`migrate-10909.sql`
-`db/migrate-v1.0.sql`
-`db/sept/migrate-v1.sql` | -| -`*.md`
-`!README.md` | Using an exclamation mark (`!`) in front of a pattern negates it. When a file matches a pattern and also matches a negative pattern defined later in the file, the file will not be included. | -`hello.md`
_Does not match_
-`README.md`
-`docs/hello.md` | -| -`*.md`
-`!README.md`
-`README*` | Patterns are checked sequentially. A pattern that negates a previous pattern will re-include file paths. | -`hello.md`
-`README.md`
-`README.doc`| diff --git a/content/admin/index.md b/content/admin/index.md index dfbcb7a9914d..4cc8095a1af3 100644 --- a/content/admin/index.md +++ b/content/admin/index.md @@ -1,5 +1,5 @@ --- -title: Enterprise Administrators +title: Kubera Propel redirect_from: - /enterprise/admin/hidden/migrating-from-github-fi/ - /enterprise/admin diff --git a/content/desktop/index.md b/content/desktop/index.md index 6bcf00e56e59..42bec74193e5 100644 --- a/content/desktop/index.md +++ b/content/desktop/index.md @@ -1,7 +1,7 @@ --- -title: GitHub Desktop Documentation -shortTitle: GitHub Desktop -intro: Step-by-step guides to set up and use GitHub Desktop to manage your project work. +title: Kubera Documentation +shortTitle: Kubera +intro: Step-by-step guides to set up and Kubera. versions: free-pro-team: '*' --- diff --git a/content/developers/index.md b/content/developers/index.md index cd9dc830ba50..ff1bce4f19e6 100644 --- a/content/developers/index.md +++ b/content/developers/index.md @@ -1,5 +1,5 @@ --- -title: Developers +title: Kuber Chaos intro: 'Go deeper with {% data variables.product.prodname_dotcom %} by integrating with our APIs, customizing your {% data variables.product.prodname_dotcom %} workflow, and building and sharing apps with the community.' versions: free-pro-team: '*' diff --git a/content/github/administering-a-repository/about-branch-restrictions.md b/content/github/administering-a-repository/about-branch-restrictions.md deleted file mode 100644 index 1222abce4995..000000000000 --- a/content/github/administering-a-repository/about-branch-restrictions.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: About branch restrictions -intro: 'Branches within repositories that belong to organizations can be configured so that only certain users{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.18" %},{% else %} or{% endif %} teams{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.18" %}, or apps{% endif %} can push to the branch.' -product: '{% data reusables.gated-features.branch-restrictions %}' -redirect_from: - - /articles/about-branch-restrictions -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When you enable branch restrictions, only users, teams, or apps that have been given permission can push to the protected branch. For more information, see "[Enabling branch restrictions](/articles/enabling-branch-restrictions)" and "[About protected branches](/articles/about-protected-branches)." You can view and edit the users, teams, or apps with push access to a protected branch in the protected branch's settings. - -You can only give push access to a protected branch to users, teams, or installed {% data variables.product.prodname_github_apps %} with `write` access to a repository. - -People and apps with admin permissions to a repository are always able to push to a protected branch. - -{% tip %} - -**Note:** If "Include administrators" is selected, you've enabled required status checks on the branch, and if any status checks fail, any attempt to push changes to the protected branch will also fail, even for people and apps with admin permissions. For more information, see "[Enabling required status checks](/articles/enabling-required-status-checks)." - -{% endtip %} - -### Further reading - -- "[About protected branches](/articles/about-protected-branches)" -- "[Configuring protected branches](/articles/configuring-protected-branches)" -- "[About required status checks](/articles/about-required-status-checks)" -- "[Enabling required status checks](/articles/enabling-required-status-checks)" diff --git a/content/github/administering-a-repository/about-email-notifications-for-pushes-to-your-repository.md b/content/github/administering-a-repository/about-email-notifications-for-pushes-to-your-repository.md deleted file mode 100644 index 017123c89d20..000000000000 --- a/content/github/administering-a-repository/about-email-notifications-for-pushes-to-your-repository.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: About email notifications for pushes to your repository -intro: You can choose to automatically send email notifications to a specific email address when anyone pushes to the repository. -permissions: People with admin permissions in a repository can enable email notifications for pushes to your repository. -redirect_from: - - /articles/managing-notifications-for-pushes-to-a-repository/ - - /articles/receiving-email-notifications-for-pushes-to-a-repository/ - - /articles/about-email-notifications-for-pushes-to-your-repository/ - - /github/receiving-notifications-about-activity-on-github/about-email-notifications-for-pushes-to-your-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% if enterpriseServerVersions contains currentVersion %}{% data reusables.notifications.outbound_email_tip %}{% endif %} - -Each email notification for a push to a repository lists the new commits and links to a diff containing just those commits. In the email notification you'll see: - -- The name of the repository where the commit was made -- The branch a commit was made in -- The SHA1 of the commit, including a link to the diff in {% data variables.product.product_name %} -- The author of the commit -- The date when the commit was made -- The files that were changed as part of the commit -- The commit message - -You can filter email notifications you receive for pushes to a repository. For more information, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}"[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#filtering-email-notifications){% else %}"[About notification emails](/github/receiving-notifications-about-activity-on-github/about-email-notifications)." You can also turn off email notifications for pushes. For more information, see "[Choosing the delivery method for your notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications){% endif %}." - -### Enabling email notifications for pushes to your repository - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.sidebar-notifications %} -5. Type up to two email addresses, separated by whitespace, where you'd like notifications to be sent. If you'd like to send emails to more than two accounts, set one of the email addresses to a group email address. -![Email address textbox](/assets/images/help/settings/email_services_addresses.png) -6. If you operate your own server, you can verify the integrity of emails via the **Secret** token. This token is sent with the email as the `Approved` header. If the `Approved` header matches the token you sent, you can trust that the email is from {% data variables.product.product_name %}. -![Email secret textbox](/assets/images/help/settings/email_services_token.png) -7. Click **Save settings**. -![Save settings button](/assets/images/help/settings/save_notification_settings.png) - -### Further reading -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -- "[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications)" -{% else %} -- "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)" -- "[Choosing the delivery method for your notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications)" -- "[About email notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-email-notifications)" -- "[About web notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-web-notifications)"{% endif %} diff --git a/content/github/administering-a-repository/about-github-dependabot-version-updates.md b/content/github/administering-a-repository/about-github-dependabot-version-updates.md deleted file mode 100644 index d765f55cfb0b..000000000000 --- a/content/github/administering-a-repository/about-github-dependabot-version-updates.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: About GitHub Dependabot version updates -intro: 'You can use {% data variables.product.prodname_dependabot %} to keep the packages you use updated to the latest versions.' -redirect_from: - - /github/administering-a-repository/about-github-dependabot -versions: - free-pro-team: '*' ---- - -{% data reusables.dependabot.beta-note %} - -### About {% data variables.product.prodname_dependabot_version_updates %} - -{% data variables.product.prodname_dependabot %} takes the effort out of maintaining your dependencies. You can use it to ensure that your repository automatically keeps up with the latest releases of the packages and applications it depends on. - -You enable {% data variables.product.prodname_dependabot_version_updates %} by checking a configuration file in to your repository. The configuration file specifies the location of the manifest, or other package definition files, stored in your repository. {% data variables.product.prodname_dependabot_short %} uses this information to check for outdated packages and applications. {% data variables.product.prodname_dependabot_short %} determines if there is a new version of a dependency by looking at the semantic versioning ([semver](https://semver.org/)) of the dependency to decide whether it should update to that version. For certain package managers, {% data variables.product.prodname_dependabot_version_updates %} also supports vendoring. Vendored (or cached) dependencies are dependencies that are checked in to a specific directory in a repository, rather than referenced in a manifest. Vendored dependencies are available at build time even if package servers are unavailable. {% data variables.product.prodname_dependabot_version_updates %} can be configured to check vendored dependencies for new versions and update them if necessary. - -When {% data variables.product.prodname_dependabot_short %} identifies an outdated dependency, it raises a pull request to update the manifest to the latest version of the dependency. For vendored dependencies, {% data variables.product.prodname_dependabot_short %} raises a pull request to directly replace the outdated dependency with the new version. You check that your tests pass, review the changelog and release notes included in the pull request summary, and then merge it. For more information, see "[Enabling and disabling version updates](/github/administering-a-repository/enabling-and-disabling-version-updates)." - -If you enable security updates, {% data variables.product.prodname_dependabot %} also raises pull requests to update vulnerable dependencies. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-github-dependabot-security-updates)." - -{% data reusables.dependabot.dependabot-tos %} - -### Frequency of {% data variables.product.prodname_dependabot %} pull requests - -You specify how often to check each ecosystem for new versions in the configuration file: daily, weekly, or monthly. - -{% data reusables.dependabot.initial-updates %} - -If you've enabled security updates, you'll sometimes see extra pull requests for security updates. These are triggered by a {% data variables.product.prodname_dependabot_short %} alert for a dependency on your default branch. {% data variables.product.prodname_dependabot %} automatically raises a pull request to update the vulnerable dependency. - -### Supported repositories and ecosystems - -{% note %} - -{% data reusables.dependabot.private-dependencies %} - -{% endnote %} - -You can configure version updates for repositories that contain a dependency manifest or lock file for one of the supported package managers. For some package managers, you can also configure vendoring for dependencies. For more information, see "[Configuration options for dependency updates](/github/administering-a-repository/configuration-options-for-dependency-updates#vendor)." - -{% data reusables.dependabot.supported-package-managers %} - -If your repository already uses an integration for dependency management, you will need to disable this before enabling {% data variables.product.prodname_dependabot %}. For more information, see "[About integrations](/github/customizing-your-github-workflow/about-integrations)." diff --git a/content/github/administering-a-repository/about-merge-methods-on-github.md b/content/github/administering-a-repository/about-merge-methods-on-github.md deleted file mode 100644 index 91a47e1fac48..000000000000 --- a/content/github/administering-a-repository/about-merge-methods-on-github.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: About merge methods on GitHub -intro: 'You can allow contributors with push access to your repository to merge their pull requests on {% data variables.product.product_location %} with different merge options or enforce a specific merge method for all of your repository''s pull requests.' -redirect_from: - - /articles/about-merge-methods-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.pull_requests.configure_pull_request_merges_intro %} You can enforce one type of merge method, such as commit squashing or rebasing, by only enabling the desired method for your repository. - -{% data reusables.pull_requests.default_merge_option %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -The default merge method creates a merge commit. You can prevent anyone from pushing merge commits to a protected branch by enforcing a linear commit history. For more information, see "[Requiring a linear commit history](/github/administering-a-repository/requiring-a-linear-commit-history)."{% endif %} - -### Squashing your merge commits - -{% data reusables.pull_requests.squash_and_merge_summary %} - -Before enabling squashing commits, consider these disadvantages: -- You lose information about when specific changes were originally made and who authored the squashed commits. -- If you continue working on the head branch of a pull request after squashing and merging, and then create a new pull request between the same branches, commits that you previously squashed and merged will be listed in the new pull request. You may also have conflicts that you have to repeatedly resolve in each successive pull request. For more information, see "[About pull request merges](/github/collaborating-with-issues-and-pull-requests/about-pull-request-merges#squashing-and-merging-a-long-running-branch)." -- Some Git commands that use the "SHA" or "hash" ID may be harder to use since the SHA ID for the original commits is lost. For example, using [`git rerere`](https://git-scm.com/docs/git-rerere) may not be as effective. - -For more information, see "[Configuring commit squashing for pull requests](/articles/configuring-commit-squashing-for-pull-requests)." - -### Rebasing and merging your commits - -{% data reusables.pull_requests.rebase_and_merge_summary %} - -Before enabling commit rebasing, consider these disadvantages: -- Repository contributors may have to rebase on the command line, resolve any conflicts, and force push their changes to the pull request's topic branch (or remote head branch) before they can use the **rebase and merge** option on {% data variables.product.product_location %}. Force pushing must be done carefully so contributors don't overwrite work that others have based their work on. To learn more about when the **Rebase and merge** option is disabled on {% data variables.product.product_location %} and the workflow to re-enable it, see "[About pull request merges](/articles/about-pull-request-merges/#rebase-and-merge-your-pull-request-commits)." - -For more information, see "[Configuring commit rebasing for pull requests](/articles/configuring-commit-rebasing-for-pull-requests)." diff --git a/content/github/administering-a-repository/about-protected-branches.md b/content/github/administering-a-repository/about-protected-branches.md deleted file mode 100644 index a6f876c4124a..000000000000 --- a/content/github/administering-a-repository/about-protected-branches.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: About protected branches -intro: 'Protected branches ensure that collaborators on your repository cannot make irrevocable changes to branches. Enabling protected branches also allows you to enable other optional checks and requirements, like required status checks and required reviews.' -product: '{% data reusables.gated-features.protected-branches %}' -redirect_from: - - /articles/about-protected-branches - - /enterprise/admin/developer-workflow/about-protected-branches-and-required-status-checks -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.pull_requests.about-protected-branches %} You can choose to enforce restrictions on how a pull request is merged into your repository. - -Repository owners and people with admin permissions for a repository can enforce certain workflows or requirements, before a collaborator can merge a branch in your repository by creating protected branch rules. - -{% data reusables.repositories.branch-rules-example %} For more information, see "[Configuring protected branches](/articles/configuring-protected-branches/)." - -### Prioritization of protected branch rules - -If a repository has multiple protected branch rules that affect the same branches, the rules that include a specific branch name have the highest priority. If there is more than one protected branch rule that references the same specific branch name, then the branch rule created first will have higher priority. - -Protected branch rules that mention a special character, such as `*`, `?`, or `]`, are applied in the order they were created, so older rules with these characters have a higher priority. - -### Branch protection settings - -When you create a branch protection rule in a repository, collaborators cannot force push to the protected branch or delete the branch{% if currentVersion == "free-pro-team@latest" %} by default{% endif %}. You can enable other branch protection settings. For information, see "[Defining the mergeability of pull requests](/github/administering-a-repository/defining-the-mergeability-of-pull-requests)." - -### Further reading - -- "[About required status checks](/articles/about-required-status-checks)" -- "[About required reviews for pull requests](/articles/about-required-reviews-for-pull-requests)" -- "[About required commit signing](/articles/about-required-commit-signing)" diff --git a/content/github/administering-a-repository/about-releases.md b/content/github/administering-a-repository/about-releases.md deleted file mode 100644 index ef5a803f11a4..000000000000 --- a/content/github/administering-a-repository/about-releases.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: About releases -intro: 'You can create a release to package software, along with release notes and links to binary files, for other people to use.' -redirect_from: - - /articles/downloading-files-from-the-command-line/ - - /articles/downloading-files-with-curl/ - - /articles/about-releases - - /articles/getting-the-download-count-for-your-releases - - /github/administering-a-repository/getting-the-download-count-for-your-releases -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About releases - -![An overview of releases](/assets/images/help/releases/releases-overview.png) - -Releases are deployable software iterations you can package and make available for a wider audience to download and use. - -Releases are based on [Git tags](https://git-scm.com/book/en/Git-Basics-Tagging), which mark a specific point in your repository's history. A tag date may be different than a release date since they can be created at different times. For more information about viewing your existing tags, see "[Viewing your repository's releases and tags](/github/administering-a-repository/viewing-your-repositorys-releases-and-tags)." - -You can receive notifications when new releases are published in a repository without receiving notifications about other updates to the repository. For more information, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}"[Viewing your subscriptions](/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions){% else %}"[Watching and unwatching releases for a repository](/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-releases-for-a-repository){% endif %}." - -Anyone with read access to a repository can view and compare releases, but only people with write permissions to a repository can manage releases. For more information, see "[Managing releases in a repository](/github/administering-a-repository/managing-releases-in-a-repository)." - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -People with admin permissions to a repository can choose whether {% data variables.large_files.product_name_long %} ({% data variables.large_files.product_name_short %}) objects are included in the ZIP files and tarballs that {% data variables.product.product_name %} creates for each release. For more information, see "[Managing {% data variables.large_files.product_name_short %} objects in archives of your repository](/github/administering-a-repository/managing-git-lfs-objects-in-archives-of-your-repository)." -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -If a release fixes a security vulnerability, you should publish a security advisory in your repository. {% data variables.product.prodname_dotcom %} reviews each published security advisory and may use it to send {% data variables.product.prodname_dependabot_short %} alerts to affected repositories. For more information, see "[About GitHub Security Advisories](/github/managing-security-vulnerabilities/about-github-security-advisories)." - -You can view the **Dependents** tab of the dependency graph to see which repositories and packages depend on code in your repository, and may therefore be affected by a new release. For more information, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)." -{% endif %} - -You can also use the Releases API to gather information, such as the number of times people download a release asset. For more information, see "[Releases](/v3/repos/releases/)." - -{% if currentVersion == "free-pro-team@latest" %} -### Storage and bandwidth quotas - - Each file included in a release must be under {% data variables.large_files.max_file_size %}. There is no limit on the total size of a release, nor bandwidth usage. - -{% endif %} diff --git a/content/github/administering-a-repository/about-required-commit-signing.md b/content/github/administering-a-repository/about-required-commit-signing.md deleted file mode 100644 index 71ed73f2ab4f..000000000000 --- a/content/github/administering-a-repository/about-required-commit-signing.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: About required commit signing -intro: Required commit signing ensures that collaborators can only push verified signed commits to a protected branch. -product: '{% data reusables.gated-features.protected-branches %}' -redirect_from: - - /articles/about-required-commit-signing -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If you've enforced branch protections in your repository, you can set up required commit signing. For more information, see "[Configuring protected branches](/articles/configuring-protected-branches/)." - -When you enable required commit signing on a branch, contributors {% if currentVersion == "free-pro-team@latest" %}and bots{% endif %} can only push commits that have been signed and verified to the branch. For more information, see "[About commit signature verification](/articles/about-commit-signature-verification)." - -You can always push local commits to the branch if the commits are signed and verified. {% if currentVersion == "free-pro-team@latest" %}You can also merge signed and verified commits into the branch using a pull request on {% data variables.product.product_name %}. However, you cannot squash and merge a pull request into the branch on {% data variables.product.product_name %} unless you are the author of the pull request.{% else %} However, you cannot merge pull requests into the branch on {% data variables.product.product_name %}.{% endif %} You can {% if currentVersion == "free-pro-team@latest" %}squash and {% endif %}merge pull requests locally. For more information, see "[Checking out pull requests locally](/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally)."{% if currentVersion == "free-pro-team@latest" %} For more information about merge methods, see "[About merge methods on {% data variables.product.prodname_dotcom %}](/github/administering-a-repository/about-merge-methods-on-github)."{% endif %} - -{% note %} - -**Note:** Enabling required commit signing on a branch will make it more difficult to contribute. If a collaborator pushes an unsigned commit to a branch that has required commit signing enabled, they will need to rebase their commit to include a verified signature and force push the rewritten commit to the branch. - -{% endnote %} - -Administrators of a repository can push local commits that have not been signed and verified, however you can require administrators to be subject to required commit signing. For more information, see "[Enabling required commit signing](/articles/enabling-required-commit-signing)." - -### Further reading - -- "[About protected branches](/articles/about-protected-branches)" diff --git a/content/github/administering-a-repository/about-required-reviews-for-pull-requests.md b/content/github/administering-a-repository/about-required-reviews-for-pull-requests.md deleted file mode 100644 index fa6f323ce865..000000000000 --- a/content/github/administering-a-repository/about-required-reviews-for-pull-requests.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: About required reviews for pull requests -intro: Required reviews ensure that pull requests have a specific number of approving reviews before collaborators can make changes to a protected branch. -product: '{% data reusables.gated-features.protected-branches %}' -redirect_from: - - /articles/about-required-reviews-for-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If you've enforced branch protections in your repository, you can set up required reviews. For more information about enforcing branch protections, see "[Configuring protected branches](/articles/configuring-protected-branches/)." For more information about setting up required reviews, see "[Enabling required reviews for pull requests](/articles/enabling-required-reviews-for-pull-requests)." - -{% data reusables.pull_requests.required-reviews-for-prs-summary %} - -If a person with *admin* permissions chooses the **Request changes** option in a review, then that person must approve the pull request before it can be merged. If a reviewer who requests changes on a pull request isn't available, anyone with *admin* or *write* permission for the repository can dismiss the blocking review. For more information, see "[Dismissing a pull request review](/articles/dismissing-a-pull-request-review)." - -{% note %} - -**Note:** Repository admins can restrict the ability to dismiss pull request reviews to specific people or teams. For more information, see "[Enabling required reviews for pull requests](/articles/enabling-required-reviews-for-pull-requests)." - -{% endnote %} - -If you push a code-modifying commit to the branch of an approved pull request, the approval may be dismissed if repository admins have set up stale review dismissals. For more information, see "[Enabling required reviews for pull requests](/articles/enabling-required-reviews-for-pull-requests)." This doesn't apply if you push non-code-modifying commits, like merging the base branch into your pull request's branch. For information about the base branch, see "[About pull requests](/articles/about-pull-requests)." - -Unless required reviews have been set up to include repository admins, people with *admin* permissions can merge a pull request regardless of reviews from other admins. - -{% data reusables.repositories.review-policy-overlapping-commits %} - -You can't merge a pull request into a protected branch until someone with *write* or *admin* permissions approves it. If there are pending or rejected reviews, you'll receive an error message: - -```shell -remote: error: GH006: Protected branch update failed for refs/heads/main. -remote: error: Changes have been requested. -``` diff --git a/content/github/administering-a-repository/about-required-status-checks.md b/content/github/administering-a-repository/about-required-status-checks.md deleted file mode 100644 index 7d2b61d93266..000000000000 --- a/content/github/administering-a-repository/about-required-status-checks.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: About required status checks -intro: Required status checks ensure that all required CI tests are passing before collaborators can make changes to a protected branch. -product: '{% data reusables.gated-features.protected-branches %}' -redirect_from: - - /articles/about-required-status-checks -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About required status checks - -If you've enforced branch protections in your repository, you can set up required status checks. For more information, see "[Configuring protected branches](/articles/configuring-protected-branches/)" and "[Enabling required status checks](/articles/enabling-required-status-checks)." Required status checks can be checks or statuses. For more information, see "[About status checks](/github/administering-a-repository/enabling-required-status-checks)." - -After enabling required status checks, all required status checks must pass before branches can be merged into the protected branch. After all required status checks pass, any commits must either be pushed to another branch and then merged or pushed directly to the protected branch. - -![Merge protected branch ](/assets/images/help/repository/req-status-check-all-passed.png) - -{% tip %} - -**Note:** Any person or integration with write permissions to a repository can set the state of any status check in the repository. {% data variables.product.product_name %} does not verify that the author of a check is authorized to create a check with a certain name or modify an existing status. Before merging a pull request, you should verify that the author of each status, listed in the merge box, is expected. - -{% endtip %} - -Administrators of a repository can merge a protected branch even if required status checks have failed or are pending. You can require administrators to be subject to required status checks. For more information, see "[Enabling required status checks](/github/administering-a-repository/enabling-required-status-checks)." - -![Administrator merge of protected branch](/assets/images/help/repository/req-status-check-admin-merge.png) - -Administrators can also merge a protected branch even if the branch is out of date with the base branch. - -### Required status checks settings - -You can set up either loose or strict status checks, depending on whether you want to require your branch to be up to date with the base branch before merging. For more information, see "[Types of required status checks](/github/administering-a-repository/types-of-required-status-checks)." - -### Troubleshooting required status checks - -If you have a check and a status with the same name and you select that name as a required status check, both the check and the status are required. For more information, see "[Checks](/v3/checks/)." - -Once you've set up required status checks, your branch must be up to date with the base branch before merging. This ensures that your branch has been tested with the latest code from the base branch. If your branch is out of date, you'll need to merge the base branch into your branch. - -{% note %} - -**Note:** You can also bring your branch up to date with the base branch using Git rebase. For more information, see "[About Git rebase](/github/using-git/about-git-rebase)." - -{% endnote %} - -![Out-of-date branch](/assets/images/help/repository/req-status-check-out-of-date.png) - -You won't be able to push local changes to a protected branch until all required status checks pass. Instead, you'll receive an error message similar to the following: - -```shell -remote: error: GH006: Protected branch update failed for refs/heads/main. -remote: error: Required status check "ci-build" is failing -``` -{% note %} - -**Note:** Pull requests that are up to date and pass required status checks can be merged locally and pushed to the protected branch. This can be done without status checks running on the merge commit itself. - -{% endnote %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} - -Sometimes, the results of the status checks for the test merge commit and head commit will conflict. If the test merge commit has a status, it must pass. Otherwise, the status of the head commit must pass before you can merge the branch. For more information about test merge commits, see "[Pull Requests](/v3/pulls/#response-1)." - -![Branch with conflicting merge commits](/assets/images/help/repository/req-status-check-conflicting-merge-commits.png) -{% endif %} - -### Further reading - -- "[About status checks](/github/collaborating-with-issues-and-pull-requests/about-status-checks)" diff --git a/content/github/administering-a-repository/about-secret-scanning.md b/content/github/administering-a-repository/about-secret-scanning.md deleted file mode 100644 index 6a44dcb93931..000000000000 --- a/content/github/administering-a-repository/about-secret-scanning.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: About secret scanning -intro: '{% data variables.product.product_name %} scans repositories for known types of secrets, to prevent fraudulent use of secrets that were committed accidentally.' -redirect_from: - - /github/administering-a-repository/about-token-scanning - - /articles/about-token-scanning - - /articles/about-token-scanning-for-private-repositories -versions: - free-pro-team: '*' ---- - -If your project communicates with an external service, you might use a token or private key for authentication. Tokens and private keys are examples of secrets that a service provider can issue. If you check a secret into a repository, anyone who has read access to the repository can use the secret to access the external service with your privileges. We recommend that you store secrets in a dedicated, secure location outside of the repository for your project. - -If someone checks a secret from a {% data variables.product.company_short %} partner into a public or private repository, {% data variables.product.prodname_secret_scanning %} can detect the secret and help you mitigate the impact of the leak. - -Service providers can partner with {% data variables.product.company_short %} to provide their secret formats for scanning. For more information, see "[Secret scanning](/partnerships/secret-scanning)." - -### About {% data variables.product.prodname_secret_scanning %} for public repositories - -When you push to a public repository, {% data variables.product.product_name %} scans the content of the commits for secrets. If you switch a private repository to public, {% data variables.product.product_name %} scans the entire repository for secrets. - -When {% data variables.product.prodname_secret_scanning %} detects a set of credentials, we notify the service provider who issued the secret. The service provider validates the credential and then decides whether they should revoke the secret, issue a new secret, or reach out to you directly, which will depend on the associated risks to you or the service provider. - -{% data variables.product.product_name %} currently scans public repositories for secrets issued by the following service providers. - -- Adafruit -- Alibaba Cloud -- Amazon Web Services (AWS) -- Atlassian -- Azure -- Clojars -- CloudBees CodeShip -- Databricks -- Datadog -- Discord -- Dropbox -- Dynatrace -- Finicity -- Frame.io -- GitHub -- GoCardless -- Google Cloud -- Hashicorp Terraform -- Hubspot -- Mailchimp -- Mailgun -- MessageBird -- npm -- NuGet -- Palantir -- Plivo -- Postman -- Proctorio -- Pulumi -- Samsara -- Shopify -- Slack -- SSLMate -- Stripe -- Tencent Cloud -- Twilio - -### About {% data variables.product.prodname_secret_scanning %} for private repositories - -{% data reusables.secret-scanning.beta %} - -When you push commits to a private repository with {% data variables.product.prodname_secret_scanning %} enabled, {% data variables.product.product_name %} scans the contents of the commits for secrets. - -When {% data variables.product.prodname_secret_scanning %} detects a secret in a private repository, {% data variables.product.prodname_dotcom %} sends alerts. - -- {% data variables.product.prodname_dotcom %} sends an email alert to the repository administrators and organization owners. - -- {% data variables.product.prodname_dotcom %} displays an alert in the repository. For more information, see "[Managing alerts from {% data variables.product.prodname_secret_scanning %}](/github/administering-a-repository/managing-alerts-from-secret-scanning)." - -{% data variables.product.product_name %} currently scans private repositories for secrets issued by the following service providers. - -- Adafruit -- Alibaba Cloud -- Amazon Web Services (AWS) -- Atlassian -- Azure -- Clojars -- CloudBees CodeShip -- Databricks -- Discord -- Dropbox -- Dynatrace -- Finicity -- Frame.io -- GitHub -- GoCardless -- Google Cloud -- Hashicorp Terraform -- Hubspot -- Mailchimp -- Mailgun -- npm -- NuGet -- Palantir -- Postman -- Proctorio -- Pulumi -- Samsara -- Shopify -- Slack -- SSLMate -- Stripe -- Tencent Cloud -- Twilio - -{% note %} - -**Note:** {% data variables.product.prodname_secret_scanning_caps %} does not currently allow you to define your own patterns for detecting secrets. - -{% endnote %} - -### Further reading - -- "[About securing your repository](/github/administering-a-repository/about-securing-your-repository)" -- "[Keeping your account and data secure](/github/authenticating-to-github/keeping-your-account-and-data-secure)" diff --git a/content/github/administering-a-repository/about-securing-your-repository.md b/content/github/administering-a-repository/about-securing-your-repository.md deleted file mode 100644 index 63214df2328e..000000000000 --- a/content/github/administering-a-repository/about-securing-your-repository.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: About securing your repository -intro: '{% data variables.product.product_name %} provides a number of ways that you can help keep your repository secure.' -versions: - free-pro-team: '*' ---- - -### Setting up your repository securely - -The first step to securing a repository is to set up who can see and modify your code. For more information, see "[Managing repository settings](/github/administering-a-repository/managing-repository-settings)." - -### Securing your repository - -{% data variables.product.prodname_dotcom %} has a growing set of security features that help you keep your code secure. You can find these on the **Security** tab for your repository. - -- **Security policy** - - Make it easy for people to confidentially report security vulnerabilities they've found in your repository. For more information, see "[Adding a security policy to your repository](/github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository)." - -- **Security advisories** - - Privately discuss and fix security vulnerabilities in your repository's code. You can then publish a security advisory to alert your community to the vulnerability and encourage them to upgrade. For more information, see "[About {% data variables.product.prodname_security_advisories %}](/github/managing-security-vulnerabilities/about-github-security-advisories)." - -- **{% data variables.product.prodname_dependabot_short %} alerts and security updates** - - View alerts about dependencies that are known to contain security vulnerabilities, and choose whether to have pull requests generated automatically to update these dependencies. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" - and "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-github-dependabot-security-updates)." - -- **{% data variables.product.prodname_dependabot_short %} version updates** - - Use {% data variables.product.prodname_dependabot %} to automatically raise pull requests to keep your dependencies up-to-date. This helps reduce your exposure to older versions of dependencies. Using newer versions makes it easier to apply patches if security vulnerabilities are discovered, and also makes it easier for {% data variables.product.prodname_dependabot_security_updates %} to successfully raise pull requests to upgrade vulnerable dependencies. For more information, see "[About {% data variables.product.prodname_dependabot_version_updates %}](/github/administering-a-repository/about-github-dependabot-version-updates)." - -- **{% data variables.product.prodname_code_scanning_capc %} alerts** - - Automatically detect security vulnerabilities and coding errors in new or modified code. Potential problems are highlighted, with detailed information, allowing you to fix the code before it's merged into your default branch. For more information, see "[About code scanning](/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning)." - -- **Detected secrets** - - View any secrets that {% data variables.product.prodname_dotcom %} has found in your code. You should treat tokens or credentials that have been checked into the repository as compromised. For more information, see "[About secret scanning](/github/administering-a-repository/about-secret-scanning)." - -### Exploring dependencies -{% data variables.product.prodname_dotcom %}'s dependency graph allows you to explore: - -* Ecosystems and packages that your repository depends on -* Repositories and packages that depend on your repository - -You must enable the dependency graph before {% data variables.product.prodname_dotcom %} can generate {% data variables.product.prodname_dependabot_short %} alerts for dependencies with security vulnerabilities. - -You can find the dependency graph on the **Insights** tab for your repository. For more information, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)." diff --git a/content/github/administering-a-repository/automation-for-release-forms-with-query-parameters.md b/content/github/administering-a-repository/automation-for-release-forms-with-query-parameters.md deleted file mode 100644 index 9be76a8de042..000000000000 --- a/content/github/administering-a-repository/automation-for-release-forms-with-query-parameters.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Automation for release forms with query parameters -intro: 'To quickly create releases by auto-populating the new release form with customized information, you can add query parameters to the URL for the release form page.' -redirect_from: - - /articles/automation-for-release-forms-with-query-parameters -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Query parameters are optional parts of a URL you can customize to share a specific web page view, such as search filter results, an issue template, or the release form page on {% data variables.product.prodname_dotcom %}. To create your own query parameters, you must match the key and value pair. - -You must have the proper permissions for any action to use the equivalent query parameter. For example, you must have permission to create releases to pre-fill the releases form. For more information, see "[Managing releases in a repository](/github/administering-a-repository/managing-releases-in-a-repository)." - -If you create an invalid URL using query parameters, or if you don’t have the proper permissions, the URL will return a 404 error page. - -### Supported query parameters - -Query parameter | Example ---- | --- -`tag` | `https://github.com/octo-org/octo-repo/releases/new?tag=v1.0.1` creates a release based on a tag named "v1.0.1". -`target` | `https://github.com/octo-org/octo-repo/releases/new?target=release-1.0.1` creates a release based on the latest commit to the "release-1.0.1" branch. -`title` | `https://github.com/octo-org/octo-repo/releases/new?tag=v1.0.1&title=octo-1.0.1` creates a release named "octo-1.0.1" based on a tag named "v1.0.1". -`body` | `https://github.com/octo-org/octo-repo/releases/new?body=Adds+widgets+support` creates a release with the description "Adds widget support" in the release body. -`prerelease` | `https://github.com/octo-org/octo-repo/releases/new?prerelease=1` creates a release that will be identified as non-production ready. - -### Further reading - -- "[About automation for issues and pull requests with query parameters](/articles/about-automation-for-issues-and-pull-requests-with-query-parameters)" diff --git a/content/github/administering-a-repository/changing-the-default-branch.md b/content/github/administering-a-repository/changing-the-default-branch.md deleted file mode 100644 index 7e1a1c11352c..000000000000 --- a/content/github/administering-a-repository/changing-the-default-branch.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Changing the default branch -intro: 'If you have more than one branch in your repository, you can configure any branch as the default branch.' -permissions: People with admin permissions to a repository can change the default branch for the repository. -versions: - free-pro-team: '*' - enterprise-server: '*' -redirect_from: - - /github/administering-a-repository/setting-the-default-branch - - /articles/setting-the-default-branch ---- - -### About changing the default branch - -You can choose the default branch for a repository. The default branch is the base branch for pull requests and code commits. For more information about the default branch, see "[About branches](/github/collaborating-with-issues-and-pull-requests/about-branches#about-the-default-branch)." - -{% note %} - -**Note**: If you use the Git-Subversion bridge, changing the default branch will affect your `trunk` branch contents and the `HEAD` you see when you list references for the remote repository. For more information, see "[Support for Subversion clients](/github/importing-your-projects-to-github/support-for-subversion-clients)" and [git-ls-remote](https://git-scm.com/docs/git-ls-remote.html) in the Git documentation. - -{% endnote %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} - -{% data reusables.branches.set-default-branch %} - -{% endif %} - -### Prerequisites - -To change the default branch, your repository must have more than one branch. For more information, see "[Creating and deleting branches within your repository](/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository#creating-a-branch)." - -### Changing the default branch - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.repository-branches %} -1. Under "Default branch", to the right of the default branch name, click {% octicon "arrow-switch" aria-label="The switch icon with two arrows" %}. - ![Switch icon with two arrows to the right of current default branch name](/assets/images/help/repository/repository-options-defaultbranch-change.png) -1. Use the drop-down, then click a branch name. - ![Drop-down to choose new default branch](/assets/images/help/repository/repository-options-defaultbranch-drop-down.png) -1. Click **Update**. - !["Update" button after choosing a new default branch](/assets/images/help/repository/repository-options-defaultbranch-update.png) -1. Read the warning, then click **I understand, update the default branch.** - !["Update" button after choosing a new default branch](/assets/images/help/repository/repository-options-defaultbranch-i-understand.png) - -{% else %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.repository-branches %} -1. In the default branch drop-down, choose the new default branch. - ![Default branch dropdown selector](/assets/images/help/repository/repository-options-defaultbranch.png) -1. Click **Update**. - -{% endif %} diff --git a/content/github/administering-a-repository/classifying-your-repository-with-topics.md b/content/github/administering-a-repository/classifying-your-repository-with-topics.md deleted file mode 100644 index f2eb90a25e86..000000000000 --- a/content/github/administering-a-repository/classifying-your-repository-with-topics.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Classifying your repository with topics -intro: 'To help other people find and contribute to your project, you can add topics to your repository related to your project''s intended purpose, subject area, affinity groups, or other important qualities.' -redirect_from: - - /articles/about-topics/ - - /articles/classifying-your-repository-with-topics -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About topics - -With topics, you can explore repositories in a particular subject area, find projects to contribute to, and discover new solutions to a specific problem. Topics appear on the main page of a repository. You can click a topic name to {% if currentVersion == "free-pro-team@latest" %}see related topics and a list of other repositories classified with that topic{% else %}search for other repositories with that topic{% endif %}. - -![Main page of the test repository showing topics](/assets/images/help/repository/os-repo-with-topics.png) - -To browse the most used topics, go to https://github.com/topics/. - -{% if currentVersion == "free-pro-team@latest" %}You can contribute to {% data variables.product.product_name %}'s set of featured topics in the [github/explore](https://github.com/github/explore) repository. {% endif %} - -Repository admins can add any topics they'd like to a repository. Helpful topics to classify a repository include the repository's intended purpose, subject area, community, or language.{% if currentVersion == "free-pro-team@latest" %} Additionally, {% data variables.product.product_name %} analyzes public repository content and generates suggested topics that repository admins can accept or reject. Private repository content is not analyzed and does not receive topic suggestions.{% endif %} - -Public and private repositories can have topics, although you will only see private repositories that you have access to in topic search results. - -You can search for repositories that are associated with a particular topic. For more information, see "[Searching for repositories](/articles/searching-for-repositories#search-by-topic)." You can also search for a list of topics on {% data variables.product.product_name %}. For more information, see "[Searching topics](/articles/searching-topics)." - -### Adding topics to your repository - -{% data reusables.repositories.navigate-to-repo %}{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} -2. Under your repository description, click **Add topics**. - ![Add topics link on a repository's main page](/assets/images/help/repository/add-topics-link.png) -3. Type the topic you want to add to your repository, then type a space. - ![Form to enter topics](/assets/images/help/repository/add-topic-form.png) -4. After you've finished adding topics, click **Done**. - ![Form with a list of topics and Done button](/assets/images/help/repository/add-topics-done-button.png) -{% else %} -2. To the right of "About", click {% octicon "gear" aria-label="The Gear icon" %}. - ![Gear icon on main page of a repository](/assets/images/help/repository/edit-repository-details-gear.png) -3. Under "Topics", type the topic you want to add to your repository, then type a space. - ![Form to enter topics](/assets/images/help/repository/add-topic-form.png) -4. After you've finished adding topics, click **Save changes**. - !["Save changes" button in "Edit repository details"](/assets/images/help/repository/edit-repository-details-save-changes-button.png) -{% endif %} diff --git a/content/github/administering-a-repository/comparing-releases.md b/content/github/administering-a-repository/comparing-releases.md deleted file mode 100644 index f4b3f65f5ed5..000000000000 --- a/content/github/administering-a-repository/comparing-releases.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Comparing releases -intro: You can compare release tags to see changes to your repository between different releases. -permissions: People with read access to a repository can view and compare releases. -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.releases %} -3. Next to the release you want to use as your base, click **Compare**. - ![Compare release tags menu](/assets/images/help/releases/compare-tags-menu.png) -4. Use the "Compare" drop-down menu and select the tags you want to compare. - ![Compare release tags menu options](/assets/images/help/releases/compare-tags-menu-options.png) diff --git a/content/github/administering-a-repository/configuration-options-for-dependency-updates.md b/content/github/administering-a-repository/configuration-options-for-dependency-updates.md deleted file mode 100644 index da6eb3422b40..000000000000 --- a/content/github/administering-a-repository/configuration-options-for-dependency-updates.md +++ /dev/null @@ -1,619 +0,0 @@ ---- -title: Configuration options for dependency updates -intro: 'Detailed information for all the options you can use to customize how {% data variables.product.prodname_dependabot %} maintains your repositories.' -permissions: 'People with write permissions to a repository can configure {% data variables.product.prodname_dependabot %} for the repository.' -versions: - free-pro-team: '*' ---- - -{% data reusables.dependabot.beta-note %} - -### About the *dependabot.yml* file - -The {% data variables.product.prodname_dependabot %} configuration file, *dependabot.yml*, uses YAML syntax. If you're new to YAML and want to learn more, see "[Learn YAML in five minutes](https://www.codeproject.com/Articles/1214409/Learn-YAML-in-five-minutes)." - -You must store this file in the `.github` directory of your repository. When you add or update the *dependabot.yml* file, this triggers an immediate check for version updates. Any options that also affect security updates are used the next time a security alert triggers a pull request with for security update. For more information, see "[Enabling and disabling version updates](/github/administering-a-repository/enabling-and-disabling-version-updates)" and "[Configuring {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/configuring-github-dependabot-security-updates)." - -### Configuration options for *dependabot.yml* - -The *dependabot.yml* file must start with `version: 2` followed by an array of `updates`. - -| Option | Required | Description | -|:---|:---:|:---| -| [`package-ecosystem`](#package-ecosystem) | **X** | Package manager to use | -| [`directory`](#directory) | **X** | Location of package manifests | -| [`schedule.interval`](#scheduleinterval) | **X** | How often to check for updates | -| [`allow`](#allow) | | Customize which updates are allowed | -| [`assignees`](#assignees) | | Assignees to set on pull requests | -| [`commit-message`](#commit-message) | | Commit message preferences | -| [`ignore`](#ignore) | | Ignore certain dependencies or versions | -| [`labels`](#labels) | | Labels to set on pull requests | -| [`milestone`](#milestone) | | Milestone to set on pull requests | -| [`open-pull-requests-limit`](#open-pull-requests-limit) | | Limit number of open pull requests for version updates| -| [`pull-request-branch-name.separator`](#pull-request-branch-nameseparator) | | Change separator for pull request branch names | -| [`rebase-strategy`](#rebase-strategy) | | Disable automatic rebasing | -| [`reviewers`](#reviewers) | | Reviewers to set on pull requests | -| [`schedule.day`](#scheduleday) | | Day of week to check for updates | -| [`schedule.time`](#scheduletime) | | Time of day to check for updates (hh:mm) | -| [`schedule.timezone`](#scheduletimezone) | | Timezone for time of day (zone identifier) | -| [`target-branch`](#target-branch) | | Branch to create pull requests against | -| [`vendor`](#vendor) | | Update vendored or cached dependencies | -| [`versioning-strategy`](#versioning-strategy) | | How to update manifest version requirements | - -These options fit broadly into the following categories. - -- Essential set up options that you must include in all configurations: [`package-ecosystem`](#package-ecosystem), [`directory`](#directory),[`schedule.interval`](#scheduleinterval). -- Options to customize the update schedule: [`schedule.time`](#scheduletime), [`schedule.timezone`](#scheduletimezone), [`schedule.day`](#scheduleday). -- Options to control which dependencies are updated: [`allow`](#allow), [`ignore`](#ignore), [`vendor`](#vendor). -- Options to add metadata to pull requests: [`reviewers`](#reviewers), [`assignees`](#assignees), [`labels`](#labels), [`milestone`](#milestone). -- Options to change the behavior of the pull requests: [`target-branch`](#target-branch), [`versioning-strategy`](#versioning-strategy), [`commit-message`](#commit-message), [`rebase-strategy`](#rebase-strategy), [`pull-request-branch-name.separator`](#pull-request-branch-nameseparator). - -In addition, the [`open-pull-requests-limit`](#open-pull-requests-limit) option changes the maximum number of pull requests for version updates that {% data variables.product.prodname_dependabot %} can open. - -{% note %} - -**Note:** Some of these configuration options may also affect pull requests raised for security updates of vulnerable package manifests. - -Security updates are raised for vulnerable package manifests only on the default branch. When configuration options are set for the same branch (true unless you use `target-branch`), and specify a `package-ecosystem` and `directory` for the vulnerable manifest, then pull requests for security updates use relevant options. - -In general, security updates use any configuration options that affect pull requests, for example, adding metadata or changing their behavior. For more information about security updates, see "[Configuring {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/configuring-github-dependabot-security-updates)." - -{% endnote %} - -### `package-ecosystem` - -**Required** You add one `package-ecosystem` element for each package manager that you want {% data variables.product.prodname_dependabot_short %} to monitor for new versions. The repository must also contain a dependency manifest or lock file for each of these package managers. If you want to enable vendoring for a package manager that supports it, the vendored dependencies must be located in the required directory. For more information, see [`vendor`](#vendor) below. - -{% data reusables.dependabot.supported-package-managers %} - -```yaml -# Basic set up for three package managers - -version: 2 -updates: - - # Maintain dependencies for GitHub Actions - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "daily" - - # Maintain dependencies for npm - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - - # Maintain dependencies for Composer - - package-ecosystem: "composer" - directory: "/" - schedule: - interval: "daily" -``` - -### `directory` - -**Required** You must define the location of the package manifests for each package manager (for example, the *package.json* or *Gemfile*). You define the directory relative to the root of the repository for all ecosystems except GitHub Actions. For GitHub Actions, set the directory to `/` to check for workflow files in `.github/workflows`. - -```yaml -# Specify location of manifest files for each package manager - -version: 2 -updates: - - package-ecosystem: "composer" - # Files stored in repository root - directory: "/" - schedule: - interval: "daily" - - - package-ecosystem: "npm" - # Files stored in `app` directory - directory: "/app" - schedule: - interval: "daily" - - - package-ecosystem: "github-actions" - # Workflow files stored in the - # default location of `.github/workflows` - directory: "/" - schedule: - interval: "daily" -``` - -### `schedule.interval` - -**Required** You must define how often to check for new versions and raise pull requests for version updates to each package manager. By default, this is at 5am UTC. To modify this, use [`schedule.time`](#scheduletime) and [`schedule.timezone`](#scheduletimezone). - -- `daily`—runs on every weekday, Monday to Friday. -- `weekly`—runs once each week. By default, this is on Monday. To modify this, use [`schedule.day`](#scheduleday). -- `monthly`—runs once each month. This is on the first day of the month. - -```yaml -# Set update schedule for each package manager - -version: 2 -updates: - - - package-ecosystem: "github-actions" - directory: "/" - schedule: - # Check for updates to GitHub Actions every weekday - interval: "daily" - - - package-ecosystem: "composer" - directory: "/" - schedule: - # Check for updates managed by Composer once a week - interval: "weekly" -``` - -### `allow` - -{% data reusables.dependabot.default-dependencies-allow-ignore %} - -Use the `allow` option to customize which dependencies are updated. This has no impact on security updates for vulnerable dependencies. You can use the following options: - -- `dependency-name`—use to allow updates for dependencies with matching names, optionally using `*` to match zero or more characters. For Java dependencies, the format of the `dependency-name` attribute is: `groupId:artifactId`, for example: `org.kohsuke:github-api`. -- `dependency-type`—use to allow updates for dependencies of specific types. - - | Dependency types | Supported by package managers | Allow updates | - |------------------|-------------------------------|--------| - | `direct` | All | All explicitly defined dependencies. | - | `indirect` | `bundler`, `pip`, `composer`, `cargo` | Dependencies of direct dependencies (also known as sub-dependencies, or transient dependencies).| - | `all` | All | All explicitly defined dependencies. For `bundler`, `pip`, `composer`, `cargo`, also the dependencies of direct dependencies.| - | `production` | `bundler`, `composer`, `mix`, `maven`, `npm`, `pip` | Only dependencies in the "Product dependency group". | - | `development`| `bundler`, `composer`, `mix`, `maven`, `npm`, `pip` | Only dependencies in the "Development dependency group". | - -```yaml -# Customizing the dependencies to maintain with `allow` - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - allow: - # Allow updates for Lodash - - dependency-name: "lodash" - # Allow updates for React and any packages starting "react" - - dependency-name: "react*" - - - package-ecosystem: "composer" - directory: "/" - schedule: - interval: "daily" - allow: - # Allow both direct and indirect updates for all packages - - dependency-type: "all" - - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "daily" - allow: - # Allow only direct updates for - # Django and any packages starting "django" - - dependency-name: "django*" - dependency-type: "direct" - # Allow only production updates for Sphinx - - dependency-name: "sphinx" - dependency-type: "production" -``` - -### `assignees` - -Use `assignees` to specify individual assignees for all pull requests raised for a package manager. - -{% data reusables.dependabot.option-affects-security-updates %} - -```yaml -# Specify assignees for pull requests - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - # Add assignees - assignees: - - "octocat" -``` - -### `commit-message` - -By default, {% data variables.product.prodname_dependabot %} attempts to detect your commit message preferences and use similar patterns. Use the `commit-message` option to specify your preferences explicitly. - -Supported options - -- `prefix` specifies a prefix for all commit messages. -- `prefix-development` specifies a separate prefix for all commit messages that update dependencies in the Development dependency group. When you specify a value for this option, the `prefix` is used only for updates to dependencies in the Production dependency group. This is supported by: `bundler`, `composer`, `mix`, `maven`, `npm`, and `pip`. -- `include: "scope"` specifies that any prefix is followed by a list of the dependencies updated in the commit. - -{% data reusables.dependabot.option-affects-security-updates %} - -```yaml -# Customizing commit messages - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - commit-message: - # Prefix all commit messages with "npm" - prefix: "npm" - - - package-ecosystem: "composer" - directory: "/" - schedule: - interval: "daily" - # Prefix all commit messages with "Composer" - # include a list of updated dependencies - commit-message: - prefix: "Composer" - include: "scope" - - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "daily" - # Include a list of updated dependencies - # with a prefix determined by the dependency group - commit-message: - prefix: "pip prod" - prefix-development: "pip dev" - include: "scope" -``` - -### `ignore` - -{% data reusables.dependabot.warning-ignore-option %} - -#### Checking for existing ignore preferences - -Before you add an `ignore` option to the configuration file, check whether you've previously used any of the `@dependabot ignore` commands on a security update or version update pull request. {% data variables.product.prodname_dependabot %} stores these preferences for each package manager centrally and this information is overwritten by the `ignore` option. For more information about the `@dependabot ignore` commands, see "[Managing pull requests for dependency updates](/github/administering-a-repository/managing-pull-requests-for-dependency-updates)." - -You can check whether a repository has stored preferences by searching the repository for `"@dependabot ignore" in:comments`. If you review any pull requests in the results, you can decide whether or not to specify those ignored dependencies or versions in the configuration file. - -#### Specifying dependencies and versions to ignore - -{% data reusables.dependabot.default-dependencies-allow-ignore %} - -You can use the `ignore` option to customize which dependencies are updated. The `ignore` option supports the following options. - -- `dependency-name`—use to ignore updates for dependencies with matching names, optionally using `*` to match zero or more characters. For Java dependencies, the format of the `dependency-name` attribute is: `groupId:artifactId`, for example: `org.kohsuke:github-api`. -- `versions`—use to ignore specific versions or ranges of versions. If you want to define a range, use the standard pattern for the package manager (for example: `^1.0.0` for npm, or `~> 2.0` for Bundler). - -{% data reusables.dependabot.option-affects-security-updates %} - -```yaml -# Customizing the dependencies to maintain with `ignore` - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - ignore: - - dependency-name: "express" - # For Express, ignore all updates for version 4 and 5 - versions: ["4.x", "5.x"] - # For Loadash, ignore all updates - - dependency-name: "loadash" -``` - -{% note %} - -**Note**: {% data variables.product.prodname_dependabot_version_updates %} can't run version updates for any dependencies in manifests containing private git dependencies or private git registries, even if you add the private dependencies to the `ignore` option of your configuration file. For more information, see "[About {% data variables.product.prodname_dependabot_version_updates %}](/github/administering-a-repository/about-github-dependabot#supported-repositories-and-ecosystems)." - -{% endnote %} - -### `labels` - -{% data reusables.dependabot.default-labels %} - -Use `labels` to override the default labels and specify alternative labels for all pull requests raised for a package manager. If any of these labels is not defined in the repository, it is ignored. -To disable all labels, including the default labels, use `labels: [ ]`. - -{% data reusables.dependabot.option-affects-security-updates %} - -```yaml -# Specify labels for pull requests - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - # Specify labels for npm pull requests - labels: - - "npm" - - "dependencies" -``` - -### `milestone` - -Use `milestone` to associate all pull requests raised for a package manager with a milestone. You need to specify the numeric identifier of the milestone and not its label. If you view a milestone, the final part of the page URL, after `milestone`, is the identifier. For example: `https://github.com///milestone/3`. - -{% data reusables.dependabot.option-affects-security-updates %} - -```yaml -# Specify a milestone for pull requests - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - # Associate pull requests with milestone "4" - milestone: 4 -``` - -### `open-pull-requests-limit` - -By default, {% data variables.product.prodname_dependabot %} opens a maximum of five pull requests for version updates. Once there are five open pull requests, new requests are blocked until you merge or close some of the open requests. Use `open-pull-requests-limit` to change this limit. This also provides a simple way to temporarily disable version updates for a package manager. - -This option has no impact on security updates, which have a separate, internal limit of ten open pull requests. - -```yaml -# Changing the number of open pull requests allowed - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - # Disable version updates for npm dependencies - open-pull-requests-limit: 0 - - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "daily" - # Allow up to 10 open pull requests for pip dependencies - open-pull-requests-limit: 10 -``` - -### `pull-request-branch-name.separator` - -{% data variables.product.prodname_dependabot %} generates a branch for each pull request. Each branch name includes `dependabot`, and the package manager and dependency that are updated. By default, these parts are separated by a `/` symbol, for example: `dependabot/npm_and_yarn/next_js/acorn-6.4.1`. - -Use `pull-request-branch-name.separator` to specify a different separator. This can be one of: `"-"`, `_` or `/`. The hyphen symbol must be quoted because otherwise it's interpreted as starting an empty YAML list. - -{% data reusables.dependabot.option-affects-security-updates %} - -```yaml -# Specifying a different separator for branch names - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - pull-request-branch-name: - # Separate sections of the branch name with a hyphen - # for example, `dependabot-npm_and_yarn-next_js-acorn-6.4.1` - separator: "-" -``` - -### `rebase-strategy` - -By default, {% data variables.product.prodname_dependabot %} automatically rebases open pull requests when it detects conflicts. Use `rebase-strategy` to disable this behavior. - -Available rebase strategies - -- `disabled` to disable automatic rebasing. -- `auto` to use the default behavior and rebase open pull requests when conflicts are detected. - -{% data reusables.dependabot.option-affects-security-updates %} - -```yaml -# Disabling automatic rebasing - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - # Disable rebasing for npm pull requests - rebase-strategy: "disabled" -``` - -### `reviewers` - -Use `reviewers` to specify individual reviewers or teams of reviewers for all pull requests raised for a package manager. You must use the full team name, including the organization, as if you were @mentioning the team. - -{% data reusables.dependabot.option-affects-security-updates %} - -```yaml -# Specify reviewers for pull requests - -version: 2 -updates: - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "daily" - # Add reviewers - reviewers: - - "octocat" - - "my-username" - - "my-org/python-team" -``` - -### `schedule.day` - -When you set a `weekly` update schedule, by default, {% data variables.product.prodname_dependabot %} checks for new versions on Monday at 05:00 UTC. Use `schedule.day` to specify an alternative day to check for updates. - -Supported values - -- `monday` -- `tuesday` -- `wednesday` -- `thursday` -- `friday` -- `saturday` -- `sunday` - -```yaml -# Specify the day for weekly checks - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "weekly" - # Check for npm updates on Sundays - day: "sunday" -``` - -### `schedule.time` - -By default, {% data variables.product.prodname_dependabot %} checks for new versions at 05:00 UTC. Use `schedule.time` to specify an alternative time of day to check for updates (format: `hh:mm`). - -```yaml -# Set a time for checks -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - # Check for npm updates at 9am UTC - time: "09:00" -``` - -### `schedule.timezone` - -By default, {% data variables.product.prodname_dependabot %} checks for new versions at 05:00 UTC. Use `schedule.timezone` to specify an alternative time zone. The time zone identifier must be from the Time Zone database maintained by [iana](https://www.iana.org/time-zones). For more information, see [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). - -```yaml -# Specify the timezone for checks - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - time: "09:00" - # Use Japan Standard Time (UTC +09:00) - timezone: "Asia/Tokyo" -``` - -### `target-branch` - -By default, {% data variables.product.prodname_dependabot %} checks for manifest files on the default branch and raises pull requests for version updates against this branch. Use `target-branch` to specify a different branch for manifest files and for pull requests. When you use this option, the settings for this package manager will no longer affect any pull requests raised for security updates. - -```yaml -# Specify a non-default branch for pull requests for pip - -version: 2 -updates: - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "daily" - # Raise pull requests for version updates - # to pip against the `develop` branch - target-branch: "develop" - # Labels on pull requests for version updates only - labels: - - "pip dependencies" - - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "weekly" - # Check for npm updates on Sundays - day: "sunday" - # Labels on pull requests for security and version updates - labels: - - "npm dependencies" -``` - -### `vendor` - -Use the `vendor` option to tell {% data variables.product.prodname_dependabot_short %} to vendor dependencies when updating them. - -```yaml -# Configure version updates for both dependencies defined in manifests and vendored dependencies - -version: 2 -updates: - - package-ecosystem: "bundler" - # Raise pull requests to update vendored dependencies that are checked in to the repository - vendor: true - directory: "/" - schedule: - interval: "weekly" -``` - -{% data variables.product.prodname_dependabot_short %} only updates the vendored dependencies located in specific directories in a repository. - -| Package manager | Required file path for vendored dependencies | More information | - |------------------|-------------------------------|--------| - | `bundler` | The dependencies must be in the _vendor/cache_ directory.
Other file paths are not supported. | [`bundle cache` documentation](https://bundler.io/man/bundle-cache.1.html) | - | `gomod` | No path requirement (dependencies are usually located in the _vendor_ directory) | [`go mod vendor` documentation](https://golang.org/ref/mod#go-mod-vendor) | - - -### `versioning-strategy` - -When {% data variables.product.prodname_dependabot %} edits a manifest file to update a version, it uses the following overall strategies: - -- For apps, the version requirements are increased, for example: npm, pip and Composer. -- For libraries, the range of versions is widened, for example: Bundler and Cargo. - -Use the `versioning-strategy` option to change this behavior for supported package managers. - -{% data reusables.dependabot.option-affects-security-updates %} - -Available update strategies - -| Option | Supported by | Action | -|--------|--------------|--------| -| `lockfile-only` | `bundler`, `cargo`, `composer`, `mix`, `npm`, `pip` | Only create pull requests to update lockfiles updates. Ignore any new versions that would require package manifest changes. | -| `auto` | `bundler`, `cargo`, `composer`, `mix`, `npm`, `pip` | Follow the default strategy described above.| -| `widen`| `composer`, `npm` | Relax the version requirement to include both the new and old version, when possible. | -| `increase`| `bundler`, `composer`, `npm` | Always increase the version requirement to match the new version. | -| `increase-if-necessary` | `bundler`, `composer`, `npm` | Increase the version requirement only when required by the new version. | - -```yaml -# Customizing the manifest version strategy - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - # Update the npm manifest file to relax - # the version requirements - versioning-strategy: widen - - - package-ecosystem: "composer" - directory: "/" - schedule: - interval: "daily" - # Increase the version requirements for Composer - # only when required - versioning-strategy: increase-if-necessary - - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "daily" - # Only allow updates to the lockfile for pip and - # ignore any version updates that affect the manifest - versioning-strategy: lockfile-only -``` diff --git a/content/github/administering-a-repository/configuring-autolinks-to-reference-external-resources.md b/content/github/administering-a-repository/configuring-autolinks-to-reference-external-resources.md deleted file mode 100644 index 67f2446f02df..000000000000 --- a/content/github/administering-a-repository/configuring-autolinks-to-reference-external-resources.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Configuring autolinks to reference external resources -intro: You can add autolinks to external resources like JIRA issues and Zendesk tickets to help streamline your workflow. -product: '{% data reusables.gated-features.autolinks %}' -redirect_from: - - /articles/configuring-autolinks-to-reference-external-resources -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Anyone with admin permissions to a repository can configure autolink references to link issues, pull requests,{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} commit messages, and release descriptions{% else %} and commit messages{% endif %} to external third-party services. - -If you use Zendesk to track user-reported tickets, for example, you can reference a ticket number in the pull request you open to fix the issue. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. In the left sidebar, click **Autolink references**. -![Autolink references tab in the left sidebar](/assets/images/help/repository/autolink-references-tab.png) -4. Click **Add autolink reference**. -![Button to fill out autolink reference information](/assets/images/help/repository/add-autolink-reference-details.png) -5. Under "Reference prefix", type a short, meaningful prefix you want collaborators to use to generate autolinks for the external resource. -![Field to type abbreviation for external system](/assets/images/help/repository/add-reference-prefix-field.png) -6. Under "Target URL", type the link to the external system you want to link to. Make sure to keep `` as a variable for the reference number. -![Field to type URL to external system](/assets/images/help/repository/add-target-url-field.png) -7. Click **Add autolink reference**. -![Button to add autolink reference](/assets/images/help/repository/add-autolink-reference.png) diff --git a/content/github/administering-a-repository/configuring-commit-rebasing-for-pull-requests.md b/content/github/administering-a-repository/configuring-commit-rebasing-for-pull-requests.md deleted file mode 100644 index c75c9aa0a96f..000000000000 --- a/content/github/administering-a-repository/configuring-commit-rebasing-for-pull-requests.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Configuring commit rebasing for pull requests -intro: 'You can enforce, allow, or disable commit rebasing for all pull request merges on {% data variables.product.product_location %} in your repository.' -redirect_from: - - /articles/configuring-commit-rebasing-for-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.pull_requests.configure_pull_request_merges_intro %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Merge button", select **Allow rebase merging**. This allows contributors to merge a pull request by rebasing their individual commits onto the base branch. If you also select another merge method, collaborators will be able to choose the type of merge commit when merging a pull request. {% data reusables.repositories.squash-and-rebase-linear-commit-hisitory %} -![Pull request rebased commits](/assets/images/help/repository/pr-merge-rebase.png) diff --git a/content/github/administering-a-repository/configuring-commit-squashing-for-pull-requests.md b/content/github/administering-a-repository/configuring-commit-squashing-for-pull-requests.md deleted file mode 100644 index 4712cab45a48..000000000000 --- a/content/github/administering-a-repository/configuring-commit-squashing-for-pull-requests.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Configuring commit squashing for pull requests -intro: 'You can enforce, allow, or disable commit squashing for all pull request merges on {% data variables.product.product_location %} in your repository.' -redirect_from: - - /articles/configuring-commit-squashing-for-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.pull_requests.configure_pull_request_merges_intro %} - -{% data reusables.pull_requests.default-commit-message-squash-merge %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Merge button", optionally select **Allow merge commits**. This allows contributors to merge a pull request with a full history of commits. -![allow_standard_merge_commits](/assets/images/help/repository/pr-merge-full-commits.png) -4. Under "Merge button", select **Allow squash merging**. This allows contributors to merge a pull request by squashing all commits into a single commit. If you select another merge method besides **Allow squash merging**, collaborators will be able to choose the type of merge commit when merging a pull request. {% data reusables.repositories.squash-and-rebase-linear-commit-hisitory %} -![Pull request squashed commits](/assets/images/help/repository/pr-merge-squash.png) - -### Further reading - -- "[About pull request merges](/articles/about-pull-request-merges)" -- "[Merging a pull request](/articles/merging-a-pull-request)" diff --git a/content/github/administering-a-repository/configuring-protected-branches.md b/content/github/administering-a-repository/configuring-protected-branches.md deleted file mode 100644 index 680230c3a57a..000000000000 --- a/content/github/administering-a-repository/configuring-protected-branches.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Configuring protected branches -intro: 'If you''re a repository owner or have admin permissions in a repository, you can customize branch protections in the repository and enforce certain workflows, such as requiring more than one pull request review or requiring certain status checks to pass before allowing a pull request to merge.' -product: '{% data reusables.gated-features.protected-branches %}' -redirect_from: - - /articles/configuring-protected-branches - - /enterprise/admin/developer-workflow/configuring-protected-branches-and-required-status-checks -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -{% data reusables.repositories.branch-rules-example %} - -You can also set up automatic branch protection for all branches in your repository with the wildcard syntax `*`. Because {% data variables.product.prodname_dotcom %} uses the `File::FNM_PATHNAME` flag for the `File.fnmatch` syntax, the wildcard does not match directory separators (`/`). For example, `qa/*` will match all branches beginning with `qa/` and containing a single slash. You can include multiple slashes with `qa/**/*`, and you can extend the `qa` string with `qa**/**/*` to make it more inclusive. For more information about syntax options for branch rules, see the [fnmatch documentation](https://ruby-doc.org/core-2.5.1/File.html#method-c-fnmatch). - -To create an exception to an existing branch rule, you can create a new branch protection rule that is higher priority, such as a branch rule for a specific branch name. For more information about the priority order and other settings for protected branch rules, see "[About protected branches](/github/administering-a-repository/about-protected-branches)." - -{% note %} - -**Note:** To create a branch rule, the branch you specify doesn't have to exist yet in the repository. - -{% endnote %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.repository-branches %} -{% data reusables.repositories.add-branch-protection-rules %} -6. Optionally, you can configure specific branch rule settings. -![Protected branch rule settings](/assets/images/help/branches/branch-rule-settings.png) -7. To confirm your branch protection rule, click **Create** or **Save changes.** - -### Further reading - -- "[About protected branches](/github/administering-a-repository/about-protected-branches)" -- "[About required status checks](/github/administering-a-repository/about-required-status-checks)" -- "[Enabling required status checks](/github/administering-a-repository/enabling-required-status-checks)" -- "[About branch restrictions](/github/administering-a-repository/about-branch-restrictions)" -- "[Enabling branch restrictions](/github/administering-a-repository/enabling-branch-restrictions)" -- "[About required commit signing](/github/administering-a-repository/about-required-commit-signing)" diff --git a/content/github/administering-a-repository/configuring-pull-request-merges.md b/content/github/administering-a-repository/configuring-pull-request-merges.md deleted file mode 100644 index 575be048b725..000000000000 --- a/content/github/administering-a-repository/configuring-pull-request-merges.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Configuring pull request merges -intro: 'You can configure pull request merges on {% data variables.product.product_location %} to match your workflow and preferences for managing Git history by enabling, disabling, or enforcing standard merge commits, squashed commits, or rebased commits on all pull requests in your repository.' -mapTopic: true -redirect_from: - - /articles/configuring-pull-request-merges -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/administering-a-repository/configuring-secret-scanning-for-private-repositories.md b/content/github/administering-a-repository/configuring-secret-scanning-for-private-repositories.md deleted file mode 100644 index a92349ab186c..000000000000 --- a/content/github/administering-a-repository/configuring-secret-scanning-for-private-repositories.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Configuring secret scanning for private repositories -intro: 'You can configure how {% data variables.product.product_name %} scans your private repositories for secrets.' -permissions: 'People with admin permissions to a private repository can enable {% data variables.product.prodname_secret_scanning %} for the repository.' -versions: - free-pro-team: '*' ---- - -{% data reusables.secret-scanning.beta %} - -### Enabling {% data variables.product.prodname_secret_scanning %} for private repositories - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-security-and-analysis %} -4. To the right of "Secret scanning", click **Enable**. -![Enable secret scanning for your repository](/assets/images/help/repository/enable-secret-scanning.png) - -### Excluding alerts from {% data variables.product.prodname_secret_scanning %} in private repositories - -You can use a *secret_scanning.yml* file to exclude directories from {% data variables.product.prodname_secret_scanning %}. For example, you can exclude directories that contain tests or randomly generated content. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.files.add-file %} -3. In the file name field, type *.github/secret_scanning.yml*. -4. Under **Edit new file**, type `paths-ignore:` followed by the paths you want to exclude from {% data variables.product.prodname_secret_scanning %}. - ``` yaml - paths-ignore: - - "foo/bar/*.js" - ``` - - You can use special characters, such as `*` to filter paths. For more information about filter patterns, see "[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet)." - - {% note %} - - **Notes:** - - If there are more than 1,000 entries in `paths-ignore`, {% data variables.product.prodname_secret_scanning %} will only exclude the first 1,000 directories from scans. - - If *secret_scanning.yml* is larger than 1 MB, {% data variables.product.prodname_secret_scanning %} will ignore the entire file. - - {% endnote %} - -You can also ignore individual alerts from {% data variables.product.prodname_secret_scanning %}. For more information, see "[Managing alerts from {% data variables.product.prodname_secret_scanning %}](/github/administering-a-repository/managing-alerts-from-secret-scanning#managing-alerts)." - -### Further reading - -- "[Managing {% data variables.product.prodname_secret_scanning %} for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-secret-scanning-for-your-organization)" diff --git a/content/github/administering-a-repository/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository.md b/content/github/administering-a-repository/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository.md deleted file mode 100644 index c759845dad4e..000000000000 --- a/content/github/administering-a-repository/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Configuring the retention period for GitHub Actions artifacts and logs in your repository -intro: 'You can configure the retention period for {% data variables.product.prodname_actions %} artifacts and logs in your repository.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.23' ---- - -{% data reusables.actions.about-artifact-log-retention %} - -You can also define a custom retention period for a specific artifact created by a workflow. For more information, see "[Setting the retention period for an artifact](/actions/managing-workflow-runs/removing-workflow-artifacts#setting-the-retention-period-for-an-artifact)." - -## Setting the retention period for a repository - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.settings-sidebar-actions %} -{% data reusables.github-actions.change-retention-period-for-artifacts-logs %} diff --git a/content/github/administering-a-repository/customizing-dependency-updates.md b/content/github/administering-a-repository/customizing-dependency-updates.md deleted file mode 100644 index 26f64bba2178..000000000000 --- a/content/github/administering-a-repository/customizing-dependency-updates.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: Customizing dependency updates -intro: 'You can customize how {% data variables.product.prodname_dependabot %} maintains your dependencies.' -permissions: 'People with write permissions to a repository can configure {% data variables.product.prodname_dependabot %} for the repository.' -versions: - free-pro-team: '*' ---- - -{% data reusables.dependabot.beta-note %} - -### About customizing dependency updates - -After you've enabled version updates, you can customize how {% data variables.product.prodname_dependabot %} maintains your dependencies by adding further options to the *dependabot.yml* file. For example, you could: - -- Specify which day of the week to open pull requests for version updates: `schedule.day` -- Set reviewers, assignees, and labels for each package manager: `reviewers`, `assignees`, and `labels` -- Define a versioning strategy for changes to each manifest file: `versioning-strategy` -- Change the maximum number of open pull requests for version updates from the default of 5: `open-pull-requests-limit` -- Open pull requests for version updates to target a specific branch, instead of the default branch: `target-branch` - -For more information about the configuration options, see "[Configuration options for dependency updates](/github/administering-a-repository/configuration-options-for-dependency-updates)." - -When you update the *dependabot.yml* file in your repository, {% data variables.product.prodname_dependabot %} runs an immediate check with the new configuration. Within minutes you will see an updated list of dependencies on the **{% data variables.product.prodname_dependabot_short %}** tab, this may take longer if the repository has many dependencies. You may also see new pull requests for version updates. For more information, see "[Listing dependencies configured for version updates](/github/administering-a-repository/listing-dependencies-configured-for-version-updates)." - -### Impact of configuration changes on security updates - -If you customize the *dependabot.yml* file, you may notice some changes to the pull requests raised for security updates. These pull requests are always triggered by a security advisory for a dependency, rather than by the {% data variables.product.prodname_dependabot %} schedule. However, they inherit relevant configuration settings from the *dependabot.yml* file unless you specify a different target branch for version updates. - -For an example, see "[Setting custom labels](#setting-custom-labels)" below. - -### Modifying scheduling - -When you set a `daily` update schedule, by default, {% data variables.product.prodname_dependabot %} checks for new versions at 05:00 UTC. You can use `schedule.time` to specify an alternative time of day to check for updates (format: `hh:mm`). - -The example *dependabot.yml* file below expands the npm configuration to specify when {% data variables.product.prodname_dependabot %} should check for version updates to dependencies. - -```yaml -# dependabot.yml file with -# customized schedule for version updates - -version: 2 -updates: - # Keep npm dependencies up to date - - package-ecosystem: "npm" - directory: "/" - # Check the npm registry for updates at 2am UTC - schedule: - interval: "daily" - time: "02:00" -``` - -### Setting reviewers and assignees - -By default, {% data variables.product.prodname_dependabot %} raises pull requests without any reviewers or assignees. - -You can use `reviewers` and `assignees` to specify reviewers and assignees for all pull requests raised for a package manager. When you specify a team, you must use the full team name, as if you were @mentioning the team (including the organization). - -The example *dependabot.yml* file below changes the npm configuration so that all pull requests opened with version and security updates for npm will have two reviewers and one assignee. - -```yaml -# dependabot.yml file with -# reviews and an assignee for all npm pull requests - -version: 2 -updates: - # Keep npm dependencies up to date - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - # Raise all npm pull requests with reviewers - reviewers: - - "my-org/team-name" - - "octocat" - # Raise all npm pull requests with an assignee - assignees: - - "user-name" -``` - -### Setting custom labels - -{% data reusables.dependabot.default-labels %} - -You can use `labels` to override the default labels and specify alternative labels for all pull requests raised for a package manager. You can't create new labels in the *dependabot.yml* file, so the alternative labels must already exist in the repository. - -The example *dependabot.yml* file below changes the npm configuration so that all pull requests opened with version and security updates for npm will have custom labels. It also changes the Docker configuration to check for version updates against a custom branch and to raise pull requests with custom labels against that custom branch. The changes to Docker will not affect security update pull requests because security updates are always made against the default branch. - -{% note %} - -**Note:** The new `target-branch` must contain a Dockerfile to update, otherwise this change will have the effect of disabling version updates for Docker. - -{% endnote %} - -```yaml -# dependabot.yml file with -# customized npm configuration - -version: 2 -updates: - # Keep npm dependencies up to date - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - # Raise all npm pull requests with custom labels - labels: - - "npm dependencies" - - "triage-board" - - # Keep Docker dependencies up to date - - package-ecosystem: "docker" - directory: "/" - schedule: - interval: "daily" - # Raise pull requests for Docker version updates - # against the "develop" branch. The Docker configuration - # no longer affects security update pull requests. - target-branch: "develop" - # Use custom labels on pull requests for Docker version updates - labels: - - "Docker dependencies" - - "triage-board" -``` - -### More examples - -For more examples, see "[Configuration options for dependency updates](/github/administering-a-repository/configuration-options-for-dependency-updates)." diff --git a/content/github/administering-a-repository/customizing-how-changed-files-appear-on-github.md b/content/github/administering-a-repository/customizing-how-changed-files-appear-on-github.md deleted file mode 100644 index 8d24cc87936a..000000000000 --- a/content/github/administering-a-repository/customizing-how-changed-files-appear-on-github.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Customizing how changed files appear on GitHub -intro: 'To keep certain files from displaying in diffs by default, or counting toward the repository language, you can mark them with the `linguist-generated` attribute in a *.gitattributes* file.' -redirect_from: - - /articles/customizing-how-changed-files-appear-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -Use a *.gitattributes* file to mark files that match a given "pattern" with the specified attributes. A *.gitattributes* file uses the same rules for matching as _.gitignore_ files. For more information, see [PATTERN FORMAT](https://www.git-scm.com/docs/gitignore#_pattern_format) in the Git documentation. - -1. Unless the *.gitattributes* file already exists, create a *.gitattributes* file in the root of the repository. -2. Use the `linguist-generated` attribute to mark or unmark paths that you would like to be ignored for the repository's language statistics and hidden by default in diffs. - - For example, to mark `search/index.json` as a generated file, add this line to *.gitattributes*: - - ``` -search/index.json linguist-generated=true - ``` - -### Further reading -- "[Generated code](https://github.com/github/linguist/#generated-code)" in the Linguist documentation -- "[Creating new files](/articles/creating-new-files/)" diff --git a/content/github/administering-a-repository/customizing-your-repositorys-social-media-preview.md b/content/github/administering-a-repository/customizing-your-repositorys-social-media-preview.md deleted file mode 100644 index a804bc15c0d5..000000000000 --- a/content/github/administering-a-repository/customizing-your-repositorys-social-media-preview.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Customizing your repository's social media preview -intro: You can customize the image displayed on social media platforms when someone links to your repository. -redirect_from: - - /articles/customizing-your-repositorys-social-media-preview -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Until you add an image, repository links expand to show basic information about the repository and the owner's avatar. Adding an image to your repository can help identify your project across various social platforms. - -You can upload an image to a private repository, but your image can only be shared from a public repository. - -{% tip %} -Tip: Your image should be a PNG, JPG, or GIF file under 1 MB in size. For the best quality rendering, we recommend keeping the image at 640 by 320 pixels. -{% endtip %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Social preview," click **Edit** - - To add a new image, click **Upload an image...**. - - To remove an image, click **Remove image** - - ![Social preview dropdown](/assets/images/help/repository/social-preview.png) diff --git a/content/github/administering-a-repository/defining-the-mergeability-of-pull-requests.md b/content/github/administering-a-repository/defining-the-mergeability-of-pull-requests.md deleted file mode 100644 index 6e38b75407be..000000000000 --- a/content/github/administering-a-repository/defining-the-mergeability-of-pull-requests.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Defining the mergeability of pull requests -intro: 'You can require pull requests to pass a set of checks before they can be merged. For example, you can block pull requests that don''t pass status checks or require that pull requests have a specific number of approving reviews before they can be merged.' -redirect_from: - - /articles/defining-the-mergeability-of-a-pull-request/ - - /articles/defining-the-mergeability-of-pull-requests - - /enterprise/admin/developer-workflow/establishing-pull-request-merge-conditions -product: '{% data reusables.gated-features.protected-branches %}' -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/administering-a-repository/deleting-a-repository.md b/content/github/administering-a-repository/deleting-a-repository.md deleted file mode 100644 index 510325ccbe49..000000000000 --- a/content/github/administering-a-repository/deleting-a-repository.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Deleting a repository -intro: You can delete any repository or fork if you're either an organization owner or have admin permissions for the repository or fork. Deleting a forked repository does not delete the upstream repository. -redirect_from: - - /delete-a-repo/ - - /deleting-a-repo/ - - /articles/deleting-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.organizations.owners-and-admins-can %} delete an organization repository. If **Allow members to delete or transfer repositories for this organization** has been disabled, only organization owners can delete organization repositories. {% data reusables.organizations.new-repo-permissions-more-info %} - -{% if currentVersion == "free-pro-team@latest" %} -{% warning %} - -**Warning**: Deleting a repository will **permanently** delete release attachments and team permissions. This action **cannot** be undone. - -{% endwarning %} -{% endif %} - -Please also keep in mind that: -- Deleting a private repository will delete all of its forks. -- Deleting a public repository will not delete its forks. - -{% if currentVersion == "free-pro-team@latest" %} -You can restore some deleted repositories within 90 days. For more information, see "[Restoring a deleted repository](/articles/restoring-a-deleted-repository)." -{% endif %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -2. Under Danger Zone, click **Delete this repository**. - ![Repository deletion button](/assets/images/help/repository/repo-delete.png) -3. **Read the warnings**. -4. To verify that you're deleting the correct repository, type the name of the repository you want to delete. - ![Deletion labeling](/assets/images/help/repository/repo-delete-confirmation.png) -5. Click **I understand the consequences, delete this repository**. diff --git a/content/github/administering-a-repository/deleting-and-restoring-branches-in-a-pull-request.md b/content/github/administering-a-repository/deleting-and-restoring-branches-in-a-pull-request.md deleted file mode 100644 index b8251368ce85..000000000000 --- a/content/github/administering-a-repository/deleting-and-restoring-branches-in-a-pull-request.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Deleting and restoring branches in a pull request -intro: 'If you have write access in a repository, you can delete branches that are associated with closed or merged pull requests. You cannot delete branches that are associated with open pull requests.' -redirect_from: - - /articles/tidying-up-pull-requests/ - - /articles/restoring-branches-in-a-pull-request/ - - /articles/deleting-unused-branches/ - - /articles/deleting-and-restoring-branches-in-a-pull-request -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Deleting a branch used for a pull request - -You can delete a branch that is associated with a pull request if the pull request has been merged or closed and there are no other open pull requests referencing the branch. For information on closing branches that are not associated with pull requests, see "[Creating and deleting branches within your repository](/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository#deleting-a-branch)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-pr %} -{% data reusables.repositories.list-closed-pull-requests %} -4. In the list of pull requests, click the pull request that's associated with the branch that you want to delete. -5. Near the bottom of the pull request, click **Delete branch**. - ![Delete branch button](/assets/images/help/pull_requests/delete_branch_button.png) - - This button isn't displayed if there's currently an open pull request for this branch. - -### Restoring a deleted branch - -You can restore the head branch of a closed pull request. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-pr %} -{% data reusables.repositories.list-closed-pull-requests %} -4. In the list of pull requests, click the pull request that's associated with the branch that you want to restore. -5. Near the bottom of the pull request, click **Restore branch**. - ![Restore deleted branch button](/assets/images/help/branches/branches-restore-deleted.png) - -### Further reading - -- "[Creating and deleting branches within your repository](/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository)" -- "[Managing the automatic deletion of branches](/github/administering-a-repository/managing-the-automatic-deletion-of-branches)" diff --git a/content/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository.md b/content/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository.md deleted file mode 100644 index 12680debbe44..000000000000 --- a/content/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Disabling or limiting GitHub Actions for a repository -intro: 'Repository owners can disable, enable, and limit {% data variables.product.prodname_actions %} for a specific repository.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About {% data variables.product.prodname_actions %} permissions for your repository - -{% data reusables.github-actions.disabling-github-actions %} For more information about {% data variables.product.prodname_actions %}, see "[About {% data variables.product.prodname_actions %}](/actions/getting-started-with-github-actions/about-github-actions)." - -You can enable {% data variables.product.prodname_actions %} for your repository. {% data reusables.github-actions.enabled-actions-description %} You can disable {% data variables.product.prodname_actions %} for your repository altogether. {% data reusables.github-actions.disabled-actions-description %} - -Alternatively, you can enable {% data variables.product.prodname_actions %} in your repository but limit the actions a workflow can run. {% data reusables.github-actions.enabled-local-github-actions %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.23" %} - -### Managing {% data variables.product.prodname_actions %} permissions for your repository - -{% note %} - -**Note:** You might not be able to manage these settings if your organization has an overriding policy or is managed by an enterprise that has overriding policy. For more information, see "[Disabling or limiting {% data variables.product.prodname_actions %} for your organization](/github/setting-up-and-managing-organizations-and-teams/disabling-or-limiting-github-actions-for-your-organization)" or {% if currentVersion == "free-pro-team@latest" %}"[Enforcing {% data variables.product.prodname_actions %} policies in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-github-actions-policies-in-your-enterprise-account)."{% else if currentVersion ver_gt "enterprise-server@2.21"%}"[Enforcing {% data variables.product.prodname_actions %} policies for your enterprise](/enterprise/admin/github-actions/enforcing-github-actions-policies-for-your-enterprise)."{% endif %} - -{% endnote %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.settings-sidebar-actions %} -4. Under "Actions permissions", select an option. - ![Enable, disable, or limits actions for this repository](/assets/images/help/repository/enable-repo-actions.png) - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} - -### Managing {% data variables.product.prodname_actions %} permissions for your repository - -You can disable all workflows for a repository or set a policy that configures which actions can be used in a repository. - -{% data reusables.actions.actions-use-policy-settings %} - -{% note %} - -**Note:** You might not be able to manage these settings if your organization has an overriding policy or is managed by an enterprise that has overriding policy. For more information, see "[Disabling or limiting {% data variables.product.prodname_actions %} for your organization](/github/setting-up-and-managing-organizations-and-teams/disabling-or-limiting-github-actions-for-your-organization)" or {% if currentVersion == "free-pro-team@latest" %}"[Enforcing {% data variables.product.prodname_actions %} policies in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-github-actions-policies-in-your-enterprise-account)."{% else if currentVersion ver_gt "enterprise-server@2.21" %}"[Enforcing {% data variables.product.prodname_actions %} policies for your enterprise](/enterprise/admin/github-actions/enforcing-github-actions-policies-for-your-enterprise)." - -{% endif %} - -{% endnote %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.settings-sidebar-actions %} -1. Under **Actions permissions**, select an option. - ![Set actions policy for this organization](/assets/images/help/repository/actions-policy.png) -1. Click **Save**. - -### Allowing specific actions to run - -{% data reusables.actions.allow-specific-actions-intro %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.settings-sidebar-actions %} -1. Under **Actions permissions**, select **Allow specific actions** and add your required actions to the list. - ![Add actions to allow list](/assets/images/help/repository/actions-policy-allow-list.png) -2. Click **Save**. -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -### Enabling workflows for private repository forks - -{% data reusables.github-actions.private-repository-forks-overview %} - -#### Configuring the private fork policy for a repository - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.settings-sidebar-actions %} -{% data reusables.github-actions.private-repository-forks-configure %} -{% endif %} diff --git a/content/github/administering-a-repository/displaying-a-sponsor-button-in-your-repository.md b/content/github/administering-a-repository/displaying-a-sponsor-button-in-your-repository.md deleted file mode 100644 index f49eb6231fa2..000000000000 --- a/content/github/administering-a-repository/displaying-a-sponsor-button-in-your-repository.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Displaying a sponsor button in your repository -intro: You can add a sponsor button in your repository to increase the visibility of funding options for your open source project. -redirect_from: - - /github/building-a-strong-community/displaying-a-sponsor-button-in-your-repository - - /articles/displaying-a-sponsor-button-in-your-repository -versions: - free-pro-team: '*' ---- - -### About FUNDING files - -You can configure your sponsor button by editing a _FUNDING.yml_ file in your repository's `.github` folder, on the default branch. You can configure the button to include sponsored developers in {% data variables.product.prodname_sponsors %}, external funding platforms, or a custom funding URL. For more information about {% data variables.product.prodname_sponsors %}, see "[About GitHub Sponsors](/articles/about-github-sponsors)." - -You can add one username, package name, or project name per external funding platform and up to four custom URLs. You can add up to four sponsored developers or organizations in {% data variables.product.prodname_sponsors %}. Add each platform on a new line, using the following syntax: - -Platform | Syntax --------- | ----- -[CommunityBridge](https://communitybridge.org) | `community_bridge: PROJECT-NAME` -[{% data variables.product.prodname_sponsors %}](https://github.com/sponsors) | `github: USERNAME` or `github: [USERNAME, USERNAME, USERNAME, USERNAME]` -[IssueHunt](https://issuehunt.io/) | `issuehunt: USERNAME` -[Ko-fi](https://ko-fi.com/) | `ko_fi: USERNAME` -[Liberapay](https://en.liberapay.com/) | `liberapay: USERNAME` -[Open Collective](https://opencollective.com/) | `open_collective: USERNAME` -[Otechie](https://otechie.com/)| `otechie: USERNAME` -[Patreon](https://www.patreon.com/) | `patreon: USERNAME` -[Tidelift](https://tidelift.com/) | `tidelift: PLATFORM-NAME/PACKAGE-NAME` -Custom URL | `custom: LINK1` or `custom: [LINK1, LINK2, LINK3, LINK4]` - -For Tidelift, use the `platform-name/package-name` syntax with the following platform names: - -Language | Platform name --------- | ------------- -JavaScript | `npm` -Python | `pypi` -Ruby | `rubygems` -Java | `maven` -PHP | `packagist` -C# | `nuget` - -Here's an example _FUNDING.yml_ file: -``` -github: [octocat, surftocat] -patreon: octocat -tidelift: npm/octo-package -custom: ["https://www.paypal.me/octocat", octocat.com] -``` - -{% note %} - -**Note:** If a custom URL in an array includes `:`, you must wrap the URL in quotes. For example, `"https://www.paypal.me/octocat"`. - -{% endnote %} - -You can create a default sponsor button for your organization or user account. For more information, see "[Creating a default community health file](/github/building-a-strong-community/creating-a-default-community-health-file)." - -{% note %} - -Funding links provide a way for open source projects to receive direct financial support from their community. We don’t support the use of funding links for other purposes, such as for advertising, or supporting political, community, or charity groups. If you have questions about whether your intended use is supported, please contact {% data variables.contact.contact_support %}. - -{% endnote %} - -### Displaying a sponsor button in your repository - -Anyone with admin permissions can enable a sponsor button in a repository. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under Features, select **Sponsorships**. - ![Checkbox to enable Sponsorships](/assets/images/help/sponsors/sponsorships-checkbox.png) -4. Under "Sponsorships", click **Set up sponsor button** or **Override funding links**. - ![Button to set up sponsor button](/assets/images/help/sponsors/sponsor-set-up-button.png) -5. In the file editor, follow the instructions in the _FUNDING.yml_ file to add links to your funding locations. - ![Edit the FUNDING file to add links to funding locations](/assets/images/help/sponsors/funding-yml-file.png) -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_new_file %} - -### Further reading -- "[About {% data variables.product.prodname_sponsors %} for open source contributors](/github/supporting-the-open-source-community-with-github-sponsors/about-github-sponsors-for-open-source-contributors)" -- "[FAQ with the {% data variables.product.prodname_sponsors %} team](https://github.blog/2019-06-12-faq-with-the-github-sponsors-team/)" on {% data variables.product.prodname_blog %} diff --git a/content/github/administering-a-repository/enabling-and-disabling-version-updates.md b/content/github/administering-a-repository/enabling-and-disabling-version-updates.md deleted file mode 100644 index c3e997f0dc74..000000000000 --- a/content/github/administering-a-repository/enabling-and-disabling-version-updates.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Enabling and disabling version updates -intro: 'You can configure your repository so that {% data variables.product.prodname_dependabot %} automatically updates the packages you use.' -permissions: 'People with write permissions to a repository can enable or disable {% data variables.product.prodname_dependabot_version_updates %} for the repository.' -versions: - free-pro-team: '*' ---- - -{% data reusables.dependabot.beta-note-no-link %} - -### About version updates for dependencies - -You enable {% data variables.product.prodname_dependabot_version_updates %} by checking a *dependabot.yml* configuration file in to your repository's `.github` directory. {% data variables.product.prodname_dependabot_short %} then raises pull requests to keep the dependencies you configure up-to-date. For each package manager's dependencies that you want to update, you must specify the location of the package manifest files and how often to check for updates to the dependencies listed in those files. For information about enabling security updates, see "[Configuring {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/configuring-github-dependabot-security-updates)." - -{% data reusables.dependabot.initial-updates %} For more information, see "[Customizing dependency updates](/github/administering-a-repository/customizing-dependency-updates)." - -### Enabling {% data variables.product.prodname_dependabot_version_updates %} - -{% note %} - -{% data reusables.dependabot.private-dependencies %} - -{% endnote %} - -{% data reusables.dependabot.create-dependabot-yml %} -1. Use `package-ecosystem` to specify the package managers to monitor. -1. For each package manager, use: - - `directory` to specify the location of the manifest or other definition files. - - `schedule.interval` to specify how often to check for new versions. -{% data reusables.dependabot.check-in-dependabot-yml %} - -#### Example *dependabot.yml* file - -The example *dependabot.yml* file below configures version updates for two package mangers: npm and Docker. When this file is checked in, {% data variables.product.prodname_dependabot %} checks the manifest files on the default branch for outdated dependencies. If it finds outdated dependencies, it will raise pull requests against the default branch to update the dependencies. - -```yaml -# Basic dependabot.yml file with -# minimum configuration for two package managers - -version: 2 -updates: - # Enable version updates for npm - - package-ecosystem: "npm" - # Look for `package.json` and `lock` files in the `root` directory - directory: "/" - # Check the npm registry for updates every day (weekdays) - schedule: - interval: "daily" - - # Enable version updates for Docker - - package-ecosystem: "docker" - # Look for a `Dockerfile` in the `root` directory - directory: "/" - # Check for updates once a week - schedule: - interval: "weekly" -``` - -In the example above, if the Docker dependencies were very outdated, you might want to start with a `daily` schedule until the dependencies are up-to-date, and then drop back to a weekly schedule. - -#### Enabling version updates on forks - -If you want to enable version updates on forks, there's an extra step. Version updates are not automatically enabled on forks when a *dependabot.yml* configuration file is present. This ensures that fork owners don't unintentionally enable version updates when they pull changes including a *dependabot.yml* configuration file from the original repository. - -On a fork, you also need to explicitly enable {% data variables.product.prodname_dependabot %}. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -{% data reusables.repositories.click-dependency-graph %} -{% data reusables.dependabot.click-dependabot-tab %} -5. Under "Enable Dependabot", click **Enable Dependabot**. - -### Checking the status of version updates - -After you enable version updates, you'll see a new **Dependabot** tab in the dependency graph for the repository. This tab shows which package managers {% data variables.product.prodname_dependabot %} is configured to monitor and when {% data variables.product.prodname_dependabot_short %} last checked for new versions. - -![Repository Insights tab, Dependency graph, Dependabot tab](/assets/images/help/dependabot/dependabot-tab-view-beta.png) - -For information, see "[Listing dependencies configured for version updates](/github/administering-a-repository/listing-dependencies-configured-for-version-updates)." - -### Disabling {% data variables.product.prodname_dependabot_version_updates %} - -You can disable version updates entirely by deleting the *dependabot.yml* file from your repository. More usually, you want to disable updates temporarily for one or more dependencies, or package managers. - -- Package managers: disable by setting `open-pull-requests-limit: 0` or by commenting out the relevant `package-ecosystem` in the configuration file. -- Specific dependencies: disable by adding `ignore` attributes for packages or applications that you want to exclude from updates. - -When you disable dependencies, you can use wild cards to match a set of related libraries. You can also specify which versions to exclude. This is particularly useful if you need to block updates to a library, pending work to support a breaking change to its API, but want to get any security fixes to the version you use. - -#### Example disabling version updates for some dependencies - -The example *dependabot.yml* file below includes examples of the different ways to disable updates to some dependencies, while allowing other updates to continue. - -```yaml -# dependabot.yml file with updates -# disabled for Docker and limited for npm - -version: 2 -updates: - # Configuration for Dockerfile - - package-ecosystem: "docker" - directory: "/" - schedule: - interval: "weekly" - # Disable all pull requests for Docker dependencies - open-pull-requests-limit: 0 - - # Configuration for npm - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - # Overwrite any ignores created using `@dependabot ignore` commands - ignore: - # Ignore updates to packages that start 'aws' - # Wildcards match zero or more arbitrary characters - - dependency-name: "aws*" - # Ignore some updates to the 'express' package - - dependency-name: "express" - # Ignore only new versions for 4.x and 5.x - versions: ["4.x", "5.x"] -``` - -{% data reusables.dependabot.warning-ignore-option %} - -For more information about checking for existing ignore preferences, see "[Configuration options for dependency updates](/github/administering-a-repository/configuration-options-for-dependency-updates#ignore)." diff --git a/content/github/administering-a-repository/enabling-anonymous-git-read-access-for-a-repository.md b/content/github/administering-a-repository/enabling-anonymous-git-read-access-for-a-repository.md deleted file mode 100644 index cd39c77f53c0..000000000000 --- a/content/github/administering-a-repository/enabling-anonymous-git-read-access-for-a-repository.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Enabling anonymous Git read access for a repository -intro: 'As a repository administrator, you can enable or disable anonymous Git read access for public repositories that meet certain requirements.' -redirect_from: - - /articles/enabling-anonymous-git-read-access-for-a-repository -versions: - enterprise-server: '*' ---- - -Repository administrators can change the anonymous Git read access setting for a specific repository if: -- A site administrator has enabled private mode and anonymous Git read access. -- The repository is public on the instance and is not a fork. -- A site administrator has not disabled anonymous Git read access for the repository. - -{% data reusables.enterprise_user_management.exceptions-for-enabling-anonymous-git-read-access %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Next to "Enable anonymous Git read access", click **Enable**. -!["Enabled" button under "Anonymous Git read access"](/assets/images/help/repository/enable-git-read-access-for-a-repo.png) -4. Review the changes. To confirm, type in the name of the repository and click **I understand, enable anonymous Git read access.** diff --git a/content/github/administering-a-repository/enabling-branch-restrictions.md b/content/github/administering-a-repository/enabling-branch-restrictions.md deleted file mode 100644 index 6357b53cd78f..000000000000 --- a/content/github/administering-a-repository/enabling-branch-restrictions.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Enabling branch restrictions -intro: 'You can enforce branch restrictions so that only certain users{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.18" %},{% else %} or{% endif %} teams{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.18" %}, or apps{% endif %} can push to a protected branch in repositories owned by your organization.' -product: '{% data reusables.gated-features.branch-restrictions %}' -redirect_from: - - /articles/enabling-branch-restrictions -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Anyone with admin permissions to an organization-owned repository can enable branch restrictions. - -{% data reusables.repositories.protected-branches-options %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.repository-branches %} -{% data reusables.repositories.add-branch-protection-rules %} -{% data reusables.repositories.include-administrators %} -6. Under "Protect matching branches", select **Restrict who can push to matching branches**. -![Branch restriction checkbox](/assets/images/help/repository/restrict-branch.png) -8. Search for and select the people, teams, or apps who will have permission to push to the protected branch. -![Branch restriction search](/assets/images/help/repository/restrict-branch-search.png) -9. Click **Create**. - -### Further reading - -- "[About protected branches](/github/administering-a-repository/about-protected-branches)" -- "[Configuring protected branches](/github/administering-a-repository/configuring-protected-branches)" -- "[About required status checks](/github/administering-a-repository/about-required-status-checks)" -- "[Enabling required status checks](/github/administering-a-repository/enabling-required-status-checks)" diff --git a/content/github/administering-a-repository/enabling-deletion-of-a-protected-branch.md b/content/github/administering-a-repository/enabling-deletion-of-a-protected-branch.md deleted file mode 100644 index eb08be107dcb..000000000000 --- a/content/github/administering-a-repository/enabling-deletion-of-a-protected-branch.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Enabling deletion of a protected branch -intro: You can allow anyone with write access for a repository to delete a protected branch. -product: '{% data reusables.gated-features.protected-branches %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.20' ---- - -Anyone with admin permissions to a repository can enable branch deletions. - -By default, you cannot delete a protected branch. When you enable deletion to a protected branch, anyone with at least write permissions to the repository can delete the branch, including those with admin permissions. - -{% data reusables.repositories.protected-branches-options %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.repository-branches %} -{% data reusables.repositories.add-branch-protection-rules %} -6. Under "Rules applied to everyone including administrators", select **Allow deletions**. -![Allow branch deletions option](/assets/images/help/repository/allow-branch-deletions.png) -7. Click **Create**. diff --git a/content/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch.md b/content/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch.md deleted file mode 100644 index 73d9b1a99ece..000000000000 --- a/content/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Enabling force pushes to a protected branch -intro: You can allow force pushes to a protected branch. -product: '{% data reusables.gated-features.protected-branches %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.20' ---- - -Anyone with admin permissions to a repository can enable force pushes. - -### About force pushes to protected branches - -By default, force pushes are blocked on all protected branches. When you enable force pushes to a protected branch, anyone with at least write permissions to the repository can force push to the branch, including those with admin permissions. - -Enabling force pushes will not override any other branch protection rules. For example, if a branch requires a linear commit history, you cannot force push merge commits to that branch. - -{% if enterpriseServerVersions contains currentVersion %}You cannot enable force pushes for a protected branch if a site administrator has blocked force pushes to all branches in your repository. For more information, see "[Blocking force pushes to repositories owned by a user account or organization](/enterprise/{{ currentVersion }}/admin/developer-workflow/blocking-force-pushes-to-repositories-owned-by-a-user-account-or-organization)." - -If a site administrator has blocked force pushes to the default branch only, you can still enable force pushes for any other protected branch.{% endif %} - -{% data reusables.repositories.protected-branches-options %} - -### Enabling force pushes - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.repository-branches %} -{% data reusables.repositories.add-branch-protection-rules %} -6. Under "Rules applied to everyone including administrators", select **Allow force pushes**. -![Allow force pushes option](/assets/images/help/repository/allow-force-pushes.png) -7. Click **Create**. diff --git a/content/github/administering-a-repository/enabling-required-commit-signing.md b/content/github/administering-a-repository/enabling-required-commit-signing.md deleted file mode 100644 index 8aa09e9816e8..000000000000 --- a/content/github/administering-a-repository/enabling-required-commit-signing.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Enabling required commit signing -intro: Repository administrators can enforce required commit signing on a branch to block all commits that are not signed and verified. -product: '{% data reusables.gated-features.protected-branches %}' -redirect_from: - - /articles/enabling-required-commit-signing -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Before enabling required commit signing on a branch, you must first set the branch up as a protected branch. For more information, see "[Configuring protected branches](/github/administering-a-repository/configuring-protected-branches)." - -{% data reusables.repositories.protected-branches-options %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.repository-branches %} -{% data reusables.repositories.add-branch-protection-rules %} -5. Select **Require signed commits**. -![Require signed commits option](/assets/images/help/repository/require-signed-commits.png) -6. Optionally, select **Include administrators**. This enforces the required signed commits on the repository administrators. -![Include administrators checkbox](/assets/images/help/repository/include-admins-protected-branches.png) -7. Click **Create**. diff --git a/content/github/administering-a-repository/enabling-required-reviews-for-pull-requests.md b/content/github/administering-a-repository/enabling-required-reviews-for-pull-requests.md deleted file mode 100644 index cec2af37d2eb..000000000000 --- a/content/github/administering-a-repository/enabling-required-reviews-for-pull-requests.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Enabling required reviews for pull requests -intro: Repository administrators can enforce required reviews so that pull requests must have a specific number of approving reviews before they are merged. -product: '{% data reusables.gated-features.protected-branches %}' -redirect_from: - - /articles/enabling-required-reviews-for-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Before enabling required reviews on a branch, you must first set the branch up as a protected branch. For more information, see "[Configuring protected branches](/github/administering-a-repository/configuring-protected-branches)." - -{% data reusables.repositories.protected-branches-options %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.repository-branches %} -{% data reusables.repositories.add-branch-protection-rules %} -5. Select **Require pull request reviews before merging**. -![Pull request review restriction checkbox](/assets/images/help/repository/PR-reviews-required.png) -6. In the Required approving reviews drop-down menu, select the number of approving reviews you'd like to require on the branch. -![Drop-down menu to select number of required review approvals](/assets/images/help/repository/number-of-required-review-approvals.png) -7. Optionally, select **Dismiss stale pull request approvals when new commits are pushed**. This dismisses a pull request approval review when a code-modifying commit is pushed to the branch. -![Dismiss stale pull request approvals when new commits are pushed checkbox](/assets/images/help/repository/PR-reviews-required-dismiss-stale.png) -8. Optionally, select **Require review from Code Owners** to require review from a code owner when the pull request affects code that has a designated owner. For more information, see "[About code owners](/github/creating-cloning-and-archiving-repositories/about-code-owners)." -![Require review from code owners](/assets/images/help/repository/PR-review-required-code-owner.png) -9. Optionally, if the repository is part of an organization, select **Restrict who can dismiss pull request reviews** to search for and select the people or teams who can dismiss pull request reviews. For more information, see "[Dismissing a pull request review](/github/collaborating-with-issues-and-pull-requests/dismissing-a-pull-request-review)." This option is not available for personal repositories. -![Restrict who can dismiss pull request reviews checkbox](/assets/images/help/repository/PR-review-required-dismissals.png) -{% data reusables.repositories.include-administrators %} -11. Click **Create**. - -### Further reading - -- "[About required reviews for pull requests](/github/administering-a-repository/about-required-reviews-for-pull-requests)" -- "[About protected branches](/github/administering-a-repository/about-protected-branches)" -- "[About required status checks](/github/administering-a-repository/about-required-status-checks)" diff --git a/content/github/administering-a-repository/enabling-required-status-checks.md b/content/github/administering-a-repository/enabling-required-status-checks.md deleted file mode 100644 index 3a2fb10f28f7..000000000000 --- a/content/github/administering-a-repository/enabling-required-status-checks.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Enabling required status checks -intro: Repository administrators can enforce required status checks before a branch is merged in a pull request or before commits on a local branch can be pushed to the protected remote branch. -product: '{% data reusables.gated-features.protected-branches %}' -redirect_from: - - /articles/enabling-required-status-checks -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.protected-branches-options %} - -Before you can enable required status checks, you must configure the repository to use the status API. For more information, see "[Building a CI Server](/guides/building-a-ci-server/)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.repository-branches %} -{% data reusables.repositories.add-branch-protection-rules %} -6. Under "Protect matching branches", select **Require status checks to pass before merging**. -![Required status checks option](/assets/images/help/repository/required-status-checks.png) -7. Optionally, select **Require branches to be up to date before merging**. If selected, this ensures that the branch is tested with the latest code on the base branch. -![Loose or strict required status checkbox](/assets/images/help/repository/protecting-branch-loose-status.png) -7. From the list of available status checks, select the checks you want to require. -![List of available status checks](/assets/images/help/repository/required-statuses-list.png) -{% data reusables.repositories.include-administrators %} -9. Click **Create**. - -{% data reusables.repositories.required-status-merge-tip %} diff --git a/content/github/administering-a-repository/index.md b/content/github/administering-a-repository/index.md deleted file mode 100644 index e91482c564c1..000000000000 --- a/content/github/administering-a-repository/index.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Administering a repository -redirect_from: - - /categories/administering-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /managing-repository-settings %} - {% link_in_list /setting-repository-visibility %}{% if currentVersion == "free-pro-team@latest" %} - {% link_in_list /managing-teams-and-people-with-access-to-your-repository %}{% endif %} - {% link_in_list /classifying-your-repository-with-topics %} - {% link_in_list /customizing-how-changed-files-appear-on-github %} - {% link_in_list /about-email-notifications-for-pushes-to-your-repository %} - - {% link_in_list /displaying-a-sponsor-button-in-your-repository %} - - - {% link_in_list /customizing-your-repositorys-social-media-preview %} - - - {% link_in_list /viewing-deployment-activity-for-your-repository %} - - {% link_in_list /managing-the-forking-policy-for-your-repository %} - - {% link_in_list /configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository %} - {% link_in_list /disabling-or-limiting-github-actions-for-a-repository %} - {% link_in_list /managing-git-lfs-objects-in-archives-of-your-repository %} - {% link_in_list /enabling-anonymous-git-read-access-for-a-repository %} - - - {% link_in_list /configuring-autolinks-to-reference-external-resources %} - - {% link_in_list /renaming-a-repository %} - {% link_in_list /transferring-a-repository %} - {% link_in_list /deleting-a-repository %} - - {% link_in_list /restoring-a-deleted-repository %} - -{% topic_link_in_list /managing-branches-in-your-repository %} - {% link_in_list /viewing-branches-in-your-repository %} - {% link_in_list /changing-the-default-branch %} - {% link_in_list /deleting-and-restoring-branches-in-a-pull-request %} -{% topic_link_in_list /configuring-pull-request-merges %} - {% link_in_list /about-merge-methods-on-github %} - {% link_in_list /configuring-commit-squashing-for-pull-requests %} - {% link_in_list /configuring-commit-rebasing-for-pull-requests %} - - {% link_in_list /managing-the-automatic-deletion-of-branches %} - -{% topic_link_in_list /defining-the-mergeability-of-pull-requests %} - {% link_in_list /about-protected-branches %} - {% link_in_list /configuring-protected-branches %} - {% link_in_list /about-required-status-checks %} - {% link_in_list /types-of-required-status-checks %} - {% link_in_list /enabling-required-status-checks %} - {% link_in_list /about-branch-restrictions %} - {% link_in_list /enabling-branch-restrictions %} - {% link_in_list /about-required-reviews-for-pull-requests %} - {% link_in_list /enabling-required-reviews-for-pull-requests %} - {% link_in_list /about-required-commit-signing %} - {% link_in_list /enabling-required-commit-signing %} - - {% link_in_list /requiring-a-linear-commit-history %} - {% link_in_list /enabling-force-pushes-to-a-protected-branch %} - {% link_in_list /enabling-deletion-of-a-protected-branch %} - -{% topic_link_in_list /releasing-projects-on-github %} - {% link_in_list /about-releases %} - {% link_in_list /managing-releases-in-a-repository %} - {% link_in_list /viewing-your-repositorys-releases-and-tags %} - {% link_in_list /linking-to-releases %} - - {% link_in_list /comparing-releases %} - - - {% link_in_list /automation-for-release-forms-with-query-parameters %} - - -{% topic_link_in_list /securing-your-repository %} - {% link_in_list /about-securing-your-repository %} - {% link_in_list /about-secret-scanning %} - {% link_in_list /configuring-secret-scanning-for-private-repositories %} - {% link_in_list /managing-alerts-from-secret-scanning %} - {% link_in_list /managing-security-and-analysis-settings-for-your-repository %} - - -{% topic_link_in_list /keeping-your-dependencies-updated-automatically %} - {% link_in_list /about-github-dependabot-version-updates %} - {% link_in_list /enabling-and-disabling-version-updates %} - {% link_in_list /listing-dependencies-configured-for-version-updates %} - {% link_in_list /managing-pull-requests-for-dependency-updates %} - {% link_in_list /customizing-dependency-updates %} - {% link_in_list /configuration-options-for-dependency-updates %} - {% link_in_list /keeping-your-actions-up-to-date-with-github-dependabot %} - diff --git a/content/github/administering-a-repository/keeping-your-actions-up-to-date-with-github-dependabot.md b/content/github/administering-a-repository/keeping-your-actions-up-to-date-with-github-dependabot.md deleted file mode 100644 index 408911429a75..000000000000 --- a/content/github/administering-a-repository/keeping-your-actions-up-to-date-with-github-dependabot.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Keeping your actions up to date with GitHub Dependabot -intro: 'You can use {% data variables.product.prodname_dependabot %} to keep the actions you use updated to the latest versions.' -versions: - free-pro-team: '*' ---- - -{% data reusables.dependabot.beta-note %} - -### About {% data variables.product.prodname_dependabot_version_updates %} for actions - -Actions are often updated with bug fixes and new features to make automated processes more reliable, faster, and safer. When you enable {% data variables.product.prodname_dependabot_version_updates %} for {% data variables.product.prodname_actions %}, {% data variables.product.prodname_dependabot %} will help ensure that references to actions in a repository's *workflow.yml* file are kept up to date. For each action in the file, {% data variables.product.prodname_dependabot_short %} checks the action's reference (typically a version number or commit identifier associated with the action) against the latest version. If a more recent version of the action is available, {% data variables.product.prodname_dependabot_short %} will send you a pull request that updates the reference in the workflow file to the latest version. For more information about {% data variables.product.prodname_dependabot_version_updates %}, see "[About {% data variables.product.prodname_dependabot_version_updates %}](/github/administering-a-repository/about-github-dependabot-version-updates)." For more information about configuring workflows for {% data variables.product.prodname_actions %}, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -### Enabling {% data variables.product.prodname_dependabot_version_updates %} for actions - -{% data reusables.dependabot.create-dependabot-yml %} If you have already enabled {% data variables.product.prodname_dependabot_version_updates %} for other ecosystems or package managers, simply open the existing *dependabot.yml* file. -1. Specify `"github-actions"` as a `package-ecosystem` to monitor. -1. Set the `directory` to `"/"` to check for workflow files in `.github/workflows`. -1. Set a `schedule.interval` to specify how often to check for new versions. -{% data reusables.dependabot.check-in-dependabot-yml %} If you have edited an existing file, save your changes. - -You can also enable {% data variables.product.prodname_dependabot_version_updates %} on forks. For more information, see "[Enabling and disabling version updates](/github/administering-a-repository/enabling-and-disabling-version-updates#enabling-version-updates-on-forks)." - -#### Example *dependabot.yml* file for {% data variables.product.prodname_actions %} - -The example *dependabot.yml* file below configures version updates for {% data variables.product.prodname_actions %}. The `directory` must be set to `"/"` to check for workflow files in `.github/workflows`. The `schedule.interval` is set to `"daily"`. After this file has been checked in or updated, {% data variables.product.prodname_dependabot %} checks for new versions of your actions. {% data variables.product.prodname_dependabot_short %} will raise pull requests for version updates for any outdated actions that it finds. After the initial version updates, {% data variables.product.prodname_dependabot_short %} will continue to check for outdated versions of actions once a day. - -```yaml -# Set update schedule for GitHub Actions - -version: 2 -updates: - - - package-ecosystem: "github-actions" - directory: "/" - schedule: - # Check for updates to GitHub Actions every weekday - interval: "daily" -``` - -### Configuring {% data variables.product.prodname_dependabot_version_updates %} for actions - -When enabling {% data variables.product.prodname_dependabot_version_updates %} for actions, you must specify values for `package-ecosystem`, `directory`, and `schedule.interval`. There are many more optional properties that you can set to further customize your version updates. For more information, see "[Configuration options for dependency updates](/github/administering-a-repository/configuration-options-for-dependency-updates)." - -### Further reading - -- "[About GitHub Actions](/actions/getting-started-with-github-actions/about-github-actions)" diff --git a/content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md b/content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md deleted file mode 100644 index 3c6c79af15ab..000000000000 --- a/content/github/administering-a-repository/keeping-your-dependencies-updated-automatically.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Keeping your dependencies updated automatically -intro: '{% data variables.product.prodname_dependabot %} can maintain your repository''s dependencies automatically.' -mapTopic: true -versions: - free-pro-team: '*' ---- - diff --git a/content/github/administering-a-repository/linking-to-releases.md b/content/github/administering-a-repository/linking-to-releases.md deleted file mode 100644 index 56cf14ce69f6..000000000000 --- a/content/github/administering-a-repository/linking-to-releases.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Linking to releases -intro: You can share every release you create on GitHub with a unique URL. -redirect_from: - - /articles/linking-to-releases -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.releases %} -3. Find the release you want to link to and click the version number. - ![Releases tag information](/assets/images/help/releases/release_tag_name.png) -3. Alternatively, right click **Latest Release** and copy the URL to share it. The suffix of this URL is always `/releases/latest`. - ![Latest release tag](/assets/images/help/releases/release_latest_release_tag.png) - -To link directly to a download of your latest release asset, link to `/owner/name/releases/latest/download/asset-name.zip`. diff --git a/content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md b/content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md deleted file mode 100644 index 00fe9a059c1e..000000000000 --- a/content/github/administering-a-repository/listing-dependencies-configured-for-version-updates.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Listing dependencies configured for version updates -intro: 'You can view the dependencies that {% data variables.product.prodname_dependabot %} monitors for updates.' -versions: - free-pro-team: '*' ---- - -{% data reusables.dependabot.beta-note %} - -### Viewing dependencies monitored by {% data variables.product.prodname_dependabot %} - -After you've enabled version updates, you can confirm that your configuration is correct using the **{% data variables.product.prodname_dependabot_short %}** tab in the dependency graph for the repository. For more information, see "[Enabling and disabling version updates](/github/administering-a-repository/enabling-and-disabling-version-updates)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -{% data reusables.repositories.click-dependency-graph %} -{% data reusables.dependabot.click-dependabot-tab %} -5. Optionally, to view the files monitored for a package manager, click the associated {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}. - ![Monitored dependency files](/assets/images/help/dependabot/monitored-dependency-files.png) - -If any dependencies are missing, check the log files for errors. If any package managers are missing, review the configuration file. - -### Viewing {% data variables.product.prodname_dependabot %} log files - -1. On the **{% data variables.product.prodname_dependabot_short %}** tab, click **Last checked *TIME* ago** to see the log file that {% data variables.product.prodname_dependabot %} generated during the last check for version updates. - ![View log file](/assets/images/help/dependabot/last-checked-link.png) -2. Optionally, to rerun the version check, click **Check for updates**. - ![Check for updates](/assets/images/help/dependabot/check-for-updates.png) diff --git a/content/github/administering-a-repository/managing-alerts-from-secret-scanning.md b/content/github/administering-a-repository/managing-alerts-from-secret-scanning.md deleted file mode 100644 index 99770444b595..000000000000 --- a/content/github/administering-a-repository/managing-alerts-from-secret-scanning.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Managing alerts from secret scanning -intro: You can view and close alerts for secrets checked in to your repository. -versions: - free-pro-team: '*' ---- - -{% data reusables.secret-scanning.beta %} - -### Managing alerts - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -3. In the left sidebar, click **Detected secrets**. -!["Detected secrets" tab](/assets/images/help/repository/sidebar-secrets.png) -4. Under "Secret scanning" click the alert you want to view. -![List of alerts from secret scanning](/assets/images/help/repository/secret-scanning-click-alert.png) -5. Optionally, use the "Resolve" drop-down menu and click a reason for resolving an alert. -![Drop-down menu for resolving an alert from secret scanning](/assets/images/help/repository/secret-scanning-resolve-alert.png) - -### Securing compromised secrets - -Once a secret has been committed to a repository, you should consider the secret compromised. {% data variables.product.prodname_dotcom %} recommends the following actions for compromised secrets: - -- For a compromised {% data variables.product.prodname_dotcom %} personal access token, delete the compromised token, create a new token, and update any services that use the old token. For more information, see "[Creating a personal access token for the command line](/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)." -- For all other secrets, first verify that the secret committed to {% data variables.product.prodname_dotcom %} is valid. If so, create a new secret, update any services that use the old secret, and then delete the old secret. diff --git a/content/github/administering-a-repository/managing-branches-in-your-repository.md b/content/github/administering-a-repository/managing-branches-in-your-repository.md deleted file mode 100644 index 649ce43f079d..000000000000 --- a/content/github/administering-a-repository/managing-branches-in-your-repository.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing branches in your repository -intro: 'Whenever you propose a change in Git, you [create a new branch](/articles/creating-and-deleting-branches-within-your-repository/). Branch management is an important part of the Git workflow. After some time, your list of branches may grow, so it''s a good idea to delete merged or stale branches.' -mapTopic: true -redirect_from: - - /articles/managing-branches-in-your-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/administering-a-repository/managing-git-lfs-objects-in-archives-of-your-repository.md b/content/github/administering-a-repository/managing-git-lfs-objects-in-archives-of-your-repository.md deleted file mode 100644 index f34f34e16480..000000000000 --- a/content/github/administering-a-repository/managing-git-lfs-objects-in-archives-of-your-repository.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Managing Git LFS objects in archives of your repository -shortTitle: 'Managing {% data variables.large_files.product_name_short %} objects in archives' -intro: 'You can choose whether {% data variables.large_files.product_name_long %} ({% data variables.large_files.product_name_short %}) objects are included in source code archives, such as ZIP files and tarballs, {% data variables.product.product_name %} creates for your repository.' -permissions: 'People with admin permissions for a repository can manage whether {% data variables.large_files.product_name_short %} objects are included in archives of the repository.' -versions: - free-pro-team: '*' - enterprise-server: '=>2.23' ---- - -### About {% data variables.large_files.product_name_short %} objects in archives - -{% data variables.product.product_name %} creates source code archives of your repository in the form of ZIP files and tarballs. People can download these archives on the main page of your repository or as release assets. By default, {% data variables.large_files.product_name_short %} objects are not included in these archives, only the pointer files to these objects. To improve the usability of archives for your repository, you can choose to include the {% data variables.large_files.product_name_short %} objects instead. - -If you choose to include {% data variables.large_files.product_name_short %} objects in archives of your repository, every download of those archives will count towards bandwidth usage for your account. Each account receives {% data variables.large_files.initial_bandwidth_quota %} per month of bandwidth for free, and you can pay for additional usage. For more information, see "[About storage and bandwidth usage](/github/managing-large-files/about-storage-and-bandwidth-usage)" and "[Managing billing for {% data variables.large_files.product_name_long %}](/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-git-large-file-storage)." - -### Managing {% data variables.large_files.product_name_short %} objects in archives - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Archives", select or deselect **Include {% data variables.large_files.product_name_short %} objects in archives**. - ![Checkbox to include {% data variables.large_files.product_name_short %} objects in archives](/assets/images/help/repository/include-git-lfs-objects-checkbox.png) diff --git a/content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md b/content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md deleted file mode 100644 index 6f93905e1f99..000000000000 --- a/content/github/administering-a-repository/managing-pull-requests-for-dependency-updates.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Managing pull requests for dependency updates -intro: 'You manage pull requests raised by {% data variables.product.prodname_dependabot %} in much the same way as other pull requests, but there are some extra options.' -versions: - free-pro-team: '*' ---- - -{% data reusables.dependabot.beta-note %} - -### About {% data variables.product.prodname_dependabot %} pull requests - -{% data reusables.dependabot.pull-request-introduction %} - -When {% data variables.product.prodname_dependabot %} raises a pull request, you're notified by your chosen method for the repository. Each pull request contains detailed information about the proposed change, taken from the package manager. These pull requests follow the normal checks and tests defined in your repository. In addition, where enough information is available, you'll see a compatibility score. This may also help you decide whether or not to merge the change. For information about this score, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-github-dependabot-security-updates)." - -If you have many dependencies to manage, you may want to customize the configuration for each package manager so that pull requests have specific reviewers, assignees, and labels. For more information, see "[Customizing dependency updates](/github/administering-a-repository/customizing-dependency-updates)." - -### Viewing {% data variables.product.prodname_dependabot %} pull requests - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-pr %} -1. Any pull requests for security and version updates are easy to identify. - - The author is [dependabot](https://github.com/dependabot), the bot account used by {% data variables.product.prodname_dependabot %}. - - By default, they have the `dependencies` label. - -### Changing the rebase strategy for {% data variables.product.prodname_dependabot %} pull requests - -By default, {% data variables.product.prodname_dependabot %} automatically rebases pull requests to resolve any conflicts. If you'd prefer to handle merge conflicts manually, you can disable this using the `rebase-strategy` option. For details, see "[Configuration options for dependency updates](/github/administering-a-repository/configuration-options-for-dependency-updates#rebase-strategy)." - -### Managing {% data variables.product.prodname_dependabot %} pull requests with comment commands - -{% data variables.product.prodname_dependabot %} responds to simple commands in comments. Each pull request contains details of the commands you can use to process the pull request, for example: to merge, squash, reopen, close, or rebase the pull request. The aim is to make it as easy as possible for you to triage these automatically generated pull requests. - -If you run any of the commands for ignoring dependencies or versions, {% data variables.product.prodname_dependabot %} stores the preferences for the repository centrally. While this is a quick solution, for repositories with more than one contributor it is better to explicitly define the dependencies and versions to ignore in the configuration file. This makes it easy for all contributors to see why a particular dependency isn't being updated automatically. For more information, see "[Configuration options for dependency updates](/github/administering-a-repository/configuration-options-for-dependency-updates#ignore)." diff --git a/content/github/administering-a-repository/managing-releases-in-a-repository.md b/content/github/administering-a-repository/managing-releases-in-a-repository.md deleted file mode 100644 index 18ba6a41cf8a..000000000000 --- a/content/github/administering-a-repository/managing-releases-in-a-repository.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Managing releases in a repository -intro: You can create releases to bundle and deliver iterations of a project to users. -redirect_from: - - /articles/creating-releases - - /articles/listing-and-editing-releases/ - - /articles/editing-and-deleting-releases - - /articles/managing-releases-in-a-repository - - /github/administering-a-repository/creating-releases - - /github/administering-a-repository/editing-and-deleting-releases -permissions: 'Repository collaborators and people with write access to a repository can create, edit, and delete a release.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About release management - -You can also publish an action from a specific release in {% data variables.product.prodname_marketplace %}. For more information, see "Publishing an action in the {% data variables.product.prodname_marketplace %}." - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -You can choose whether {% data variables.large_files.product_name_long %} ({% data variables.large_files.product_name_short %}) objects are included in the ZIP files and tarballs that {% data variables.product.product_name %} creates for each release. For more information, see "[Managing {% data variables.large_files.product_name_short %} objects in archives of your repository](/github/administering-a-repository/managing-git-lfs-objects-in-archives-of-your-repository)." -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -{% tip %} - -**Tip**: You can also manage releases using the {% data variables.product.prodname_cli %}. For more information, see "[`gh release`](https://cli.github.com/manual/gh_release)" in the {% data variables.product.prodname_cli %} documentation. - -{% endtip %} -{% endif %} - -### Creating a release - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.releases %} -3. Click **Draft a new release**. - ![Releases draft button](/assets/images/help/releases/draft_release_button.png) -4. Type a version number for your release. Versions are based on [Git tags](https://git-scm.com/book/en/Git-Basics-Tagging). We recommend naming tags that fit within [semantic versioning](http://semver.org/). - ![Releases tagged version](/assets/images/help/releases/releases-tag-version.png) -5. Use the drop-down menu to select the branch that contains the project you want to release. - ![Releases tagged branch](/assets/images/help/releases/releases-tag-branch.png) -6. Type a title and description for your release. - ![Releases description](/assets/images/help/releases/releases_description.png) -7. Optionally, to include binary files such as compiled programs in your release, drag and drop or manually select files in the binaries box. - ![Providing a DMG with the Release](/assets/images/help/releases/releases_adding_binary.gif) -8. To notify users that the release is not ready for production and may be unstable, select **This is a pre-release**. - ![Checkbox to mark a release as prerelease](/assets/images/help/releases/prerelease_checkbox.png) -9. If you're ready to publicize your release, click **Publish release**. To work on the release later, click **Save draft**. - ![Publish release and Draft release buttons](/assets/images/help/releases/release_buttons.png) - -You can also automatically create a release from the command line or in a script. For more information, see "[Releases](/rest/reference/repos/#create-a-release)." - -### Editing a release - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.releases %} -3. On the right side of the page, next to the release you want to edit, click **Edit release**. - ![Edit a release](/assets/images/help/releases/edit-release.png) -4. Edit the details for the release in the form, then click **Update release**. - ![Update a release](/assets/images/help/releases/update-release.png) - -### Deleting a release - -You must remove all binary files attached to a release before you can delete a release. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.releases %} -3. Click the name of the release you wish to delete. - ![Link to view release](/assets/images/help/releases/release-name-link.png) -4. In the upper-right corner of the page, click **Delete**. - ![Delete release button](/assets/images/help/releases/delete-release.png) -5. Click **Delete this release**. - ![Confirm delete release](/assets/images/help/releases/confirm-delete-release.png) diff --git a/content/github/administering-a-repository/managing-repository-settings.md b/content/github/administering-a-repository/managing-repository-settings.md deleted file mode 100644 index 467c6b67b6d3..000000000000 --- a/content/github/administering-a-repository/managing-repository-settings.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing repository settings -intro: 'Repository administrators and organization owners can change several settings, including the names and ownership of a repository and the public or private visibility of a repository. They can also delete a repository.' -mapTopic: true -redirect_from: - - /articles/managing-repository-settings -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository.md b/content/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository.md deleted file mode 100644 index 8ad1e17cf40e..000000000000 --- a/content/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Managing security and analysis settings for your repository -intro: 'You can control features that secure and analyze the code in your project on {% data variables.product.prodname_dotcom %}.' -permissions: People with admin permissions to a repository can manage security and analysis settings for the repository. -redirect_from: - - /articles/managing-alerts-for-vulnerable-dependencies-in-your-organization-s-repositories/ - - /articles/managing-alerts-for-vulnerable-dependencies-in-your-organizations-repositories/ - - /articles/managing-alerts-for-vulnerable-dependencies-in-your-organization - - /github/managing-security-vulnerabilities/managing-alerts-for-vulnerable-dependencies-in-your-organization -versions: - free-pro-team: '*' ---- - -### Enabling or disabling security and analysis features - -{% data reusables.security.some-security-and-analysis-features-are-enabled-by-default %} - -{% data reusables.security.security-and-analysis-features-enable-read-only %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-security-and-analysis %} -4. Under "Configure security and analysis features", to the right of the feature, click **Disable** or **Enable**. - !["Enable" or "Disable" button for "Configure security and analysis" features](/assets/images/help/repository/security-and-analysis-disable-or-enable.png) - -### Granting access to {% data variables.product.prodname_dependabot_alerts %} - -After you enable {% data variables.product.prodname_dependabot_alerts %} for a repository in an organization, organization owners and repository administrators can view the alerts by default. You can give additional teams and people access to the alerts for a repository. - -{% note %} - -Organization owners and repository administrators can only grant access to view {% data variables.product.prodname_dependabot_alerts %} to people or teams who have write access to the repo. - -{% endnote %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-security-and-analysis %} -4. Under "Dependabot alerts", in the search field, start typing the name of the person or team you'd like to find, then click a name in the list of matches. - ![Search field for granting people or teams access to Dependabot alerts](/assets/images/help/repository/security-and-analysis-security-alerts-person-or-team-search.png) -5. Click **Save changes**. - !["Save changes" button for changes to Dependabot alert settings](/assets/images/help/repository/security-and-analysis-security-alerts-save-changes.png) - -### Removing access to {% data variables.product.prodname_dependabot_alerts %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-security-and-analysis %} -4. Under "Dependabot alerts", to the right of the person or team whose access you'd like to remove, click {% octicon "x" aria-label="X symbol" %}. - !["x" button to remove someone's access to Dependabot alerts for your repository](/assets/images/help/repository/security-and-analysis-security-alerts-username-x.png) - -### Further reading - -- "[About securing your repository](/github/administering-a-repository/about-securing-your-repository)" -- "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)" diff --git a/content/github/administering-a-repository/managing-teams-and-people-with-access-to-your-repository.md b/content/github/administering-a-repository/managing-teams-and-people-with-access-to-your-repository.md deleted file mode 100644 index 9e38d3ccecc9..000000000000 --- a/content/github/administering-a-repository/managing-teams-and-people-with-access-to-your-repository.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Managing teams and people with access to your repository -intro: You can see everyone who has access to your repository and adjust permissions. -permissions: Repository administrators can manage teams and people with access to a repository. -redirect_from: - - /github/administering-a-repository/managing-people-and-teams-with-access-to-your-repository -versions: - free-pro-team: '*' ---- - -### About managing access to your repository - -For each repository that you administer on {% data variables.product.prodname_dotcom %}, you can see an overview of every team or person with access to the repository. From the overview, you can also invite new teams or people, change each team or person's permissions, or remove access to the repository. - -This overview can help you audit access to your repository, onboard or off-board contractors or employees, and effectively respond to security incidents. - -For more information about repository permission levels, see "[Permission levels for a user account repository](/github/setting-up-and-managing-your-github-user-account/permission-levels-for-a-user-account-repository)" and "[Repository permission levels for an organization](/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization)." - -![Access management overview](/assets/images/help/repository/manage-access-overview.png) - -### Filtering the list of teams and people - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-manage-access %} -4. Under "Manage access", in the search field, start typing the name of the team or person you'd like to find. - ![Search field for filtering list of teams or people with access](/assets/images/help/repository/manage-access-filter.png) - -### Changing permissions for a team or person - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-manage-access %} -4. Under "Manage access", find the team or person whose permissions you'd like to change, then use the **Role** drop-down to select new permissions. - ![Using the "Role" drop-down to select new permissions for a team or person](/assets/images/help/repository/manage-access-role-drop-down.png) - -### Inviting a team or person - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-manage-access %} -{% data reusables.organizations.invite-teams-or-people %} -5. In the search field, start typing the name of the team or person to invite, then click a name in the list of matches. - ![Search field for typing the name of a team or person to invite to the repository](/assets/images/help/repository/manage-access-invite-search-field.png) -6. Under "Choose a role", select the permissions to grant to the team or person, then click **Add NAME to REPOSITORY**. - ![Selecting permissions for the team or person](/assets/images/help/repository/manage-access-invite-choose-role-add.png) - -### Removing access for a team or person - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-manage-access %} -4. Under "Manage access", find the team or person whose access you'd like to remove, then click {% octicon "trashcan" aria-label="The trashcan icon" %}. - ![Trashcan icon for removing access](/assets/images/help/repository/manage-access-remove.png) - -### Further reading - -- "[Setting repository visibility](/github/administering-a-repository/setting-repository-visibility)" -- "[Setting base permissions for an organization](/github/setting-up-and-managing-organizations-and-teams/setting-base-permissions-for-an-organization)" diff --git a/content/github/administering-a-repository/managing-the-automatic-deletion-of-branches.md b/content/github/administering-a-repository/managing-the-automatic-deletion-of-branches.md deleted file mode 100644 index 2a4b191a32bf..000000000000 --- a/content/github/administering-a-repository/managing-the-automatic-deletion-of-branches.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Managing the automatic deletion of branches -intro: You can have head branches automatically deleted after pull requests are merged in your repository. -redirect_from: - - /articles/managing-the-automatic-deletion-of-branches -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Anyone with admin permissions to a repository can enable or disable the automatic deletion of branches. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Merge button", select or unselect **Automatically delete head branches**. - ![Checkbox to enable or disable automatic deletion of branches](/assets/images/help/repository/automatically-delete-branches.png) - -### Further reading -- "[Merging a pull request](/articles/merging-a-pull-request)" -- "[Creating and deleting branches within your repository](/articles/creating-and-deleting-branches-within-your-repository)" diff --git a/content/github/administering-a-repository/managing-the-forking-policy-for-your-repository.md b/content/github/administering-a-repository/managing-the-forking-policy-for-your-repository.md deleted file mode 100644 index 637aa5546ba2..000000000000 --- a/content/github/administering-a-repository/managing-the-forking-policy-for-your-repository.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Managing the forking policy for your repository -intro: 'You can allow or prevent the forking of a specific private{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} or internal{% endif %} repository owned by an organization.' -redirect_from: - - /articles/allowing-people-to-fork-a-private-repository-owned-by-your-organization - - /github/administering-a-repository/allowing-people-to-fork-a-private-repository-owned-by-your-organization -permissions: People with admin permissions for a repository can manage the forking policy for the repository. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -An organization owner must allow forks of private{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} and internal{% endif %} repositories on the organization level before you can allow or disallow forks for a specific repository. For more information, see "[Managing the forking policy for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-the-forking-policy-for-your-organization)." - -{% data reusables.organizations.internal-repos-enterprise %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Features", select **Allow forking**. - ![Checkbox to allow or disallow forking of a private repository](/assets/images/help/repository/allow-forking-specific-org-repo.png) - -### Further reading - -- "[About forks](/articles/about-forks)" -- "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)" diff --git a/content/github/administering-a-repository/releasing-projects-on-github.md b/content/github/administering-a-repository/releasing-projects-on-github.md deleted file mode 100644 index 0751f42269f0..000000000000 --- a/content/github/administering-a-repository/releasing-projects-on-github.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Releasing projects on GitHub -intro: 'You can create a release to package software, release notes, and binary files for other people to download.' -mapTopic: true -redirect_from: - - /categories/85/articles/ - - /categories/releases/ -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/administering-a-repository/renaming-a-repository.md b/content/github/administering-a-repository/renaming-a-repository.md deleted file mode 100644 index 5393db41466f..000000000000 --- a/content/github/administering-a-repository/renaming-a-repository.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Renaming a repository -intro: You can rename a repository if you're either an organization owner or have admin permissions for the repository. -redirect_from: - - /articles/renaming-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -When you rename a repository, all existing information, with the exception of project site URLs, is automatically redirected to the new name, including: - -* Issues -* Wikis -* Stars -* Followers - -For more information on project sites, see "[About {% data variables.product.prodname_pages %}](/github/working-with-github-pages/about-github-pages#types-of-github-pages-sites)." - -In addition to redirecting web traffic, all `git clone`, `git fetch`, or `git push` operations targeting the previous location will continue to function as if made on the new location. However, to reduce confusion, we strongly recommend updating any existing local clones to point to the new repository URL. You can do this by using `git remote` on the command line: - -```shell -$ git remote set-url origin new_url -``` - -For more information, see "[Changing a Remote's URL](/github/using-git/changing-a-remotes-url)." - -{% if currentVersion == "free-pro-team@latest" %} - -If you plan to rename a repository that has a {% data variables.product.prodname_pages %} site, we recommend using a custom domain for your site. This ensures that the site's URL isn't impacted by renaming the repository. For more information, see "[About custom domains and {% data variables.product.prodname_pages %} site](/github/working-with-github-pages/about-custom-domains-and-github-pages)." - -{% endif %} - -{% tip %} - -**Tip:** {% data reusables.organizations.owners-and-admins-can %} rename a repository. {% data reusables.organizations.new-repo-permissions-more-info %} - -{% endtip %} - -{% warning %} - -**Warning**: If you create a new repository under your account in the future, do not reuse the original name of the renamed repository. If you do, redirects to the renamed repository will break. - -{% endwarning %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under the **Repository Name** heading, type the new name of your repository. - ![Repository rename](/assets/images/help/repository/repository-name-change.png) -4. Click **Rename**. You're done! diff --git a/content/github/administering-a-repository/requiring-a-linear-commit-history.md b/content/github/administering-a-repository/requiring-a-linear-commit-history.md deleted file mode 100644 index a2a5e5d3d097..000000000000 --- a/content/github/administering-a-repository/requiring-a-linear-commit-history.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Requiring a linear commit history -intro: You can require a linear commit history to block all merge commits from a protected branch. -product: '{% data reusables.gated-features.protected-branches %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.20' ---- - -Anyone with admin permissions to a repository can require a linear commit history. - -### About enforcement of linear commit history - -Enforcing a linear commit history prevents merge commits from being pushed to the protected branch. This means that any pull requests merged into the protected branch must use a squash merge or a rebase merge. A strictly linear commit history can help teams backtrack changes more efficiently. For more information about merge methods, see "[About pull request merges](/github/collaborating-with-issues-and-pull-requests/about-pull-request-merges)." - -{% data reusables.repositories.protected-branches-options %} - -Before you can require a linear commit history, your repository must allow squash merging or rebase merging. For more information, see "[Configuring pull request merges](/github/administering-a-repository/configuring-pull-request-merges)." - - -### Enforcing a linear commit history - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.repository-branches %} -{% data reusables.repositories.add-branch-protection-rules %} -6. Under "Protect matching branches", select **Require linear history**. -![Required linear history option](/assets/images/help/repository/required-linear-history.png) -{% data reusables.repositories.include-administrators %} -7. Click **Create**. diff --git a/content/github/administering-a-repository/restoring-a-deleted-repository.md b/content/github/administering-a-repository/restoring-a-deleted-repository.md deleted file mode 100644 index 7f8ac645e7a3..000000000000 --- a/content/github/administering-a-repository/restoring-a-deleted-repository.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Restoring a deleted repository -intro: You can restore some deleted repositories to recover their contents. -redirect_from: - - /articles/restoring-a-deleted-repository -versions: - free-pro-team: '*' ---- - -Anyone can restore deleted repositories that were owned by their own user account. Organization owners can restore deleted repositories that were owned by the organization. - -### About repository restoration - -A deleted repository can be restored within 90 days, unless the repository was part of a fork network that is not currently empty. A fork network consists of a parent repository, the repository's forks, and forks of the repository's forks. If your repository was part of a fork network, it cannot be restored unless every other repository in the network is deleted or has been detached from the network. For more information about forks, see "[About forks](/articles/about-forks)." - -If you want to restore a repository that was part of a fork network that is not currently empty, you can contact {% data variables.contact.contact_support %}. - -It can take up to an hour after a repository is deleted before that repository is available for restoration. - -Restoring a repository will not restore release attachments or team permissions. Issues that are restored will not be labeled. - -### Restoring a deleted repository that was owned by a user account - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.repo-tab %} -{% data reusables.user_settings.deleted-repos %} -{% data reusables.user_settings.restore-repo %} -{% data reusables.user_settings.restore-confirmation %} - -### Restoring a deleted repository that was owned by an organization - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.deleted-repos %} -{% data reusables.user_settings.restore-repo %} -{% data reusables.user_settings.restore-confirmation %} - -### Further reading - -- "[Deleting a repository](/articles/deleting-a-repository)" diff --git a/content/github/administering-a-repository/securing-your-repository.md b/content/github/administering-a-repository/securing-your-repository.md deleted file mode 100644 index 5a92993859ff..000000000000 --- a/content/github/administering-a-repository/securing-your-repository.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Securing your repository -intro: 'Security features like {% data variables.product.prodname_secret_scanning %} protect your repository''s data.' -mapTopic: true -redirect_from: - - /articles/securing-your-repository -versions: - free-pro-team: '*' ---- - diff --git a/content/github/administering-a-repository/setting-repository-visibility.md b/content/github/administering-a-repository/setting-repository-visibility.md deleted file mode 100644 index 6531591be91a..000000000000 --- a/content/github/administering-a-repository/setting-repository-visibility.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Setting repository visibility -intro: You can choose who can view your repository. -redirect_from: - - /articles/making-a-private-repository-public/ - - /articles/making-a-public-repository-private/ - - /articles/converting-a-public-repo-to-a-private-repo/ - - /articles/setting-repository-visibility -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About repository visibility changes - -Organization owners can restrict the ability to change repository visibility to organization owners only. For more information, see "[Restricting repository visibility changes in your organization](/github/setting-up-and-managing-organizations-and-teams/restricting-repository-visibility-changes-in-your-organization)." - -We recommend reviewing the following caveats before you change the visibility of a repository. - -#### Making a repository private - - * {% data variables.product.prodname_dotcom %} will detach public forks of the public repository and put them into a new network. Public forks are not made private. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %}If you change a repository's visibility from internal to private, {% data variables.product.prodname_dotcom %} will remove forks that belong to any user without access to the newly private repository.{% endif %} For more information, see "[What happens to forks when a repository is deleted or changes visibility?](/articles/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility#changing-a-public-repository-to-a-private-repository)" - {% if currentVersion == "free-pro-team@latest" %}* If you're using {% data variables.product.prodname_free_user %} for user accounts or organizations, some features won't be available in the repository after you change the visibility to private. {% data reusables.gated-features.more-info %} - * Any published {% data variables.product.prodname_pages %} site will be automatically unpublished. If you added a custom domain to the {% data variables.product.prodname_pages %} site, you should remove or update your DNS records before making the repository private, to avoid the risk of a domain takeover. For more information, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site)." - * {% data variables.product.prodname_dotcom %} will no longer included the repository in the {% data variables.product.prodname_archive %}. For more information, see "[About archiving content and data on {% data variables.product.prodname_dotcom %}](/github/creating-cloning-and-archiving-repositories/about-archiving-content-and-data-on-github#about-the-github-archive-program)."{% endif %} - {% if enterpriseServerVersions contains currentVersion %}* Anonymous Git read access is no longer available. For more information, see "[Enabling anonymous Git read access for a repository](/enterprise/{{ currentVersion }}/user/articles/enabling-anonymous-git-read-access-for-a-repository)."{% endif %} - -#### Making a repository public - - * {% data variables.product.prodname_dotcom %} will detach private forks and turn them into a standalone private repository. For more information, see "[What happens to forks when a repository is deleted or changes visibility?](/articles/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility#changing-a-private-repository-to-a-public-repository)" - * If you're converting your private repository to a public repository as part of a move toward creating an open source project, see the [Open Source Guides](http://opensource.guide) for helpful tips and guidelines.{% if currentVersion == "free-pro-team@latest" %} You can also take a free course on managing an open source project with [{% data variables.product.prodname_learning %}]({% data variables.product.prodname_learning_link %}). Once your repository is public, you can also view your repository's community profile to see whether your project meets best practices for supporting contributors. For more information, see "[Viewing your community profile](/articles/viewing-your-community-profile)."{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} - -### Changing a repository's visibility - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Danger Zone", to the right of to "Change repository visibility", click **Change visibility**. - ![Change visibility button](/assets/images/help/repository/repo-change-vis.png) -4. Select a visibility. - ![Dialog of options for repository visibility](/assets/images/help/repository/repo-change-select.png) -5. To verify that you're changing the correct repository's visibility, type the name of the repository you want to change the visibility of. -6. Click **I understand, change repository visibility**. - ![Confirm change of repository visibility button](/assets/images/help/repository/repo-change-confirm.png) - -{% endif %} - -{% if currentVersion ver_lt "enterprise-server@2.22" %} - -### Making a repository private - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Danger Zone", next to "Make this repository private", click **Make private**. - ![Make private button](/assets/images/help/repository/repo-makeprivate.png) -4. Read the warnings about making a repository private. - ![Warnings popup](/assets/images/help/repository/repo-privateconfirm.png) -5. Type the name of the repository that you want to make private, for example `accountname/reponame`. -6. Click **I understand, make this repository private**. - -### Making a repository public - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Danger Zone", next to "Make this repository public", click **Make public**. - ![Make public button](/assets/images/help/repository/repo-makepublic.png) -4. Read the warnings about making a repository public. - ![Pop-up with information about making a private repository public](/assets/images/help/repository/repo-publicconfirm.png) -5. Type the name of the repository that you want to make public, for example `accountname/reponame`. -6. Click **I understand, make this repository public**. - -{% if currentVersion ver_gt "enterprise-server@2.19" %} -### Making a repository internal - -{% data reusables.organizations.internal-repos-enterprise %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Danger Zone", next to "Make this repository internal", click **Make internal**. - ![Make internal button](/assets/images/help/repository/repo-makeinternal.png) -4. Read the warnings about making a repository internal. - ![Warnings popup](/assets/images/help/repository/repo-internalconfirm.png) -5. Type the name of the repository that you want to make internal, for example `accountname/reponame`. -6. Click **I understand, make this repository internal**. -{% endif %} - -{% endif %} - -### Further reading -- "[About repository visibility](/github/creating-cloning-and-archiving-repositories/about-repository-visibility)" diff --git a/content/github/administering-a-repository/transferring-a-repository.md b/content/github/administering-a-repository/transferring-a-repository.md deleted file mode 100644 index 04755d4a0bbd..000000000000 --- a/content/github/administering-a-repository/transferring-a-repository.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Transferring a repository -intro: You can transfer repositories to other users or organization accounts. -redirect_from: - - /articles/about-repository-transfers/ - - /move-a-repo/ - - /moving-a-repo/ - - /articles/what-is-transferred-with-a-repository/ - - /articles/what-is-transferred-with-a-repo/ - - /articles/how-to-transfer-a-repo/ - - /articles/how-to-transfer-a-repository/ - - /articles/transferring-a-repository-owned-by-your-personal-account/ - - /articles/transferring-a-repository-owned-by-your-organization/ - - /articles/transferring-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About repository transfers - -When you transfer a repository to a new owner, they can immediately administer the repository's contents, issues, pull requests, releases, project boards, and settings. - -Prerequisites for repository transfers: {% if currentVersion == "free-pro-team@latest" %} -- When you transfer a repository that you own to another user account, the new owner will receive a confirmation email. The confirmation email includes instructions for accepting the transfer. If the new owner doesn't accept the transfer within one day, the invitation will expire.{% endif %} -- To transfer a repository that you own to an organization, you must have permission to create a repository in the target organization. -- The target account must not have a repository with the same name, or a fork in the same network. -- The original owner of the repository is added as a collaborator on the transferred repository. Other collaborators to the transferred repository remain intact. -- Private forks can't be transferred. - -{% if currentVersion == "free-pro-team@latest" %}If you transfer a private repository to a {% data variables.product.prodname_free_user %} user or organization account, the repository will lose access to features like protected branches and {% data variables.product.prodname_pages %}. {% data reusables.gated-features.more-info %}{% endif %} - -#### What's transferred with a repository? - -When you transfer a repository, its issues, pull requests, wiki, stars, and watchers are also transferred. If the transferred repository contains webhooks, services, secrets, or deploy keys, they will remain associated after the transfer is complete. Git information about commits, including contributions, is preserved. In addition: - -- If the transferred repository is a fork, then it remains associated with the upstream repository. -- If the transferred repository has any forks, then those forks will remain associated with the repository after the transfer is complete. -- If the transferred repository uses {% data variables.large_files.product_name_long %}, all {% data variables.large_files.product_name_short %} objects are automatically moved. This transfer occurs in the background, so if you have a large number of {% data variables.large_files.product_name_short %} objects or if the {% data variables.large_files.product_name_short %} objects themselves are large, it may take some time for the transfer to occur.{% if currentVersion == "free-pro-team@latest" %} Before you transfer a repository that uses {% data variables.large_files.product_name_short %}, make sure the receiving account has enough data packs to store the {% data variables.large_files.product_name_short %} objects you'll be moving over. For more information on adding storage for user accounts, see "[Upgrading {% data variables.large_files.product_name_long %}](/articles/upgrading-git-large-file-storage)."{% endif %} -- When a repository is transferred between two user accounts, issue assignments are left intact. When you transfer a repository from a user account to an organization, issues assigned to members in the organization remain intact, and all other issue assignees are cleared. Only owners in the organization are allowed to create new issue assignments. When you transfer a repository from an organization to a user account, only issues assigned to the repository's owner are kept, and all other issue assignees are removed. -- If the transferred repository contains a {% data variables.product.prodname_pages %} site, then links to the Git repository on the Web and through Git activity are redirected. However, we don't redirect {% data variables.product.prodname_pages %} associated with the repository. -- All links to the previous repository location are automatically redirected to the new location. When you use `git clone`, `git fetch`, or `git push` on a transferred repository, these commands will redirect to the new repository location or URL. However, to avoid confusion, we strongly recommend updating any existing local clones to point to the new repository URL. You can do this by using `git remote` on the command line: - - ```shell - $ git remote set-url origin new_url - ``` - -For more information, see "[Changing a remote's URL](/articles/changing-a-remote-s-url)". - -#### Repository transfers and organizations - -To transfer repositories to an organization, you must have repository creation permissions in the receiving organization. If organization owners have disabled repository creation by organization members, only organization owners can transfer repositories out of or into the organization. - -Once a repository is transferred to an organization, the organization's default repository permission settings and default membership privileges will apply to the transferred repository. - -### Transferring a repository owned by your user account - -You can transfer your repository to any user account that accepts your repository transfer. When a repository is transferred between two user accounts, the original repository owner and collaborators are automatically added as collaborators to the new repository. - -{% if currentVersion == "free-pro-team@latest" %}If you published a {% data variables.product.prodname_pages %} site in a private repository and added a custom domain, before transferring the repository, you may want to remove or update your DNS records to avoid the risk of a domain takeover. For more information, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site)."{% endif %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.transfer-repository-steps %} - -### Transferring a repository owned by your organization - -If you have owner permissions in an organization or admin permissions to one of its repositories, you can transfer a repository owned by your organization to your user account or to another organization. - -1. Sign into your user account that has admin or owner permissions in the organization that owns the repository. -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.transfer-repository-steps %} diff --git a/content/github/administering-a-repository/types-of-required-status-checks.md b/content/github/administering-a-repository/types-of-required-status-checks.md deleted file mode 100644 index a40ae5287e4a..000000000000 --- a/content/github/administering-a-repository/types-of-required-status-checks.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Types of required status checks -intro: You can set up required status checks to either be "loose" or "strict." The type of required status check you choose determines whether your branch is required to be up to date with the base branch before merging. -product: '{% data reusables.gated-features.protected-branches %}' -redirect_from: - - /articles/types-of-required-status-checks -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -| Type of required status check | Setting | Merge requirements | Considerations | -| --- | --- | --- | --- | -| **Strict** | The **Require branches to be up-to-date before merging** checkbox is checked. | The branch **must** be up to date with the base branch before merging. | This is the default behavior for required status checks. More builds may be required, as you'll need to bring the head branch up to date after other collaborators merge pull requests to the protected base branch.| -| **Loose** | The **Require branches to be up-to-date before merging** checkbox is **not** checked. | The branch **does not** have to be up to date with the base branch before merging. | You'll have fewer required builds, as you won't need to bring the head branch up to date after other collaborators merge pull requests. Status checks may fail after you merge your branch if there are incompatible changes with the base branch. | -| **Disabled** | The **Require status checks to pass before merging** checkbox is **not** checked. | The branch has no merge restrictions. | If required status checks aren't enabled, collaborators can merge the branch at any time, regardless of whether it is up to date with the base branch. This increases the possibility of incompatible changes. - -### Further reading - -- "[About required status checks](/articles/about-required-status-checks)" -- "[Enabling required status checks](/articles/enabling-required-status-checks)" diff --git a/content/github/administering-a-repository/viewing-branches-in-your-repository.md b/content/github/administering-a-repository/viewing-branches-in-your-repository.md deleted file mode 100644 index 521cc0a94927..000000000000 --- a/content/github/administering-a-repository/viewing-branches-in-your-repository.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Viewing branches in your repository -intro: 'Branches are central to collaboration on {% data variables.product.product_name %}, and the best way to view them is the branches page.' -redirect_from: - - /articles/viewing-branches-in-your-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.navigate-to-branches %} -3. Use the navigation at the top of the page to view specific lists of branches: - - **Your branches**: In repositories that you have push access to, the **Yours** view shows all branches that you’ve pushed to, with the most recent branches first. - - **Active branches**: The **Active** view shows all branches that anyone has committed to within the last three months, ordered by the branches with the most recent commits first. - - **Stale branches**: The **Stale** view shows all branches that no one has committed to in the last three months, ordered by the branches with the oldest commits first. Use this list to determine [which branches to delete](/articles/creating-and-deleting-branches-within-your-repository). - - **All branches**: The **All** view shows the default branch, followed by all other branches ordered by the branches with the most recent commits first. - -![The branches page for the Atom repository](/assets/images/help/branches/branches-overview-atom.png) - -### Further reading - -- "[Creating and deleting branches within your repository](/articles/creating-and-deleting-branches-within-your-repository)" -- "[Deleting unused branches](/articles/deleting-unused-branches)" diff --git a/content/github/administering-a-repository/viewing-deployment-activity-for-your-repository.md b/content/github/administering-a-repository/viewing-deployment-activity-for-your-repository.md deleted file mode 100644 index 46f338c0640b..000000000000 --- a/content/github/administering-a-repository/viewing-deployment-activity-for-your-repository.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Viewing deployment activity for your repository -intro: You can view information about deployments for your entire repository or a specific pull request. -redirect_from: - - /articles/viewing-deployment-activity-for-your-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% note %} - -**Note:** The deployments dashboard is currently in beta and subject to change. - -{% endnote %} - -People with read access to a repository can see an overview of all current deployments and a log of past deployment activity, if the repository's deployment workflow is integrated with {% data variables.product.product_name %} through the Deployments API or an app from [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace/category/deployment). For more information, see "[Deployments](/rest/reference/repos#deployments)." - -You can also see deployment information on the "Conversation" tab of a pull request. - -### Viewing the deployments dashboard - -{% data reusables.repositories.navigate-to-repo %} -2. Above the list of files, click **Environments**. -![Environments on top of repository page](/assets/images/help/repository/environments.png) - -### Further reading - - "[About pull requests](/articles/about-pull-requests)" diff --git a/content/github/administering-a-repository/viewing-your-repositorys-releases-and-tags.md b/content/github/administering-a-repository/viewing-your-repositorys-releases-and-tags.md deleted file mode 100644 index b24a833e6ab6..000000000000 --- a/content/github/administering-a-repository/viewing-your-repositorys-releases-and-tags.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Viewing your repository's releases and tags -intro: You can view the chronological history of your repository by release name or tag version number. -redirect_from: - - /articles/working-with-tags/ - - /articles/viewing-your-repositorys-tags - - /github/administering-a-repository/viewing-your-repositorys-tags -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -{% tip %} - -**Tip**: You can also view a release using the {% data variables.product.prodname_cli %}. For more information, see "[`gh release view`](https://cli.github.com/manual/gh_release_view)" in the {% data variables.product.prodname_cli %} documentation. - -{% endtip %} -{% endif %} - -### Viewing releases - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.releases %} -2. At the top of the Releases page, click **Releases**. - -### Viewing tags - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.releases %} -2. At the top of the Releases page, click **Tags**. -![Tags page](/assets/images/help/releases/tags-list.png) - -### Further reading - -- "[Signing tags](/articles/signing-tags)" diff --git a/content/github/authenticating-to-github/about-anonymized-image-urls.md b/content/github/authenticating-to-github/about-anonymized-image-urls.md deleted file mode 100644 index f6a8ca7f11f3..000000000000 --- a/content/github/authenticating-to-github/about-anonymized-image-urls.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: About anonymized image URLs -intro: 'If you upload an image to {% data variables.product.product_name %}, the URL of the image will be modified so your information is not trackable.' -redirect_from: - - /articles/why-do-my-images-have-strange-urls/ - - /articles/about-anonymized-image-urls -versions: - free-pro-team: '*' ---- - -To host your images, {% data variables.product.product_name %} uses the [open-source project Camo](https://github.com/atmos/camo). Camo generates an anonymous URL proxy for each image that starts with ```https://camo.githubusercontent.com/``` and hides your browser details and related information from other users. - -Anyone who receives your anonymized image URL, directly or indirectly, may view your image. To keep sensitive images private, restrict them to a private network or a server that requires authentication instead of using Camo. - -### Troubleshooting issues with Camo - -In rare circumstances, images that are processed through Camo might not appear on {% data variables.product.prodname_dotcom %}. Here are some steps you can take to determine where the problem lies. - -{% windows %} - -{% tip %} - -Windows users will either need to use the Git Powershell (which is installed alongside [{% data variables.product.prodname_desktop %}](https://desktop.github.com/)) or download [curl for Windows](http://curl.haxx.se/download.html). - -{% endtip %} - -{% endwindows %} - -#### An image is not showing up - -If an image is showing up in your browser but not on {% data variables.product.prodname_dotcom %}, you can try requesting the image locally. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Request the image headers using `curl`. - ```shell - $ curl -I https://www.my-server.com/images/some-image.png - > HTTP/1.1 200 OK - > Date: Fri, 06 Jun 2014 07:27:43 GMT - > Expires: Sun, 06 Jul 2014 07:27:43 GMT - > Content-Type: image/x-png - > Server: Google Frontend - > Content-Length: 6507 - ``` -3. Check the value of `Content-Type`. In this case, it's `image/x-png`. -4. Check that content type against [the list of types supported by Camo](https://github.com/atmos/camo/blob/master/mime-types.json). - -If your content type is not supported by Camo, you can try several actions: - * If you own the server that's hosting the image, modify it so that it returns a correct content type for images. - * If you're using an external service for hosting images, contact support for that service. - * Make a pull request to Camo to add your content type to the list. - -#### An image that changed recently is not updating - -If you changed an image recently and it's showing up in your browser but not {% data variables.product.prodname_dotcom %}, you can try resetting the cache of the image. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Request the image headers using `curl`. - ```shell - $ curl -I https://www.my-server.com/images/some-image.png - > HTTP/1.1 200 OK - > Expires: Fri, 01 Jan 1984 00:00:00 GMT - > Content-Type: image/png - > Content-Length: 2339 - > Server: Jetty(8.y.z-SNAPSHOT) - ``` - -Check the value of `Cache-Control`. In this example, there's no `Cache-Control`. In that case: - * If you own the server that's hosting the image, modify it so that it returns a `Cache-Control` of `no-cache` for images. - * If you're using an external service for hosting images, contact support for that service. - - If `Cache-Control` *is* set to `no-cache`, contact {% data variables.contact.contact_support %} or search the {% data variables.contact.community_support_forum %}. - -#### Removing an image from Camo's cache - -Purging the cache forces every {% data variables.product.prodname_dotcom %} user to re-request the image, so you should use it very sparingly and only in the event that the above steps did not work. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Purge the image using `curl -X PURGE` on the Camo URL. - ```shell - $ curl -X PURGE https://camo.githubusercontent.com/4d04abe0044d94fefcf9af2133223.... - > {"status": "ok", "id": "216-8675309-1008701"} - ``` - -#### Viewing images on private networks - -If an image is being served from a private network or from a server that requires authentication, it can't be viewed by {% data variables.product.prodname_dotcom %}. In fact, it can't be viewed by any user without asking them to log into the server. - -To fix this, please move the image to a service that is publicly available. - -### Further reading - -- "[Proxying user images](https://github.com/blog/1766-proxying-user-images)" on {% data variables.product.prodname_blog %} diff --git a/content/github/authenticating-to-github/about-authentication-to-github.md b/content/github/authenticating-to-github/about-authentication-to-github.md deleted file mode 100644 index 49c1b2434ab8..000000000000 --- a/content/github/authenticating-to-github/about-authentication-to-github.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: About authentication to GitHub -intro: 'You can securely access your account''s resources by authenticating to {% data variables.product.product_name %}, using different credentials depending on where you authenticate.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About authentication to {% data variables.product.prodname_dotcom %} - -To keep your account secure, you must authenticate before you can access certain resources on {% data variables.product.product_name %}. When you authenticate to {% data variables.product.product_name %}, you supply or confirm credentials that are unique to you to prove that you are exactly who you declare to be. - -You can access your resources in {% data variables.product.product_name %} in a variety of ways: in the browser, via {% data variables.product.prodname_desktop %} or another desktop application, with the API, or via the command line. Each way of accessing {% data variables.product.product_name %} supports different modes of authentication. - -- Username and password with two-factor authentication -- Personal access token -- SSH key - -### Authenticating in your browser - -You can authenticate to {% data variables.product.product_name %} in your browser in different ways. - -- **Username and password only** - - You'll create a password when you create your user account on {% data variables.product.product_name %}. We recommend that you use a password manager to generate a random and unique password. For more information, see "[Creating a strong password](/github/authenticating-to-github/creating-a-strong-password)." -- **Two-factor authentication (2FA)** (recommended) - - If you enable 2FA, we'll also prompt you to provide a code that's generated by an application on your mobile device or sent as a text message (SMS) after you successfully enter your username and password. For more information, see "[Accessing {% data variables.product.prodname_dotcom %} using two-factor authentication](/github/authenticating-to-github/accessing-github-using-two-factor-authentication#providing-a-2fa-code-when-signing-in-to-the-website)." - - In addition to authentication with a mobile application or a text message, you can optionally add a secondary method of authentication with a security key using WebAuthn. For more information, see "[Configuring two-factor authentication using a security key](/github/authenticating-to-github/configuring-two-factor-authentication#configuring-two-factor-authentication-using-a-security-key)." - -### Authenticating with {% data variables.product.prodname_desktop %} - -You can authenticate with {% data variables.product.prodname_desktop %} using your browser. For more information, see "[Authenticating to {% data variables.product.prodname_dotcom %}](/desktop/getting-started-with-github-desktop/authenticating-to-github)." - -### Authenticating with the API - -You can authenticate with the {% data variables.product.product_name %} API in different ways. - -- **Personal access tokens** - - In limited situations, such as testing, you can use a personal access token to access the API. Using a personal access token enables you to revoke access at any time. For more information, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." -- **Web application flow** - - For OAuth Apps in production, you should authenticate using the web application flow. For more information, see "[Authorizing OAuth Apps](/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow)." -- **GitHub Apps** - - For GitHub Apps in production, you should authenticate on behalf of the app installation. For more information, see "[Authenticating with {% data variables.product.prodname_github_apps %}](/apps/building-github-apps/authenticating-with-github-apps/)." - -### Authenticating with the command line - -You can access repositories on {% data variables.product.product_name %} from the command line in two ways, HTTPS and SSH, and both have a different way of authenticating. The method of authenticating is determined based on whether you choose an HTTPS or SSH remote URL when you clone the repository. For more information about which way to access, see "[Which remote URL should I use?](/github/using-git/which-remote-url-should-i-use)" - -* You can work with all repositories on {% data variables.product.product_name %} over HTTPS, even if you are behind a firewall or proxy. Every time you use Git to authenticate with {% data variables.product.product_name %}, you'll be prompted to enter your credentials to authenticate with {% data variables.product.product_name %}, unless you cache them with a [credential helper](/github/using-git/caching-your-github-credentials-in-git). {% data reusables.user_settings.password-authentication-deprecation %} - -* You can work with all repositories on {% data variables.product.product_name %} over SSH, although firewalls and proxys might refuse to allow SSH connections. Using SSH requires you to generate an SSH public/private keypair on your local machine and add the public key to your {% data variables.product.product_name %} account. Every time you use Git to authenticate with {% data variables.product.product_name %}, you'll be prompted to enter your SSH key passphrase, unless you've [stored the key](/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#adding-your-ssh-key-to-the-ssh-agent). For more information, see "[Generating a new SSH key and adding it to the ssh-agent](/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)." - -{% if currentVersion == "free-pro-team@latest" %}To use a personal access token or SSH key to access resources owned by an organization that uses SAML single sign-on, you must also authorize the personal token or SSH key. For more information, see "[Authorizing a personal access token for use with SAML single sign-on](/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on)" or "[Authorizing an SSH key for use with SAML single sign-on](/github/authenticating-to-github/authorizing-an-ssh-key-for-use-with-saml-single-sign-on)."{% endif %} diff --git a/content/github/authenticating-to-github/about-authentication-with-saml-single-sign-on.md b/content/github/authenticating-to-github/about-authentication-with-saml-single-sign-on.md deleted file mode 100644 index 99699ecc9b56..000000000000 --- a/content/github/authenticating-to-github/about-authentication-with-saml-single-sign-on.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: About authentication with SAML single sign-on -intro: 'You can access an organization that uses SAML single sign-on (SSO) by authenticating through an identity provider (IdP). To authenticate with the API or Git on the command line when an organization enforces SAML SSO, you must authorize your personal access token or SSH key.' -product: '{% data reusables.gated-features.saml-sso %}' -redirect_from: - - /articles/about-authentication-with-saml-single-sign-on -versions: - free-pro-team: '*' ---- - -{% data reusables.saml.dotcom-saml-explanation %} Organization owners can invite your user account on {% data variables.product.prodname_dotcom %} to join their organization that uses SAML SSO, which allows you to contribute to the organization and retain your existing identity and contributions on {% data variables.product.prodname_dotcom %}. - -When you access resources within an organization that uses SAML SSO, {% data variables.product.prodname_dotcom %} will redirect you to the organization's SAML IdP to authenticate. After you successfully authenticate with your account on the IdP, the IdP redirects you back to {% data variables.product.prodname_dotcom %}, where you can access the organization's resources. - -{% data reusables.saml.outside-collaborators-exemption %} - -If you have recently authenticated with your organization's SAML IdP in your browser, you are automatically authorized when you access a {% data variables.product.prodname_dotcom %} organization that uses SAML SSO. If you haven't recently authenticated with your organization's SAML IdP in your browser, you must authenticate at the SAML IdP before you can access the organization. - -You must periodically authenticate with your SAML IdP to authenticate and gain access to the organization's resources on {% data variables.product.prodname_dotcom %}. The duration of this login period is specified by your IdP and is generally 24 hours. This periodic login requirement limits the length of access and requires you to re-identify yourself to continue. You can view and manage your active SAML sessions in your security settings. For more information, see "[Viewing and managing your active SAML sessions](/articles/viewing-and-managing-your-active-saml-sessions)." - -To use the API or Git on the command line to access protected content in an organization that uses SAML SSO, you will need to use an authorized personal access token over HTTPS or an authorized SSH key. {% data variables.product.prodname_oauth_app %} access tokens are authorized by default. - -If you don't have a personal access token or an SSH key, you can create a personal access token for the command line or generate a new SSH key. For more information, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)" or "[Generating a new SSH key and adding it to the ssh-agent](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)." - -To use a new or existing personal access token or SSH key with an organization that enforces SAML SSO, you will need to authorize the token or authorize the SSH key for use with a SAML SSO organization. For more information, see "[Authorizing a personal access token for use with SAML single sign-on](/articles/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on)" or "[Authorizing an SSH key for use with SAML single sign-on](/articles/authorizing-an-ssh-key-for-use-with-saml-single-sign-on)." - -You must have an active SAML session each time you authorize an {% data variables.product.prodname_oauth_app %}. - -### Further reading - -- "[About identity and access management with SAML single sign-on](/github/setting-up-and-managing-organizations-and-teams/about-identity-and-access-management-with-saml-single-sign-on)" diff --git a/content/github/authenticating-to-github/about-commit-signature-verification.md b/content/github/authenticating-to-github/about-commit-signature-verification.md deleted file mode 100644 index 1eba3788d22f..000000000000 --- a/content/github/authenticating-to-github/about-commit-signature-verification.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: About commit signature verification -intro: 'Using GPG{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.14" %} or S/MIME{% endif %}, you can sign tags and commits locally. These tags or commits are marked as verified on {% data variables.product.product_name %} so other people can trust that the changes come from a trusted source.' -redirect_from: - - /articles/about-gpg-commit-and-tag-signatures/ - - /articles/about-gpg/ - - /articles/about-commit-signature-verification -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About commit signature verification - -You can sign commits and tags locally, so other people can verify that your work comes from a trusted source. If a commit or tag has a GPG or S/MIME signature that is cryptographically verifiable, {% data variables.product.product_name %} marks the commit or tag as verified. - -![Verified commit](/assets/images/help/commits/verified-commit.png) - -If a commit or tag has a signature that cannot be verified, {% data variables.product.product_name %} marks the commit or tag as unverified. - -Repository administrators can enforce required commit signing on a branch to block all commits that are not signed and verified. For more information, see "[About required commit signing](/articles/about-required-commit-signing)." - -You can check the verification status of your signed commits or tags on {% data variables.product.product_name %} and view why your commit signatures might be unverified. For more information, see "[Checking your commit and tag signature verification status](/articles/checking-your-commit-and-tag-signature-verification-status)." - -{% if currentVersion == "free-pro-team@latest" %} {% data variables.product.product_name %} will automatically use GPG to sign commits you make using the {% data variables.product.product_name %} web interface, except for when you squash and merge a pull request that you are not the author of. Commits signed by {% data variables.product.product_name %} will have a verified status on {% data variables.product.product_name %}. You can verify the signature locally using the public key available at https://github.com/web-flow.gpg.{% endif %} - -### GPG commit signature verification - -You can use GPG to sign commits with a GPG key that you generate yourself. - -{% data variables.product.product_name %} uses OpenPGP libraries to confirm that your locally signed commits and tags are cryptographically verifiable against a public key you have added to your {% data variables.product.product_name %} account. - -To sign commits using GPG and have those commits verified on {% data variables.product.product_name %}, follow these steps: - -1. [Check for existing GPG keys](/articles/checking-for-existing-gpg-keys) -2. [Generate a new GPG key](/articles/generating-a-new-gpg-key) -3. [Add a new GPG key to your GitHub account](/articles/adding-a-new-gpg-key-to-your-github-account) -4. [Tell Git about your signing key](/articles/telling-git-about-your-signing-key) -5. [Sign commits](/articles/signing-commits) -6. [Sign tags](/articles/signing-tags) - -### S/MIME commit signature verification - -You can use S/MIME to sign commits with an X.509 key issued by your organization. - -{% data variables.product.product_name %} uses [the Debian ca-certificates package](https://packages.debian.org/hu/jessie/ca-certificates), the same trust store used by Mozilla browsers, to confirm that your locally signed commits and tags are cryptographically verifiable against a public key in a trusted root certificate. - -{% data reusables.gpg.smime-git-version %} - -To sign commits using S/MIME and have those commits verified on {% data variables.product.product_name %}, follow these steps: - -1. [Tell Git about your signing key](/articles/telling-git-about-your-signing-key) -2. [Sign commits](/articles/signing-commits) -3. [Sign tags](/articles/signing-tags) - -You don't need to upload your public key to {% data variables.product.product_name %}. - -{% if currentVersion == "free-pro-team@latest" %} -### Signature verification for bots - -Organizations and {% data variables.product.prodname_github_app %}s that require commit signing can use bots to sign commits. If a commit or tag has a bot signature that is cryptographically verifiable, {% data variables.product.product_name %} marks the commit or tag as verified. - -Signature verification for bots will only work if the request is verified and authenticated as the {% data variables.product.prodname_github_app %} or bot and contains no custom author information, custom committer information, and no custom signature information, such as Commits API. -{% endif %} - -### Further reading - -- "[Signing commits](/articles/signing-commits)" -- "[Signing tags](/articles/signing-tags)" -- "[Troubleshooting commit signature verification](/articles/troubleshooting-commit-signature-verification)" diff --git a/content/github/authenticating-to-github/about-githubs-ip-addresses.md b/content/github/authenticating-to-github/about-githubs-ip-addresses.md deleted file mode 100644 index 197c06daf919..000000000000 --- a/content/github/authenticating-to-github/about-githubs-ip-addresses.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: About GitHub's IP addresses -intro: '{% data variables.product.product_name %} serves applications from multiple IP address ranges, which are available using the API.' -redirect_from: - - /articles/what-ip-addresses-does-github-use-that-i-should-whitelist/ - - /categories/73/articles/ - - /categories/administration/ - - /articles/github-s-ip-addresses/ - - /articles/about-github-s-ip-addresses - - /articles/about-githubs-ip-addresses -versions: - free-pro-team: '*' ---- -You can retrieve a list of {% data variables.product.prodname_dotcom %}'s IP addresses from the [meta](https://api.github.com/meta) API endpoint. For more information, see "[Meta](/v3/meta/)." - -These ranges are in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation). You can use an online conversion tool such as this [CIDR / VLSM Supernet Calculator](http://www.subnet-calculator.com/cidr.php) to convert from CIDR notation to IP address ranges. - -We make changes to our IP addresses from time to time, and will keep this API up to date. We do not recommend allowing by IP address, however if you use these IP ranges we strongly encourage regular monitoring of our API. - -For applications to function, you must allow TCP ports 22, 80, 443, and 9418 via our IP ranges for `github.com`. - -### Further reading - -- "[Troubleshooting connectivity problems](/articles/troubleshooting-connectivity-problems)" diff --git a/content/github/authenticating-to-github/about-ssh.md b/content/github/authenticating-to-github/about-ssh.md deleted file mode 100644 index 9004595bdd55..000000000000 --- a/content/github/authenticating-to-github/about-ssh.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: About SSH -intro: 'Using the SSH protocol, you can connect and authenticate to remote servers and services. With SSH keys, you can connect to {% data variables.product.product_name %} without supplying your username or password at each visit.' -redirect_from: - - /articles/about-ssh -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When you set up SSH, you'll [generate an SSH key and add it to the ssh-agent](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) and then [add the key to your {% data variables.product.product_name %} account](/articles/adding-a-new-ssh-key-to-your-github-account). Adding the SSH key to the ssh-agent ensures that your SSH key has an extra layer of security through the use of a passphrase. For more information, see "[Working with SSH key passphrases](/articles/working-with-ssh-key-passphrases)." - -{% if currentVersion == "free-pro-team@latest" %}To use your SSH key with a repository owned by an organization that uses SAML single sign-on, you'll need to authorize it first. For more information, see "[Authorizing an SSH key for use with SAML single sign-on](/articles/authorizing-an-ssh-key-for-use-with-saml-single-sign-on)."{% endif %} - -We recommend that you regularly [review your SSH keys list](/articles/reviewing-your-ssh-keys) and revoke any that are invalid or have been compromised. - -{% if currentVersion == "free-pro-team@latest" %} -If you haven't used your SSH key for a year, then {% data variables.product.prodname_dotcom %} will automatically delete your inactive SSH key as a security precaution. For more information, see "[Deleted or missing SSH keys](/articles/deleted-or-missing-ssh-keys)." -{% endif %} - -If you're a member of an organization that provides SSH certificates, you can use your certificate to access that organization's repositories without adding the certificate to your {% data variables.product.product_name %} account. For more information, see "[About SSH certificate authorities](/articles/about-ssh-certificate-authorities)." - -### Further reading - -- "[Checking for existing SSH keys](/articles/checking-for-existing-ssh-keys)" -- "[Testing your SSH connection](/articles/testing-your-ssh-connection)" -- "[Working with SSH key passphrases](/articles/working-with-ssh-key-passphrases)" -- "[Troubleshooting SSH](/articles/troubleshooting-ssh)" -{%- if currentVersion == "free-pro-team@latest" %} -- "[Authorizing an SSH key for use with SAML single sign-on](/articles/authorizing-an-ssh-key-for-use-with-saml-single-sign-on)" -{%- endif %} diff --git a/content/github/authenticating-to-github/about-two-factor-authentication.md b/content/github/authenticating-to-github/about-two-factor-authentication.md deleted file mode 100644 index 478630fc958a..000000000000 --- a/content/github/authenticating-to-github/about-two-factor-authentication.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: About two-factor authentication -intro: '{% data reusables.two_fa.about-2fa %} With 2FA, you have to log in with your username and password and provide another form of authentication that only you know or have access to.' -redirect_from: - - /articles/about-two-factor-authentication -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -For {% data variables.product.product_name %}, the second form of authentication is a code that's generated by an application on your mobile device{% if currentVersion == "free-pro-team@latest" %} or sent as a text message (SMS){% endif %}. After you enable 2FA, {% data variables.product.product_name %} generates an authentication code any time someone attempts to sign into your {% data variables.product.product_name %} account. The only way someone can sign into your account is if they know both your password and have access to the authentication code on your phone. - -{% data reusables.two_fa.after-2fa-add-security-key %} - -You can also configure additional recovery methods in case you lose access to your two-factor authentication credentials. For more information on setting up 2FA, see "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication)" and "[Configuring two-factor authentication recovery methods](/articles/configuring-two-factor-authentication-recovery-methods)." - -We **strongly** urge you to enable 2FA for the safety of your account, not only on {% data variables.product.product_name %}, but on other websites and apps that support 2FA. You can enable 2FA to access {% data variables.product.product_name %} and {% data variables.product.prodname_desktop %}. - -For more information, see "[Accessing {% data variables.product.prodname_dotcom %} using two-factor authentication](/articles/accessing-github-using-two-factor-authentication)." - -### Two-factor authentication recovery codes - -{% data reusables.two_fa.about-recovery-codes %} For more information, see "[Recovering your account if you lose your 2FA credentials](/articles/recovering-your-account-if-you-lose-your-2fa-credentials)." - -{% if currentVersion == "free-pro-team@latest" %} - -{% warning %} - -**Warning**: {% data reusables.two_fa.support-may-not-help %} For more information, see "[Recovering your account if you lose your 2FA credentials](/articles/recovering-your-account-if-you-lose-your-2fa-credentials)." - -{% endwarning %} - -{% endif %} - -### Requiring two-factor authentication in your organization - -Organization owners can require that organization members{% if currentVersion == "free-pro-team@latest" %}, billing managers,{% endif %} and outside collaborators use two-factor authentication to secure their personal accounts. For more information, see "[Requiring two-factor authentication in your organization](/articles/requiring-two-factor-authentication-in-your-organization)." - -{% data reusables.two_fa.auth_methods_2fa %} diff --git a/content/github/authenticating-to-github/accessing-github-using-two-factor-authentication.md b/content/github/authenticating-to-github/accessing-github-using-two-factor-authentication.md deleted file mode 100644 index 4310af7d7191..000000000000 --- a/content/github/authenticating-to-github/accessing-github-using-two-factor-authentication.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Accessing GitHub using two-factor authentication -intro: 'With 2FA enabled, you''ll be asked to provide your 2FA authentication code, as well as your password, when you sign in to {% data variables.product.product_name %}.' -redirect_from: - - /articles/providing-your-2fa-security-code/ - - /articles/providing-your-2fa-authentication-code/ - - /articles/authenticating-to-github-using-fido-u2f-via-nfc/ - - /articles/accessing-github-using-two-factor-authentication -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -With two-factor authentication enabled, you'll need to provide an authentication code when accessing {% data variables.product.product_name %} through your browser. If you access {% data variables.product.product_name %} using other methods, such as the API or the command line, you'll need to use an alternative form of authentication. For more information, see "[About authentication to {% data variables.product.prodname_dotcom %}](/github/authenticating-to-github/about-authentication-to-github)." - -### Providing a 2FA code when signing in to the website - -After you sign in to {% data variables.product.product_name %} using your password, you'll be prompted to provide an authentication code from {% if currentVersion == "free-pro-team@latest" %}a text message or{% endif %} your TOTP app. - -{% data variables.product.product_name %} will only ask you to provide your 2FA authentication code again if you've logged out, are using a new device, or your session expires. - -#### Generating a code through a TOTP application - -If you chose to set up two-factor authentication using a TOTP application on your smartphone, you can generate an authentication code for {% data variables.product.product_name %} at any time. In most cases, just launching the application will generate a new code. You should refer to your application's documentation for specific instructions. - -If you delete the mobile application after configuring two-factor authentication, you'll need to provide your recovery code to get access to your account. For more information, see "[Recovering your account if you lose your two-factor authentication credentials](/articles/recovering-your-account-if-you-lose-your-2fa-credentials)" - -{% if currentVersion == "free-pro-team@latest" %} - -#### Receiving a text message - -If you set up two-factor authentication via text messages, {% data variables.product.product_name %} will send you a text message with your authentication code. - -{% endif %} - -### Using two-factor authentication with the command line - -After you've enabled 2FA, you must use a personal access token or SSH key instead of your password when accessing {% data variables.product.product_name %} on the command line. - -#### Authenticating on the command line using HTTPS - -After you've enabled 2FA, you must create a personal access token to use as a password when authenticating to {% data variables.product.product_name %} on the command line using HTTPS URLs. - -When prompted for a username and password on the command line, use your {% data variables.product.product_name %} username and personal access token. The command line prompt won't specify that you should enter your personal access token when it asks for your password. - -For more information, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." - -#### Authenticating on the command line using SSH - -Enabling 2FA doesn't change how you authenticate to {% data variables.product.product_name %} on the command line using SSH URLs. For more information about setting up and using an SSH key, see "[Connecting to {% data variables.product.prodname_dotcom %} with SSH](/articles/connecting-to-github-with-ssh/)." - -### Using two-factor authentication to access a repository using Subversion - -When you access a repository via Subversion, you must provide a personal access token instead of entering your password. For more information, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." - -### Troubleshooting - -If you lose access to your two-factor authentication credentials, you can use your recovery codes or another recovery method (if you've set one up) to regain access to your account. For more information, see "[Recovering your account if you lose your 2FA credentials](/articles/recovering-your-account-if-you-lose-your-2fa-credentials)." - -If your authentication fails several times, you may wish to synchronize your phone's clock with your mobile provider. Often, this involves checking the "Set automatically" option on your phone's clock, rather than providing your own time zone. - -### Further reading - -- "[About two-factor authentication](/articles/about-two-factor-authentication)" -- "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication)" -- "[Configuring two-factor authentication recovery methods](/articles/configuring-two-factor-authentication-recovery-methods)" -- "[Recovering your account if you lose your two-factor authentication credentials](/articles/recovering-your-account-if-you-lose-your-2fa-credentials)" diff --git a/content/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account.md b/content/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account.md deleted file mode 100644 index a0d8f40f837f..000000000000 --- a/content/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Adding a new GPG key to your GitHub account -intro: 'To configure your {% data variables.product.product_name %} account to use your new (or existing) GPG key, you''ll also need to add it to your {% data variables.product.product_name %} account.' -redirect_from: - - /articles/adding-a-new-gpg-key-to-your-github-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Before adding a new GPG key to your {% data variables.product.product_name %} account, you should have: -- [Checked for existing GPG keys](/articles/checking-for-existing-gpg-keys) -- [Generated and copied a new GPG key](/articles/generating-a-new-gpg-key) - -{% data reusables.gpg.supported-gpg-key-algorithms %} - -When verifying a signature, we extract the signature and attempt to parse its key-id. We match the key-id with keys uploaded to {% data variables.product.product_name %}. Until you upload your GPG key to {% data variables.product.product_name %}, we cannot verify your signatures. - -### Adding a GPG key - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.ssh %} -3. Click **New GPG key**. - ![GPG Key button](/assets/images/help/settings/gpg-add-gpg-key.png) -4. In the "Key" field, paste the GPG key you copied when you [generated your GPG key](/articles/generating-a-new-gpg-key). - ![The key field](/assets/images/help/settings/gpg-key-paste.png) -5. Click **Add GPG key**. - ![The Add key button](/assets/images/help/settings/gpg-add-key.png) -6. To confirm the action, enter your {% data variables.product.product_name %} password. - -### Further reading - -* "[Checking for existing GPG keys](/articles/checking-for-existing-gpg-keys)" -* "[Generating a new GPG key](/articles/generating-a-new-gpg-key)" -* "[Telling Git about your signing key](/articles/telling-git-about-your-signing-key)" -* "[Associating an email with your GPG key](/articles/associating-an-email-with-your-gpg-key)" -* "[Signing commits and tags using GPG keys](/articles/signing-commits-and-tags-using-gpg)" diff --git a/content/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account.md b/content/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account.md deleted file mode 100644 index 92956427aba8..000000000000 --- a/content/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Adding a new SSH key to your GitHub account -intro: 'To configure your {% data variables.product.product_name %} account to use your new (or existing) SSH key, you''ll also need to add it to your {% data variables.product.product_name %} account.' -redirect_from: - - /articles/adding-a-new-ssh-key-to-your-github-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Before adding a new SSH key to your {% data variables.product.product_name %} account, you should have: -* [Checked for existing SSH keys](/articles/checking-for-existing-ssh-keys) -* [Generated a new SSH key and added it to the ssh-agent](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) - -After adding a new SSH key to your {% data variables.product.product_name %} account, you can reconfigure any local repositories to use SSH. For more information, see "[Switching remote URLs from HTTPS to SSH](/articles/changing-a-remote-s-url/#switching-remote-urls-from-https-to-ssh)." - -{% data reusables.ssh.dsa-support %} - -{% mac %} - -1. Copy the SSH key to your clipboard. - - If your SSH key file has a different name than the example code, modify the filename to match your current setup. When copying your key, don't add any newlines or whitespace. - - ```shell - $ pbcopy < ~/.ssh/id_rsa.pub - # Copies the contents of the id_rsa.pub file to your clipboard - ``` - - {% tip %} - - **Tip:** If `pbcopy` isn't working, you can locate the hidden `.ssh` folder, open the file in your favorite text editor, and copy it to your clipboard. - - {% endtip %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.ssh %} -4. Click **New SSH key** or **Add SSH key**. - ![SSH Key button](/assets/images/help/settings/ssh-add-ssh-key.png) -5. In the "Title" field, add a descriptive label for the new key. For example, if you're using a personal Mac, you might call this key "Personal MacBook Air". -6. Paste your key into the "Key" field. - ![The key field](/assets/images/help/settings/ssh-key-paste.png) -7. Click **Add SSH key**. - ![The Add key button](/assets/images/help/settings/ssh-add-key.png) -{% data reusables.user_settings.sudo-mode-popup %} - -{% endmac %} - -{% windows %} - -1. Copy the SSH key to your clipboard. - - If your SSH key file has a different name than the example code, modify the filename to match your current setup. When copying your key, don't add any newlines or whitespace. - - ```shell - $ clip < ~/.ssh/id_rsa.pub - # Copies the contents of the id_rsa.pub file to your clipboard - ``` - - {% tip %} - - **Tip:** If `clip` isn't working, you can locate the hidden `.ssh` folder, open the file in your favorite text editor, and copy it to your clipboard. - - {% endtip %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.ssh %} -4. Click **New SSH key** or **Add SSH key**. - ![SSH Key button](/assets/images/help/settings/ssh-add-ssh-key.png) -5. In the "Title" field, add a descriptive label for the new key. For example, if you're using a personal Mac, you might call this key "Personal MacBook Air". -6. Paste your key into the "Key" field. - ![The key field](/assets/images/help/settings/ssh-key-paste.png) -7. Click **Add SSH key**. - ![The Add key button](/assets/images/help/settings/ssh-add-key.png) -8. If prompted, confirm your {% data variables.product.product_name %} password. - ![Sudo mode dialog](/assets/images/help/settings/sudo_mode_popup.png) - -{% endwindows %} - -{% linux %} - -1. Copy the SSH key to your clipboard. - - If your SSH key file has a different name than the example code, modify the filename to match your current setup. When copying your key, don't add any newlines or whitespace. - - ```shell - $ sudo apt-get install xclip - # Downloads and installs xclip. If you don't have `apt-get`, you might need to use another installer (like `yum`) - - $ xclip -selection clipboard < ~/.ssh/id_rsa.pub - # Copies the contents of the id_rsa.pub file to your clipboard - ``` - {% tip %} - - **Tip:** If `xclip` isn't working, you can locate the hidden `.ssh` folder, open the file in your favorite text editor, and copy it to your clipboard. - - {% endtip %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.ssh %} -4. Click **New SSH key** or **Add SSH key**. - ![SSH Key button](/assets/images/help/settings/ssh-add-ssh-key.png) -5. In the "Title" field, add a descriptive label for the new key. For example, if you're using a personal Mac, you might call this key "Personal MacBook Air". -6. Paste your key into the "Key" field. - ![The key field](/assets/images/help/settings/ssh-key-paste.png) -7. Click **Add SSH key**. - ![The Add key button](/assets/images/help/settings/ssh-add-key.png) -8. If prompted, confirm your {% data variables.product.product_name %} password. - ![Sudo mode dialog](/assets/images/help/settings/sudo_mode_popup.png) - -{% endlinux %} - -{% if currentVersion == "free-pro-team@latest" %} -### Further reading - -- "[Authorizing an SSH key for use with SAML single sign-on](/articles/authorizing-an-ssh-key-for-use-with-saml-single-sign-on)" -{% endif %} diff --git a/content/github/authenticating-to-github/associating-an-email-with-your-gpg-key.md b/content/github/authenticating-to-github/associating-an-email-with-your-gpg-key.md deleted file mode 100644 index 61632f56c75f..000000000000 --- a/content/github/authenticating-to-github/associating-an-email-with-your-gpg-key.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Associating an email with your GPG key -intro: 'Your GPG key must be associated with a {% data variables.product.product_name %} verified email that matches your committer identity.' -redirect_from: - - /articles/associating-an-email-with-your-gpg-key -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% note %} - -If you're using a GPG key that matches your committer identity and your verified email address associated with your {% data variables.product.product_name %} account, then you can begin signing commits and signing tags. - -{% endnote %} - -{% data reusables.command_line.open_the_multi_os_terminal %} -{% data reusables.gpg.list-keys-with-note %} -{% data reusables.gpg.copy-gpg-key-id %} -4. Enter `gpg --edit-key GPG key ID`, substituting in the GPG key ID you'd like to use. In the following example, the GPG key ID is `3AA5C34371567BD2`: - ```shell - $ gpg --edit-key 3AA5C34371567BD2 - ``` -5. Enter `gpg> adduid` to add the user ID details. - ```shell - $ gpg> adduid - ``` -6. Follow the prompts to supply your real name, email address, and any comments. You can modify your entries by choosing `N`, `C`, or `E`. {% data reusables.gpg.private-email %} {% if currentVersion == "free-pro-team@latest" %} For more information, see "[Setting your commit email address](/articles/setting-your-commit-email-address)."{% endif %} - ```shell - Real Name: Octocat - Email address: octocat@github.com - Comment: GitHub key - Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? - ``` -7. Enter `O` to save your selections. -8. Enter your key's passphrase. -9. Enter `gpg --armor --export GPG key ID`, substituting in the GPG key ID you'd like to use. In the following example, the GPG key ID is `3AA5C34371567BD2`: - ```shell - $ gpg --armor --export 3AA5C34371567BD2 - # Prints the GPG key, in ASCII armor format - ``` -10. Upload the GPG key by [adding it to your GitHub account](/articles/adding-a-new-gpg-key-to-your-github-account). - -### Further reading - -- "[Checking for existing GPG keys](/articles/checking-for-existing-gpg-keys)" -- "[Generating a new GPG key](/articles/generating-a-new-gpg-key)" -- "[Using a verified email address in your GPG key](/articles/using-a-verified-email-address-in-your-gpg-key)" -- "[Adding a new GPG key to your GitHub account](/articles/adding-a-new-gpg-key-to-your-github-account)" -- "[Signing commits](/articles/signing-commits)" -- "[Signing tags](/articles/signing-tags)" diff --git a/content/github/authenticating-to-github/authenticating-with-saml-single-sign-on.md b/content/github/authenticating-to-github/authenticating-with-saml-single-sign-on.md deleted file mode 100644 index 7aef5dbc735a..000000000000 --- a/content/github/authenticating-to-github/authenticating-with-saml-single-sign-on.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Authenticating with SAML single sign-on -intro: 'You can authenticate to a {% data variables.product.product_name %} organization with SAML single sign-on (SSO) and view your active sessions.' -mapTopic: true -redirect_from: - - /articles/authenticating-to-a-github-organization-with-saml-single-sign-on/ - - /articles/authenticating-with-saml-single-sign-on -versions: - free-pro-team: '*' ---- - diff --git a/content/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on.md b/content/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on.md deleted file mode 100644 index 6b52b6665894..000000000000 --- a/content/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Authorizing a personal access token for use with SAML single sign-on -intro: 'To use a personal access token with an organization that uses SAML single sign-on (SSO), you must first authorize the token.' -redirect_from: - - /articles/authorizing-a-personal-access-token-for-use-with-a-saml-single-sign-on-organization/ - - /articles/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on -versions: - free-pro-team: '*' ---- - -You can authorize an existing personal access token, or [create a new personal access token](/github/authenticating-to-github/creating-a-personal-access-token) and then authorize it. - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.developer_settings %} -{% data reusables.user_settings.personal_access_tokens %} -3. Next to the token you'd like to authorize, click **Enable SSO** or **Disable SSO**. - ![SSO token authorize button](/assets/images/help/settings/sso-allowlist-button.png) -4. Find the organization you'd like to authorize the access token for. -4. Click **Authorize**. - ![Token authorize button](/assets/images/help/settings/token-authorize-button.png) - -### Further reading - -- "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)" -- "[About authentication with SAML single sign-on](/articles/about-authentication-with-saml-single-sign-on)" diff --git a/content/github/authenticating-to-github/authorizing-an-ssh-key-for-use-with-saml-single-sign-on.md b/content/github/authenticating-to-github/authorizing-an-ssh-key-for-use-with-saml-single-sign-on.md deleted file mode 100644 index ee2b69a4b70c..000000000000 --- a/content/github/authenticating-to-github/authorizing-an-ssh-key-for-use-with-saml-single-sign-on.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Authorizing an SSH key for use with SAML single sign-on -intro: 'To use an SSH key with an organization that uses SAML single sign-on (SSO), you must first authorize the key.' -redirect_from: - - /articles/authorizing-an-ssh-key-for-use-with-a-saml-single-sign-on-organization/ - - /articles/authorizing-an-ssh-key-for-use-with-saml-single-sign-on -versions: - free-pro-team: '*' ---- - -You can authorize an existing SSH key, or create a new SSH key and then authorize it. For more information about creating a new SSH key, see "[Generating a new SSH key and adding it to the ssh-agent](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)." - -{% note %} - -**Note:** If your SSH key authorization is revoked by an organization, you will not be able to reauthorize the same key. You will need to create a new SSH key and authorize it. For more information about creating a new SSH key, see "[Generating a new SSH key and adding it to the ssh-agent](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)." - -{% endnote %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.ssh %} -3. Next to the SSH key you'd like to authorize, click **Enable SSO** or **Disable SSO**. -![SSO token authorize button](/assets/images/help/settings/ssh-sso-button.png) -4. Find the organization you'd like to authorize the SSH key for. -5. Click **Authorize**. -![Token authorize button](/assets/images/help/settings/ssh-sso-authorize.png) - -### Further reading - -- "[Checking for existing SSH keys](/articles/checking-for-existing-ssh-keys)" -- "[About authentication with SAML single sign-on](/articles/about-authentication-with-saml-single-sign-on)" diff --git a/content/github/authenticating-to-github/authorizing-oauth-apps.md b/content/github/authenticating-to-github/authorizing-oauth-apps.md deleted file mode 100644 index eba3bcec9b15..000000000000 --- a/content/github/authenticating-to-github/authorizing-oauth-apps.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Authorizing OAuth Apps -intro: 'You can connect your {% data variables.product.product_name %} identity to third-party applications using OAuth. When authorizing an {% data variables.product.prodname_oauth_app %}, you should ensure you trust the application, review who it''s developed by, and review the kinds of information the application wants to access.' -redirect_from: - - /articles/authorizing-oauth-apps -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When an {% data variables.product.prodname_oauth_app %} wants to identify you by your {% data variables.product.product_name %} account, you'll see a page with the app's developer contact information and a list of the specific data that's being requested. - -{% if currentVersion == "free-pro-team@latest" %} - -{% tip %} - -**Tip:** You must [verify your email address](/articles/verifying-your-email-address) before you can authorize an {% data variables.product.prodname_oauth_app %}. - -{% endtip %} - -{% endif %} - -### {% data variables.product.prodname_oauth_app %} access - -{% data variables.product.prodname_oauth_app %}s can have *read* or *write* access to your {% data variables.product.product_name %} data. - -- **Read access** only allows an app to *look at* your data. -- **Write access** allows an app to *change* your data. - -{% tip %} - -**Tip:** {% data reusables.user_settings.review_oauth_tokens_tip %} - -{% endtip %} - -#### About OAuth scopes - -*Scopes* are named groups of permissions that an {% data variables.product.prodname_oauth_app %} can request to access both public and non-public data. - -When you want to use an {% data variables.product.prodname_oauth_app %} that integrates with {% data variables.product.product_name %}, that app lets you know what type of access to your data will be required. If you grant access to the app, then the app will be able to perform actions on your behalf, such as reading or modifying data. For example, if you want to use an app that requests `user:email` scope, the app will have read-only access to your private email addresses. For more information, see "[About scopes for {% data variables.product.prodname_oauth_app %}s](//apps/building-integrations/setting-up-and-registering-oauth-apps/about-scopes-for-oauth-apps)." - -{% tip %} - -**Note:** Currently, you can't scope source code access to read-only. - -{% endtip %} - -#### Types of requested data - -{% data variables.product.prodname_oauth_app %}s can request several types of data. - -| Type of data | Description | -| --- | --- | -| Commit status | You can grant access for an app to report your commit status. Commit status access allows apps to determine if a build is a successful against a specific commit. Apps won't have access to your code, but they can read and write status information against a specific commit. | -| Deployments | Deployment status access allows apps to determine if a deployment is successful against a specific commit for public and private repositories. Apps won't have access to your code. | -| Gists | [Gist](https://gist.github.com) access allows apps to read or write to both your public and secret Gists. | -| Hooks | [Webhooks](/webhooks) access allows apps to read or write hook configurations on repositories you manage. | -| Notifications | Notification access allows apps to read your {% data variables.product.product_name %} notifications, such as comments on issues and pull requests. However, apps remain unable to access anything in your repositories. | -| Organizations and teams | Organization and teams access allows apps to access and manage organization and team membership. | -| Personal user data | User data includes information found in your user profile, like your name, e-mail address, and location. | -| Repositories | Repository information includes the names of contributors, the branches you've created, and the actual files within your repository. Apps can request access for either public or private repositories on a user-wide level. | -| Repository delete | Apps can request to delete repositories that you administer, but they won't have access to your code. | - -### Requesting updated permissions - -When {% data variables.product.prodname_oauth_app %}s request new access permissions, they will notify you of the differences between their current permissions and the new permissions. - -{% if currentVersion == "free-pro-team@latest" %} - -### {% data variables.product.prodname_oauth_app %}s and organizations - -When you authorize an {% data variables.product.prodname_oauth_app %} for your personal user account, you'll also see how the authorization will affect each organization you're a member of. - -- **For organizations *with* {% data variables.product.prodname_oauth_app %} access restrictions, you can request that organization admins approve the application for use in that organization.** If the organization does not approve the application, then the application will only be able to access the organization's public resources. If you're an organization admin, you can [approve the application](/articles/approving-oauth-apps-for-your-organization) yourself. - -- **For organizations *without* {% data variables.product.prodname_oauth_app %} access restrictions, the application will automatically be authorized for access to that organization's resources.** For this reason, you should be careful about which {% data variables.product.prodname_oauth_app %}s you approve for access to your personal account resources as well as any organization resources. - -If you belong to any organizations that enforce SAML single sign-on, you must have an active SAML session for each organization each time you authorize an {% data variables.product.prodname_oauth_app %}. - -### Further reading - -- "[About {% data variables.product.prodname_oauth_app %} access restrictions](/articles/about-oauth-app-access-restrictions)" -- "[{% data variables.product.prodname_marketplace %} support](/articles/github-marketplace-support)" - -{% endif %} diff --git a/content/github/authenticating-to-github/changing-two-factor-authentication-delivery-methods-for-your-mobile-device.md b/content/github/authenticating-to-github/changing-two-factor-authentication-delivery-methods-for-your-mobile-device.md deleted file mode 100644 index c2889d554737..000000000000 --- a/content/github/authenticating-to-github/changing-two-factor-authentication-delivery-methods-for-your-mobile-device.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Changing two-factor authentication delivery methods for your mobile device -intro: You can switch between receiving authentication codes through a text message or a mobile application. -redirect_from: - - /articles/changing-two-factor-authentication-delivery-methods/ - - /articles/changing-two-factor-authentication-delivery-methods-for-your-mobile-device -versions: - free-pro-team: '*' ---- - -{% note %} - -**Note:** Changing your two-factor authentication method invalidates your current two-factor method setup. However, this doesn't affect your recovery codes or fallback SMS configuration. You can update your recovery codes or fallback SMS configuration on in your personal account's security settings page if desired. - -{% endnote %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security %} -3. Next to "SMS delivery", click **Edit**. - ![Edit SMS delivery options](/assets/images/help/2fa/edit-sms-delivery-option.png) -4. Under "Delivery options", click **Reconfigure two-factor authentication**. - ![Switching your 2FA delivery options](/assets/images/help/2fa/2fa-switching-methods.png) -5. Decide whether to set up two-factor authentication using a TOTP mobile app or text message. For more information, see "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication)." - - To set up two-factor authentication using a TOTP mobile app, click **Set up using an app**. - - To set up two-factor authentication using text message (SMS), click **Set up using SMS**. - -### Further reading - -- "[About two-factor authentication](/articles/about-two-factor-authentication)" -- "[Configuring two-factor authentication recovery methods](/articles/configuring-two-factor-authentication-recovery-methods)" diff --git a/content/github/authenticating-to-github/checking-for-existing-gpg-keys.md b/content/github/authenticating-to-github/checking-for-existing-gpg-keys.md deleted file mode 100644 index 4abf9e60c93c..000000000000 --- a/content/github/authenticating-to-github/checking-for-existing-gpg-keys.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Checking for existing GPG keys -intro: 'Before you generate a GPG key, you can check to see if you have any existing GPG keys.' -redirect_from: - - /articles/checking-for-existing-gpg-keys -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% data reusables.gpg.supported-gpg-key-algorithms %} - -{% note %} - -**Note:** GPG does not come installed by default on OS X or Windows. To install GPG command line tools, see [GnuPG's Download page](https://www.gnupg.org/download/). - -{% endnote %} - -{% data reusables.command_line.open_the_multi_os_terminal %} -{% data reusables.gpg.list-keys-with-note %} -3. Check the command output to see if you have a GPG key pair. - * If there are no GPG key pairs or you don't want to use any that are available for signing commits and tags, then [generate a new GPG key](/articles/generating-a-new-gpg-key). - * If there's an existing GPG key pair and you want to use it to sign commits and tags, then [add your GPG key to your GitHub account](/articles/adding-a-new-gpg-key-to-your-github-account). - -### Further reading - -* "[Generating a new GPG key](/articles/generating-a-new-gpg-key)" -* "[Adding a new GPG key to your GitHub account](/articles/adding-a-new-gpg-key-to-your-github-account)" -* "[Telling Git about your signing key](/articles/telling-git-about-your-signing-key)" -* "[Associating an email with your GPG key](/articles/associating-an-email-with-your-gpg-key)" -* "[Signing commits](/articles/signing-commits)" -* "[Signing tags](/articles/signing-tags)" diff --git a/content/github/authenticating-to-github/checking-for-existing-ssh-keys.md b/content/github/authenticating-to-github/checking-for-existing-ssh-keys.md deleted file mode 100644 index 5fce820e48c9..000000000000 --- a/content/github/authenticating-to-github/checking-for-existing-ssh-keys.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Checking for existing SSH keys -intro: 'Before you generate an SSH key, you can check to see if you have any existing SSH keys.' -redirect_from: - - /articles/checking-for-existing-ssh-keys -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.ssh.dsa-support %} - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Enter `ls -al ~/.ssh` to see if existing SSH keys are present: - - ```shell - $ ls -al ~/.ssh - # Lists the files in your .ssh directory, if they exist - ``` -3. Check the directory listing to see if you already have a public SSH key. By default, the filenames of the public keys are one of the following: - - *id_rsa.pub* - - *id_ecdsa.pub* - - *id_ed25519.pub* - -If you don't have an existing public and private key pair, or don't wish to use any that are available to connect to {% data variables.product.product_name %}, then [generate a new SSH key](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent). - -If you see an existing public and private key pair listed (for example *id_rsa.pub* and *id_rsa*) that you would like to use to connect to {% data variables.product.product_name %}, you can [add your SSH key to the ssh-agent](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#adding-your-ssh-key-to-the-ssh-agent). - -{% tip %} - -**Tip:** If you receive an error that *~/.ssh* doesn't exist, don't worry! We'll create it when we [generate a new SSH key](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent). - -{% endtip %} diff --git a/content/github/authenticating-to-github/checking-your-commit-and-tag-signature-verification-status.md b/content/github/authenticating-to-github/checking-your-commit-and-tag-signature-verification-status.md deleted file mode 100644 index 4959f73dda8f..000000000000 --- a/content/github/authenticating-to-github/checking-your-commit-and-tag-signature-verification-status.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Checking your commit and tag signature verification status -intro: 'You can check the verification status of your commit and tag signatures on {% data variables.product.product_name %}.' -redirect_from: - - /articles/checking-your-gpg-commit-and-tag-signature-verification-status/ - - /articles/checking-your-commit-and-tag-signature-verification-status -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Checking your commit signature verification status - -1. On {% data variables.product.product_name %}, navigate to your pull request. -{% data reusables.repositories.review-pr-commits %} -3. Next to your commit's abbreviated commit hash, there is a box that shows whether your commit signature is verified or unverified. -![Signed commit](/assets/images/help/commits/gpg-signed-commit-verified-without-details.png) -4. To view more detailed information about the commit signature, click **Verified** or **Unverified**. -![Verified signed commit](/assets/images/help/commits/gpg-signed-commit_verified_details.png) - -If your commit signature is unverified, you can learn more about why by clicking the **Unverified** box. -![Unverified signed commit](/assets/images/help/commits/gpg-signed-commit-unverified-details.png) - -### Checking your tag signature verification status - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.releases %} -2. At the top of the Releases page, click **Tags**. -![Tags page](/assets/images/help/releases/tags-list.png) -3. Next to your tag description, there is a box that shows whether your tag signature is verified or unverified. -![verified tag signature](/assets/images/help/commits/gpg-signed-tag-verified.png) -4. To view more detailed information about the tag signature, click **Verified** or **Unverified**. If your tag signature is unverified, you can learn more about why by clicking the **Unverified** box. -![Verified signed tag](/assets/images/help/commits/gpg-signed-tag-verified-details.png) - -### Further reading - -- "[About commit signature verification](/articles/about-commit-signature-verification)" -- "[Signing commits](/articles/signing-commits)" -- "[Signing tags](/articles/signing-tags)" diff --git a/content/github/authenticating-to-github/configuring-two-factor-authentication-recovery-methods.md b/content/github/authenticating-to-github/configuring-two-factor-authentication-recovery-methods.md deleted file mode 100644 index 937293a14352..000000000000 --- a/content/github/authenticating-to-github/configuring-two-factor-authentication-recovery-methods.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: Configuring two-factor authentication recovery methods -intro: You can set up a variety of recovery methods to access your account if you lose your two-factor authentication credentials. -redirect_from: - - /articles/downloading-your-two-factor-authentication-recovery-codes/ - - /articles/setting-a-fallback-authentication-number/ - - /articles/about-recover-accounts-elsewhere/ - - /articles/adding-a-fallback-authentication-method-with-recover-accounts-elsewhere/ - - /articles/generating-and-storing-an-account-recovery-token/ - - /articles/configuring-two-factor-authentication-recovery-methods -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -In addition to securely storing your two-factor authentication recovery codes, we strongly recommend configuring one or more additional recovery methods. - -### Downloading your two-factor authentication recovery codes - -{% data reusables.two_fa.about-recovery-codes %} You can also download your recovery codes at any point after enabling two-factor authentication. - -To keep your account secure, don't share or distribute your recovery codes. We recommend saving them with a secure password manager, such as: -- [1Password](https://1password.com/) -- [Keeper](https://keepersecurity.com/) -- [LastPass](https://lastpass.com/) - -If you generate new recovery codes or disable and re-enable 2FA, the recovery codes in your security settings automatically update. - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security %} -{% data reusables.two_fa.show-recovery-codes %} -4. Save your recovery codes in a safe place. Your recovery codes can help you get back into your account if you lose access. - - To save your recovery codes on your device, click **Download**. - - To save a hard copy of your recovery codes, click **Print**. - - To copy your recovery codes for storage in a password manager, click **Copy**. - ![List of recovery codes with option to download, print, or copy the codes](/assets/images/help/2fa/download-print-or-copy-recovery-codes-before-continuing.png) - -### Generating a new set of recovery codes - -Once you use a recovery code to regain access to your account, it cannot be reused. If you've used all 16 recovery codes, you can generate another list of codes. Generating a new set of recovery codes will invalidate any codes you previously generated. - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security %} -{% data reusables.two_fa.show-recovery-codes %} -3. To create another batch of recovery codes, click **Generate new recovery codes**. - ![Generate new recovery codes button](/assets/images/help/2fa/generate-new-recovery-codes.png) - -### Configuring a security key as an additional two-factor authentication method - -You can set up a security key as a secondary two-factor authentication method, and use the security key to regain access to your account. For more information, see "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication#configuring-two-factor-authentication-using-a-security-key)." - -{% if currentVersion == "free-pro-team@latest" %} - -### Setting a fallback authentication number - -You can provide a second number for a fallback device. If you lose access to both your primary device and your recovery codes, a backup SMS number can get you back in to your account. - -You can use a fallback number regardless of whether you've configured authentication via text message or TOTP mobile application. - -{% warning %} - -**Warning:** Using a fallback number is a last resort. We recommend configuring additional recovery methods if you set a fallback authentication number. -- Bad actors may attack cell phone carriers, so SMS authentication is risky. -- SMS messages are only supported for certain countries outside the US; for the list, see "[Countries where SMS authentication is supported](/articles/countries-where-sms-authentication-is-supported)". - -{% endwarning %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security %} -3. Next to "Fallback SMS number", click **Add**. -![Add fallback SMS number button](/assets/images/help/2fa/add-fallback-sms-number-button.png) -4. Under "Fallback SMS number", click **Add fallback SMS number**. -![Add fallback SMS number text](/assets/images/help/2fa/add_fallback_sms_number_text.png) -5. Select your country code and type your mobile phone number, including the area code. When your information is correct, click **Set fallback**. - ![Set fallback SMS number](/assets/images/help/2fa/2fa-fallback-number.png) - -After setup, the backup device will receive a confirmation SMS. - -### Adding a fallback authentication method with Recover Accounts Elsewhere - -You can generate an extra authentication credential for your account and store it with a partner recovery provider. - -#### About Recover Accounts Elsewhere - -With Recover Accounts Elsewhere, you can add an extra security factor to your {% data variables.product.product_name %} account in case you lose access to your two-factor authentication method or recovery codes. - -Recover Accounts Elsewhere lets you associate your {% data variables.product.product_name %} account with your Facebook account. You can store an authentication credential in the form of an _account recovery token_ for your {% data variables.product.product_name %} account with Facebook. - -If you lose access to your {% data variables.product.product_name %} account because you no longer have access to your two-factor authentication method or recovery codes, you can retrieve your account recovery token from the recovery provider to help prove that you're the owner of your {% data variables.product.product_name %} account. - -After you retrieve your token, {% data variables.contact.contact_support %} may be able to disable two-factor authentication for your account. Then, you can provide or reset your password to regain access to your account. - -When you generate or retrieve an account recovery token, an event is added to your account's audit log. For more information, see "[Reviewing your security log](/articles/reviewing-your-security-log)." - -#### Generating and storing an account recovery token - -You can generate an account recovery token and store it with a partner recovery provider. - -1. Sign in to your Facebook account, then return to {% data variables.product.product_name %}. -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security %} -4. To generate a new token, under "Recovery tokens," click **Store new token**. ![Button for storing a new recovery token](/assets/images/help/settings/store-new-recovery-token.png) -5. Read the information about account recovery tokens, then click **Connect with https://www.facebook.com**. ![Button for connecting a recovery token with Facebook](/assets/images/help/settings/connect-recovery-token-with-facebook.png) -6. After you're redirected to Facebook, read the information about turning on account recovery with Facebook before you click **Save as [_YOUR NAME_]**. (If you save multiple tokens within a short period of time, Facebook may skip this confirmation step after you save your first token.) - ![Facebook page with button for turning on account recovery](/assets/images/help/settings/security-turn-on-rae-facebook.png) - -{% endif %} - -### Further reading - -- "[About two-factor authentication](/articles/about-two-factor-authentication)" -- "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication)" -- "[Accessing {% data variables.product.prodname_dotcom %} using two-factor authentication](/articles/accessing-github-using-two-factor-authentication)" -- "[Recovering your account if you lose your two-factor authentication credentials](/articles/recovering-your-account-if-you-lose-your-2fa-credentials)" diff --git a/content/github/authenticating-to-github/configuring-two-factor-authentication.md b/content/github/authenticating-to-github/configuring-two-factor-authentication.md deleted file mode 100644 index bc352f983e15..000000000000 --- a/content/github/authenticating-to-github/configuring-two-factor-authentication.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Configuring two-factor authentication -intro: You can choose among multiple options to add a second source of authentication to your account. -redirect_from: - - /articles/configuring-two-factor-authentication-via-a-totp-mobile-app/ - - /articles/configuring-two-factor-authentication-via-text-message/ - - /articles/configuring-two-factor-authentication-via-fido-u2f/ - - /articles/configuring-two-factor-authentication -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can configure two-factor authentication using a mobile app{% if currentVersion == "free-pro-team@latest" %} or via text message{% endif %}. You can also add a security key. - -We strongly recommend using a time-based one-time password (TOTP) application to configure 2FA.{% if currentVersion == "free-pro-team@latest" %} TOTP applications are more reliable than SMS, especially for locations outside the United States.{% endif %} TOTP apps support the secure backup of your authentication codes in the cloud and can be restored if you lose access to your device. - -{% warning %} - -**Warning:** -- If you're a member{% if currentVersion == "free-pro-team@latest" %}, billing manager,{% endif %} or outside collaborator to a private repository of an organization that requires two-factor authentication, you must leave the organization before you can disable 2FA on {% data variables.product.product_location %}. -- If you disable 2FA, you will automatically lose access to the organization and any private forks you have of the organization's private repositories. To regain access to the organization and your forks, re-enable two-factor authentication and contact an organization owner. - -{% endwarning %} - -### Configuring two-factor authentication using a TOTP mobile app - -A time-based one-time password (TOTP) application automatically generates an authentication code that changes after a certain period of time. We recommend using cloud-based TOTP apps such as: -- [1Password](https://support.1password.com/one-time-passwords/) -- [Authy](https://authy.com/guides/github/) -- [LastPass Authenticator](https://lastpass.com/auth/) - -{% tip %} - -**Tip**: To configure authentication via TOTP on multiple devices, during setup, scan the QR code using each device at the same time. If 2FA is already enabled and you want to add another device, you must re-configure 2FA from your security settings. - -{% endtip %} - -1. Download a TOTP app. -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security %} -{% data reusables.two_fa.enable-two-factor-authentication %} -5. On the Two-factor authentication page, click **Set up using an app**. -{% data reusables.two_fa.save_your_recovery_codes_during_2fa_setup %} -8. On the Two-factor authentication page, do one of the following: - - Scan the QR code with your mobile device's app. After scanning, the app displays a six-digit code that you can enter on {% data variables.product.product_name %}. - - If you can't scan the QR code, click **enter this text code** to see a code you can copy and manually enter on {% data variables.product.product_name %} instead. - ![Click enter this code](/assets/images/help/2fa/totp-click-enter-code.png) -9. The TOTP mobile application saves your {% data variables.product.product_name %} account and generates a new authentication code every few seconds. On {% data variables.product.product_name %}, on the 2FA page, type the code and click **Enable**. - ![TOTP Enable field](/assets/images/help/2fa/totp-enter-code.png) -{% data reusables.two_fa.test_2fa_immediately %} - -{% if currentVersion == "free-pro-team@latest" %} - -### Configuring two-factor authentication using text messages - -If you're unable to authenticate using a TOTP mobile app, you can authenticate using SMS messages. You can also provide a second number for a fallback device. If you lose access to both your primary device and your recovery codes, a backup SMS number can get you back in to your account. - -Before using this method, be sure that you can receive text messages. Carrier rates may apply. - -{% warning %} - -**Warning:** We **strongly recommend** using a TOTP application for two-factor authentication instead of SMS. {% data variables.product.product_name %} doesn't support sending SMS messages to phones in every country. Before configuring authentication via text message, review the list of countries where {% data variables.product.product_name %} supports authentication via SMS. For more information, see "[Countries where SMS authentication is supported](/articles/countries-where-sms-authentication-is-supported)". - -{% endwarning %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security %} -{% data reusables.two_fa.enable-two-factor-authentication %} -4. On the Two-factor authentication page, click **Set up using SMS**. -{% data reusables.two_fa.save_your_recovery_codes_during_2fa_setup %} -7. Select your country code and type your mobile phone number, including the area code. When your information is correct, click **Send authentication code**. - ![2FA SMS screen](/assets/images/help/2fa/2fa_sms_photo.png) -8. You'll receive a text message with a security code. Type the code on the Two-factor authentication page, and click **Enable**. -![2FA SMS continue field](/assets/images/help/2fa/2fa-sms-code-enable.png) -{% data reusables.two_fa.test_2fa_immediately %} - -{% endif %} - -### Configuring two-factor authentication using a security key - -{% data reusables.two_fa.after-2fa-add-security-key %} - -On most devices and browsers, you can use a physical security key over USB or NFC. Some browsers can use the fingerprint reader, facial recognition, or password/PIN on your device as a security key. - -Authentication with a security key is *secondary* to authentication with a TOTP application{% if currentVersion == "free-pro-team@latest" %} or a text message{% endif %}. If you lose your security key, you'll still be able to use your phone's code to sign in. - -1. You must have already configured 2FA via a TOTP mobile app{% if currentVersion == "free-pro-team@latest" %} or via SMS{% endif %}. -2. Ensure that you have a WebAuthn compatible security key inserted into your computer. -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security %} -5. Next to "Security keys", click **Add**. - ![Add security keys option](/assets/images/help/2fa/add-security-keys-option.png) -6. Under "Security keys", click **Register new security key**. - ![Registering a new security key](/assets/images/help/2fa/security-key-register.png) -7. Type a nickname for the security key, then click **Add**. - ![Providing a nickname for a security key](/assets/images/help/2fa/security-key-nickname.png) -8. Activate your security key, following your security key's documentation. - ![Prompt for a security key](/assets/images/help/2fa/security-key-prompt.png) -9. Confirm that you've downloaded and can access your recovery codes. If you haven't already, or if you'd like to generate another set of codes, download your codes and save them in a safe place. If you lose access to your account, you can use your recovery codes to get back into your account. For more information, see "[Recovering your account if you lose your 2FA credentials](/articles/recovering-your-account-if-you-lose-your-2fa-credentials)." - ![Download recovery codes button](/assets/images/help/2fa/2fa-recover-during-setup.png) -{% data reusables.two_fa.test_2fa_immediately %} - -### Further reading - -- "[About two-factor authentication](/articles/about-two-factor-authentication)" -- "[Configuring two-factor authentication recovery methods](/articles/configuring-two-factor-authentication-recovery-methods)" -- "[Accessing {% data variables.product.prodname_dotcom %} using two-factor authentication](/articles/accessing-github-using-two-factor-authentication)" -- "[Recovering your account if you lose your 2FA credentials](/articles/recovering-your-account-if-you-lose-your-2fa-credentials)" -- "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)" diff --git a/content/github/authenticating-to-github/connecting-to-github-with-ssh.md b/content/github/authenticating-to-github/connecting-to-github-with-ssh.md deleted file mode 100644 index 948ffa9f63bc..000000000000 --- a/content/github/authenticating-to-github/connecting-to-github-with-ssh.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Connecting to GitHub with SSH -intro: 'You can connect to {% data variables.product.product_name %} using SSH.' -redirect_from: - - /key-setup-redirect/ - - /linux-key-setup/ - - /mac-key-setup/ - - /msysgit-key-setup/ - - /articles/ssh-key-setup/ - - /articles/generating-ssh-keys/ - - /articles/generating-an-ssh-key/ - - /articles/connecting-to-github-with-ssh -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/authenticating-to-github/connecting-with-third-party-applications.md b/content/github/authenticating-to-github/connecting-with-third-party-applications.md deleted file mode 100644 index 15b7c3bc35b4..000000000000 --- a/content/github/authenticating-to-github/connecting-with-third-party-applications.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Connecting with third-party applications -intro: 'You can connect your {% data variables.product.product_name %} identity to third-party applications using OAuth. When authorizing one of these applications, you should ensure you trust the application, review who it''s developed by, and review the kinds of information the application wants to access.' -redirect_from: - - /articles/connecting-with-third-party-applications -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When a third-party application wants to identify you by your {% data variables.product.product_name %} login, you'll see a page with the developer contact information and a list of the specific data that's being requested. - -### Contacting the application developer - -Because an application is developed by a third-party who isn't {% data variables.product.product_name %}, we don't know exactly how an application uses the data it's requesting access to. You can use the developer information at the top of the page to contact the application admin if you have questions or concerns about their application. - -![{% data variables.product.prodname_oauth_app %} owner information](/assets/images/help/platform/oauth_owner_bar.png) - -If the developer has chosen to supply it, the right-hand side of the page provides a detailed description of the application, as well as its associated website. - -![OAuth application information and website](/assets/images/help/platform/oauth_app_info.png) - -### Types of application access and data - -Applications can have *read* or *write* access to your {% data variables.product.product_name %} data. - -- **Read access** only allows an application to *look at* your data. -- **Write access** allows an application to *change* your data. - -#### About OAuth scopes - -*Scopes* are named groups of permissions that an application can request to access both public and non-public data. - -When you want to use a third-party application that integrates with {% data variables.product.product_name %}, that application lets you know what type of access to your data will be required. If you grant access to the application, then the application will be able to perform actions on your behalf, such as reading or modifying data. For example, if you want to use an app that requests `user:email` scope, the app will have read-only access to your private email addresses. For more information, see "[About scopes for {% data variables.product.prodname_oauth_app %}s](//apps/building-integrations/setting-up-and-registering-oauth-apps/about-scopes-for-oauth-apps)." - -{% tip %} - -**Note:** Currently, you can't scope source code access to read-only. - -{% endtip %} - -#### Types of requested data - -There are several types of data that applications can request. - -![OAuth access details](/assets/images/help/platform/oauth_access_types.png) - -{% tip %} - -**Tip:** {% data reusables.user_settings.review_oauth_tokens_tip %} - -{% endtip %} - -| Type of data | Description | -| --- | --- | -| Commit status | You can grant access for a third-party application to report your commit status. Commit status access allows applications to determine if a build is a successful against a specific commit. Applications won't have access to your code, but they can read and write status information against a specific commit. | -| Deployments | Deployment status access allows applicationss to determine if a deployment is successful against a specific commit for public and private repositories. Applicationss won't have access to your code. | -| Gists | [Gist](https://gist.github.com) access allows applications to read or write to both your public and secret Gists. | -| Hooks | [Webhooks](/webhooks) access allows applications to read or write hook configurations on repositories you manage. | -| Notifications | Notification access allows applicationss to read your {% data variables.product.product_name %} notifications, such as comments on issues and pull requests. However, applications remain unable to access anything in your repositories. | -| Organizations and teams | Organization and teams access allows apps to access and manage organization and team membership. | -| Personal user data | User data includes information found in your user profile, like your name, e-mail address, and location. | -| Repositories | Repository information includes the names of contributors, the branches you've created, and the actual files within your repository. Applications can request access for either public or private repositories on a user-wide level. | -| Repository delete | Applications can request to delete repositories that you administer, but they won't have access to your code. | - -### Requesting updated permissions - -Applications can request new access privileges. When asking for updated permissions, the application will notify you of the differences. - -![Changing third-party application access](/assets/images/help/platform/oauth_existing_access_pane.png) diff --git a/content/github/authenticating-to-github/countries-where-sms-authentication-is-supported.md b/content/github/authenticating-to-github/countries-where-sms-authentication-is-supported.md deleted file mode 100644 index aa7dc1332f9f..000000000000 --- a/content/github/authenticating-to-github/countries-where-sms-authentication-is-supported.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Countries where SMS authentication is supported -intro: 'Because of delivery success rates, {% data variables.product.product_name %} only supports two-factor authentication via SMS for certain countries.' -redirect_from: - - /articles/countries-where-sms-authentication-is-supported -versions: - free-pro-team: '*' ---- - -If we don't support two-factor authentication via text message for your country of residence, you can set up authentication via a TOTP mobile application. For more information, see "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication)." - -### Supported countries for SMS authentication - -If your country is not on this list, then we aren't currently able to reliably deliver text messages to your country. We update this list periodically. - -
    -
  • Aland Islands
  • -
  • Algeria
  • -
  • Angola
  • -
  • Anguilla
  • -
  • Australia
  • -
  • Austria
  • -
  • Bahamas
  • -
  • Bahrain
  • -
  • Bangladesh
  • -
  • Belarus
  • -
  • Belgium
  • -
  • Benin
  • -
  • Bolivia
  • -
  • Bosnia and Herzegovina
  • -
  • Brunei
  • -
  • Bulgaria
  • -
  • Burundi
  • -
  • Cambodia
  • -
  • Canada
  • -
  • Cape Verde
  • -
  • Cayman Islands
  • -
  • Christmas Island
  • -
  • Cocos
  • -
  • Congo, Dem Rep
  • -
  • Croatia
  • -
  • Cyprus
  • -
  • Czech Republic
  • -
  • Denmark
  • -
  • Dominica
  • -
  • Dominican Republic
  • -
  • Ecuador
  • -
  • Equatorial Guinea
  • -
  • Estonia
  • -
  • Finland/Aland Islands
  • -
  • France
  • -
  • Gambia
  • -
  • Georgia
  • -
  • Germany
  • -
  • Ghana
  • -
  • Gibraltar
  • -
  • Greece
  • -
  • Guatemala
  • -
  • Guyana
  • -
  • Hungary
  • -
  • Iceland
  • -
  • India
  • -
  • Indonesia
  • -
  • Iran
  • -
  • Ireland
  • -
  • Israel
  • -
  • Italy
  • -
  • Ivory Coast
  • -
  • Jamaica
  • -
  • Japan
  • -
  • Jordan
  • -
  • Kazakhstan
  • -
  • Kuwait
  • -
  • Latvia
  • -
  • Libya
  • -
  • Liechtenstein
  • -
  • Lithuania
  • -
  • Luxembourg
  • -
  • Madagascar
  • -
  • Malawi
  • -
  • Malaysia
  • -
  • Maldives
  • -
  • Mali
  • -
  • Malta
  • -
  • Mauritius
  • -
  • Mexico
  • -
  • Monaco
  • -
  • Montenegro
  • -
  • Montserrat
  • -
  • Mozambique
  • -
  • Namibia
  • -
  • Netherlands
  • -
  • Netherlands Antilles
  • -
  • New Zealand
  • -
  • Nigeria
  • -
  • Norway
  • -
  • Philippines
  • -
  • Poland
  • -
  • Portugal
  • -
  • Qatar
  • -
  • Romania
  • -
  • Russia
  • -
  • Rwanda
  • -
  • Senegal
  • -
  • Serbia
  • -
  • Seychelles
  • -
  • Singapore
  • -
  • Slovakia
  • -
  • Slovenia
  • -
  • South Africa
  • -
  • South Korea
  • -
  • Spain
  • -
  • Sri Lanka
  • -
  • St Lucia
  • -
  • Sudan
  • -
  • Sweden
  • -
  • Switzerland
  • -
  • Taiwan
  • -
  • Tanzania
  • -
  • Togo
  • -
  • Trinidad and Tobago
  • -
  • Turks and Caicos Islands
  • -
  • Uganda
  • -
  • Ukraine
  • -
  • United Arab Emirates
  • -
  • United Kingdom
  • -
  • United States
  • -
  • Uzbekistan
  • -
  • Venezuela
  • -
- -### Further reading - -- "[About two-factor authentication](/articles/about-two-factor-authentication)" diff --git a/content/github/authenticating-to-github/creating-a-personal-access-token.md b/content/github/authenticating-to-github/creating-a-personal-access-token.md deleted file mode 100644 index 7561198c565e..000000000000 --- a/content/github/authenticating-to-github/creating-a-personal-access-token.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Creating a personal access token -intro: You should create a personal access token to use in place of a password with the command line or with the API. -redirect_from: - - /articles/creating-an-oauth-token-for-command-line-use/ - - /articles/creating-an-access-token-for-command-line-use/ - - /articles/creating-a-personal-access-token-for-the-command-line - - /github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Personal access tokens (PATs) are an alternative to using passwords for authentication to {% data variables.product.product_name %} when using the [GitHub API](/v3/auth/#via-oauth-and-personal-access-tokens) or the [command line](#using-a-token-on-the-command-line). - -{% if currentVersion == "free-pro-team@latest" %}If you want to use a PAT to access resources owned by an organization that uses SAML SSO, you must authorize the PAT. For more information, see "[About authentication with SAML single sign-on](/articles/about-authentication-with-saml-single-sign-on)" and "[Authorizing a personal access token for use with SAML single sign-on](/articles/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on)."{% endif %} - -{% if currentVersion == "free-pro-team@latest" %}{% data reusables.user_settings.removes-personal-access-tokens %}{% endif %} - -### Creating a token - -{% if currentVersion == "free-pro-team@latest" %}1. [Verify your email address](/articles/verifying-your-email-address), if it hasn't been verified yet.{% endif %} -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.developer_settings %} -{% data reusables.user_settings.personal_access_tokens %} -4. Click **Generate new token**. - ![Generate new token button](/assets/images/help/settings/generate_new_token.png) -5. Give your token a descriptive name. - ![Token description field](/assets/images/help/settings/token_description.png) -6. Select the scopes, or permissions, you'd like to grant this token. To use your token to access repositories from the command line, select **repo**. - ![Selecting token scopes](/assets/images/help/settings/token_scopes.gif) -7. Click **Generate token**. - ![Generate token button](/assets/images/help/settings/generate_token.png) -8. Click {% octicon "clippy" aria-label="The copy to clipboard icon" %} to copy the token to your clipboard. For security reasons, after you navigate off the page, you will not be able to see the token again.{% if currentVersion == "free-pro-team@latest" %} - ![Newly created token](/assets/images/help/settings/personal_access_tokens.png){% else %} - ![Newly created token](/assets/images/help/settings/personal_access_tokens_ghe.png){% endif %} - - {% warning %} - - **Warning:** Treat your tokens like passwords and keep them secret. When working with the API, use tokens as environment variables instead of hardcoding them into your programs. - - {% endwarning %} -{% if currentVersion == "free-pro-team@latest" %}9. To use your token to authenticate to an organization that uses SAML SSO, [authorize the token for use with a SAML single-sign-on organization](/articles/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on).{% endif %} - -### Using a token on the command line - -{% data reusables.command_line.providing-token-as-password %} - -Personal access tokens can only be used for HTTPS Git operations. If your repository uses an SSH remote URL, you will need to [switch the remote from SSH to HTTPS](/articles/changing-a-remote-s-url/#switching-remote-urls-from-ssh-to-https). - -If you are not prompted for your username and password, your credentials may be cached on your computer. You can [update your credentials in the Keychain](/articles/updating-credentials-from-the-osx-keychain) to replace your old password with the token. - -### Further reading - -- "[About authentication to GitHub](/github/authenticating-to-github/about-authentication-to-github)" diff --git a/content/github/authenticating-to-github/creating-a-strong-password.md b/content/github/authenticating-to-github/creating-a-strong-password.md deleted file mode 100644 index 4acb24e50cf8..000000000000 --- a/content/github/authenticating-to-github/creating-a-strong-password.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Creating a strong password -intro: 'Secure your {% data variables.product.product_name %} account with a strong and unique password using a password manager.' -redirect_from: - - /articles/what-is-a-strong-password/ - - /articles/creating-a-strong-password -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You must choose or generate a password for your {% data variables.product.product_name %} account that is: -- Eight characters long, if it includes a number and a lowercase letter, or -- 16 characters long with any combination of characters - -To keep your account secure, we recommend you follow these best practices: -- Use a password manager, such as [LastPass](https://lastpass.com/) or [1Password](https://1password.com/), to generate a password more than 16 characters. -- Generate a unique password for {% data variables.product.product_name %}. If you use your {% data variables.product.product_name %} password elsewhere and that service is compromised, then attackers or other malicious actors could use that information to access your {% data variables.product.product_name %} account. -- Configure two-factor authentication for your personal account. For more information, see "[About two-factor authentication](/articles/about-two-factor-authentication)." -- Never share your password, even with a potential collaborator. Each person should use their own personal account on {% data variables.product.product_name %}. For more information on ways to collaborate, see: "[Inviting collaborators to a personal repository](/articles/inviting-collaborators-to-a-personal-repository)," "[About collaborative development models](/articles/about-collaborative-development-models/)," or "[Collaborating with groups in organizations](/articles/collaborating-with-groups-in-organizations/)." - -{% data reusables.repositories.blocked-passwords %} - -You can only use your password to log on to {% data variables.product.product_name %} using your browser. When you authenticate to {% data variables.product.product_name %} with other means, such as the command line or API, you should use other credentials. For more information, see "[About authentication to {% data variables.product.prodname_dotcom %}](/github/authenticating-to-github/about-authentication-to-github)." - -{% if currentVersion == "free-pro-team@latest" %}{% data reusables.user_settings.password-authentication-deprecation %}{% endif %} - -### Further reading - -- "[Caching your {% data variables.product.product_name %} credentials in Git](/github/using-git/caching-your-github-credentials-in-git/)" -- "[Keeping your account and data secure](/articles/keeping-your-account-and-data-secure/)" diff --git a/content/github/authenticating-to-github/deleted-or-missing-ssh-keys.md b/content/github/authenticating-to-github/deleted-or-missing-ssh-keys.md deleted file mode 100644 index a815793bf9cd..000000000000 --- a/content/github/authenticating-to-github/deleted-or-missing-ssh-keys.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Deleted or missing SSH keys -intro: 'As a security precaution, {% data variables.product.prodname_dotcom %} automatically deletes SSH keys that haven''t been used in a year.' -redirect_from: - - /articles/deleted-or-missing-ssh-keys -versions: - free-pro-team: '*' ---- - -{% data variables.product.prodname_dotcom %} automatically deletes inactive SSH keys to help keep accounts safe, such as after someone leaves a job or loses a computer. - -You can check if you haven't used an SSH key in a year by reviewing your account's security log. For more information, see "[Reviewing your security log](/articles/reviewing-your-security-log/)." - -After your inactive SSH key is deleted, you must generate a new SSH key and associate it with your account. For more information, see "[Generating a new SSH key and adding it to the ssh-agent](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/)" and "[Adding a new SSH key to your GitHub account](/articles/adding-a-new-ssh-key-to-your-github-account/)." diff --git a/content/github/authenticating-to-github/disabling-two-factor-authentication-for-your-personal-account.md b/content/github/authenticating-to-github/disabling-two-factor-authentication-for-your-personal-account.md deleted file mode 100644 index 6364fe62383f..000000000000 --- a/content/github/authenticating-to-github/disabling-two-factor-authentication-for-your-personal-account.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Disabling two-factor authentication for your personal account -intro: 'If you disable two-factor authentication for your personal account, you may lose access to organizations you belong to.' -redirect_from: - - /articles/disabling-two-factor-authentication-for-your-personal-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -We strongly recommend using two-factor authentication to secure your account. If you need to disable 2FA, we recommend re-enabling it as soon as possible. - -{% warning %} - -**Warning:** If you're a member{% if currentVersion == "free-pro-team@latest" %}, billing manager,{% endif %} or outside collaborator to a public repository of an organization that requires two-factor authentication and you disable 2FA, you'll be automatically removed from the organization, and you'll lose your access to their repositories. To regain access to the organization, re-enable two-factor authentication and contact an organization owner. - -{% endwarning %} - -If your organization requires two-factor authentication and you're a member, owner, or an outside collaborator on a private repository of your organization, you must first leave your organization before you can disable two-factor authentication. - -To remove yourself from your organization: - - As an organization member or owner, see "[Removing yourself from an organization](/articles/removing-yourself-from-an-organization/)." - - As an outside collaborator, ask an organization owner or repository administrator to remove you from the organization's repositories. For more information, see "[Viewing people's roles in an organization](/articles/viewing-people-s-roles-in-an-organization)" and "[Removing an outside collaborator from an organization repository](/articles/removing-an-outside-collaborator-from-an-organization-repository/)." - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security %} -3. Click **Disable**. - ![Disable two-factor authentication button](/assets/images/help/2fa/disable-two-factor-authentication.png) - -### Further reading - -- "[About two-factor authentication](/articles/about-two-factor-authentication)" -- "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication)" -- "[Configuring two-factor authentication recovery methods](/articles/configuring-two-factor-authentication-recovery-methods)" diff --git a/content/github/authenticating-to-github/error-agent-admitted-failure-to-sign.md b/content/github/authenticating-to-github/error-agent-admitted-failure-to-sign.md deleted file mode 100644 index 95b6f3df8579..000000000000 --- a/content/github/authenticating-to-github/error-agent-admitted-failure-to-sign.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: 'Error: Agent admitted failure to sign' -intro: 'In rare circumstances, connecting to {% data variables.product.product_name %} via SSH on Linux produces the error `"Agent admitted failure to sign using the key"`. Follow these steps to resolve the problem.' -redirect_from: - - /articles/error-agent-admitted-failure-to-sign-using-the-key/ - - /articles/error-agent-admitted-failure-to-sign -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When trying to SSH into {% data variables.product.product_location %} on a Linux computer, you may see the following message in your terminal: - -```shell -$ ssh -vT git@{% data variables.command_line.codeblock %} -> ... -> Agent admitted failure to sign using the key. -> debug1: No more authentication methods to try. -> Permission denied (publickey). -``` - -For more details, see this issue report. - -### Resolution - -You should be able to fix this error by loading your keys into your SSH agent with `ssh-add`: - -```shell -# start the ssh-agent in the background -$ eval "$(ssh-agent -s)" -> Agent pid 59566 -$ ssh-add -> Enter passphrase for /home/you/.ssh/id_rsa: [tippy tap] -> Identity added: /home/you/.ssh/id_rsa (/home/you/.ssh/id_rsa) -``` - -If your key does not have the default filename (`/.ssh/id_rsa`), you'll have to pass that path to `ssh-add`: - -```shell -# start the ssh-agent in the background -$ eval "$(ssh-agent -s)" -> Agent pid 59566 -$ ssh-add ~/.ssh/my_other_key -> Enter passphrase for /home/you/.ssh/my_other_key: [tappity tap tap] -> Identity added: /home/you/.ssh/my_other_key (/home/you/.ssh/my_other_key) -``` diff --git a/content/github/authenticating-to-github/error-bad-file-number.md b/content/github/authenticating-to-github/error-bad-file-number.md deleted file mode 100644 index fa1ee2bcf580..000000000000 --- a/content/github/authenticating-to-github/error-bad-file-number.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: 'Error: Bad file number' -intro: This error usually means you were unable to connect to the server. Often this is caused by firewalls and proxy servers. -redirect_from: - - /articles/error-bad-file-number -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When running remote Git commands or SSH, your connection might time out: - -```shell -$ ssh -vT git@{% data variables.command_line.codeblock %} -> OpenSSH_8.1p1, LibreSSL 2.7.3 -> debug1: Connecting to {% data variables.command_line.codeblock %} [207.97.227.239] port 22. -> debug1: connect to address 207.97.227.239 port 22: Connection timed out -> ssh: connect to host {% data variables.command_line.codeblock %} port 22: Connection timed out -> ssh: connect to host {% data variables.command_line.codeblock %} port 22: Bad file number -``` - -### Solving the issue - -#### Use HTTPS - -Often, the simplest solution is to simply avoid SSH entirely. Most firewalls and proxies allow HTTPS traffic without issue. To take advantage of this, change [the remote URL](/articles/which-remote-url-should-i-use) you're using: - -```shell -$ git clone https://{% data variables.command_line.codeblock %}/username/reponame.git -> Cloning into 'reponame'... -> remote: Counting objects: 84, done. -> remote: Compressing objects: 100% (45/45), done. -> remote: Total 84 (delta 43), reused 78 (delta 37) -> Unpacking objects: 100% (84/84), done. -``` - -#### Test from a different network - -If you can connect the computer to another network that doesn't have a firewall, you can try testing your SSH connection to {% data variables.product.product_name %}. If everything works as it should, contact your network administrator for help on changing the firewall settings to allow your SSH connection to {% data variables.product.product_name %} to succeed. - -{% if currentVersion == "free-pro-team@latest" %} - -#### Using SSH over the HTTPS port - -If using HTTPS is not an option, and your firewall admin refuses to allow SSH connections, you can try using [SSH over the HTTPS port](/articles/using-ssh-over-the-https-port) instead. - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} - -### Further reading - -- "[Troubleshooting connectivity problems](/articles/troubleshooting-connectivity-problems)" - -{% endif %} diff --git a/content/github/authenticating-to-github/error-key-already-in-use.md b/content/github/authenticating-to-github/error-key-already-in-use.md deleted file mode 100644 index e26e44ea86ee..000000000000 --- a/content/github/authenticating-to-github/error-key-already-in-use.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: 'Error: Key already in use' -intro: 'This error occurs when you try to [add a key](/articles/adding-a-new-ssh-key-to-your-github-account) that''s already been added to another account or repository.' -redirect_from: - - /articles/error-key-already-in-use -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Finding where the key has been used - -To determine where the key has already been used, open a terminal and type the `ssh` command. Use the `-i` flag to provide the path to the key you want to check: - -```shell -$ ssh -T -ai ~/.ssh/id_rsa git@{% data variables.command_line.codeblock %} -# Connect to {% data variables.product.product_location %} using a specific ssh key -> Hi username! You've successfully authenticated, but GitHub does not -> provide shell access. -``` - -The *username* in the response is the {% data variables.product.product_name %} account that the key is currently attached to. If the response looks something like "username/repo", the key has been attached to a repository as a [*deploy key*](/guides/managing-deploy-keys#deploy-keys). - -### Fixing the issue - -To resolve the issue, first remove the key from the other account or repository and then [add it to your account](/articles/adding-a-new-ssh-key-to-your-github-account). - -If you don't have permissions to transfer the key, and can't contact a user who does, remove the keypair and [generate a brand new one](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent). - -### Deploy keys - -Once a key has been attached to one repository as a deploy key, it cannot be used on another repository. If you're running into this error while setting up deploy keys, see "[Managing deploy keys](/guides/managing-deploy-keys)." diff --git a/content/github/authenticating-to-github/error-permission-denied-publickey.md b/content/github/authenticating-to-github/error-permission-denied-publickey.md deleted file mode 100644 index 75af14ce4136..000000000000 --- a/content/github/authenticating-to-github/error-permission-denied-publickey.md +++ /dev/null @@ -1,278 +0,0 @@ ---- -title: 'Error: Permission denied (publickey)' -intro: 'A "Permission denied" error means that the server rejected your connection. There could be several reasons why, and the most common examples are explained below.' -redirect_from: - - /articles/error-permission-denied-publickey -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Should the `sudo` command be used with Git? - -You should not be using the `sudo` command with Git. If you have a *very good reason* you must use `sudo`, then ensure you are using it with every command (it's probably just better to use `su` to get a shell as root at that point). If you [generate SSH keys](/articles/generating-an-ssh-key) without `sudo` and then try to use a command like `sudo git push`, you won't be using the same keys that you generated. - -### Check that you are connecting to the correct server - -Typing is hard, we all know it. Pay attention to what you type; you won't be able to connect to "githib.com" or "guthub.com". In some cases, a corporate network may cause issues resolving the DNS record as well. - -To make sure you are connecting to the right domain, you can enter the following command: - -```shell -$ ssh -vT git@{% data variables.command_line.codeblock %} -> OpenSSH_8.1p1, LibreSSL 2.7.3 -> debug1: Reading configuration data /Users/you/.ssh/config -> debug1: Reading configuration data /etc/ssh/ssh_config -> debug1: /etc/ssh/ssh_config line 47: Applying options for * -> debug1: Connecting to {% data variables.command_line.codeblock %} port 22. -``` - -The connection should be made on port 22{% if currentVersion == "free-pro-team@latest" %}, unless you're overriding settings to use [SSH over HTTPS](/articles/using-ssh-over-the-https-port){% endif %}. - -### Always use the "git" user - -All connections, including those for remote URLs, must be made as the "git" user. If you try to connect with your {% data variables.product.product_name %} username, it will fail: - -```shell -$ ssh -T GITHUB-USERNAME@{% data variables.command_line.codeblock %} -> Permission denied (publickey). -``` -If your connection failed and you're using a remote URL with your {% data variables.product.product_name %} username, you can [change the remote URL to use the "git" user](/articles/changing-a-remote-s-url/). - -You should verify your connection by typing: - -```shell -$ ssh -T git@{% data variables.command_line.codeblock %} -> Hi username! You've successfully authenticated... -``` - -### Make sure you have a key that is being used - -{% mac %} - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Verify that you have a private key generated and loaded into SSH. {% if currentVersion ver_lt "enterprise-server@2.23" %}If you're using OpenSSH 6.7 or older: - ```shell - # start the ssh-agent in the background - $ eval "$(ssh-agent -s)" - > Agent pid 59566 - $ ssh-add -l - > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA) - ``` - - If you're using OpenSSH 6.8 or newer: - ```shell - # start the ssh-agent in the background - $ eval "$(ssh-agent -s)" - > Agent pid 59566 - $ ssh-add -l -E md5 - > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA) - ``` - {% else %} - ```shell - # start the ssh-agent in the background - $ eval "$(ssh-agent -s)" - > Agent pid 59566 - $ ssh-add -l -E sha256 - > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) - ```{% endif %} - -{% endmac %} - -{% windows %} - -{% data reusables.desktop.windows_git_bash %} - -1. {% data reusables.desktop.windows_git_bash_turn_on_ssh_agent %} - - {% data reusables.desktop.windows_git_for_windows_turn_on_ssh_agent %} -2. Verify that you have a private key generated and loaded into SSH. {% if currentVersion ver_lt "enterprise-server@2.23" %}If you're using OpenSSH 6.7 or older: - ```shell - $ ssh-add -l - > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA) - ``` - - If you're using OpenSSH 6.8 or newer: - ```shell - $ ssh-add -l -E md5 - > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA) - ``` - {% else %} - ```shell - $ ssh-add -l -E sha256 - > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) - ```{% endif %} - -{% endwindows %} - -{% linux %} - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Verify that you have a private key generated and loaded into SSH. {% if currentVersion ver_lt "enterprise-server@2.23" %}If you're using OpenSSH 6.7 or older: - ```shell - # start the ssh-agent in the background - $ eval "$(ssh-agent -s)" - > Agent pid 59566 - $ ssh-add -l - > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA) - ``` - - If you're using OpenSSH 6.8 or newer: - ```shell - # start the ssh-agent in the background - $ eval "$(ssh-agent -s)" - > Agent pid 59566 - $ ssh-add -l -E md5 - > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA) - ``` - {% else %} - ```shell - $ ssh-add -l -E sha256 - > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) - ```{% endif %} - - -{% endlinux %} - -The `ssh-add` command *should* print out a long string of numbers and letters. If it does not print anything, you will need to [generate a new SSH key](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) and associate it with {% data variables.product.product_name %}. - -{% tip %} - -**Tip**: On most systems the default private keys (`~/.ssh/id_rsa` and `~/.ssh/identity`) are automatically added to the SSH authentication agent. You shouldn't need to run `ssh-add path/to/key` unless you override the file name when you generate a key. - -{% endtip %} - -#### Getting more details - -You can also check that the key is being used by trying to connect to `git@{% data variables.command_line.backticks %}`: - -```shell -$ ssh -vT git@{% data variables.command_line.codeblock %} -> ... -> debug1: identity file /Users/you/.ssh/id_rsa type -1 -> debug1: identity file /Users/you/.ssh/id_rsa-cert type -1 -> debug1: identity file /Users/you/.ssh/id_dsa type -1 -> debug1: identity file /Users/you/.ssh/id_dsa-cert type -1 -> ... -> debug1: Authentications that can continue: publickey -> debug1: Next authentication method: publickey -> debug1: Trying private key: /Users/you/.ssh/id_rsa -> debug1: Trying private key: /Users/you/.ssh/id_dsa -> debug1: No more authentication methods to try. -> Permission denied (publickey). -``` - -In that example, we did not have any keys for SSH to use. The "-1" at the end of the "identity file" lines means SSH couldn't find a file to use. Later on, the "Trying private key" lines also indicate that no file was found. If a file existed, those lines would be "1" and "Offering public key", respectively: - -```shell -$ ssh -vT git@{% data variables.command_line.codeblock %} -> ... -> debug1: identity file /Users/you/.ssh/id_rsa type 1 -> ... -> debug1: Authentications that can continue: publickey -> debug1: Next authentication method: publickey -> debug1: Offering RSA public key: /Users/you/.ssh/id_rsa -``` - -### Verify the public key is attached to your account - -You must provide your public key to {% data variables.product.product_name %} to establish a secure connection. - -{% mac %} - -1. Open Terminal. -2. Start SSH agent in the background. - ```shell - $ eval "$(ssh-agent -s)" - > Agent pid 59566 - ``` -3. Find and take a note of your public key fingerprint. {% if currentVersion ver_lt "enterprise-server@2.23" %}If you're using OpenSSH 6.7 or older: - ```shell - $ ssh-add -l - > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) - ``` - - If you're using OpenSSH 6.8 or newer: - ```shell - $ ssh-add -l -E md5 - > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) - ``` - {% else %} - ```shell - $ ssh-add -l -E sha256 - > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) - ```{% endif %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.ssh %} -6. Compare the list of SSH keys with the output from the `ssh-add` command. -![SSH key listing in {% data variables.product.product_name %}](/assets/images/help/settings/ssh_key_listing.png) - -{% endmac %} - -{% windows %} - -1. Open the command line. -2. Start SSH agent in the background. - ```shell - $ ssh-agent -s - > Agent pid 59566 - ``` -3. Find and take a note of your public key fingerprint. {% if currentVersion ver_lt "enterprise-server@2.23" %}If you're using OpenSSH 6.7 or older: - ```shell - $ ssh-add -l - > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) - ``` - - If you're using OpenSSH 6.8 or newer: - ```shell - $ ssh-add -l -E md5 - > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) - ``` - {% else %} - ```shell - $ ssh-add -l -E sha256 - > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) - ```{% endif %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.ssh %} -6. Compare the list of SSH keys with the output from the `ssh-add` command. -![SSH key listing in {% data variables.product.product_name %}](/assets/images/help/settings/ssh_key_listing.png) - -{% endwindows %} - -{% linux %} - -1. Open Terminal. -2. Start SSH agent in the background. - ```shell - $ eval "$(ssh-agent -s)" - > Agent pid 59566 - ``` -3. Find and take a note of your public key fingerprint. If you're using OpenSSH 6.7 or older: - ```shell - $ ssh-add -l - > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) - ``` - - If you're using OpenSSH 6.8 or newer: - ```shell - $ ssh-add -l -E md5 - > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) - ``` - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.ssh %} -6. Compare the list of SSH keys with the output from the `ssh-add` command. -![SSH key listing in {% data variables.product.product_name %}](/assets/images/help/settings/ssh_key_listing.png) - -{% endlinux %} - -If you don't see your public key in {% data variables.product.product_name %}, you'll need to [add your SSH key to {% data variables.product.product_name %}](/articles/adding-a-new-ssh-key-to-your-github-account) to associate it with your computer. - -{% warning %} - -**Warning**: If you see an SSH key you're not familiar with on {% data variables.product.product_name %}, delete it immediately and contact {% data variables.contact.contact_support %}, for further help. An unidentified public key may indicate a possible security concern. For more information, see "[Reviewing your SSH keys](/articles/reviewing-your-ssh-keys)." - -{% endwarning %} diff --git a/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-other-user.md b/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-other-user.md deleted file mode 100644 index 6d40fe7226e7..000000000000 --- a/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-other-user.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: 'Error: Permission to user/repo denied to other-user' -intro: This error means the key you are pushing with is attached to an account which does not have access to the repository. -redirect_from: - - /articles/error-permission-to-user-repo-denied-to-other-user - - /articles/error-permission-to-userrepo-denied-to-other-user -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -To fix this, the owner of the repository (`user`) needs to add your account (`other-user`) as a collaborator on the repository or to a team that has write access to the repository. diff --git a/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-userother-repo.md b/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-userother-repo.md deleted file mode 100644 index a7f02b479ce0..000000000000 --- a/content/github/authenticating-to-github/error-permission-to-userrepo-denied-to-userother-repo.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: 'Error: Permission to user/repo denied to user/other-repo' -intro: 'This error means the key you are pushing with is attached to another repository as a deploy key, and does not have access to the repository you are trying to push to.' -redirect_from: - - /articles/error-permission-to-user-repo-denied-to-user-other-repo - - /articles/error-permission-to-userrepo-denied-to-userother-repo -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -To fix this, remove the deploy key from the repository, and [add the key to your user account](/articles/adding-a-new-ssh-key-to-your-github-account) instead. - -If the key you are using is intended to be a deploy key, check out [our guide on deploy keys](/guides/managing-deploy-keys) for more details. diff --git a/content/github/authenticating-to-github/error-ssh-add-illegal-option----k.md b/content/github/authenticating-to-github/error-ssh-add-illegal-option----k.md deleted file mode 100644 index 50d561cd99ff..000000000000 --- a/content/github/authenticating-to-github/error-ssh-add-illegal-option----k.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: 'Error: ssh-add: illegal option -- K' -intro: 'This error means your version of `ssh-add` does not support macOS keychain integration, which allows you to store your passphrase in the keychain.' -redirect_from: - - /articles/error-ssh-add-illegal-option-k - - /articles/error-ssh-add-illegal-option----k -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The `-K` option is in Apple's standard version of `ssh-add`, which stores the passphrase in your keychain for you when you add an ssh key to the ssh-agent. If you have installed a different version of `ssh-add`, it may lack support for `-K`. - -### Solving the issue - -To add your SSH private key to the ssh-agent, you can specify the path to the Apple version of `ssh-add`: - -```shell - $ /usr/bin/ssh-add -K ~/.ssh/id_rsa -``` - -{% note %} - -**Note:** {% data reusables.ssh.add-ssh-key-to-ssh-agent %} - -{% endnote %} - -### Further reading - -- "[Generating a new SSH key and adding it to the ssh-agent](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)" -- [Linux man page for SSH-ADD](http://man7.org/linux/man-pages/man1/ssh-add.1.html) -- To view Apple's man page for SSH-ADD, run `man ssh-add` in Terminal diff --git a/content/github/authenticating-to-github/error-ssl-certificate-problem-verify-that-the-ca-cert-is-ok.md b/content/github/authenticating-to-github/error-ssl-certificate-problem-verify-that-the-ca-cert-is-ok.md deleted file mode 100644 index 1c844c383800..000000000000 --- a/content/github/authenticating-to-github/error-ssl-certificate-problem-verify-that-the-ca-cert-is-ok.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: 'Error: SSL certificate problem, verify that the CA cert is OK' -intro: 'This error means your CA root certificate is out of date. If your CA root certificate needs to be updated, you won''t be able to push or pull from {% data variables.product.product_name %} repositories.' -redirect_from: - - /articles/error-ssl-certificate-problem-verify-that-the-ca-cert-is-ok -versions: - free-pro-team: '*' ---- -The error you receive may look like the following: - -```shell -$ git push -u github.main -> fatal: 'github.main' does not appear to be a git repository -> fatal: The remote end hung up unexpectedly - -$ git pull -u github -> error: SSL certificate problem, verify that the CA cert is OK. Details: -> error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://github.com/tqisjim/google-oauth.git/info/refs -> fatal: HTTP request failed -``` - -A "CA" is shorthand for a "certificate authority," a third-party group responsible for handling secure connections around the web. They establish digital "certificates," which are a way of ensuring that there are valid connections between two machines (like your computer and GitHub.com). Without a certificate, the security risk between two machines is greater. - -When you receive this error, it likely means that your CA is out-of-date and needs to be updated. Generally, updating your operating system also updates your CA, and solves the problem. diff --git a/content/github/authenticating-to-github/error-were-doing-an-ssh-key-audit.md b/content/github/authenticating-to-github/error-were-doing-an-ssh-key-audit.md deleted file mode 100644 index 2a2016ae6c0c..000000000000 --- a/content/github/authenticating-to-github/error-were-doing-an-ssh-key-audit.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: 'Error: We''re doing an SSH key audit' -intro: This error means the SSH key you're using to perform a Git operation is unverified. -redirect_from: - - /articles/error-we-re-doing-an-ssh-key-audit - - /articles/error-were-doing-an-ssh-key-audit -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When using an unverified key to perform Git operations, you will be prompted to perform an audit of your SSH keys. - -```shell -ERROR: We're doing an SSH key audit. -Reason: unverified due to lack of use -Please visit https://github.com/settings/ssh -to approve this key so we know it's safe. -Fingerprint: ab:08:46:83:ff:f6:c4:f8:a9:4e:68:6b:94:17:f2:46 -fatal: could not read from remote repository -``` -### Solving the issue - -To fix this, you need to [review your SSH keys](/articles/reviewing-your-ssh-keys) and either reject or approve the unverified key. Clicking the URL link in the error message brings you to the SSH Settings page, where the unverified SSH key is highlighted in the SSH key list. diff --git a/content/github/authenticating-to-github/generating-a-new-gpg-key.md b/content/github/authenticating-to-github/generating-a-new-gpg-key.md deleted file mode 100644 index 524cf1a11dbd..000000000000 --- a/content/github/authenticating-to-github/generating-a-new-gpg-key.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Generating a new GPG key -intro: 'If you don''t have an existing GPG key, you can generate a new GPG key to use for signing commits and tags.' -redirect_from: - - /articles/generating-a-new-gpg-key -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.gpg.supported-gpg-key-algorithms %} - -### Generating a GPG key - -{% note %} - -**Note:** Before generating a new GPG key, make sure you've verified your email address. If you haven't verified your email address, you won't be able to sign commits and tags with GPG.{% if currentVersion == "free-pro-team@latest" %} For more information, see "[Verifying your email address](/articles/verifying-your-email-address)."{% endif %} - -{% endnote %} - -1. Download and install [the GPG command line tools](https://www.gnupg.org/download/) for your operating system. We generally recommend installing the latest version for your operating system. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Generate a GPG key pair. Since there are multiple versions of GPG, you may need to consult the relevant [_man page_](https://en.wikipedia.org/wiki/Man_page) to find the appropriate key generation command. Your key must use RSA. - - If you are on version 2.1.17 or greater, paste the text below to generate a GPG key pair. - ```shell - $ gpg --full-generate-key - ``` - - If you are not on version 2.1.17 or greater, the `gpg --full-generate-key` command doesn't work. Paste the text below and skip to step 6. - ```shell - $ gpg --default-new-key-algo rsa4096 --gen-key - ``` -4. At the prompt, specify the kind of key you want, or press `Enter` to accept the default `RSA and RSA`. -5. Enter the desired key size. Your key must be at least `4096` bits. -6. Enter the length of time the key should be valid. Press `Enter` to specify the default selection, indicating that the key doesn't expire. -7. Verify that your selections are correct. -8. Enter your user ID information. - - {% note %} - - **Note:** When asked to enter your email address, ensure that you enter the verified email address for your GitHub account. {% data reusables.gpg.private-email %} {% if currentVersion == "free-pro-team@latest" %} For more information, see "[Verifying your email address](/articles/verifying-your-email-address)" and "[Setting your commit email address](/articles/setting-your-commit-email-address)."{% endif %} - - {% endnote %} - -9. Type a secure passphrase. -{% data reusables.gpg.list-keys-with-note %} -{% data reusables.gpg.copy-gpg-key-id %} -10. Paste the text below, substituting in the GPG key ID you'd like to use. In this example, the GPG key ID is `3AA5C34371567BD2`: - ```shell - $ gpg --armor --export 3AA5C34371567BD2 - # Prints the GPG key ID, in ASCII armor format - ``` -11. Copy your GPG key, beginning with `-----BEGIN PGP PUBLIC KEY BLOCK-----` and ending with `-----END PGP PUBLIC KEY BLOCK-----`. -12. [Add the GPG key to your GitHub account](/articles/adding-a-new-gpg-key-to-your-github-account). - -### Further reading - -* "[Checking for existing GPG keys](/articles/checking-for-existing-gpg-keys)" -* "[Adding a new GPG key to your GitHub account](/articles/adding-a-new-gpg-key-to-your-github-account)" -* "[Telling Git about your signing key](/articles/telling-git-about-your-signing-key)" -* "[Associating an email with your GPG key](/articles/associating-an-email-with-your-gpg-key)" -* "[Signing commits](/articles/signing-commits)" -* "[Signing tags](/articles/signing-tags)" diff --git a/content/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md b/content/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md deleted file mode 100644 index 5997d0816d0a..000000000000 --- a/content/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Generating a new SSH key and adding it to the ssh-agent -intro: 'After you''ve checked for existing SSH keys, you can generate a new SSH key to use for authentication, then add it to the ssh-agent.' -redirect_from: - - /articles/adding-a-new-ssh-key-to-the-ssh-agent/ - - /articles/generating-a-new-ssh-key/ - - /articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If you don't already have an SSH key, you must [generate a new SSH key](#generating-a-new-ssh-key). If you're unsure whether you already have an SSH key, check for [existing keys](/articles/checking-for-existing-ssh-keys). - -If you don't want to reenter your passphrase every time you use your SSH key, you can [add your key to the SSH agent](#adding-your-ssh-key-to-the-ssh-agent), which manages your SSH keys and remembers your passphrase. - -### Generating a new SSH key - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Paste the text below, substituting in your {% data variables.product.product_name %} email address. - ```shell - $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" - ``` - This creates a new ssh key, using the provided email as a label. - ```shell - > Generating public/private rsa key pair. - ``` -3. When you're prompted to "Enter a file in which to save the key," press Enter. This accepts the default file location. - - {% mac %} - - ```shell - > Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter] - ``` - - {% endmac %} - - {% windows %} - - ```shell - > Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):[Press enter] - ``` - - {% endwindows %} - - {% linux %} - - ```shell - > Enter a file in which to save the key (/home/you/.ssh/id_rsa): [Press enter] - ``` - - {% endlinux %} - -4. At the prompt, type a secure passphrase. For more information, see ["Working with SSH key passphrases"](/articles/working-with-ssh-key-passphrases). - ```shell - > Enter passphrase (empty for no passphrase): [Type a passphrase] - > Enter same passphrase again: [Type passphrase again] - ``` - -### Adding your SSH key to the ssh-agent - -Before adding a new SSH key to the ssh-agent to manage your keys, you should have [checked for existing SSH keys](/articles/checking-for-existing-ssh-keys) and [generated a new SSH key](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#generating-a-new-ssh-key). When adding your SSH key to the agent, use the default macOS `ssh-add` command, and not an application installed by [macports](https://www.macports.org/), [homebrew](http://brew.sh/), or some other external source. - -{% mac %} - -1. {% data reusables.command_line.start_ssh_agent %} - -2. If you're using macOS Sierra 10.12.2 or later, you will need to modify your `~/.ssh/config` file to automatically load keys into the ssh-agent and store passphrases in your keychain. - - * First, check to see if your `~/.ssh/config` file exists in the default location. - - ```shell - $ open ~/.ssh/config - > The file /Users/you/.ssh/config does not exist. - ``` - - * If the file doesn't exist, create the file. - - ```shell - $ touch ~/.ssh/config - ``` - - * Open your `~/.ssh/config` file, then modify the file, replacing ` ~/.ssh/id_rsa` if you are not using the default location and name for your `id_rsa` key. - - ``` - Host * - AddKeysToAgent yes - UseKeychain yes - IdentityFile ~/.ssh/id_rsa - ``` - -3. Add your SSH private key to the ssh-agent and store your passphrase in the keychain. {% data reusables.ssh.add-ssh-key-to-ssh-agent %} - ```shell - $ ssh-add -K ~/.ssh/id_rsa - ``` - {% note %} - - **Note:** The `-K` option is Apple's standard version of `ssh-add`, which stores the passphrase in your keychain for you when you add an ssh key to the ssh-agent. - - If you don't have Apple's standard version installed, you may receive an error. For more information on resolving this error, see "[Error: ssh-add: illegal option -- K](/articles/error-ssh-add-illegal-option-k)." - - {% endnote %} - -4. [Add the SSH key to your GitHub account](/articles/adding-a-new-ssh-key-to-your-github-account). - -{% endmac %} - -{% windows %} - -{% data reusables.desktop.windows_git_bash %} - -1. Ensure the ssh-agent is running. You can use the "Auto-launching the ssh-agent" instructions in "[Working with SSH key passphrases](/articles/working-with-ssh-key-passphrases)", or start it manually: - ```shell - # start the ssh-agent in the background - $ eval $(ssh-agent -s) - > Agent pid 59566 - ``` - -2. Add your SSH private key to the ssh-agent. {% data reusables.ssh.add-ssh-key-to-ssh-agent %} - {% data reusables.ssh.add-ssh-key-to-ssh-agent-commandline %} - -3. [Add the SSH key to your GitHub account](/articles/adding-a-new-ssh-key-to-your-github-account). - -{% endwindows %} - -{% linux %} - -1. {% data reusables.command_line.start_ssh_agent %} - -2. Add your SSH private key to the ssh-agent. {% data reusables.ssh.add-ssh-key-to-ssh-agent %} - {% data reusables.ssh.add-ssh-key-to-ssh-agent-commandline %} - -3. [Add the SSH key to your GitHub account](/articles/adding-a-new-ssh-key-to-your-github-account). - -{% endlinux %} - -### Further reading - -- "[About SSH](/articles/about-ssh)" -- "[Working with SSH key passphrases](/articles/working-with-ssh-key-passphrases)" -{%- if currentVersion == "free-pro-team@latest" %} -- "[Authorizing an SSH key for use with SAML single sign-on](/articles/authorizing-an-ssh-key-for-use-with-saml-single-sign-on)" -{%- endif %} diff --git a/content/github/authenticating-to-github/githubs-ssh-key-fingerprints.md b/content/github/authenticating-to-github/githubs-ssh-key-fingerprints.md deleted file mode 100644 index 309b4e69c182..000000000000 --- a/content/github/authenticating-to-github/githubs-ssh-key-fingerprints.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: GitHub's SSH key fingerprints -intro: Public key fingerprints can be used to validate a connection to a remote server. -redirect_from: - - /articles/what-are-github-s-ssh-key-fingerprints/ - - /articles/github-s-ssh-key-fingerprints - - /articles/githubs-ssh-key-fingerprints -versions: - free-pro-team: '*' ---- - -These are {% data variables.product.prodname_dotcom %}'s public key fingerprints: - -- `SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8` (RSA) -- `SHA256:br9IjFspm1vxR3iA35FWE+4VTyz1hYVLIE2t1/CeyWQ` (DSA) diff --git a/content/github/authenticating-to-github/index.md b/content/github/authenticating-to-github/index.md deleted file mode 100644 index d48b7ccdbc97..000000000000 --- a/content/github/authenticating-to-github/index.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Authenticating to GitHub -shortTitle: Authentication -intro: 'Keep your account and data secure with features like two-factor authentication, SSH, and commit signature verification.' -redirect_from: - - /categories/56/articles/ - - /categories/ssh/ - - /mac-verify-ssh/ - - /ssh-issues/ - - /verify-ssh-redirect/ - - /win-verify-ssh/ - - /categories/92/articles/ - - /categories/gpg/ - - /categories/security/ - - /categories/authenticating-to-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /keeping-your-account-and-data-secure %} - {% link_in_list /about-authentication-to-github %} - {% link_in_list /creating-a-strong-password %} - {% link_in_list /updating-your-github-access-credentials %} - {% link_in_list /creating-a-personal-access-token %} - {% link_in_list /reviewing-your-ssh-keys %} - {% link_in_list /reviewing-your-deploy-keys %} - {% link_in_list /authorizing-oauth-apps %} - {% link_in_list /reviewing-your-authorized-integrations %} - {% link_in_list /connecting-with-third-party-applications %} - {% link_in_list /reviewing-your-authorized-applications-oauth %} - {% link_in_list /reviewing-your-security-log %} - {% link_in_list /removing-sensitive-data-from-a-repository %} - - {% link_in_list /about-anonymized-image-urls %} - {% link_in_list /about-githubs-ip-addresses %} - {% link_in_list /githubs-ssh-key-fingerprints %} - - {% link_in_list /sudo-mode %} - {% link_in_list /preventing-unauthorized-access %} -{% topic_link_in_list /securing-your-account-with-two-factor-authentication-2fa %} - {% link_in_list /about-two-factor-authentication %} - {% link_in_list /configuring-two-factor-authentication %} - {% link_in_list /configuring-two-factor-authentication-recovery-methods %} - {% link_in_list /accessing-github-using-two-factor-authentication %} - {% link_in_list /recovering-your-account-if-you-lose-your-2fa-credentials %} - - {% link_in_list /changing-two-factor-authentication-delivery-methods-for-your-mobile-device %} - {% link_in_list /countries-where-sms-authentication-is-supported %} - - {% link_in_list /disabling-two-factor-authentication-for-your-personal-account %} - -{% topic_link_in_list /authenticating-with-saml-single-sign-on %} - {% link_in_list /about-authentication-with-saml-single-sign-on %} - {% link_in_list /authorizing-an-ssh-key-for-use-with-saml-single-sign-on %} - {% link_in_list /authorizing-a-personal-access-token-for-use-with-saml-single-sign-on %} - {% link_in_list /viewing-and-managing-your-active-saml-sessions %} - -{% topic_link_in_list /connecting-to-github-with-ssh %} - {% link_in_list /about-ssh %} - {% link_in_list /checking-for-existing-ssh-keys %} - {% link_in_list /generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent %} - {% link_in_list /adding-a-new-ssh-key-to-your-github-account %} - {% link_in_list /testing-your-ssh-connection %} - {% link_in_list /working-with-ssh-key-passphrases %} -{% topic_link_in_list /troubleshooting-ssh %} - - {% link_in_list /using-ssh-over-the-https-port %} - - {% link_in_list /recovering-your-ssh-key-passphrase %} - - {% link_in_list /deleted-or-missing-ssh-keys %} - - {% link_in_list /error-permission-denied-publickey %} - {% link_in_list /error-bad-file-number %} - {% link_in_list /error-key-already-in-use %} - {% link_in_list /error-permission-to-userrepo-denied-to-other-user %} - {% link_in_list /error-permission-to-userrepo-denied-to-userother-repo %} - {% link_in_list /error-agent-admitted-failure-to-sign %} - {% link_in_list /error-ssh-add-illegal-option----k %} - - {% link_in_list /error-ssl-certificate-problem-verify-that-the-ca-cert-is-ok %} - - {% link_in_list /error-were-doing-an-ssh-key-audit %} -{% topic_link_in_list /managing-commit-signature-verification %} - {% link_in_list /about-commit-signature-verification %} - {% link_in_list /checking-for-existing-gpg-keys %} - {% link_in_list /generating-a-new-gpg-key %} - {% link_in_list /adding-a-new-gpg-key-to-your-github-account %} - {% link_in_list /telling-git-about-your-signing-key %} - {% link_in_list /associating-an-email-with-your-gpg-key %} - {% link_in_list /signing-commits %} - {% link_in_list /signing-tags %} -{% topic_link_in_list /troubleshooting-commit-signature-verification %} - {% link_in_list /checking-your-commit-and-tag-signature-verification-status %} - {% link_in_list /updating-an-expired-gpg-key %} - {% link_in_list /using-a-verified-email-address-in-your-gpg-key %} diff --git a/content/github/authenticating-to-github/keeping-your-account-and-data-secure.md b/content/github/authenticating-to-github/keeping-your-account-and-data-secure.md deleted file mode 100644 index 134c5fd438fa..000000000000 --- a/content/github/authenticating-to-github/keeping-your-account-and-data-secure.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Keeping your account and data secure -intro: 'To protect your personal information, you should keep both your {% data variables.product.product_name %} account and any associated data secure.' -mapTopic: true -redirect_from: - - /articles/keeping-your-account-and-data-secure -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/authenticating-to-github/managing-commit-signature-verification.md b/content/github/authenticating-to-github/managing-commit-signature-verification.md deleted file mode 100644 index 064f8efc010b..000000000000 --- a/content/github/authenticating-to-github/managing-commit-signature-verification.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Managing commit signature verification -intro: 'You can sign your work locally using GPG{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.14" %} or S/MIME{% endif %}. {% data variables.product.product_name %} will verify these signatures so other people will know that your commits come from a trusted source.{% if currentVersion == "free-pro-team@latest" %} {% data variables.product.product_name %} will automatically sign commits you make using the {% data variables.product.product_name %} web interface.{% endif %}' -redirect_from: - - /articles/generating-a-gpg-key/ - - /articles/signing-commits-with-gpg/ - - /articles/managing-commit-signature-verification -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/authenticating-to-github/preventing-unauthorized-access.md b/content/github/authenticating-to-github/preventing-unauthorized-access.md deleted file mode 100644 index 79c9518fac9f..000000000000 --- a/content/github/authenticating-to-github/preventing-unauthorized-access.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Preventing unauthorized access -intro: 'You may be alerted to a security incident in the media, such as the discovery of the [Heartbleed bug](http://heartbleed.com/), or your computer could be stolen while you''re signed in to {% data variables.product.product_location %}. In such cases, changing your password prevents any unintended future access to your account and projects.' -redirect_from: - - /articles/preventing-unauthorized-access -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data variables.product.product_name %} requires a password to perform sensitive actions, such as adding new SSH keys, authorizing applications, or modifying team members. - -After changing your password, you should perform these actions to make sure that your account is secure: - -- [Enable two-factor authentication](/articles/about-two-factor-authentication) on your account so that access requires more than just a password. -- [Review your SSH keys](/articles/reviewing-your-ssh-keys), [deploy keys](/articles/reviewing-your-deploy-keys), and [authorized integrations](/articles/reviewing-your-authorized-integrations) and revoke unauthorized or unfamiliar access in your SSH and Applications settings. -{% if currentVersion == "free-pro-team@latest" %} -- [Verify all your email addresses](/articles/verifying-your-email-address). If an attacker added their email address to your account, it could allow them to force an unintended password reset. -{% endif %} -- [Review your account's security log](/github/authenticating-to-github/reviewing-your-security-log). This provides an overview on various configurations made to your repositories. For example, you can ensure that no private repositories were turned public, or that no repositories were transferred. -- [Review the webhooks](/articles/creating-webhooks) on your repositories. Webhooks could allow an attacker to intercept pushes made to your repository. -- [Make sure that no new deploy keys](/guides/managing-deploy-keys/#deploy-keys) were created. This could enable outside servers access to your projects. -- Review recent commits made to your repositories. -- Review the list of collaborators for each repository. diff --git a/content/github/authenticating-to-github/recovering-your-account-if-you-lose-your-2fa-credentials.md b/content/github/authenticating-to-github/recovering-your-account-if-you-lose-your-2fa-credentials.md deleted file mode 100644 index e3259b0eff4c..000000000000 --- a/content/github/authenticating-to-github/recovering-your-account-if-you-lose-your-2fa-credentials.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Recovering your account if you lose your 2FA credentials -intro: 'If you lose access to your two-factor authentication credentials, you can use your recovery codes, or another recovery option, to regain access to your account.' -redirect_from: - - /articles/recovering-your-account-if-you-lost-your-2fa-credentials/ - - /articles/authenticating-with-an-account-recovery-token/ - - /articles/recovering-your-account-if-you-lose-your-2fa-credentials -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% if currentVersion == "free-pro-team@latest" %} - -{% warning %} - -**Warning**: {% data reusables.two_fa.support-may-not-help %} - -{% endwarning %} - -{% endif %} - -### Using a two-factor authentication recovery code - -Use one of your recovery codes to automatically regain entry into your account. You may have saved your recovery codes to a password manager or your computer's downloads folder. The default filename for recovery codes is `github-recovery-codes.txt`. For more information about recovery codes, see "[Configuring two-factor authentication recovery methods](/articles/configuring-two-factor-authentication-recovery-methods#downloading-your-two-factor-authentication-recovery-codes)." - -{% data reusables.two_fa.username-password %}{% if currentVersion == "free-pro-team@latest" %} -2. Under "Having Problems?", click **Enter a two-factor recovery code**. - ![Link to use a recovery code](/assets/images/help/2fa/2fa-recovery-code-link.png){% else %} -2. On the 2FA page, under "Don't have your phone?", click **Enter a two-factor recovery code**. - ![Link to use a recovery code](/assets/images/help/2fa/2fa_recovery_dialog_box.png){% endif %} -3. Type one of your recovery codes, then click **Verify**. - ![Field to type a recovery code and Verify button](/assets/images/help/2fa/2fa-type-verify-recovery-code.png) - -{% if currentVersion == "free-pro-team@latest" %} -### Authenticating with a fallback number - -If you lose access to your primary TOTP app or phone number, you can provide a two-factor authentication code sent to your fallback number to automatically regain access to your account. -{% endif %} - -### Authenticating with a security key - -If you configured two-factor authentication using a security key, you can use your security key as a secondary authentication method to automatically regain access to your account. For more information, see "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication#configuring-two-factor-authentication-using-a-security-key)." - -{% if currentVersion == "free-pro-team@latest" %} -### Authenticating with a verified device, SSH token, or personal access token -If you lose access to the two-factor authentication credentials and don't have your two-factor authentication recovery codes, you can have a one-time password sent to your verified email address to begin the verification process and regain access to your account. - -{% note %} - -**Note**: For security reasons, regaining access to your account by authenticating with a one-time password can take 3-5 business days. Additional requests submitted during this time will not be reviewed. - -{% endnote %} - -You can use your two-factor authentication credentials or two-factor authentication recovery codes to regain access to your account anytime during the 3-5 day waiting period. - -{% data reusables.two_fa.username-password %} -2. Under "Having Problems?", click **Can't access your two factor device or valid recovery codes?** - ![Link if you don't have your 2fa device or recovery codes](/assets/images/help/2fa/no-access-link.png) -3. Click **I understand, get started** to request a reset of your authentication settings. - ![Reset authentication settings button](/assets/images/help/2fa/reset-auth-settings.png) -4. Click **Send one-time password** to send a one-time password to all email addresses associated with your account. - ![Send one-time password button](/assets/images/help/2fa/send-one-time-password.png) -5. Under "One-time password", type the temporary password from the recovery email {% data variables.product.prodname_dotcom %} sent. - ![One-time password field](/assets/images/help/2fa/one-time-password-field.png) -6. Click **Verify email address**. -7. Choose an alternative verification factor. - - If you've used your current device to log into this account before and would like to use the device for verification, click **Verify this device**. - - If you've previously set up an SSH key on this account and would like to use the SSH key for verification, click **SSH key**. - - If you've previously set up a personal access token and would like to use the personal access token for verification, click **Personal access token**. - ![Alternative verification buttons](/assets/images/help/2fa/alt-verifications.png) -8. A member of {% data variables.contact.github_support %} will review your request and email you within 3-5 business days. If your request is approved, you'll receive a link to complete your account recovery process. If your request is denied, the email will include a way to contact support with any additional questions. - -### Authenticating with an account recovery token - -If you lose access to the two-factor authentication methods for your {% data variables.product.product_name %} account, you can retrieve your account recovery token from a partner recovery provider and ask {% data variables.product.prodname_dotcom %} Support to review it. - -If you don't have access to your two-factor authentication methods or recovery codes and you've stored an account recovery token with Facebook using Recover Accounts Elsewhere, you may be able to use your token to regain access to your account. - -If you're unable to regain access to your account, generate a one-time password to regain access. For more information, see "[Authenticating with a verified device, SSH token, or personal access token](#authenticating-with-a-verified-device-ssh-token-or-personal-access-token)." - -{% warning %} - -**Warnings:** -- Before you retrieve an account recovery token, you should try using your [two-factor authentication codes](/articles/accessing-github-using-two-factor-authentication) or your two-factor authentication recovery codes to regain access to your account. For more information, see "[Recovering your account if you lose your 2FA credentials](/articles/recovering-your-account-if-you-lose-your-2fa-credentials)." - -{% endwarning %} - -1. On Facebook, navigate to your [Security Settings](https://www.facebook.com/settings?tab=security), then click **Recover Accounts Elsewhere**. - ![Facebook security settings page with Recover Accounts Elsewhere link](/assets/images/help/settings/security-facebook-security-settings-page.png) -2. Click the recovery token associated with your {% data variables.product.product_name %} account. - ![List of recovery tokens stored on Facebook](/assets/images/help/settings/security-github-rae-token-on-facebook.png) -3. To redeem your account recovery token, click **Recover This Account**. A new window will open, returning you to {% data variables.product.product_name %}. - ![Modal box with information about your recovery token and Recover This Account button](/assets/images/help/settings/security-recover-account-facebook.png) -4. Contact {% data variables.contact.contact_support %} to let them know that your account recovery token is ready for review. -{% endif %} - -### Further reading - -- "[About two-factor authentication](/articles/about-two-factor-authentication)" -- "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication)" -- "[Configuring two-factor authentication recovery methods](/articles/configuring-two-factor-authentication-recovery-methods)" -- "[Accessing {% data variables.product.prodname_dotcom %} using two-factor authentication](/articles/accessing-github-using-two-factor-authentication)" diff --git a/content/github/authenticating-to-github/recovering-your-ssh-key-passphrase.md b/content/github/authenticating-to-github/recovering-your-ssh-key-passphrase.md deleted file mode 100644 index 3bb14b222896..000000000000 --- a/content/github/authenticating-to-github/recovering-your-ssh-key-passphrase.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Recovering your SSH key passphrase -intro: 'If you''ve lost your SSH key passphrase, depending on the operating system you use, you may either recover it or you may need to generate a new SSH key passphrase.' -redirect_from: - - /articles/how-do-i-recover-my-passphrase/ - - /articles/how-do-i-recover-my-ssh-key-passphrase/ - - /articles/recovering-your-ssh-key-passphrase -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% mac %} - -If you [configured your SSH passphrase with the OS X Keychain](/articles/working-with-ssh-key-passphrases#saving-your-passphrase-in-the-keychain), you may be able to recover it. - -1. In Finder, search for the **Keychain Access** app. - ![Spotlight Search bar](/assets/images/help/setup/keychain-access.png) -2. In Keychain Access, search for **SSH**. -3. Double click on the entry for your SSH key to open a new dialog box. -4. In the lower-left corner, select **Show password**. - ![Keychain access dialog](/assets/images/help/setup/keychain_show_password_dialog.png) -5. You'll be prompted for your administrative password. Type it into the "Keychain Access" dialog box. -6. Your password will be revealed. - -{% endmac %} - -{% windows %} - -If you lose your SSH key passphrase, there's no way to recover it. You'll need to [generate a brand new SSH keypair](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) or [switch to HTTPS cloning](/articles/changing-a-remote-s-url/#switching-remote-urls-from-ssh-to-https) so you can use your GitHub password instead. - -{% endwindows %} - -{% linux %} - -If you lose your SSH key passphrase, there's no way to recover it. You'll need to [generate a brand new SSH keypair](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) or [switch to HTTPS cloning](/articles/which-remote-url-should-i-use/#cloning-with-https-urls) so you can use your GitHub password instead. - -{% endlinux %} diff --git a/content/github/authenticating-to-github/removing-sensitive-data-from-a-repository.md b/content/github/authenticating-to-github/removing-sensitive-data-from-a-repository.md deleted file mode 100644 index fd21c1010821..000000000000 --- a/content/github/authenticating-to-github/removing-sensitive-data-from-a-repository.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Removing sensitive data from a repository -intro: 'If you commit sensitive data, such as a password or SSH key into a Git repository, you can remove it from the history. To entirely remove unwanted files from a repository''s history you can use either the `git filter-branch` command or the BFG Repo-Cleaner open source tool.' -redirect_from: - - /remove-sensitive-data/ - - /removing-sensitive-data/ - - /articles/remove-sensitive-data/ - - /articles/removing-sensitive-data-from-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The `git filter-branch` command and the BFG Repo-Cleaner rewrite your repository's history, which changes the SHAs for existing commits that you alter and any dependent commits. Changed commit SHAs may affect open pull requests in your repository. We recommend merging or closing all open pull requests before removing files from your repository. - -You can remove the file from the latest commit with `git rm`. For information on removing a file that was added with the latest commit, see "[Removing files from a repository's history](/articles/removing-files-from-a-repository-s-history)." - -{% warning %} - -**Warning: Once you have pushed a commit to {% data variables.product.product_name %}, you should consider any data it contains to be compromised.** If you committed a password, change it! If you committed a key, generate a new one. - -This article tells you how to make commits with sensitive data unreachable from any branches or tags in your {% data variables.product.product_name %} repository. However, it's important to note that those commits may still be accessible in any clones or forks of your repository, directly via their SHA-1 hashes in cached views on {% data variables.product.product_name %}, and through any pull requests that reference them. You can't do anything about existing clones or forks of your repository, but you can permanently remove cached views and references to the sensitive data in pull requests on {% data variables.product.product_name %} by contacting {% data variables.contact.contact_support %}. - -{% endwarning %} - -### Purging a file from your repository's history - -#### Using the BFG - -The [BFG Repo-Cleaner](http://rtyley.github.io/bfg-repo-cleaner/) is a tool that's built and maintained by the open source community. It provides a faster, simpler alternative to `git filter-branch` for removing unwanted data. For example, to remove your file with sensitive data and leave your latest commit untouched, run: - -```shell -$ bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA -``` - -To replace all text listed in `passwords.txt` wherever it can be found in your repository's history, run: - -```shell -$ bfg --replace-text passwords.txt -``` - -See the [BFG Repo-Cleaner](http://rtyley.github.io/bfg-repo-cleaner/)'s documentation for full usage and download instructions. - -#### Using filter-branch - -{% warning %} - -**Warning:** If you run `git filter-branch` after stashing changes, you won't be able to retrieve your changes with other stash commands. Before running `git filter-branch`, we recommend unstashing any changes you've made. To unstash the last set of changes you've stashed, run `git stash show -p | git apply -R`. For more information, see [Git Tools Stashing](https://git-scm.com/book/en/v1/Git-Tools-Stashing). - -{% endwarning %} - -To illustrate how `git filter-branch` works, we'll show you how to remove your file with sensitive data from the history of your repository and add it to `.gitignore` to ensure that it is not accidentally re-committed. - -1. If you don't already have a local copy of your repository with sensitive data in its history, [clone the repository](/articles/cloning-a-repository/) to your local computer. - ```shell - $ git clone https://{% data variables.command_line.codeblock %}/YOUR-USERNAME/YOUR-REPOSITORY - > Initialized empty Git repository in /Users/YOUR-FILE-PATH/YOUR-REPOSITORY/.git/ - > remote: Counting objects: 1301, done. - > remote: Compressing objects: 100% (769/769), done. - > remote: Total 1301 (delta 724), reused 910 (delta 522) - > Receiving objects: 100% (1301/1301), 164.39 KiB, done. - > Resolving deltas: 100% (724/724), done. - ``` -2. Navigate into the repository's working directory. - ```shell - $ cd YOUR-REPOSITORY - ``` -3. Run the following command, replacing `PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA` with the **path to the file you want to remove, not just its filename**. These arguments will: - - Force Git to process, but not check out, the entire history of every branch and tag - - Remove the specified file, as well as any empty commits generated as a result - - **Overwrite your existing tags** - ```shell - $ git filter-branch --force --index-filter \ - "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \ - --prune-empty --tag-name-filter cat -- --all - > Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (266/266) - > Ref 'refs/heads/main' was rewritten - ``` - - {% note %} - - **Note:** If the file with sensitive data used to exist at any other paths (because it was moved or renamed), you must run this command on those paths, as well. - - {% endnote %} - -4. Add your file with sensitive data to `.gitignore` to ensure that you don't accidentally commit it again. - - ```shell - $ echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore - $ git add .gitignore - $ git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore" - > [main 051452f] Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore - > 1 files changed, 1 insertions(+), 0 deletions(-) - ``` -5. Double-check that you've removed everything you wanted to from your repository's history, and that all of your branches are checked out. -6. Once you're happy with the state of your repository, force-push your local changes to overwrite your {% data variables.product.product_name %} repository, as well as all the branches you've pushed up: - ```shell - $ git push origin --force --all - > Counting objects: 1074, done. - > Delta compression using 2 threads. - > Compressing objects: 100% (677/677), done. - > Writing objects: 100% (1058/1058), 148.85 KiB, done. - > Total 1058 (delta 590), reused 602 (delta 378) - > To https://{% data variables.command_line.codeblock %}/YOUR-USERNAME/YOUR-REPOSITORY.git - > + 48dc599...051452f main -> main (forced update) - ``` -7. In order to remove the sensitive file from [your tagged releases](/articles/about-releases), you'll also need to force-push against your Git tags: - ```shell - $ git push origin --force --tags - > Counting objects: 321, done. - > Delta compression using up to 8 threads. - > Compressing objects: 100% (166/166), done. - > Writing objects: 100% (321/321), 331.74 KiB | 0 bytes/s, done. - > Total 321 (delta 124), reused 269 (delta 108) - > To https://{% data variables.command_line.codeblock %}/YOUR-USERNAME/YOUR-REPOSITORY.git - > + 48dc599...051452f main -> main (forced update) - ``` -8. Contact {% data variables.contact.contact_support %}, asking them to remove cached views and references to the sensitive data in pull requests on {% data variables.product.product_name %}. -9. Tell your collaborators to [rebase](https://git-scm.com/book/en/Git-Branching-Rebasing), *not* merge, any branches they created off of your old (tainted) repository history. One merge commit could reintroduce some or all of the tainted history that you just went to the trouble of purging. -10. After some time has passed and you're confident that `git filter-branch` had no unintended side effects, you can force all objects in your local repository to be dereferenced and garbage collected with the following commands (using Git 1.8.5 or newer): - ```shell - $ git for-each-ref --format="delete %(refname)" refs/original | git update-ref --stdin - $ git reflog expire --expire=now --all - $ git gc --prune=now - > Counting objects: 2437, done. - > Delta compression using up to 4 threads. - > Compressing objects: 100% (1378/1378), done. - > Writing objects: 100% (2437/2437), done. - > Total 2437 (delta 1461), reused 1802 (delta 1048) - ``` - {% note %} - - **Note:** You can also achieve this by pushing your filtered history to a new or empty repository and then making a fresh clone from {% data variables.product.product_name %}. - - {% endnote %} - -### Avoiding accidental commits in the future - -There are a few simple tricks to avoid committing things you don't want committed: - -- Use a visual program like [{% data variables.product.prodname_desktop %}](https://desktop.github.com/) or [gitk](https://git-scm.com/docs/gitk) to commit changes. Visual programs generally make it easier to see exactly which files will be added, deleted, and modified with each commit. -- Avoid the catch-all commands `git add .` and `git commit -a` on the command line—use `git add filename` and `git rm filename` to individually stage files, instead. -- Use `git add --interactive` to individually review and stage changes within each file. -- Use `git diff --cached` to review the changes that you have staged for commit. This is the exact diff that `git commit` will produce as long as you don't use the `-a` flag. - -### Further reading - -- [`git filter-branch` man page](https://git-scm.com/docs/git-filter-branch) -- [Pro Git: Git Tools - Rewriting History](https://git-scm.com/book/en/Git-Tools-Rewriting-History) diff --git a/content/github/authenticating-to-github/reviewing-your-authorized-applications-oauth.md b/content/github/authenticating-to-github/reviewing-your-authorized-applications-oauth.md deleted file mode 100644 index 34088755d1bb..000000000000 --- a/content/github/authenticating-to-github/reviewing-your-authorized-applications-oauth.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Reviewing your authorized applications (OAuth) -intro: 'You should review your authorized applications to verify that no new applications with expansive permissions are authorized, such as those that have access to your private repositories.' -redirect_from: - - /articles/reviewing-your-authorized-applications-oauth -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.access_applications %} -{% data reusables.user_settings.access_authorized_oauth_apps %} -{% data reusables.user_settings.review-oauth-apps %} - -### Further reading -{% if currentVersion == "free-pro-team@latest" %} -- "[About integrations](/articles/about-integrations)"{% endif %} -- "[Reviewing your authorized integrations](/articles/reviewing-your-authorized-integrations)" diff --git a/content/github/authenticating-to-github/reviewing-your-authorized-integrations.md b/content/github/authenticating-to-github/reviewing-your-authorized-integrations.md deleted file mode 100644 index 53bb20685dd9..000000000000 --- a/content/github/authenticating-to-github/reviewing-your-authorized-integrations.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Reviewing your authorized integrations -intro: You can review your authorized integrations to audit the access that each integration has to your account and data. -redirect_from: - - /articles/reviewing-your-authorized-integrations -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Reviewing your authorized {% data variables.product.prodname_oauth_app %}s - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.access_applications %} -{% data reusables.user_settings.access_authorized_oauth_apps %} -{% data reusables.user_settings.review-oauth-apps %} - -### Reviewing your authorized {% data variables.product.prodname_github_app %}s - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.access_applications %} -3. Click the **Authorized {% data variables.product.prodname_github_app %}s** tab. -![Authorized {% data variables.product.prodname_github_app %}s tab](/assets/images/help/settings/settings-authorized-github-apps-tab.png) -3. Review the {% data variables.product.prodname_github_app %}s that have access to your account. For those that you don't recognize or that are out of date, click **Revoke**. To revoke all {% data variables.product.prodname_github_app %}s, click **Revoke all**. - ![List of authorized {% data variables.product.prodname_github_app %}](/assets/images/help/settings/revoke-github-app.png) - -### Further reading -{% if currentVersion == "free-pro-team@latest" %} -- "[About integrations](/articles/about-integrations)"{% endif %} -- "[Reviewing your authorized applications (OAuth)](/articles/reviewing-your-authorized-applications-oauth)" diff --git a/content/github/authenticating-to-github/reviewing-your-deploy-keys.md b/content/github/authenticating-to-github/reviewing-your-deploy-keys.md deleted file mode 100644 index 930ea94e69d2..000000000000 --- a/content/github/authenticating-to-github/reviewing-your-deploy-keys.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Reviewing your deploy keys -intro: You should review deploy keys to ensure that there aren't any unauthorized (or possibly compromised) keys. You can also approve existing deploy keys that are valid. -redirect_from: - - /articles/reviewing-your-deploy-keys -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. In the left sidebar, click **Deploy keys**. -![Deploy keys setting](/assets/images/help/settings/settings-sidebar-deploy-keys.png) -4. On the Deploy keys page, take note of the deploy keys associated with your account. For those that you don't recognize, or that are out-of-date, click **Delete**. If there are valid deploy keys you'd like to keep, click **Approve**. - ![Deploy key list](/assets/images/help/settings/settings-deploy-key-review.png) - -For more information, see "[Managing deploy keys](/guides/managing-deploy-keys)." diff --git a/content/github/authenticating-to-github/reviewing-your-security-log.md b/content/github/authenticating-to-github/reviewing-your-security-log.md deleted file mode 100644 index 976a5ad5421d..000000000000 --- a/content/github/authenticating-to-github/reviewing-your-security-log.md +++ /dev/null @@ -1,247 +0,0 @@ ---- -title: Reviewing your security log -intro: You can review the security log for your user account to better understand actions you've performed and actions others have performed that involve you. -redirect_from: - - /articles/reviewing-your-security-log -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Accessing your security log - -The security log lists all actions performed within the last 90 days{% if currentVersion ver_lt "enterprise-server@2.20" %}, up to 50{% endif %}. - -{% data reusables.user_settings.access_settings %} -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -2. In the user settings sidebar, click **Security log**. - ![Security log tab](/assets/images/help/settings/audit-log-tab.png) -{% else %} -{% data reusables.user_settings.security %} -3. Under "Security history," your log is displayed. - ![Security log](/assets/images/help/settings/user_security_log.png) -4. Click on an entry to see more information about the event. - ![Security log](/assets/images/help/settings/user_security_history_action.png) -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -### Searching your security log - -{% data reusables.audit_log.audit-log-search %} - -#### Search based on the action performed -{% else %} -### Understanding events in your security log - -Actions listed in your security log are grouped within the following categories: -{% endif %} - -| Category Name | Description -|------------------|-------------------{% if currentVersion == "free-pro-team@latest" %} -| `account_recovery_token` | Contains all activities related to [adding a recovery token](/articles/configuring-two-factor-authentication-recovery-methods). -| `billing` | Contains all activities related to your billing information. -| `marketplace_agreement_signature` | Contains all activities related to signing the {% data variables.product.prodname_marketplace %} Developer Agreement. -| `marketplace_listing` | Contains all activities related to listing apps in {% data variables.product.prodname_marketplace %}.{% endif %} -| `oauth_access` | Contains all activities related to [{% data variables.product.prodname_oauth_app %}s](/articles/authorizing-oauth-apps) you've connected with.{% if currentVersion == "free-pro-team@latest" %} -| `payment_method` | Contains all activities related to paying for your {% data variables.product.prodname_dotcom %} subscription.{% endif %} -| `profile_picture` | Contains all activities related to your profile picture. -| `project` | Contains all activities related to project boards. -| `public_key` | Contains all activities related to [your public SSH keys](/articles/adding-a-new-ssh-key-to-your-github-account). -| `repo` | Contains all activities related to the repositories you own.{% if currentVersion == "free-pro-team@latest" %} -| `sponsors` | Contains all events related to {% data variables.product.prodname_sponsors %} and sponsor buttons (see "[About {% data variables.product.prodname_sponsors %}](/articles/about-github-sponsors)" and "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)"){% endif %}{% if enterpriseServerVersions contains currentVersion %} -| `team` | Contains all activities related to teams you are a part of.{% endif %} -| `two_factor_authentication` | Contains all activities related to [two-factor authentication](/articles/securing-your-account-with-two-factor-authentication-2fa). -| `user` | Contains all activities related to your account. - -A description of the events within these categories is listed below. - -{% if currentVersion == "free-pro-team@latest" %} - -#### The `account_recovery_token` category - -| Action | Description -|------------------|------------------- -| confirm | Triggered when you successfully [store a new token with a recovery provider](/articles/configuring-two-factor-authentication-recovery-methods). -| recover | Triggered when you successfully [redeem an account recovery token](/articles/recovering-your-account-if-you-lose-your-2fa-credentials). -| recover_error | Triggered when a token is used but {% data variables.product.prodname_dotcom %} is not able to validate it. - -#### The `billing` category - -| Action | Description -|------------------|------------------- -| change_billing_type | Triggered when you [change how you pay](/articles/adding-or-editing-a-payment-method) for {% data variables.product.prodname_dotcom %}. -| change_email | Triggered when you [change your email address](/articles/changing-your-primary-email-address). - -#### The `marketplace_agreement_signature` category - -| Action | Description -|------------------|------------------- -| create | Triggered when you sign the {% data variables.product.prodname_marketplace %} Developer Agreement. - -#### The `marketplace_listing` category - -| Action | Description -|------------------|------------------- -| approve | Triggered when your listing is approved for inclusion in {% data variables.product.prodname_marketplace %}. -| create | Triggered when you create a listing for your app in {% data variables.product.prodname_marketplace %}. -| delist | Triggered when your listing is removed from {% data variables.product.prodname_marketplace %}. -| redraft | Triggered when your listing is sent back to draft state. -| reject | Triggered when your listing is not accepted for inclusion in {% data variables.product.prodname_marketplace %}. - -{% endif %} - -#### The `oauth_access` category - -| Action | Description -|------------------|------------------- -| create | Triggered when you [grant access to an {% data variables.product.prodname_oauth_app %}](/articles/authorizing-oauth-apps). -| destroy | Triggered when you [revoke an {% data variables.product.prodname_oauth_app %}'s access to your account](/articles/reviewing-your-authorized-integrations). - -{% if currentVersion == "free-pro-team@latest" %} - -#### The `payment_method` category - -| Action | Description -|------------------|------------------- -| clear | Triggered when [a payment method](/articles/removing-a-payment-method) on file is removed. -| create | Triggered when a new payment method is added, such as a new credit card or PayPal account. -| update | Triggered when an existing payment method is updated. - -{% endif %} - -#### The `profile_picture` category - -| Action | Description -|------------------|------------------- -| update | Triggered when you [set or update your profile picture](/articles/setting-your-profile-picture/). - -#### The `project` category - -| Action | Description -|--------------------|--------------------- -| `create` | Triggered when a project board is created. -| `rename` | Triggered when a project board is renamed. -| `update` | Triggered when a project board is updated. -| `delete` | Triggered when a project board is deleted. -| `link` | Triggered when a repository is linked to a project board. -| `unlink` | Triggered when a repository is unlinked from a project board. -| `project.access` | Triggered when a project board's visibility is changed. -| `update_user_permission` | Triggered when an outside collaborator is added to or removed from a project board or has their permission level changed. - -#### The `public_key` category - -| Action | Description -|------------------|------------------- -| create | Triggered when you [add a new public SSH key to your {% data variables.product.product_name %} account](/articles/adding-a-new-ssh-key-to-your-github-account). -| delete | Triggered when you [remove a public SSH key to your {% data variables.product.product_name %} account](/articles/reviewing-your-ssh-keys). - -#### The `repo` category - -| Action | Description -|------------------|------------------- -| access | Triggered when you a repository you own is [switched from "private" to "public"](/articles/making-a-private-repository-public) (or vice versa). -| add_member | Triggered when a {% data variables.product.product_name %} user is {% if currentVersion == "free-pro-team@latest" %}[invited to have collaboration access](/articles/inviting-collaborators-to-a-personal-repository){% else %}[given collaboration access](/articles/inviting-collaborators-to-a-personal-repository){% endif %} to a repository. -| add_topic | Triggered when a repository owner [adds a topic](/articles/classifying-your-repository-with-topics) to a repository. -| archived | Triggered when a repository owner [archives a repository](/articles/about-archiving-repositories).{% if enterpriseServerVersions contains currentVersion %} -| config.disable_anonymous_git_access | Triggered when [anonymous Git read access is disabled](/enterprise/{{ currentVersion }}/user/articles/enabling-anonymous-git-read-access-for-a-repository) in a public repository. -| config.enable_anonymous_git_access | Triggered when [anonymous Git read access is enabled](/enterprise/{{ currentVersion }}/user/articles/enabling-anonymous-git-read-access-for-a-repository) in a public repository. -| config.lock_anonymous_git_access | Triggered when a repository's [anonymous Git read access setting is locked](/enterprise/{{ currentVersion }}/admin/guides/user-management/preventing-users-from-changing-anonymous-git-read-access). -| config.unlock_anonymous_git_access | Triggered when a repository's [anonymous Git read access setting is unlocked](/enterprise/{{ currentVersion }}/admin/guides/user-management/preventing-users-from-changing-anonymous-git-read-access).{% endif %} -| create | Triggered when [a new repository is created](/articles/creating-a-new-repository). -| destroy | Triggered when [a repository is deleted](/articles/deleting-a-repository).{% if currentVersion == "free-pro-team@latest" %} -| disable | Triggered when a repository is disabled (e.g., for [insufficient funds](/articles/unlocking-a-locked-account)).{% endif %}{% if currentVersion == "free-pro-team@latest" %} -| enable | Triggered when a repository is re-enabled.{% endif %} -| remove_member | Triggered when a {% data variables.product.product_name %} user is [removed from a repository as a collaborator](/articles/removing-a-collaborator-from-a-personal-repository). -| remove_topic | Triggered when a repository owner removes a topic from a repository. -| rename | Triggered when [a repository is renamed](/articles/renaming-a-repository). -| transfer | Triggered when [a repository is transferred](/articles/how-to-transfer-a-repository). -| transfer_start | Triggered when a repository transfer is about to occur. -| unarchived | Triggered when a repository owner unarchives a repository. - -{% if currentVersion == "free-pro-team@latest" %} -#### The `sponsors` category - -| Action | Description -|------------------|------------------- -| repo_funding_link_button_toggle | Triggered when you enable or disable a sponsor button in your repository (see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)") -| repo_funding_links_file_action | Triggered when you change the FUNDING file in your repository (see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)") -| sponsor_sponsorship_cancel | Triggered when you cancel a sponsorship (see "[Downgrading a sponsorship](/articles/downgrading-a-sponsorship)") -| sponsor_sponsorship_create | Triggered when you sponsor a developer (see "[Sponsoring an open source contributor](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-an-open-source-contributor#sponsoring-a-developer)") -| sponsor_sponsorship_preference_change | Triggered when you change whether you receive email updates from a sponsored developer (see "[Managing your sponsorship](/articles/managing-your-sponsorship)") -| sponsor_sponsorship_tier_change | Triggered when you upgrade or downgrade your sponsorship (see "[Upgrading a sponsorship](/articles/upgrading-a-sponsorship)" and "[Downgrading a sponsorship](/articles/downgrading-a-sponsorship)") -| sponsored_developer_approve | Triggered when your {% data variables.product.prodname_sponsors %} account is approved (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)") -| sponsored_developer_create | Triggered when your {% data variables.product.prodname_sponsors %} account is created (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)") -| sponsored_developer_profile_update | Triggered when you edit your sponsored developer profile (see "[Editing your profile details for {% data variables.product.prodname_sponsors %}](/github/supporting-the-open-source-community-with-github-sponsors/editing-your-profile-details-for-github-sponsors)") -| sponsored_developer_request_approval | Triggered when you submit your application for {% data variables.product.prodname_sponsors %} for approval (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)") -| sponsored_developer_tier_description_update | Triggered when you change the description for a sponsorship tier (see "[Changing your sponsorship tiers](/articles/changing-your-sponsorship-tiers)") -| sponsored_developer_update_newsletter_send | Triggered when you send an email update to your sponsors (see "[Contacting your sponsors](/articles/contacting-your-sponsors)") -| waitlist_invite_sponsored_developer | Triggered when you are invited to join {% data variables.product.prodname_sponsors %} from the waitlist (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)") -| waitlist_join | Triggered when you join the waitlist to become a sponsored developer (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)") -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -#### The `successor_invitation` category - -| Action | Description -|------------------|------------------- -| accept | Triggered when you accept a succession invitation (see "[Maintaining ownership continuity of your user account's repositories](/github/setting-up-and-managing-your-github-user-account/maintaining-ownership-continuity-of-your-user-accounts-repositories)") -| cancel | Triggered when you cancel a succession invitation (see "[Maintaining ownership continuity of your user account's repositories](/github/setting-up-and-managing-your-github-user-account/maintaining-ownership-continuity-of-your-user-accounts-repositories)") -| create | Triggered when you create a succession invitation (see "[Maintaining ownership continuity of your user account's repositories](/github/setting-up-and-managing-your-github-user-account/maintaining-ownership-continuity-of-your-user-accounts-repositories)") -| decline | Triggered when you decline a succession invitation (see "[Maintaining ownership continuity of your user account's repositories](/github/setting-up-and-managing-your-github-user-account/maintaining-ownership-continuity-of-your-user-accounts-repositories)") -| revoke | Triggered when you revoke a succession invitation (see "[Maintaining ownership continuity of your user account's repositories](/github/setting-up-and-managing-your-github-user-account/maintaining-ownership-continuity-of-your-user-accounts-repositories)") -{% endif %} - -{% if enterpriseServerVersions contains currentVersion %} - -#### The `team` category - -| Action | Description -|------------------|------------------- -| add_member | Triggered when a member of an organization you belong to [adds you to a team](/articles/adding-organization-members-to-a-team). -| add_repository | Triggered when a team you are a member of is given control of a repository. -| create | Triggered when a new team in an organization you belong to is created. -| destroy | Triggered when a team you are a member of is deleted from the organization. -| remove_member | Triggered when a member of an organization is [removed from a team](/articles/removing-organization-members-from-a-team) you are a member of. -| remove_repository | Triggered when a repository is no longer under a team's control. - -{% endif %} - -#### The `two_factor_authentication` category - -| Action | Description -|------------------|------------------- -| enabled | Triggered when [two-factor authentication](/articles/securing-your-account-with-two-factor-authentication-2fa) is enabled. -| disabled | Triggered when two-factor authentication is disabled. - -#### The `user` category - -| Action | Description -|--------------------|--------------------- -| add_email | Triggered when you [add a new email address](/articles/changing-your-primary-email-address). -| create | Triggered when you create a new user account. -| remove_email | Triggered when you remove an email address. -| rename | Triggered when you rename your account. -| change_password | Triggered when you change your password. -| forgot_password | Triggered when you ask for [a password reset](/articles/how-can-i-reset-my-password). -| login | Triggered when you log in to {% data variables.product.product_location %}. -| failed_login | Triggered when you failed to log in successfully. -| two_factor_requested | Triggered when {% data variables.product.product_name %} asks you for [your two-factor authentication code](/articles/accessing-github-using-two-factor-authentication). -| show_private_contributions_count | Triggered when you [publicize private contributions on your profile](/articles/publicizing-or-hiding-your-private-contributions-on-your-profile). -| hide_private_contributions_count | Triggered when you [hide private contributions on your profile](/articles/publicizing-or-hiding-your-private-contributions-on-your-profile).{% if currentVersion == "free-pro-team@latest" %} -| report_content | Triggered when you [report an issue or pull request, or a comment on an issue, pull request, or commit](/articles/reporting-abuse-or-spam).{% endif %} - -#### The `user_status` category - -| Action | Description -|--------------------|--------------------- -| update | Triggered when you set or change the status on your profile. For more information, see "[Setting a status](/articles/personalizing-your-profile/#setting-a-status)." -| destroy | Triggered when you clear the status on your profile. - -{% if currentVersion == "free-pro-team@latest" %} - -### Exporting your security log - -{% data reusables.audit_log.export-log %} -{% data reusables.audit_log.exported-log-keys-and-values %} - -{% endif %} diff --git a/content/github/authenticating-to-github/reviewing-your-ssh-keys.md b/content/github/authenticating-to-github/reviewing-your-ssh-keys.md deleted file mode 100644 index 71ea5e3d0586..000000000000 --- a/content/github/authenticating-to-github/reviewing-your-ssh-keys.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Reviewing your SSH keys -intro: 'To keep your credentials secure, you should regularly audit your SSH keys, deploy keys, and review authorized applications that access your {% data variables.product.product_name %} account.' -redirect_from: - - /articles/keeping-your-application-access-tokens-safe/ - - /articles/keeping-your-ssh-keys-and-application-access-tokens-safe/ - - /articles/reviewing-your-ssh-keys -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can delete unauthorized (or possibly compromised) SSH keys to ensure that an attacker no longer has access to your repositories. You can also approve existing SSH keys that are valid. - -{% mac %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.ssh %} -3. On the SSH Settings page, take note of the SSH keys associated with your account. For those that you don't recognize, or that are out-of-date, click **Delete**. If there are valid SSH keys you'd like to keep, click **Approve**. - ![SSH key list](/assets/images/help/settings/settings-ssh-key-review.png) - - {% tip %} - - **Note:** If you're auditing your SSH keys due to an unsuccessful Git operation, the unverified key that caused the [SSH key audit error](/articles/error-we-re-doing-an-ssh-key-audit) will be highlighted in the list of SSH keys. - - {% endtip %} - -4. Open Terminal. - -5. {% data reusables.command_line.start_ssh_agent %} - -6. Find and take a note of your public key fingerprint. {% if currentVersion ver_lt "enterprise-server@2.23" %}If you're using OpenSSH 6.7 or older: - ```shell - $ ssh-add -l - > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) - ``` - - If you're using OpenSSH 6.8 or newer: - ```shell - $ ssh-add -l -E md5 - > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) - ``` - {% else %} - ```shell - $ ssh-add -l -E sha256 - > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) - ```{% endif %} - -7. The SSH keys on {% data variables.product.product_name %} *should* match the same keys on your computer. - -{% endmac %} - -{% windows %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.ssh %} -3. On the SSH Settings page, take note of the SSH keys associated with your account. For those that you don't recognize, or that are out-of-date, click **Delete**. If there are valid SSH keys you'd like to keep, click **Approve**. - ![SSH key list](/assets/images/help/settings/settings-ssh-key-review.png) - - {% tip %} - - **Note:** If you're auditing your SSH keys due to an unsuccessful Git operation, the unverified key that caused the [SSH key audit error](/articles/error-we-re-doing-an-ssh-key-audit) will be highlighted in the list of SSH keys. - - {% endtip %} - -4. Open Git Bash. If you're using Git Shell, which is included in {% data variables.product.prodname_desktop %}, open Git Shell and skip to step 6. - -5. {% data reusables.desktop.windows_git_bash_turn_on_ssh_agent %} - - {% data reusables.desktop.windows_git_for_windows_turn_on_ssh_agent %} - -6. Find and take a note of your public key fingerprint. {% if currentVersion ver_lt "enterprise-server@2.23" %}If you're using OpenSSH 6.7 or older: - ```shell - $ ssh-add -l - > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) - ``` - - If you're using OpenSSH 6.8 or newer: - ```shell - $ ssh-add -l -E md5 - > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) - ``` - {% else %} - ```shell - $ ssh-add -l -E sha256 - > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) - ```{% endif %} - -7. The SSH keys on {% data variables.product.product_name %} *should* match the same keys on your computer. - -{% endwindows %} - -{% linux %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.ssh %} -3. On the SSH Settings page, take note of the SSH keys associated with your account. For those that you don't recognize, or that are out-of-date, click **Delete**. If there are valid SSH keys you'd like to keep, click **Approve**. - ![SSH key list](/assets/images/help/settings/settings-ssh-key-review.png) - - {% tip %} - - **Note:** If you're auditing your SSH keys due to an unsuccessful Git operation, the unverified key that caused the [SSH key audit error](/articles/error-we-re-doing-an-ssh-key-audit) will be highlighted in the list of SSH keys. - - {% endtip %} - -4. Open Terminal. - -5. {% data reusables.command_line.start_ssh_agent %} - -6. Find and take a note of your public key fingerprint. {% if currentVersion ver_lt "enterprise-server@2.23" %}If you're using OpenSSH 6.7 or older: - ```shell - $ ssh-add -l - > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) - ``` - - If you're using OpenSSH 6.8 or newer: - ```shell - $ ssh-add -l -E md5 - > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA) - ``` - {% else %} - ```shell - $ ssh-add -l -E sha256 - > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA) - ```{% endif %} - -7. The SSH keys on {% data variables.product.product_name %} *should* match the same keys on your computer. - -{% endlinux %} - -{% warning %} - -**Warning**: If you see an SSH key you're not familiar with on {% data variables.product.product_name %}, delete it immediately and contact {% data variables.contact.contact_support %} for further help. An unidentified public key may indicate a possible security concern. - -{% endwarning %} diff --git a/content/github/authenticating-to-github/securing-your-account-with-two-factor-authentication-2fa.md b/content/github/authenticating-to-github/securing-your-account-with-two-factor-authentication-2fa.md deleted file mode 100644 index 597dc2ed9677..000000000000 --- a/content/github/authenticating-to-github/securing-your-account-with-two-factor-authentication-2fa.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Securing your account with two-factor authentication (2FA) -intro: 'You can set up your {% data variables.product.product_name %} account to require an authentication code in addition to your password when you sign in.' -redirect_from: - - /categories/84/articles/ - - /categories/two-factor-authentication-2fa/ - - /articles/securing-your-account-with-two-factor-authentication-2fa -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/authenticating-to-github/signing-commits.md b/content/github/authenticating-to-github/signing-commits.md deleted file mode 100644 index 2641bee468af..000000000000 --- a/content/github/authenticating-to-github/signing-commits.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Signing commits -intro: 'You can sign commits locally using GPG{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.14" %} or S/MIME{% endif %}.' -redirect_from: - - /articles/signing-commits-and-tags-using-gpg/ - - /articles/signing-commits-using-gpg/ - - /articles/signing-commits -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% data reusables.gpg.desktop-support-for-commit-signing %} - -{% tip %} - -**Tips:** - -To configure your Git client to sign commits by default for a local repository, in Git versions 2.0.0 and above, run `git config commit.gpgsign true`. To sign all commits by default in any local repository on your computer, run `git config --global commit.gpgsign true`. - -To store your GPG key passphrase so you don't have to enter it every time you sign a commit, we recommend using the following tools: - - For Mac users, the [GPG Suite](https://gpgtools.org/) allows you to store your GPG key passphrase in the Mac OS Keychain. - - For Windows users, the [Gpg4win](https://www.gpg4win.org/) integrates with other Windows tools. - -You can also manually configure [gpg-agent](http://linux.die.net/man/1/gpg-agent) to save your GPG key passphrase, but this doesn't integrate with Mac OS Keychain like ssh-agent and requires more setup. - -{% endtip %} - -If you have multiple keys or are attempting to sign commits or tags with a key that doesn't match your committer identity, you should [tell Git about your signing key](/articles/telling-git-about-your-signing-key). - -1. When committing changes in your local branch, add the -S flag to the git commit command: - ```shell - $ git commit -S -m your commit message - # Creates a signed commit - ``` -2. If you're using GPG, after you create your commit, provide the passphrase you set up when you [generated your GPG key](/articles/generating-a-new-gpg-key). -3. When you've finished creating commits locally, push them to your remote repository on {% data variables.product.product_name %}: - ```shell - $ git push - # Pushes your local commits to the remote repository - ``` -4. On {% data variables.product.product_name %}, navigate to your pull request. -{% data reusables.repositories.review-pr-commits %} -5. To view more detailed information about the verified signature, click Verified. -![Signed commit](/assets/images/help/commits/gpg-signed-commit-verified-without-details.png) - -### Further reading - -* "[Checking for existing GPG keys](/articles/checking-for-existing-gpg-keys)" -* "[Generating a new GPG key](/articles/generating-a-new-gpg-key)" -* "[Adding a new GPG key to your GitHub account](/articles/adding-a-new-gpg-key-to-your-github-account)" -* "[Telling Git about your signing key](/articles/telling-git-about-your-signing-key)" -* "[Associating an email with your GPG key](/articles/associating-an-email-with-your-gpg-key)" -* "[Signing tags](/articles/signing-tags)" diff --git a/content/github/authenticating-to-github/signing-tags.md b/content/github/authenticating-to-github/signing-tags.md deleted file mode 100644 index 33712c5877ca..000000000000 --- a/content/github/authenticating-to-github/signing-tags.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Signing tags -intro: You can sign tags locally using GPG or S/MIME. -redirect_from: - - /articles/signing-tags-using-gpg/ - - /articles/signing-tags -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.gpg.desktop-support-for-commit-signing %} - -1. To sign a tag, add `-s` to your `git tag` command. - ```shell - $ git tag -s mytag - # Creates a signed tag - ``` -2. Verify your signed tag it by running `git tag -v [tag-name]`. - ```shell - $ git tag -v mytag - # Verifies the signed tag - ``` - -### Further reading - -- "[Viewing your repository's tags](/articles/viewing-your-repositorys-tags)" -- "[Checking for existing GPG keys](/articles/checking-for-existing-gpg-keys)" -- "[Generating a new GPG key](/articles/generating-a-new-gpg-key)" -- "[Adding a new GPG key to your GitHub account](/articles/adding-a-new-gpg-key-to-your-github-account)" -- "[Telling Git about your signing key](/articles/telling-git-about-your-signing-key)" -- "[Associating an email with your GPG key](/articles/associating-an-email-with-your-gpg-key)" -- "[Signing commits](/articles/signing-commits)" diff --git a/content/github/authenticating-to-github/sudo-mode.md b/content/github/authenticating-to-github/sudo-mode.md deleted file mode 100644 index 065f2c0582ba..000000000000 --- a/content/github/authenticating-to-github/sudo-mode.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Sudo mode -intro: '{% data variables.product.product_name %} asks you for your password before you can modify your email address, authorize third-party applications, or add new public keys, or initiate other *sudo-protected* actions.' -redirect_from: - - /articles/sudo-mode -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -After you've performed a sudo-protected action, you'll only be asked to re-authenticate again after a few hours of inactivity. Every sudo-protected action resets this timer. - -![Sudo Mode Dialog](/assets/images/help/settings/sudo_mode_popup.png) - -### Further reading - -- [Unix `sudo` command](http://en.wikipedia.org/wiki/Sudo) diff --git a/content/github/authenticating-to-github/telling-git-about-your-signing-key.md b/content/github/authenticating-to-github/telling-git-about-your-signing-key.md deleted file mode 100644 index 0c77fd081e33..000000000000 --- a/content/github/authenticating-to-github/telling-git-about-your-signing-key.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Telling Git about your signing key -intro: 'To sign commits locally, you need to inform Git that there''s a GPG{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.14" %} or X.509{% endif %} key you''d like to use.' -redirect_from: - - /articles/telling-git-about-your-gpg-key/ - - /articles/telling-git-about-your-signing-key -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% mac %} - -### Telling Git about your GPG key - -If you're using a GPG key that matches your committer identity and your verified email address associated with your {% data variables.product.product_name %} account, then you can begin signing commits and signing tags. - -{% note %} - -If you don't have a GPG key that matches your committer identity, you need to associate an email with an existing key. For more information, see "[Associating an email with your GPG key](/articles/associating-an-email-with-your-gpg-key)". - -{% endnote %} - -If you have multiple GPG keys, you need to tell Git which one to use. - -{% data reusables.command_line.open_the_multi_os_terminal %} -{% data reusables.gpg.list-keys-with-note %} -{% data reusables.gpg.copy-gpg-key-id %} -{% data reusables.gpg.paste-gpg-key-id %} -1. If you aren't using the GPG suite, paste the text below to add the GPG key to your bash profile: - ```shell - $ test -r ~/.bash_profile && echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile - $ echo 'export GPG_TTY=$(tty)' >> ~/.profile - ``` - {% note %} - - **Note:** If you don't have `.bash_profile`, this command adds your GPG key to `.profile`. - - {% endnote %} - -{% data reusables.gpg.x-509-key %} - -{% endmac %} - -{% windows %} - -### Telling Git about your GPG key - -If you're using a GPG key that matches your committer identity and your verified email address associated with your {% data variables.product.product_name %} account, then you can begin signing commits and signing tags. - -{% note %} - -If you don't have a GPG key that matches your committer identity, you need to associate an email with an existing key. For more information, see "[Associating an email with your GPG key](/articles/associating-an-email-with-your-gpg-key)". - -{% endnote %} - -If you have multiple GPG keys, you need to tell Git which one to use. - -{% data reusables.command_line.open_the_multi_os_terminal %} -{% data reusables.gpg.list-keys-with-note %} -{% data reusables.gpg.copy-gpg-key-id %} -{% data reusables.gpg.paste-gpg-key-id %} - -{% data reusables.gpg.x-509-key %} - -{% endwindows %} - -{% linux %} - -{% note %} - -**Note:** X.509 keys are not supported on Linux. You can configure gpgsm to provide encryption and signing services, however, this is not currently supported by {% data variables.product.product_name %}. For more information, see the [gpgsm](https://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPGSM.html) topic in the GnuPG documentation. - -{% endnote %} - -### Telling Git about your GPG key - -If you're using a GPG key that matches your committer identity and your verified email address associated with your {% data variables.product.product_name %} account, then you can begin signing commits and signing tags. - -{% note %} - -If you don't have a GPG key that matches your committer identity, you need to associate an email with an existing key. For more information, see "[Associating an email with your GPG key](/articles/associating-an-email-with-your-gpg-key)". - -{% endnote %} - -If you have multiple GPG keys, you need to tell Git which one to use. - -{% data reusables.command_line.open_the_multi_os_terminal %} -{% data reusables.gpg.list-keys-with-note %} -{% data reusables.gpg.copy-gpg-key-id %} -{% data reusables.gpg.paste-gpg-key-id %} -1. To add your GPG key to your bash profile, paste the text below: - ```shell - $ test -r ~/.bash_profile && echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile - $ echo 'export GPG_TTY=$(tty)' >> ~/.profile - ``` - {% note %} - - **Note:** If you don't have `.bash_profile`, this command adds your GPG key to `.profile`. - - {% endnote %} - -{% endlinux %} - -### Further reading - -- "[Checking for existing GPG keys](/articles/checking-for-existing-gpg-keys)" -- "[Generating a new GPG key](/articles/generating-a-new-gpg-key)" -- "[Using a verified email address in your GPG key](/articles/using-a-verified-email-address-in-your-gpg-key)" -- "[Adding a new GPG key to your GitHub account](/articles/adding-a-new-gpg-key-to-your-github-account)" -- "[Associating an email with your GPG key](/articles/associating-an-email-with-your-gpg-key)" -- "[Signing commits](/articles/signing-commits)" -- "[Signing tags](/articles/signing-tags)" diff --git a/content/github/authenticating-to-github/testing-your-ssh-connection.md b/content/github/authenticating-to-github/testing-your-ssh-connection.md deleted file mode 100644 index a1b650233776..000000000000 --- a/content/github/authenticating-to-github/testing-your-ssh-connection.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Testing your SSH connection -intro: 'After you''ve set up your SSH key and added it to your {% data variables.product.product_name %} account, you can test your connection.' -redirect_from: - - /articles/testing-your-ssh-connection -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Before testing your SSH connection, you should have: -- [Checked for existing SSH keys](/articles/checking-for-existing-ssh-keys) -- [Generated a new SSH key](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) -- [Added a new SSH key to your GitHub account](/articles/adding-a-new-ssh-key-to-your-github-account) - -When you test your connection, you'll need to authenticate this action using your password, which is the SSH key passphrase you created earlier. For more information on working with SSH key passphrases, see ["Working with SSH key passphrases"](/articles/working-with-ssh-key-passphrases). - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Enter the following: - ```shell - $ ssh -T git@{% data variables.command_line.codeblock %} - # Attempts to ssh to {% data variables.product.product_name %} - ``` - - You may see a warning like this: - - ```shell - > The authenticity of host '{% data variables.command_line.codeblock %} (IP ADDRESS)' can't be established. - > RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. - > Are you sure you want to continue connecting (yes/no)? - ``` - -3. Verify that the fingerprint in the message you see matches one of the messages in step 2, then type `yes`: - ```shell - > Hi username! You've successfully authenticated, but GitHub does not - > provide shell access. - ``` - - {% linux %} - - You may see this error message: - ```shell - ... - Agent admitted failure to sign using the key. - debug1: No more authentication methods to try. - Permission denied (publickey). - ``` - - This is a known problem with certain Linux distributions. For more information, see ["Error: Agent admitted failure to sign"](/articles/error-agent-admitted-failure-to-sign). - - {% endlinux %} - -4. Verify that the resulting message contains your username. If you receive a "permission denied" message, see ["Error: Permission denied (publickey)"](/articles/error-permission-denied-publickey). diff --git a/content/github/authenticating-to-github/troubleshooting-commit-signature-verification.md b/content/github/authenticating-to-github/troubleshooting-commit-signature-verification.md deleted file mode 100644 index ed9cff02dd79..000000000000 --- a/content/github/authenticating-to-github/troubleshooting-commit-signature-verification.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Troubleshooting commit signature verification -intro: 'You may need to troubleshoot unexpected issues that arise when signing commits locally for verification on {% data variables.product.product_name %}.' -redirect_from: - - /articles/troubleshooting-gpg/ - - /articles/troubleshooting-commit-signature-verification -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/authenticating-to-github/troubleshooting-ssh.md b/content/github/authenticating-to-github/troubleshooting-ssh.md deleted file mode 100644 index 0d891260e135..000000000000 --- a/content/github/authenticating-to-github/troubleshooting-ssh.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Troubleshooting SSH -intro: 'When using SSH to connect and authenticate to {% data variables.product.product_name %}, you may need to troubleshoot unexpected issues that may arise.' -mapTopic: true -redirect_from: - - /articles/troubleshooting-ssh -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/authenticating-to-github/updating-an-expired-gpg-key.md b/content/github/authenticating-to-github/updating-an-expired-gpg-key.md deleted file mode 100644 index 0135468b41db..000000000000 --- a/content/github/authenticating-to-github/updating-an-expired-gpg-key.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Updating an expired GPG key -intro: 'When verifying a signature, {% data variables.product.product_name %} checks that the key is not revoked or expired. If your signing key is revoked or expired, {% data variables.product.product_name %} cannot verify your signatures. If your key is revoked, use the primary key or another key that is not revoked to sign your commits.' -redirect_from: - - /articles/updating-an-expired-gpg-key -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If your key is expired, you must [update the expiration](https://www.gnupg.org/gph/en/manual/c235.html#AEN328), export the new key, delete the expired key in your GitHub account, and [upload the new key to GitHub](/articles/adding-a-new-gpg-key-to-your-github-account/). Your previous commits and tags will show as verified, as long as the key meets all other verification requirements. - -If your key is invalid and you don't use another valid key in your key set, but instead generate a new GPG key with a new set of credentials, then your commits made with the revoked or expired key will continue to show as unverified. Also, your new credentials will not be able to resign or verify your old commits and tags. - -### Further reading - -- "[About commit signature verification](/articles/about-commit-signature-verification)" diff --git a/content/github/authenticating-to-github/updating-your-github-access-credentials.md b/content/github/authenticating-to-github/updating-your-github-access-credentials.md deleted file mode 100644 index c24d87025e89..000000000000 --- a/content/github/authenticating-to-github/updating-your-github-access-credentials.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Updating your GitHub access credentials -intro: '{% data variables.product.product_name %} credentials include not only your password, but also the access tokens, SSH keys, and application API tokens you use to communicate with {% data variables.product.product_name %}. Should you have the need, you can reset all of these access credentials yourself.' -redirect_from: - - /articles/rolling-your-credentials/ - - /articles/how-can-i-reset-my-password/ - - /articles/updating-your-github-access-credentials -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Requesting a new password - -1. To request a new password, visit {% if currentVersion == "free-pro-team@latest" %}https://{% data variables.product.product_url %}/password_reset{% else %}`https://{% data variables.product.product_url %}/password_reset`{% endif %}. -2. Enter the email address associated with your personal {% data variables.product.product_name %} account, then click **Send password reset email.** The email will be sent to the backup email address if you have one configured. - ![Password reset email request dialog](/assets/images/help/settings/password-recovery-email-request.png) -3. We'll email you a link that will allow you to reset your password. You must click on this link within 3 hours of receiving the email. If you didn't receive an email from us, make sure to check your spam folder. -4. After clicking on the link in your email, you'll be asked to enter a new password. - ![Password recovery box](/assets/images/help/settings/password_recovery_page.png) - -{% tip %} - -To avoid losing your password in the future, we suggest using a secure password manager, like [LastPass](https://lastpass.com/), [1Password](https://1password.com/), or [Keeper](https://keepersecurity.com/). - -{% endtip %} - -### Changing an existing password - -{% data reusables.repositories.blocked-passwords %} - -1. {% data variables.product.signin_link %} to {% data variables.product.product_name %}. -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security %} -4. Under "Change password", type your old password, a strong new password, and confirm your new password. For help creating a strong password, see "[Creating a strong password](/articles/creating-a-strong-password)" -5. Click **Update password**. - -{% tip %} - -For greater security, enable two-factor authentication in addition to changing your password. See [About two-factor authentication](/articles/about-two-factor-authentication) for more details. - -{% endtip %} - -### Updating your access tokens - -See "[Reviewing your authorized integrations](/articles/reviewing-your-authorized-integrations)" for instructions on reviewing and deleting access tokens. To generate new access tokens, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." - -### Updating your SSH keys - -See "[Reviewing your SSH keys](/articles/reviewing-your-ssh-keys)" for instructions on reviewing and deleting SSH keys. To generate and add new SSH keys, see "[Generating an SSH key](/articles/generating-an-ssh-key)." - -### Resetting API tokens - -If you have any applications registered with {% data variables.product.product_name %}, you'll want to reset their OAuth tokens. For more information, see the "[Reset an authorization](/rest/reference/apps#reset-an-authorization)" endpoint. - -### Preventing unauthorized access - -For more tips on securing your account and preventing unauthorized access, see "[Preventing unauthorized access](/articles/preventing-unauthorized-access)." diff --git a/content/github/authenticating-to-github/using-a-verified-email-address-in-your-gpg-key.md b/content/github/authenticating-to-github/using-a-verified-email-address-in-your-gpg-key.md deleted file mode 100644 index bd27424d835c..000000000000 --- a/content/github/authenticating-to-github/using-a-verified-email-address-in-your-gpg-key.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Using a verified email address in your GPG key -intro: 'When verifying a signature, {% data variables.product.product_name %} checks that the committer or tagger email address matches an email address from the GPG key''s identities and is a verified email address on the user''s account. This ensures that the key belongs to you and that you created the commit or tag.' -redirect_from: - - /articles/using-a-verified-email-address-in-your-gpg-key -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% if currentVersion == "free-pro-team@latest" %} -If you need to verify your GitHub email address, see "[Verifying your email address](/articles/verifying-your-email-address/)." {% endif %}If you need to update or add an email address to your GPG key, see "[Associating an email with your GPG key](/articles/associating-an-email-with-your-gpg-key)." - -Commits and tags may contain several email addresses. For commits, there is the author — the person who wrote the code — and the committer — the person who added the commit to the tree. When signing a commit with Git, whether it be during a merge, cherry-pick, or normal `git commit`, the committer email address will be yours, even if the author email address isn't. Tags are more simple: The tagger email address is always the user who created the tag. - -If you need to change your committer or tagger email address, see "[Setting your commit email address](/articles/setting-your-commit-email-address/)." - -### Further reading - -- "[About commit signature verification](/articles/about-commit-signature-verification)" diff --git a/content/github/authenticating-to-github/using-ssh-over-the-https-port.md b/content/github/authenticating-to-github/using-ssh-over-the-https-port.md deleted file mode 100644 index 07b84a08978e..000000000000 --- a/content/github/authenticating-to-github/using-ssh-over-the-https-port.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Using SSH over the HTTPS port -intro: 'Sometimes, firewalls refuse to allow SSH connections entirely. If using [HTTPS cloning with credential caching](/github/using-git/caching-your-github-credentials-in-git) is not an option, you can attempt to clone using an SSH connection made over the HTTPS port. Most firewall rules should allow this, but proxy servers may interfere.' -redirect_from: - - /articles/using-ssh-over-the-https-port -versions: - free-pro-team: '*' ---- - -{% tip %} - -**GitHub Enterprise users**: Accessing GitHub Enterprise via SSH over the HTTPS port is currently not supported. - -{% endtip %} - -To test if SSH over the HTTPS port is possible, run this SSH command: - -```shell -$ ssh -T -p 443 git@ssh.github.com -> Hi username! You've successfully authenticated, but GitHub does not -> provide shell access. -``` - -If that worked, great! If not, you may need to [follow our troubleshooting guide](/articles/error-permission-denied-publickey). - -### Enabling SSH connections over HTTPS - -If you are able to SSH into `git@ssh.{% data variables.command_line.backticks %}` over port 443, you can override your SSH settings to force any connection to {% data variables.product.product_location %} to run though that server and port. - -To set this in your ssh config, edit the file at `~/.ssh/config`, and add this section: - -``` -Host {% data variables.command_line.codeblock %} - Hostname ssh.{% data variables.command_line.codeblock %} - Port 443 -``` - -You can test that this works by connecting once more to {% data variables.product.product_location %}: - -```shell -$ ssh -T git@{% data variables.command_line.codeblock %} -> Hi username! You've successfully authenticated, but GitHub does not -> provide shell access. -``` diff --git a/content/github/authenticating-to-github/viewing-and-managing-your-active-saml-sessions.md b/content/github/authenticating-to-github/viewing-and-managing-your-active-saml-sessions.md deleted file mode 100644 index 0d70a1eaad38..000000000000 --- a/content/github/authenticating-to-github/viewing-and-managing-your-active-saml-sessions.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Viewing and managing your active SAML sessions -intro: You can view and revoke your active SAML sessions in your security settings. -redirect_from: - - /articles/viewing-and-managing-your-active-saml-sessions -versions: - free-pro-team: '*' ---- - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security %} -3. Under "Sessions," you can see your active SAML sessions. - ![List of active SAML sessions](/assets/images/help/settings/saml-active-sessions.png) -4. To see the session details, click **See more**. - ![Button to open SAML session details](/assets/images/help/settings/saml-expand-session-details.png) -5. To revoke a session, click **Revoke SAML**. - ![Button to revoke a SAML session](/assets/images/help/settings/saml-revoke-session.png) - - {% note %} - - **Note:** When you revoke a session, you remove your SAML authentication to that organization. To access the organization again, you will need to single sign-on through your identity provider. For more information, see "[About authentication with SAML SSO](/github/authenticating-to-github/about-authentication-with-saml-single-sign-on)." - - {% endnote %} - -### Further reading - -- "[About authentication with SAML SSO](/github/authenticating-to-github/about-authentication-with-saml-single-sign-on)" diff --git a/content/github/authenticating-to-github/working-with-ssh-key-passphrases.md b/content/github/authenticating-to-github/working-with-ssh-key-passphrases.md deleted file mode 100644 index cc3890009c75..000000000000 --- a/content/github/authenticating-to-github/working-with-ssh-key-passphrases.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Working with SSH key passphrases -intro: You can secure your SSH keys and configure an authentication agent so that you won't have to reenter your passphrase every time you use your SSH keys. -redirect_from: - - /ssh-key-passphrases/ - - /working-with-key-passphrases/ - - /articles/working-with-ssh-key-passphrases -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -With SSH keys, if someone gains access to your computer, they also gain access to every system that uses that key. To add an extra layer of security, you can add a passphrase to your SSH key. You can use `ssh-agent` to securely save your passphrase so you don't have to reenter it. - -### Adding or changing a passphrase - -You can change the passphrase for an existing private key without regenerating the keypair by typing the following command: - -```shell -$ ssh-keygen -p -# Start the SSH key creation process -> Enter file in which the key is (/Users/you/.ssh/id_rsa): [Hit enter] -> Key has comment '/Users/you/.ssh/id_rsa' -> Enter new passphrase (empty for no passphrase): [Type new passphrase] -> Enter same passphrase again: [One more time for luck] -> Your identification has been saved with the new passphrase. -``` - -If your key already has a passphrase, you will be prompted to enter it before you can change to a new passphrase. - -{% windows %} - -### Auto-launching `ssh-agent` on Git for Windows - -You can run `ssh-agent` automatically when you open bash or Git shell. Copy the following lines and paste them into your `~/.profile` or `~/.bashrc` file in Git shell: - -``` bash -env=~/.ssh/agent.env - -agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; } - -agent_start () { - (umask 077; ssh-agent >| "$env") - . "$env" >| /dev/null ; } - -agent_load_env - -# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running -agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?) - -if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then - agent_start - ssh-add -elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then - ssh-add -fi - -unset env -``` - -If your private key is not stored in one of the default locations (like `~/.ssh/id_rsa`), you'll need to tell your SSH authentication agent where to find it. To add your key to ssh-agent, type `ssh-add ~/path/to/my_key`. For more information, see "[Generating a new SSH key and adding it to the ssh-agent](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/)" - -{% tip %} - -**Tip:** If you want `ssh-agent` to forget your key after some time, you can configure it to do so by running `ssh-add -t `. - -{% endtip %} - -Now, when you first run Git Bash, you are prompted for your passphrase: - -```shell -> Initializing new SSH agent... -> succeeded -> Enter passphrase for /c/Users/you/.ssh/id_rsa: -> Identity added: /c/Users/you/.ssh/id_rsa (/c/Users/you/.ssh/id_rsa) -> Welcome to Git (version 1.6.0.2-preview20080923) -> -> Run 'git help git' to display the help index. -> Run 'git help ' to display help for specific commands. -``` - -The `ssh-agent` process will continue to run until you log out, shut down your computer, or kill the process. - -{% endwindows %} - -{% mac %} - -### Saving your passphrase in the keychain - -On OS X Leopard through OS X El Capitan, these default private key files are handled automatically: - -- *.ssh/id_rsa* -- *.ssh/identity* - -The first time you use your key, you will be prompted to enter your passphrase. If you choose to save the passphrase with your keychain, you won't have to enter it again. - -Otherwise, you can store your passphrase in the keychain when you add your key to the ssh-agent. For more information, see "[Adding your SSH key to the ssh-agent](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#adding-your-ssh-key-to-the-ssh-agent)." - -{% endmac %} - -### Further reading - -- "[About SSH](/articles/about-ssh)" diff --git a/content/github/building-a-strong-community/about-community-management-and-moderation.md b/content/github/building-a-strong-community/about-community-management-and-moderation.md deleted file mode 100644 index 1e693282d9ad..000000000000 --- a/content/github/building-a-strong-community/about-community-management-and-moderation.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: About community management and moderation -intro: '{% data variables.product.prodname_dotcom %} offers tools that help repository maintainers establish and enforce standards of behavior in their communities on {% data variables.product.prodname_dotcom_the_website %}.' -versions: - free-pro-team: '*' ---- - -### About community management and moderation - -{% data reusables.policies.github-community-guidelines-and-terms %} - -{% data variables.product.prodname_dotcom %} also offers tools for repository maintainers to define and enforce higher standards of behavior in their own communities on {% data variables.product.prodname_dotcom_the_website %}. - -After you establish standards of behavior for your community, you can encourage a pleasant and productive environment by responding to disruptive behavior in a fast, fair way. Effective moderation builds trust within your community and helps contributors feel safe and welcome. - -### Tools for moderating your community - -{% data variables.product.prodname_dotcom %}'s tools streamline management and moderation tasks in your community without requiring extensive moderation experience. - -As a repository maintainer, you can author guidelines for contributing to your project and share them in the project's repository. {% data variables.product.prodname_dotcom %} offers a community profile checklist to help you author and publish community health files. Potential contributors to your project can review the community profile checklist to learn about your community's standards and decide whether they want to contribute. For more information, see "[Setting up your project for healthy contributions](/github/building-a-strong-community/setting-up-your-project-for-healthy-contributions)." - -{% data reusables.community.tools-for-moderating %} - -Contributors can always report disruptive content to {% data variables.contact.github_support %}. If you opt into reported content for a public repository in your organization, contributors can also report comments containing disruptive behavior directly to repository maintainers. For more information, see "[Managing reported content in your organization's repository](/github/building-a-strong-community/managing-reported-content-in-your-organizations-repository)." - -### Further reading - -- "[Your Code of Conduct](https://opensource.guide/code-of-conduct/)" from the Open Source Guides -- "[Building Welcoming Communities](https://opensource.guide/building-community/)" from the Open Source Guides -- "[Leadership and Governance](https://opensource.guide/leadership-and-governance/)" from the Open Source Guides -- "[Shaming and why it is inappropriate](https://github.community/t5/Studies-in-Community/Shaming-and-why-it-is-inappropriate/ba-p/12728)" from the GitHub Community Forum -- "[Being toxic is not constructive criticism](https://github.community/t5/Studies-in-Community/Being-toxic-is-not-constructive-criticism/ba-p/8029)" from the GitHub Community Forum diff --git a/content/github/building-a-strong-community/about-community-profiles-for-public-repositories.md b/content/github/building-a-strong-community/about-community-profiles-for-public-repositories.md deleted file mode 100644 index 5e1f3a28efdb..000000000000 --- a/content/github/building-a-strong-community/about-community-profiles-for-public-repositories.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: About community profiles for public repositories -intro: Repository maintainers can review their public repository's community profile to learn how they can help grow their community and support contributors. Contributors can view a public repository's community profile to see if they want to contribute to the project. -redirect_from: - - /articles/viewing-your-community-profile/ - - /articles/about-community-profiles-for-public-repositories -versions: - free-pro-team: '*' ---- - -The community profile checklist checks to see if a project includes recommended community health files, such as README, CODE_OF_CONDUCT, LICENSE, or CONTRIBUTING, in a supported location. For more information, see "[Accessing a project's community profile](/articles/accessing-a-project-s-community-profile)." - -### Using the community profile checklist as a repository maintainer - -As a repository maintainer, use the community profile checklist to see if your project meets the recommended community standards to help people use and contribute to your project. For more information, see "[Building community](https://opensource.guide/building-community/)" in the Open Source Guides. - -If a project doesn't have a recommended file, you can click **Add** to draft and submit a file. - -{% data reusables.repositories.valid-community-issues %} For more information, see "[About issue and pull request templates](/articles/about-issue-and-pull-request-templates)." - -![Community profile checklist with recommended community standards for maintainers](/assets/images/help/repository/add-button-community-profile.png) - -{% data reusables.repositories.security-guidelines %} - -### Using the community profile checklist as a community member or collaborator - -As a potential contributor, use the community profile checklist to see if a project meets the recommended community standards and decide if you'd like to contribute. For more information, see "[How to contribute](https://opensource.guide/how-to-contribute/#anatomy-of-an-open-source-project)" in the Open Source Guides. - -If a project doesn't have a recommended file, you can click **Propose** to draft and submit a file to the repository maintainer for approval. - -![Community profile checklist with recommended community standards for contributors](/assets/images/help/repository/propose-button-community-profile.png) - -### Further reading - -- "[Adding a code of conduct to your project](/articles/adding-a-code-of-conduct-to-your-project)" -- "[Setting guidelines for repository contributors](/articles/setting-guidelines-for-repository-contributors)" -- "[Adding a license to a repository](/articles/adding-a-license-to-a-repository)" -- "[About issue and pull request templates](/articles/about-issue-and-pull-request-templates)" -- "[Open Source Guides](https://opensource.guide/)" -- [{% data variables.product.prodname_learning %}]({% data variables.product.prodname_learning_link %}) diff --git a/content/github/building-a-strong-community/about-issue-and-pull-request-templates.md b/content/github/building-a-strong-community/about-issue-and-pull-request-templates.md deleted file mode 100644 index 72da39e4d2d7..000000000000 --- a/content/github/building-a-strong-community/about-issue-and-pull-request-templates.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: About issue and pull request templates -intro: 'With issue and pull request templates, you can customize and standardize the information you''d like contributors to include when they open issues and pull requests in your repository.' -redirect_from: - - /articles/about-issue-and-pull-request-templates -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -After you create issue and pull request templates in your repository, contributors can use the templates to open issues or describe the proposed changes in their pull requests according to the repository's contributing guidelines. For more information about adding contributing guidelines to a repository, see "[Setting guidelines for repository contributors](/articles/setting-guidelines-for-repository-contributors)." - -You can create default issue and pull request templates for your organization{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} or user account{% endif %}. For more information, see "[Creating a default community health file](/github/building-a-strong-community/creating-a-default-community-health-file)." - -### 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. - -![New issue page showing issue template choices](/assets/images/help/issues/new-issue-page-with-multiple-templates.png) - -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" or currentVersion ver_gt "enterprise-server@2.19" %} -{% data reusables.repositories.issue-template-config %} For more information, see "[Configuring issue templates for your repository](/github/building-a-strong-community/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 %} - -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)." - -{% data reusables.repositories.security-guidelines %} - -### Pull request templates - -When you add a pull request template to your repository, project contributors will automatically see the template's contents in the pull request body. - -![Sample pull request template](/assets/images/help/pull_requests/pr-template-sample.png) - -You must create templates on the repository's default branch. Templates created in other branches are not available for collaborators to use. You can store your pull request template in the repository's visible root directory, the `docs` folder, or the hidden `.github` directory. Pull request template filenames are not case sensitive, and can have an extension such as *.md* or *.txt*. - -For more information, see "[Creating a pull request template for your repository](/articles/creating-a-pull-request-template-for-your-repository)." diff --git a/content/github/building-a-strong-community/about-team-discussions.md b/content/github/building-a-strong-community/about-team-discussions.md deleted file mode 100644 index 5f0eb86e2937..000000000000 --- a/content/github/building-a-strong-community/about-team-discussions.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: About team discussions -intro: 'Your team can plan together, update one another, or talk about any topic you''d like in discussion posts on your team''s page in an organization.' -redirect_from: - - /articles/about-team-discussions -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.organizations.team-discussions-purpose %} - -Any organization member can post on your team's page or participate in a public discussion. {% data reusables.organizations.team-discussions-permissions %} - -![Discussions tab of team page with public and private discussions](/assets/images/help/organizations/team-page-discussions-tab.png) - -You can link to any team discussion to reference it elsewhere. You can pin important posts to your team's page for quick reference later. For more information, see "[Pinning a team discussion](/articles/pinning-a-team-discussion)." - -![Pinned discussions tab of team page with pinned discussion](/assets/images/help/organizations/team-discussions-pinned.png) - -{% data reusables.organizations.team-discussions-default %} Owners can disable team discussions for the entire organization. For more information, see "[Disabling team discussions for your organization](/articles/disabling-team-discussions-for-your-organization)." - -### Notifications for team discussions - -When someone posts or replies to a public discussion on a team's page, members of the team and members of any child teams receive email or web notifications. When someone posts or replies to a private discussion on a team's page, only members of the team receive notifications. - -{% tip %} - -**Tip:** Depending on your notification settings, you'll receive updates by email, the web notifications page on {% data variables.product.product_name %}, or both. For more information, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}"[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications){% else %}"[About email notifications](/github/receiving-notifications-about-activity-on-github/about-email-notifications)" and "[About web notifications](/github/receiving-notifications-about-activity-on-github/about-web-notifications){% endif %}." - -{% endtip %} - -By default, if your username is mentioned in a team discussion, you'll receive notifications for the post mentioning your username and any replies to that post. Also, by default, if you reply to a post, you will receive notifications for other replies to the post. - -To turn off notifications for team discussions, you can unsubscribe to a specific discussion post or change your notification settings to unwatch or completely ignore a specific team's discussions. You can subscribe to notifications for a specific discussion post even if you're unwatching that team's discussions. - -For more information, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}"[Viewing your subscriptions](/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions){% else %}"[Subscribing to and unsubscribing from notifications](/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications){% endif %}" and "[Nested teams](/articles/about-teams/#nested-teams)." - -### Further reading - -- "[About conversations on {% data variables.product.prodname_dotcom %}](/articles/about-conversations-on-github)" -- "[About teams](/articles/about-teams)" -- "[Creating a team discussion](/articles/creating-a-team-discussion)" -- "[Editing or deleting a team discussion](/articles/editing-or-deleting-a-team-discussion)" diff --git a/content/github/building-a-strong-community/about-wikis.md b/content/github/building-a-strong-community/about-wikis.md deleted file mode 100644 index e8b8c13d3565..000000000000 --- a/content/github/building-a-strong-community/about-wikis.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: About wikis -intro: 'You can host documentation for your repository in a wiki, so that others can use and contribute to your project.' -redirect_from: - - /articles/about-github-wikis/ - - /articles/about-wikis -product: '{% data reusables.gated-features.wikis %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Every {% data variables.product.product_name %} repository comes equipped with a section for hosting documentation, called a wiki. You can use your repository's wiki to share long-form content about your project, such as how to use it, how you designed it, or its core principles. A README file quickly tells what your project can do, while you can use a wiki to provide additional documentation. For more information, see "[About READMEs](/articles/about-readmes)." - -With wikis, you can write content just like everywhere else on {% data variables.product.product_name %}. For more information, see "[Getting started with writing and formatting on {% data variables.product.prodname_dotcom %}](/articles/getting-started-with-writing-and-formatting-on-github)." We use [our open-source Markup library](https://github.com/github/markup) to convert different formats into HTML, so you can choose to write in Markdown or any other supported format. - -Wikis are available to the public in public repositories, and limited to people with access to the repository in private repositories. For more information, see "[Setting repository visibility](/articles/setting-repository-visibility)." - -You can edit wikis directly on {% data variables.product.product_name %}, or you can edit wiki files locally. By default, only people with write access to your repository can make changes to wikis, although you can allow everyone on {% data variables.product.product_name %} to contribute to a wiki in a public repository. For more information, see "[Changing access permissions for wikis](/articles/changing-access-permissions-for-wikis)". - -### Further reading - -- "[Adding or editing wiki pages](/articles/adding-or-editing-wiki-pages)" -- "[Creating a footer or sidebar for your wiki](/articles/creating-a-footer-or-sidebar-for-your-wiki)" -- "[Editing wiki content](/articles/editing-wiki-content)" -- "[Viewing a wiki's history of changes](/articles/viewing-a-wiki-s-history-of-changes)" -- "[Searching wikis](/articles/searching-wikis)" diff --git a/content/github/building-a-strong-community/accessing-a-projects-community-profile.md b/content/github/building-a-strong-community/accessing-a-projects-community-profile.md deleted file mode 100644 index d145d7dd8311..000000000000 --- a/content/github/building-a-strong-community/accessing-a-projects-community-profile.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Accessing a project's community profile -intro: View a public repository's community profile to check on a project's health and decide if you want to contribute. -redirect_from: - - /articles/accessing-a-project-s-community-profile - - /articles/accessing-a-projects-community-profile -versions: - free-pro-team: '*' ---- - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -3. In the left sidebar, click **Community**. -![Community in left sidebar](/assets/images/help/graphs/graphs-sidebar-community-tab.png) - -### Further reading - -- "[About community profiles for public repositories](/articles/about-community-profiles-for-public-repositories)" diff --git a/content/github/building-a-strong-community/adding-a-code-of-conduct-to-your-project.md b/content/github/building-a-strong-community/adding-a-code-of-conduct-to-your-project.md deleted file mode 100644 index c9e7c439084e..000000000000 --- a/content/github/building-a-strong-community/adding-a-code-of-conduct-to-your-project.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Adding a code of conduct to your project -intro: 'Adopt a code of conduct to define community standards, signal a welcoming and inclusive project, and outline procedures for handling abuse.' -redirect_from: - - /articles/adding-a-code-of-conduct-to-your-project -versions: - free-pro-team: '*' ---- - -A *code of conduct* defines standards for how to engage in a community. It signals an inclusive environment that respects all contributions. It also outlines procedures for addressing problems between members of your project's community. For more information on why a code of conduct defines standards and expectations for how to engage in a community, see the [Open Source Guide](https://opensource.guide/code-of-conduct/). - -Before adopting a code of conduct for your project: - -* Research different codes of conduct designed for open source projects. Choose one that reflects your community's standards. -* Consider carefully whether you are willing and able to enforce it. - -You can add a code of conduct to your project by using a template or manually creating a custom code of conduct. Your code of conduct will be available either way, but "Code of conduct" will only be marked as complete in your repository's community profile if you use a template. If you use a code of conduct written by another person or organization, be sure to follow any attribution guidelines from the source. For more information about community profiles, see "[About community profiles for public repositories](/github/building-a-strong-community/about-community-profiles-for-public-repositories)." - -You can create a default code of conduct for your organization or user account. For more information, see "[Creating a default community health file](/github/building-a-strong-community/creating-a-default-community-health-file)." - -### Adding a code of conduct using a template - -{% data variables.product.product_name %} provides templates for common codes of conduct to help you quickly add a code of conduct to your project. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.files.add-file %} -3. In the file name field, type *CODE_OF_CONDUCT.md*. -4. Click **Choose a code of conduct template**. - ![Button to choose a code of conduct template](/assets/images/help/repository/code-of-conduct-tool.png) -5. On the left side of the page, select a code of conduct to preview and add to your project. - ![Selection of a code of conduct template](/assets/images/help/repository/code-of-conduct-tool-picker.png) -6. On the right side of the page, complete the fields to populate the selected code of conduct with the appropriate information. -7. Click **Review and submit**. - ![Review and submit code of conduct to project](/assets/images/help/repository/code-of-conduct-tool-review.png) -8. Review the contents of the code of conduct that's in the text area. -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_new_file %} - -### Adding a code of conduct manually - -If the code of conduct you want to use isn't available in the provided templates, you can manually add a code of conduct. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.files.add-file %} -3. In the file name field, type the name and extension for the file. - ![New code of conduct file name](/assets/images/help/repository/new-code-of-conduct-file-name.png) - - To make your code of conduct visible in the repository's root directory, type *CODE_OF_CONDUCT* in the file name field. - - To make your code of conduct visible in the repository's `docs` directory, type *docs/CODE_OF_CONDUCT*. - - To make your code of conduct visible in the respository's `.github` directory, type *.github/CODE_OF_CONDUCT*. -4. In the new file, add your custom code of conduct. -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_new_file %} diff --git a/content/github/building-a-strong-community/adding-a-license-to-a-repository.md b/content/github/building-a-strong-community/adding-a-license-to-a-repository.md deleted file mode 100644 index 4e0db260ec50..000000000000 --- a/content/github/building-a-strong-community/adding-a-license-to-a-repository.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Adding a license to a repository -intro: You can include an open source license in your repository to make it easier for other people to contribute. -redirect_from: - - /articles/adding-a-license-to-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -If you include a detectable license in your repository, people who visit your repository will see it at the top of the repository page. To read the entire license file, click the license name. - -![A repository header with an MIT license](/assets/images/help/repository/repo-license-indicator.png) - -Open source licenses enable others to freely use, change, and distribute the project in your repository. For more information on repository licenses, see "[Licensing a repository](/articles/licensing-a-repository)." - -### Including an open source license in your repository - - -{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.files.add-file %} -3. In the file name field, type *LICENSE* or *LICENSE.md* (with all caps). -4. To the right of the file name field, click **Choose a license template**. - ![Choose a license template button](/assets/images/help/repository/license-tool.png) -5. On the left side of the page, under "Add a license to your project," review the available licenses, then select a license from the list. - ![List of available licenses](/assets/images/help/repository/license-tool-picker.png) -6. Click **Review and submit**. - ![Review and submit button](/assets/images/help/repository/license-review-tool.png) -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.choose-commit-email %} -10. Click **Commit new file**. - ![Commit license to branch](/assets/images/help/repository/license-submit-tool.png) - -{% endif %} - - -{% if enterpriseServerVersions contains currentVersion %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.files.add-file %} -3. In the file name field, type *LICENSE* or *LICENSE.md* (with all caps). -4. On the **Edit new file** tab, paste the full text of the license you want to use. -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose-commit-email %} -7. Below the commit message fields, decide whether to add your commit to the current branch or to a new branch. If your current branch is `main`, you should choose to create a new branch for your commit and then create a pull request. For more information, see "[Creating a pull request](/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request)". -![Commit branch options](/assets/images/help/repository/choose-commit-branch.png) -8. Click **Commit new file**. - ![Commit license to branch](/assets/images/help/repository/license-submit-tool.png) - -{% endif %} - -### Further reading - -- "[Setting guidelines for repository contributors](/articles/setting-guidelines-for-repository-contributors)" diff --git a/content/github/building-a-strong-community/adding-or-editing-wiki-pages.md b/content/github/building-a-strong-community/adding-or-editing-wiki-pages.md deleted file mode 100644 index 342f1a04b532..000000000000 --- a/content/github/building-a-strong-community/adding-or-editing-wiki-pages.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Adding or editing wiki pages -intro: 'You can add and edit wiki pages directly on {% data variables.product.product_name %} or locally using the command line.' -redirect_from: - - /articles/adding-wiki-pages-via-the-online-interface/ - - /articles/editing-wiki-pages-via-the-online-interface/ - - /articles/adding-and-editing-wik-pages-locally/ - - /articles/adding-and-editing-wiki-pages-locally/ - - /articles/adding-or-editing-wiki-pages -product: '{% data reusables.gated-features.wikis %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Adding wiki pages - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-wiki %} -3. In the upper-right corner of the page, click **New Page**. - ![Wiki new page button](/assets/images/help/wiki/wiki_new_page_button.png) -4. Optionally, to write in a format other than Markdown, use the Edit mode drop-down menu, and click a different format. - ![Wiki markup selection](/assets/images/help/wiki/wiki_dropdown_markup.gif) -5. Use the text editor to add your page's content. - ![Wiki WYSIWYG](/assets/images/help/wiki/wiki_wysiwyg.png) -6. Type a commit message describing the new file you’re adding. - ![Wiki commit message](/assets/images/help/wiki/wiki_commit_message.png) -7. To commit your changes to the wiki, click **Save Page**. - -### Editing wiki pages - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-wiki %} -4. Using the wiki sidebar, navigate to the page you want to change. In the upper-right corner of the page, click **Edit**. - ![Wiki edit page button](/assets/images/help/wiki/wiki_edit_page_button.png) -5. Use the text editor edit the page's content. - ![Wiki WYSIWYG](/assets/images/help/wiki/wiki_wysiwyg.png) -6. Type a commit message describing your changes. - ![Wiki commit message](/assets/images/help/wiki/wiki_commit_message.png) -7. To commit your changes to the wiki, click **Save Page**. - -### Adding or editing wiki pages locally - -Wikis are part of Git repositories, so you can make changes locally and push them to your repository using a Git workflow. - -#### Cloning wikis to your computer - -Every wiki provides an easy way to clone its contents down to your computer. -You can clone the repository to your computer with the provided URL: - -```shell -$ git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.wiki.git -# Clones the wiki locally -``` - -Once you have cloned the wiki, you can add new files, edit existing ones, and commit your changes. You and your collaborators can create branches when working on wikis, but only changes pushed to the default branch will be made live and available to your readers. - -### About wiki filenames - -The filename determines the title of your wiki page, and the file extension determines how your wiki content is rendered. - -Wikis use [our open-source Markup library](https://github.com/github/markup) to convert the markup, and it determines which converter to use by a file's extension. For example, if you name a file *foo.md* or *foo.markdown*, wiki will use the Markdown converter, while a file named *foo.textile* will use the Textile converter. - -Don't use the following characters in your wiki page's titles: `\ / : * ? " < > |`. Users on certain operating systems won't be able to work with filenames containing these characters. Be sure to write your content using a markup language that matches the extension, or your content won't render properly. diff --git a/content/github/building-a-strong-community/adding-support-resources-to-your-project.md b/content/github/building-a-strong-community/adding-support-resources-to-your-project.md deleted file mode 100644 index ec53e761abe0..000000000000 --- a/content/github/building-a-strong-community/adding-support-resources-to-your-project.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Adding support resources to your project -intro: You can create a SUPPORT file to let people know about ways to get help with your project. -redirect_from: - - /articles/adding-support-resources-to-your-project -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -To direct people to specific support resources, you can add a SUPPORT file to your repository's root, `docs`, or `.github` folder. When someone creates an issue in your repository, they will see a link to your project's SUPPORT file. - -![Support guidelines](/assets/images/help/issues/support_guidelines_in_issue.png) - -You can create default support resources for your organization{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} or user account{% endif %}. For more information, see "[Creating a default community health file](/github/building-a-strong-community/creating-a-default-community-health-file)." - -{% tip %} - -**Tip:** To help people find your support guidelines, you can link to your SUPPORT file from other places in your repository, such as your [README file](/articles/about-readmes/). - -{% endtip %} - -### Adding support resources to your project - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.files.add-file %} -3. In the file name field, type *SUPPORT.md* (with all caps). -4. On the **Edit new file** tab, add information about how people can get support for your project. -5. To review your SUPPORT file, click **Preview**. -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose-commit-email %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_new_file %} diff --git a/content/github/building-a-strong-community/blocking-a-user-from-your-organization.md b/content/github/building-a-strong-community/blocking-a-user-from-your-organization.md deleted file mode 100644 index 664817044f63..000000000000 --- a/content/github/building-a-strong-community/blocking-a-user-from-your-organization.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Blocking a user from your organization -intro: Organization owners can block a user to remove the user's ability to collaborate in the organization's repositories. -redirect_from: - - /articles/blocking-a-user-from-your-organization -versions: - free-pro-team: '*' ---- - -You can block a user from within your organization's settings or from a specific comment made by the user. When you block a user in a comment, you can choose to send the user a notification explaining that they were blocked and why. Otherwise, the user is not directly notified that you've blocked them. Blocked users can still delete their existing content. - -When you block a user, you can choose to block them indefinitely or for a specific amount of time. If you block someone for a specific amount of time, they are automatically unblocked after the chosen time expires. If you block someone indefinitely, you can unblock them manually at any time. For more information, see "[Unblocking a user from your organization](/articles/unblocking-a-user-from-your-organization)." - -{% tip %} - -**Tip:** If you're blocking a user because of a heated conversation, consider [locking the conversation](/articles/locking-conversations) so only collaborators can comment. - -{% endtip %} - -At the time that you block a user from your organization: -- The user stops watching your organization's repositories -- The user's stars and issue assignments are removed from your repositories -- The user's forks of your organization's repositories are deleted -- The user's votes on discussions or comments in your organization's repositories are deleted -- The user is removed as a collaborator on your organization's repositories -- The user's contributions to your organization's repositories are no longer counted as contributions for them -- Any pending repository or organization invitations to the blocked user are cancelled - -After you've blocked a user from your organization, they cannot: -- Cross-reference your organization's repositories in comments -- Fork, watch, pin, or star your organization's repositories - -In your organization's repositories, blocked users also cannot: -- Open issues -- Send, close, or merge pull requests -- Comment on issues, pull requests, or commits -- Add or edit wiki pages - -### Blocking a user in a comment - -1. Navigate to the comment whose author you would like to block. -2. In the upper-right corner of the comment, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **Block user**. -![The horizontal kebab icon and comment moderation menu showing the block user option](/assets/images/help/repository/comment-menu-block-user.png) -3. If you'd like to set a time limit for the block, use the Block user drop-down menu, and select the amount of time you'd like to block the user. -![Block time limit in the block user drop-down menu](/assets/images/help/organizations/org-block-options-menu-from-comment.png) -4. If you'd like to hide all of the comments the user has made in the organization, select **Hide this user's comments** and choose a reason. -![Send a notification in the block user drop-down menu](/assets/images/help/organizations/org-block-options-menu-hide-user-comments.png) -5. If you'd like to notify the user why they're being blocked, select **Send a notification to this user**. -![Send a notification in the block user drop-down menu](/assets/images/help/organizations/org-block-options-menu-send-notification.png) -6. To block the user, click **Block user from organization** or **Block user from organization and send message**. -![Block user button](/assets/images/help/organizations/org-block-user-button-in-comment.png) - -### Blocking a user in the organization settings - -1. To block an organization member, first [remove the user](/articles/removing-a-member-from-your-organization) from the organization. -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.block_users %} -6. Under "Block a user", type the username of the user you'd like to block. -![Username field](/assets/images/help/organizations/org-block-username-field.png) -7. If you'd like to set a time limit for the block, use the Block options drop-down menu, and select the amount of time you'd like to block the user. -![Block options drop-down menu](/assets/images/help/organizations/org-block-options-menu.png) -8. Click **Block user**. -![Block button](/assets/images/help/organizations/org-block-user-button.png) - -### Further reading - -- "[Viewing users who are blocked from your organization](/articles/viewing-users-who-are-blocked-from-your-organization)" -- "[Unblocking a user from your organization](/articles/unblocking-a-user-from-your-organization)" -- "[Blocking a user from your personal account](/articles/blocking-a-user-from-your-personal-account)" -- "[Unblocking a user from your personal account](/articles/unblocking-a-user-from-your-personal-account)" -- "[Reporting abuse or spam](/articles/reporting-abuse-or-spam)" diff --git a/content/github/building-a-strong-community/blocking-a-user-from-your-personal-account.md b/content/github/building-a-strong-community/blocking-a-user-from-your-personal-account.md deleted file mode 100644 index 6cdae5472924..000000000000 --- a/content/github/building-a-strong-community/blocking-a-user-from-your-personal-account.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Blocking a user from your personal account -intro: 'You can block a user to deny them access to your activity and repositories, and to prevent them from sending you notifications.' -redirect_from: - - /articles/blocking-a-user-from-your-personal-account -versions: - free-pro-team: '*' ---- - -### About blocking users - -You can block a user in your account settings or from the user's profile. {% data variables.product.prodname_dotcom %} will not notify the user when you block them. If you want to avoid contributing to the same project as someone you've blocked, you can [choose to display a warning](/articles/blocking-a-user-from-your-personal-account/#blocking-a-user-in-your-account-settings) on any repositories with prior contributions from a blocked user. You may still see the activity of blocked users in shared spaces and blocked users can delete their existing content. - -{% tip %} - -**Tip:** If you're blocking a user because of a heated conversation, consider [locking the conversation](/articles/locking-conversations) so only collaborators can comment. - -{% endtip %} - -When you block a user: -- The user stops following you -- The user stops watching and unpins your repositories -- The user's stars and issue assignments are removed from your repositories -- The user's forks of your repositories are deleted -- You delete any forks of the user's repositories -- The user's votes on discussions or comments in your repositories are deleted -- The user is removed as a collaborator on your repositories -- The user's contributions to your repositories are no longer counted as contributions for them -- Your contributions to the blocked user's repositories are no longer counted as contributions for you -- You are removed as a collaborator on their repositories -- Their sponsorship of you is cancelled -- Any pending repository or account successor invitations to or from the blocked user are cancelled - -After you've blocked a user, they cannot: -- Send you any notifications, including by [@mentioning](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams) your username -- Comment on or edit issues or pull requests that you've created -- React to your comments on issues, pull requests, and commits -- Follow you or see your content in their activity feed -- Assign you to issues or pull requests -- Invite you as a collaborator on their repositories -- Invite you as a collaborator on a security advisory -- Cross-reference your repositories in comments -- Fork, watch, pin, or star your repositories -- Sponsor you - -In repositories you own, blocked users also cannot: -- Open issues -- Send, close, or merge pull requests -- Comment on issues, pull requests, or commits -- Add or edit wiki pages - -### Blocking a user in your account settings - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.blocked_users %} -3. Under "Block a user", type the username of the user you'd like to block, then click **Block user**. - ![Username field and block button](/assets/images/help/settings/user-settings-block-user.png) -4. Optionally, to display a warning when you visit a repository where a blocked user is a contributor, select **Warn me when a blocked user is a prior contributor to a repository**. - ![Warn about blocked users option](/assets/images/help/settings/warn-block-user.png) - -### Blocking a user from their profile page - -{% data reusables.profile.user_profile_page_navigation %} -{% data reusables.profile.user_profile_page_block_or_report %} -3. Click **Block user**. - ![Modal box with options to block user or report abuse](/assets/images/help/profile/profile-blockuser.png) - -{% note %} - -Use {% data variables.contact.report_abuse %} to contact us if you're being harassed. {% data reusables.policies.abuse %} - -{% endnote %} - -### Further reading - -- "[Viewing users you've blocked from your personal account](/articles/viewing-users-you-ve-blocked-from-your-personal-account)" -- "[Unblocking a user from your personal account](/articles/unblocking-a-user-from-your-personal-account)" -- "[Blocking a user from your organization](/articles/blocking-a-user-from-your-organization)" -- "[Unblocking a user from your organization](/articles/unblocking-a-user-from-your-organization)" -- "[Reporting abuse or spam](/articles/reporting-abuse-or-spam)" -- "[Limiting interactions with your repository](/articles/limiting-interactions-with-your-repository)" diff --git a/content/github/building-a-strong-community/changing-access-permissions-for-wikis.md b/content/github/building-a-strong-community/changing-access-permissions-for-wikis.md deleted file mode 100644 index a6d5f9d90779..000000000000 --- a/content/github/building-a-strong-community/changing-access-permissions-for-wikis.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Changing access permissions for wikis -intro: 'Only repository collaborators can edit a public repository''s wiki by default, but you can allow anyone with a {% data variables.product.product_name %} account to edit your wiki.' -product: '{% data reusables.gated-features.wikis %}' -redirect_from: - - /articles/changing-access-permissions-for-wikis -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under Features, unselect **Restrict edits to collaborators only**. - ![Wiki restrict editing](/assets/images/help/wiki/wiki_restrict_editing.png) - -### Further reading - -- "[Disabling wikis](/articles/disabling-wikis)" diff --git a/content/github/building-a-strong-community/collaborating-with-your-team.md b/content/github/building-a-strong-community/collaborating-with-your-team.md deleted file mode 100644 index 1743381137e4..000000000000 --- a/content/github/building-a-strong-community/collaborating-with-your-team.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Collaborating with your team -intro: 'Within an organization, your team can work together across projects using team discussions.' -mapTopic: true -redirect_from: - - /articles/collaborating-with-your-team -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/building-a-strong-community/configuring-issue-templates-for-your-repository.md b/content/github/building-a-strong-community/configuring-issue-templates-for-your-repository.md deleted file mode 100644 index 5c1163730c46..000000000000 --- a/content/github/building-a-strong-community/configuring-issue-templates-for-your-repository.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Configuring issue templates for your repository -intro: You can customize the templates that are available for contributors to use when they open new issues in your repository. -redirect_from: - - /github/building-a-strong-community/creating-issue-templates-for-your-repository - - /articles/configuring-issue-templates-for-your-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.default-issue-templates %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -### Creating issue templates -{% endif %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. In the "Features" section, under "Issues," click **Set up templates**. -![Start template setup button](/assets/images/help/repository/set-up-templates.png) -4. Use the Add template drop-down menu, and click on the type of template you'd like to create. -![Add template drop-down menu](/assets/images/help/repository/add-template-drop-down-menu.png) -5. To preview or edit the template before committing it to the repository, click **Preview and edit**. -![Preview and edit button](/assets/images/help/repository/preview-and-edit-button.png) -6. To edit the template, click {% octicon "pencil" aria-label="The edit icon" %}, and type in the fields to edit their contents. -![Issue template edit button](/assets/images/help/repository/issue-template-edit-button.png) -7. To automatically set a default issue title, assign the issue to people with read access to the repository, or apply labels to your issue template, enter these details under "Optional additional information." You can also add these details in the issue template with `title`, `labels`, or `assignees` in a YAML frontmatter format. -![Additional info for issue template](/assets/images/help/repository/additional-issue-template-info.png) -8. When you're finished editing and previewing your template, click **Propose changes** in the upper right corner of the page. -![Propose changes button](/assets/images/help/repository/propose-changes-button.png) -9. Enter a commit message describing your changes. -![Issue template commit message field](/assets/images/help/repository/issue-template-commit-message-field.png) -10. Below the commit message fields, decide whether to commit your template directly to the default branch, or to create a new branch and open a pull request. For more information about pull requests, see "[About pull requests](/articles/about-pull-requests)." -![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" or currentVersion ver_gt "enterprise-server@2.19" %} -### Configuring the template chooser - -{% data reusables.repositories.issue-template-config %} - -You can encourage contributors to use issue templates by setting `blank_issues_enabled` to `false`. If you set `blank_issues_enabled` to `true`, people will have the option to open a blank issue. - -{% note %} - -**Note:** If you used the legacy workflow to manually create an `issue_template.md` file and enable blank issues in your *config.yml* file, the template in `issue_template.md` will be used when people chose to open a blank issue. If you disable blank issues, the template will never be used. - -{% endnote %} - -If you prefer to receive certain reports outside of {% data variables.product.product_name %}, you can direct people to external sites with `contact_links`. - -Here is an example *config.yml* file. - -```shell -blank_issues_enabled: false -contact_links: - - name: {% data variables.product.prodname_gcf %} - url: https://github.community/ - about: Please ask and answer questions here. - - name: {% data variables.product.prodname_dotcom %} Security Bug Bounty - url: https://bounty.github.com/ - about: Please report security vulnerabilities here. -``` - -Your configuration file will customize the template chooser when the file is merged into the repository's default branch. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.files.add-file %} -3. In the file name field, type `.github/ISSUE_TEMPLATE/config.yml`. - ![Configuration filename](/assets/images/help/repository/template-config-file-name.png) -4. In the body of the new file, type the contents of your configuration file. - ![Configuration file content](/assets/images/help/repository/template-config-file-content.png) -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_new_file %} -{% endif %} - -### Further reading - -- "[About issue and pull request templates](/articles/about-issue-and-pull-request-templates)" -- "[Manually creating a single issue template for your repository](/articles/manually-creating-a-single-issue-template-for-your-repository)" diff --git a/content/github/building-a-strong-community/creating-a-default-community-health-file.md b/content/github/building-a-strong-community/creating-a-default-community-health-file.md deleted file mode 100644 index bab64b27eba2..000000000000 --- a/content/github/building-a-strong-community/creating-a-default-community-health-file.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Creating a default community health file -intro: 'You can create default community health files, such as CONTRIBUTING and CODE_OF_CONDUCT. Default files will be used for any public repository owned by the account that does not contain its own file of that type.' -redirect_from: - - /articles/creating-a-default-community-health-file-for-your-organization - - /github/building-a-strong-community/creating-a-default-community-health-file-for-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About default community health files - -You can add default community health files to the root of a public repository called `.github` that is owned by an organization{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} or user account{% endif %}. - -{% data variables.product.product_name %} will use and display default files for any public repository owned by the account that does not have its own file of that type in any of the following places: -- the root of the repository -- the `.github` folder -- the `docs` folder - -For example, anyone who creates an issue or pull request in a public repository that does not have its own CONTRIBUTING file will see a link to the default CONTRIBUTING file. If a repository has any files in its own `.github/ISSUE_TEMPLATE` folder{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %}, including issue templates or a *config.yml* file,{% endif %} none of the contents of the default `.github/ISSUE_TEMPLATE` folder will be used. - -Default files are not included in clones, packages, or downloads of individual repositories because they are stored only in the `.github` repository. - -### Supported file types - -You can create defaults in your organization{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} or user account{% endif %} for the following community health files: - -Community health file | Description ---- | ---{% if currentVersion == "free-pro-team@latest" %} -*CODE_OF_CONDUCT.md* | A CODE_OF_CONDUCT file defines standards for how to engage in a community. For more information, see "[Adding a code of conduct to your project](/articles/adding-a-code-of-conduct-to-your-project/)."{% endif %} -*CONTRIBUTING.md* | A CONTRIBUTING file communicates how people should contribute to your project. For more information, see "[Setting guidelines for repository contributors](/articles/setting-guidelines-for-repository-contributors/)."{% if currentVersion == "free-pro-team@latest" %} -*FUNDING.yml* | A FUNDING file displays a sponsor button in your repository to increase the visibility of funding options for your open source project. For more information, see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)."{% endif %} -Issue and pull request templates{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} and *config.yml*{% endif %} | Issue and pull request templates customize and standardize the information you'd like contributors to include when they open issues and pull requests in your repository. For more information, see "[About issue and pull request templates](/articles/about-issue-and-pull-request-templates/)."{% if currentVersion == "free-pro-team@latest" %} -*SECURITY.md* | A SECURITY file gives instructions for how to responsibly report a security vulnerability in your project. For more information, see "[Adding a security policy to your repository](/articles/adding-a-security-policy-to-your-repository)."{% endif %} -*SUPPORT.md* | A SUPPORT file lets people know about ways to get help with your project. For more information, see "[Adding support resources to your project](/articles/adding-support-resources-to-your-project/)." - -You cannot create a default license file. License files must be added to individual repositories so the file will be included when a project is cloned, packaged, or downloaded. - -### Creating a repository for default files - -{% data reusables.repositories.create_new %} -2. Use the **Owner** drop-down menu, and select the organization{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} or user account{% endif %} you want to create default files for. - ![Owner drop-down menu](/assets/images/help/repository/create-repository-owner.png) -3. Type **.github** as the name for your repository, and an optional description. - ![Create repository field](/assets/images/help/repository/default-file-repository-name.png) -4. Make sure the repository status is set to **Public** (a repository for default files cannot be private). - ![Radio buttons to select private or public status](/assets/images/help/repository/create-repository-public-private.png) -{% data reusables.repositories.initialize-with-readme %} -{% data reusables.repositories.create-repo %} -7. In the repository, create one of the supported community health files. Issue templates{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} and their configuration file{% endif %} must be in a folder called `.github/ISSUE_TEMPLATE`. All other supported files must be in the root of the repository. For more information, see "[Creating new files](/articles/creating-new-files/)." diff --git a/content/github/building-a-strong-community/creating-a-footer-or-sidebar-for-your-wiki.md b/content/github/building-a-strong-community/creating-a-footer-or-sidebar-for-your-wiki.md deleted file mode 100644 index 8c9cabb20698..000000000000 --- a/content/github/building-a-strong-community/creating-a-footer-or-sidebar-for-your-wiki.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Creating a footer or sidebar for your wiki -intro: You can add a custom sidebar or footer to your wiki to provide readers with more contextual information. -redirect_from: - - /articles/creating-a-footer/ - - /articles/creating-a-sidebar/ - - /articles/creating-a-footer-or-sidebar-for-your-wiki -product: '{% data reusables.gated-features.wikis %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Creating a footer - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-wiki %} -3. At the bottom of the page, click **Add a custom footer**. - ![Wiki add footer section](/assets/images/help/wiki/wiki_add_footer.png) -4. Use the text editor to type the content you want your footer to have. - ![Wiki WYSIWYG](/assets/images/help/wiki/wiki-footer.png) -5. Enter a commit message describing the footer you’re adding. - ![Wiki commit message](/assets/images/help/wiki/wiki_commit_message.png) -6. To commit your changes to the wiki, click **Save Page**. - -### Creating a sidebar - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-wiki %} -3. Click **Add a custom sidebar**. - ![Wiki add sidebar section](/assets/images/help/wiki/wiki_add_sidebar.png) -4. Use the text editor to add your page's content. - ![Wiki WYSIWYG](/assets/images/help/wiki/wiki-sidebar.png) -5. Enter a commit message describing the sidebar you’re adding. - ![Wiki commit message](/assets/images/help/wiki/wiki_commit_message.png) -6. To commit your changes to the wiki, click **Save Page**. - -### Creating a footer or sidebar locally - -If you create a file named `_Footer.` or `_Sidebar.`, we'll use them to populate the footer and sidebar of your wiki, respectively. Like every other wiki page, the extension you choose for these files determines how we render them. diff --git a/content/github/building-a-strong-community/creating-a-pull-request-template-for-your-repository.md b/content/github/building-a-strong-community/creating-a-pull-request-template-for-your-repository.md deleted file mode 100644 index df8b539e61fe..000000000000 --- a/content/github/building-a-strong-community/creating-a-pull-request-template-for-your-repository.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Creating a pull request template for your repository -intro: 'When you add a pull request template to your repository, project contributors will automatically see the template''s contents in the pull request body.' -redirect_from: - - /articles/creating-a-pull-request-template-for-your-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -For more information, see "[About issue and pull request templates](/articles/about-issue-and-pull-request-templates)." - -You can create a *PULL_REQUEST_TEMPLATE/* subdirectory in any of the supported folders to contain multiple pull request templates, and use the `template` query parameter to specify the template that will fill the pull request body. For more information, see "[About automation for issues and pull requests with query parameters](/articles/about-automation-for-issues-and-pull-requests-with-query-parameters)." - -You can create default pull request templates for your organization{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} or user account{% endif %}. For more information, see "[Creating a default community health file](/github/building-a-strong-community/creating-a-default-community-health-file)." - -### Adding a pull request template - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.files.add-file %} -3. In the file name field: - - To make your pull request template visible in the repository's root directory, name the pull request template `pull_request_template.md`. - ![New pull request template name in root directory](/assets/images/help/repository/pr-template-file-name.png) - - To make your pull request template visible in the repository's `docs` directory, name the pull request template `docs/pull_request_template.md`. - ![New pull request template in docs directory](/assets/images/help/repository/pr-template-file-name-docs.png) - - To store your file in a hidden directory, name the pull request template `.github/pull_request_template.md`. - ![New pull request template in hidden directory](/assets/images/help/repository/pr-template-hidden-directory.png) - - To create multiple pull request templates and use the `template` query parameter to specify a template to fill the pull request body, type *.github/PULL_REQUEST_TEMPLATE/*, then the name of your pull request template. For example, `.github/PULL_REQUEST_TEMPLATE/pull_request_template.md`. You can also store multiple pull request templates in a `PULL_REQUEST_TEMPLATE` subdirectory within the root or `docs/` directories. For more information, see "[About automation for issues and pull requests with query parameters](/articles/about-automation-for-issues-and-pull-requests-with-query-parameters)." - ![New multiple pull request template in hidden directory](/assets/images/help/repository/pr-template-multiple-hidden-directory.png) -4. In the body of the new file, add your pull request template. This could include: - - A [reference to a related issue](/articles/basic-writing-and-formatting-syntax/#referencing-issues-and-pull-requests) in your repository. - - A description of the changes proposed in the pull request. - - [@mentions](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams) of the person or team responsible for reviewing proposed changes. -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} Templates are available to collaborators when they are merged into the repository's default branch. -{% data reusables.files.propose_new_file %} - -### Further reading - -- "[About issue and pull request templates](/articles/about-issue-and-pull-request-templates)" -- "[About automation for issues and pull requests with query parameters](/articles/about-automation-for-issues-and-pull-requests-with-query-parameters)" -- "[Creating a pull request](/articles/creating-a-pull-request)" diff --git a/content/github/building-a-strong-community/creating-a-team-discussion.md b/content/github/building-a-strong-community/creating-a-team-discussion.md deleted file mode 100644 index a02801475ad6..000000000000 --- a/content/github/building-a-strong-community/creating-a-team-discussion.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Creating a team discussion -intro: 'Any organization member can create a _public_ team discussion post. To create a _private_ team discussion post, you must be a member of the team or an organization owner.' -redirect_from: - - /articles/creating-a-team-discussion -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.organizations.team-discussions-permissions %} For more information, see "[About team discussions](/articles/about-team-discussions)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team-discussions-tab %} -6. Type a team discussion title and a comment to start a conversation. - ![New team discussions comment](/assets/images/help/projects/team-discussions-comment.png) -7. Optionally, select whether you want your post to be private or public using the drop-down menu. - ![Team discussions privacy settings menu](/assets/images/help/projects/team-discussions-privacy-menu.png) -8. Click **Comment**. - ![Create new team discussions comment button](/assets/images/help/projects/team-discussions-comment-button.png) - -### Further reading - - - "[About team discussions](/articles/about-team-discussions)" - - "[Editing or deleting a team discussion](/articles/editing-or-deleting-a-team-discussion)" - - "[Pinning a team discussion](/articles/pinning-a-team-discussion)" diff --git a/content/github/building-a-strong-community/disabling-wikis.md b/content/github/building-a-strong-community/disabling-wikis.md deleted file mode 100644 index 11af2834a4a7..000000000000 --- a/content/github/building-a-strong-community/disabling-wikis.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Disabling wikis -intro: You can disable your repository's wiki. -product: '{% data reusables.gated-features.wikis %}' -redirect_from: - - /articles/disabling-wikis -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When you turn off a wiki, the content is hidden, but not erased. If you choose to re-enable wikis later, your previous pages will be restored. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under Features, unselect **Wiki**. - ![Wiki disable checkbox](/assets/images/help/wiki/wiki_enable_disable.png) - -### Further reading - -- "[Changing access permissions for wikis](/articles/changing-access-permissions-for-wikis)" diff --git a/content/github/building-a-strong-community/documenting-your-project-with-wikis.md b/content/github/building-a-strong-community/documenting-your-project-with-wikis.md deleted file mode 100644 index 10a95a72dfa6..000000000000 --- a/content/github/building-a-strong-community/documenting-your-project-with-wikis.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Documenting your project with wikis -intro: 'You can use a wiki to share detailed, long-form information about your project.' -redirect_from: - - /categories/49/articles/ - - /categories/wiki/ - - /articles/documenting-your-project-with-wikis -product: '{% data reusables.gated-features.wikis %}' -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/building-a-strong-community/editing-or-deleting-a-team-discussion.md b/content/github/building-a-strong-community/editing-or-deleting-a-team-discussion.md deleted file mode 100644 index e01537057f36..000000000000 --- a/content/github/building-a-strong-community/editing-or-deleting-a-team-discussion.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Editing or deleting a team discussion -intro: 'Organization members can edit or delete discussions on a team''s page. If you''re an organization member, you can edit or delete the discussion.' -redirect_from: - - /articles/editing-or-deleting-a-team-discussion -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team-discussions-tab %} -6. Click {% octicon "kebab-horizontal" aria-label="The edit icon" %} next to the team discussion you want to edit or delete. -7. Click **Edit**. Optionally, click **Delete**. - ![Edit team discussion button](/assets/images/help/projects/edit-team-discussions-button.png) -8. Modify the team discussion title and comment as needed, and click **Update comment**. - ![Update comment button](/assets/images/help/projects/update-comment-button.png) - -### Further reading - - - "[About team discussions](/articles/about-team-discussions)" - - "[Creating a team discussion](/articles/creating-a-team-discussion)" - - "[Pinning a team discussion](/articles/pinning-a-team-discussion)" diff --git a/content/github/building-a-strong-community/editing-wiki-content.md b/content/github/building-a-strong-community/editing-wiki-content.md deleted file mode 100644 index 7cd671d5e313..000000000000 --- a/content/github/building-a-strong-community/editing-wiki-content.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Editing wiki content -intro: 'You can add images and links to content in your wiki, and use some supported MediaWiki formats.' -redirect_from: - - /articles/adding-links-to-wikis/ - - /articles/how-do-i-add-links-to-my-wiki/ - - /articles/how-do-i-add-or-upload-images-to-the-wiki/ - - /articles/needs-writing-review-how-do-i-add-or-upload-images-to-the-wiki/ - - /articles/how-do-i-add-images-to-my-wiki/ - - /articles/adding-images-to-wikis/ - - /articles/supported-mediawiki-formats/ - - /articles/editing-wiki-content -product: '{% data reusables.gated-features.wikis %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Adding links - -You can create links in wikis using the standard markup supported by your page, or using MediaWiki syntax. For example: - -- If your pages are rendered with Markdown, the link syntax is `[Link Text](full-URL-of-wiki-page)`. -- With MediaWiki syntax, the link syntax is `[[Link Text|nameofwikipage]]`. - -### Adding images - -Wikis can display PNG, JPEG, and GIF images. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-wiki %} -3. Using the wiki sidebar, navigate to the page you want to change, and then click **Edit**. -4. On the wiki toolbar, click **Image**. - ![Wiki Add image button](/assets/images/help/wiki/wiki_add_image.png) -5. In the "Insert Image" dialog box, type the image URL and the alt text (which is used by search engines and screen readers). -6. Click **OK**. - -#### Linking to images in a repository - -You can link to an image in a repository on {% data variables.product.product_name %} by copying the URL in your browser and using that as the path to the image. For example, embedding an image in your wiki using Markdown might look like this: - - [[https://github.com/USERNAME/REPOSITORY/blob/main/img/octocat.png|alt=octocat]] - -### Supported MediaWiki formats - -No matter which markup language your wiki page is written in, certain MediaWiki syntax will always be available to you. -- Links ([except Asciidoc](https://github.com/gollum/gollum/commit/d1cf698b456cd6a35a54c6a8e7b41d3068acec3b)) -- Horizontal rules via `---` -- Shorthand symbol entities (such as `δ` or `€`) - -For security and performance reasons, some syntaxes are unsupported. -- [Transclusion](https://www.mediawiki.org/wiki/Transclusion) -- Definition lists -- Indentation -- Table of contents diff --git a/content/github/building-a-strong-community/encouraging-helpful-contributions-to-your-project-with-labels.md b/content/github/building-a-strong-community/encouraging-helpful-contributions-to-your-project-with-labels.md deleted file mode 100644 index 95c92f2edeaa..000000000000 --- a/content/github/building-a-strong-community/encouraging-helpful-contributions-to-your-project-with-labels.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Encouraging helpful contributions to your project with labels -intro: Apply the `good first issue` label to issues in your repository to highlight opportunities for people to contribute to your project. -redirect_from: - - /github/building-a-strong-community/helping-new-contributors-find-your-project-with-labels - - /articles/helping-new-contributors-find-your-project-with-labels -versions: - free-pro-team: '*' ---- - -You can apply the `good first issue` label to issues in your public repository so that people can find them when searching by labels. For more information about searching by labels, see "[Searching issues and pull requests](/articles/searching-issues-and-pull-requests/#search-by-label)." - -{% data variables.product.prodname_dotcom %} uses an algorithm to determine the most approachable issues in each repository and surface them in various places on {% data variables.product.prodname_dotcom_the_website %}. Adding the `good first issue` label can increase the likelihood that your issues are surfaced. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issues %} -{% data reusables.repositories.select-items-in-issue-or-pr-list %} -4. In the upper-right corner, click **Label**, then start typing `good first issue`. Click the label's name to associate it with the selected items. - ![Issues Milestone assignment drop-down](/assets/images/help/issues/issues_applying_labels_dropdown.png) - -### Further reading - -- "[About labels](/articles/about-labels)" -- "[Searching for repositories](/articles/searching-for-repositories)" diff --git a/content/github/building-a-strong-community/index.md b/content/github/building-a-strong-community/index.md deleted file mode 100644 index b148e86f2f33..000000000000 --- a/content/github/building-a-strong-community/index.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Building a strong community -intro: 'Whether your project is open source or private, you can build a healthy and effective environment for collaboration.' -redirect_from: - - /categories/building-a-strong-community -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /setting-up-your-project-for-healthy-contributions %} - - {% link_in_list /about-community-management-and-moderation %} - {% link_in_list /about-community-profiles-for-public-repositories %} - {% link_in_list /accessing-a-projects-community-profile %} - {% link_in_list /adding-a-code-of-conduct-to-your-project %} - - {% link_in_list /setting-guidelines-for-repository-contributors %} - {% link_in_list /adding-a-license-to-a-repository %} - {% link_in_list /adding-support-resources-to-your-project %} - - {% link_in_list /creating-a-default-community-health-file %} - - - {% link_in_list /encouraging-helpful-contributions-to-your-project-with-labels %} - -{% topic_link_in_list /using-templates-to-encourage-useful-issues-and-pull-requests %} - {% link_in_list /about-issue-and-pull-request-templates %} - {% link_in_list /configuring-issue-templates-for-your-repository %} - {% link_in_list /creating-a-pull-request-template-for-your-repository %} - {% link_in_list /manually-creating-a-single-issue-template-for-your-repository %} -{% topic_link_in_list /moderating-comments-and-conversations %} - {% link_in_list /managing-disruptive-comments %} - {% link_in_list /locking-conversations %} - {% link_in_list /limiting-interactions-in-your-repository %} - {% link_in_list /limiting-interactions-in-your-organization %} - {% link_in_list /tracking-changes-in-a-comment %} - {% link_in_list /managing-how-contributors-report-abuse-in-your-organizations-repository %} - {% link_in_list /managing-reported-content-in-your-organizations-repository %} - -{% topic_link_in_list /maintaining-your-safety-on-github %} - {% link_in_list /blocking-a-user-from-your-personal-account %} - {% link_in_list /viewing-users-youve-blocked-from-your-personal-account %} - {% link_in_list /unblocking-a-user-from-your-personal-account %} - {% link_in_list /blocking-a-user-from-your-organization %} - {% link_in_list /viewing-users-who-are-blocked-from-your-organization %} - {% link_in_list /unblocking-a-user-from-your-organization %} - {% link_in_list /reporting-abuse-or-spam %} - -{% topic_link_in_list /documenting-your-project-with-wikis %} - {% link_in_list /about-wikis %} - {% link_in_list /adding-or-editing-wiki-pages %} - {% link_in_list /creating-a-footer-or-sidebar-for-your-wiki %} - {% link_in_list /editing-wiki-content %} - {% link_in_list /viewing-a-wikis-history-of-changes %} - {% link_in_list /changing-access-permissions-for-wikis %} - {% link_in_list /disabling-wikis %} - -{% topic_link_in_list /collaborating-with-your-team %} - {% link_in_list /about-team-discussions %} - {% link_in_list /creating-a-team-discussion %} - {% link_in_list /editing-or-deleting-a-team-discussion %} - {% link_in_list /pinning-a-team-discussion %} - diff --git a/content/github/building-a-strong-community/limiting-interactions-in-your-organization.md b/content/github/building-a-strong-community/limiting-interactions-in-your-organization.md deleted file mode 100644 index f820de44a599..000000000000 --- a/content/github/building-a-strong-community/limiting-interactions-in-your-organization.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Limiting interactions in your organization -intro: 'Organization owners can temporarily restrict certain users from commenting, opening issues, or creating pull requests in the organization''s public repositories to enforce a period of limited activity.' -redirect_from: - - /github/setting-up-and-managing-organizations-and-teams/limiting-interactions-in-your-organization - - /articles/limiting-interactions-in-your-organization -versions: - free-pro-team: '*' ---- - -After 24 hours, users can resume normal activity in your organization's public repositories. When you enable organization-wide activity limitations, you can't enable or disable interaction limits on individual repositories. For more information on per-repository activity limitation, see "[Limiting interactions in your repository](/articles/limiting-interactions-in-your-repository)." - -{% tip %} - -**Tip:** Organization owners can also block users for a specific amount of time. After the block expires, the user is automatically unblocked. For more information, see "[Blocking a user from your organization](/articles/blocking-a-user-from-your-organization)." - -{% endtip %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -4. In your organization's Settings sidebar, click **Interaction limits**. -![Interaction limits in organization settings ](/assets/images/help/organizations/org-settings-interaction-limits.png) -5. Under "Temporary interaction limits", click one or more options. - ![Temporary interaction limit options](/assets/images/help/organizations/organization-temporary-interaction-limits-options.png) - - **Limit to existing users**: Limits activity for organization users with accounts that are less than 24 hours old who do not have prior contributions and are not collaborators. - - **Limit to prior contributors**: Limits activity for organization users who have not previously contributed and are not collaborators. - - **Limit to repository collaborators**: Limits activity for organization users who do not have write access or are not collaborators. - -### Further reading -- "[Reporting abuse or spam](/articles/reporting-abuse-or-spam)" -- "[Managing an individual's access to an organization repository](/articles/managing-an-individual-s-access-to-an-organization-repository)" -- "[Permission levels for a user account repository](/articles/permission-levels-for-a-user-account-repository)" -- "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)" diff --git a/content/github/building-a-strong-community/limiting-interactions-in-your-repository.md b/content/github/building-a-strong-community/limiting-interactions-in-your-repository.md deleted file mode 100644 index de9ccb7c28ac..000000000000 --- a/content/github/building-a-strong-community/limiting-interactions-in-your-repository.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Limiting interactions in your repository -intro: 'People with owner or admin access can temporarily restrict certain users from commenting, opening issues, or creating pull requests in your public repository to enforce a period of limited activity.' -redirect_from: - - /articles/limiting-interactions-with-your-repository/ - - /articles/limiting-interactions-in-your-repository -versions: - free-pro-team: '*' ---- - -After 24 hours, users can resume normal activity in your repository. - -{% tip %} - -**Tip:** Organization owners can enable organization-wide activity limitations. If organization-wide activity limitations are enabled, you can't limit activity for individual repositories. For more information, see "[Limiting interactions in your organization](/articles/limiting-interactions-in-your-organization)." - -{% endtip %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. In your repository's Settings sidebar, click **Interaction limits**. -![Interaction limits in repository settings ](/assets/images/help/repository/repo-settings-interaction-limits.png) -4. Under "Temporary interaction limits", click one or more options: - ![Temporary interaction limit options](/assets/images/help/repository/temporary-interaction-limits-options.png) - - **Limit to existing users**: Limits activity for users with accounts that are less than 24 hours old who do not have prior contributions and are not collaborators. - - **Limit to prior contributors**: Limits activity for users who have not previously contributed and are not collaborators. - - **Limit to repository collaborators**: Limits activity for users who do not have write access or are not collaborators. - -### Further reading -- "[Reporting abuse or spam](/articles/reporting-abuse-or-spam)" -- "[Managing an individual's access to an organization repository](/articles/managing-an-individual-s-access-to-an-organization-repository)" -- "[Permission levels for a user account repository](/articles/permission-levels-for-a-user-account-repository)" -- "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)" diff --git a/content/github/building-a-strong-community/locking-conversations.md b/content/github/building-a-strong-community/locking-conversations.md deleted file mode 100644 index 5e86b60383ee..000000000000 --- a/content/github/building-a-strong-community/locking-conversations.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Locking conversations -intro: 'Repository owners and collaborators, and people with write access to a repository, can lock conversations on issues, pull requests, and commits permanently or temporarily to defuse a heated interaction.' -redirect_from: - - /articles/locking-conversations -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -It's appropriate to lock a conversation when the entire conversation is not constructive or violates your community's code of conduct{% if currentVersion == "free-pro-team@latest" %} or GitHub's [Community Guidelines](/articles/github-community-guidelines){% endif %}. When you lock a conversation, you can also specify a reason, which is publicly visible. - -Locking a conversation creates a timeline event that is visible to anyone with read access to the repository. However, the username of the person who locked the conversation is only visible to people with write access to the repository. For anyone without write access, the timeline event is anonymized. - -![Anonymized timeline event for a locked conversation](/assets/images/help/issues/anonymized-timeline-entry-for-locked-conversation.png) - -While a conversation is locked, only [people with write access](/articles/repository-permission-levels-for-an-organization/) and [repository owners and collaborators](/articles/permission-levels-for-a-user-account-repository/#collaborator-access-on-a-repository-owned-by-a-user-account) can add, hide, and delete comments. - -To search for locked conversations in a repository that is not archived, you can use the search qualifiers `is:locked` and `archived:false`. Conversations are automatically locked in archived repositories. For more information, see "[Searching issues and pull requests](/articles/searching-issues-and-pull-requests#search-based-on-whether-a-conversation-is-locked)." - -1. Optionally, write a comment explaining why you're locking the conversation. -2. In the right margin of the issue or pull request, or above the comment box on the commit page, click **Lock conversation**. -![Lock conversation link](/assets/images/help/repository/lock-conversation.png) -3. Optionally, choose a reason for locking the conversation. -![Reason for locking a conversation menu](/assets/images/help/repository/locking-conversation-reason-menu.png) -4. Read the information about locking conversations and click **Lock conversation on this issue**, **Lock conversation on this pull request**, or **Lock conversation on this commit**. -![Confirm lock with a reason dialog box](/assets/images/help/repository/lock-conversation-confirm-with-reason.png) -5. When you're ready to unlock the conversation, click **Unlock conversation**. -![Unlock conversation link](/assets/images/help/repository/unlock-conversation.png) - -### Further reading - -- "[Setting up your project for healthy contributions](/articles/setting-up-your-project-for-healthy-contributions)" -- "[Using templates to encourage useful issues and pull requests](/github/building-a-strong-community/using-templates-to-encourage-useful-issues-and-pull-requests)" -- "[Managing disruptive comments](/articles/managing-disruptive-comments)"{% if currentVersion == "free-pro-team@latest" %} -- "[Maintaining your safety on {% data variables.product.prodname_dotcom %}](/github/building-a-strong-community/maintaining-your-safety-on-github)" -- "[Reporting abuse or spam](/articles/reporting-abuse-or-spam)" -- "[Limiting interactions in your repository](/github/building-a-strong-community/limiting-interactions-in-your-repository)" -{% endif %} diff --git a/content/github/building-a-strong-community/maintaining-your-safety-on-github.md b/content/github/building-a-strong-community/maintaining-your-safety-on-github.md deleted file mode 100644 index 5ace72549291..000000000000 --- a/content/github/building-a-strong-community/maintaining-your-safety-on-github.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Maintaining your safety on GitHub -intro: 'To build a positive and safe environment for yourself and the community for your project on {% data variables.product.prodname_dotcom %}, you can block and unblock users and report disruptive content.' -mapTopic: true -redirect_from: - - /articles/encouraging-positive-contributions-in-your-organization - - /github/setting-up-and-managing-organizations-and-teams/encouraging-positive-contributions-in-your-organization - - /github/building-a-strong-community/encouraging-positive-contributions-to-your-project - - /articles/encouraging-positive-contributions-to-your-project -versions: - free-pro-team: '*' ---- - diff --git a/content/github/building-a-strong-community/managing-disruptive-comments.md b/content/github/building-a-strong-community/managing-disruptive-comments.md deleted file mode 100644 index 809825ccfb66..000000000000 --- a/content/github/building-a-strong-community/managing-disruptive-comments.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Managing disruptive comments -intro: 'You can {% if currentVersion == "free-pro-team@latest" %}hide, edit,{% else %}edit{% endif %} or delete comments on issues, pull requests, and commits.' -redirect_from: - - /articles/editing-a-comment/ - - /articles/deleting-a-comment/ - - /articles/managing-disruptive-comments -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Hiding a comment - -Anyone with write access to a repository can hide comments on issues, pull requests, and commits. - -If a comment is off-topic, outdated, or resolved, you may want to hide a comment to keep a discussion focused or make a pull request easier to navigate and review. Hidden comments are minimized but people with read access to the repository can expand them. - -![Minimized comment](/assets/images/help/repository/hidden-comment.png) - -1. Navigate to the comment you'd like to hide. -2. In the upper-right corner of the comment, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **Hide**. - ![The horizontal kebab icon and comment moderation menu showing the edit, hide, delete options](/assets/images/help/repository/comment-menu.png) -3. Using the "Choose a reason" drop-down menu, click a reason to hide the comment. Then click, **Hide comment**. - {% if currentVersion == "free-pro-team@latest" %} - ![Choose reason for hiding comment drop-down menu](/assets/images/help/repository/choose-reason-for-hiding-comment.png) - {% else %} - ![Choose reason for hiding comment drop-down menu](/assets/images/help/repository/choose-reason-for-hiding-comment-ghe.png) - {% endif %} - -### Unhiding a comment - -Anyone with write access to a repository can unhide comments on issues, pull requests, and commits. - -1. Navigate to the comment you'd like to unhide. -2. In the upper-right corner of the comment, click **{% octicon "fold" aria-label="The fold icon" %} Show comment**. - ![Show comment text](/assets/images/help/repository/hidden-comment-show.png) -3. On the right side of the expanded comment, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then **Unhide**. - ![The horizontal kebab icon and comment moderation menu showing the edit, unhide, delete options](/assets/images/help/repository/comment-menu-hidden.png) - -### Editing a comment - -Anyone with write access to a repository can edit comments on issues, pull requests, and commits. - -It's appropriate to edit a comment and remove content that doesn't contribute to the conversation and violates your community's code of conduct{% if currentVersion == "free-pro-team@latest" %} or GitHub's [Community Guidelines](/articles/github-community-guidelines){% endif %}. - -When you edit a comment, note the location that the content was removed from and optionally, the reason for removing it. - -Anyone with read access to a repository can view a comment's edit history. The **edited** dropdown at the top of the comment contains a history of edits showing the user and timestamp for each edit. - -![Comment with added note that content was redacted](/assets/images/help/repository/content-redacted-comment.png) - -Comment authors and anyone with write access to a repository can also delete sensitive information from a comment's edit history. For more information, see "[Tracking changes in a comment](/github/building-a-strong-community/tracking-changes-in-a-comment)." - -1. Navigate to the comment you'd like to edit. -2. In the upper-right corner of the comment, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **Edit**. - ![The horizontal kebab icon and comment moderation menu showing the edit, hide, delete, and report options](/assets/images/help/repository/comment-menu.png) -3. In the comment window, delete the content you'd like to remove, then type `[REDACTED]` to replace it. - ![Comment window with redacted content](/assets/images/help/issues/redacted-content-comment.png) -4. At the bottom of the comment, type a note indicating that you have edited the comment, and optionally, why you edited the comment. - ![Comment window with added note that content was redacted](/assets/images/help/issues/note-content-redacted-comment.png) -5. Click **Update comment**. - -### Deleting a comment - -Anyone with write access to a repository can delete comments on issues, pull requests, and commits. Organization owners, team maintainers, and the comment author can also delete a comment on a team page. - -Deleting a comment is your last resort as a moderator. It's appropriate to delete a comment if the entire comment adds no constructive content to a conversation and violates your community's code of conduct{% if currentVersion == "free-pro-team@latest" %} or GitHub's [Community Guidelines](/articles/github-community-guidelines){% endif %}. - -Deleting a comment creates a timeline event that is visible to anyone with read access to the repository. However, the username of the person who deleted the comment is only visible to people with write access to the repository. For anyone without write access, the timeline event is anonymized. - -![Anonymized timeline event for a deleted comment](/assets/images/help/issues/anonymized-timeline-entry-for-deleted-comment.png) - -If a comment contains some constructive content that adds to the conversation in the issue or pull request, you can edit the comment instead. - -{% note %} - -**Note:** The initial comment (or body) of an issue or pull request can't be deleted. Instead, you can edit issue and pull request bodies to remove unwanted content. - -{% endnote %} - -1. Navigate to the comment you'd like to delete. -2. In the upper-right corner of the comment, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **Delete**. - ![The horizontal kebab icon and comment moderation menu showing the edit, hide, delete, and report options](/assets/images/help/repository/comment-menu.png) -3. Optionally, write a comment noting that you deleted a comment and why. diff --git a/content/github/building-a-strong-community/managing-how-contributors-report-abuse-in-your-organizations-repository.md b/content/github/building-a-strong-community/managing-how-contributors-report-abuse-in-your-organizations-repository.md deleted file mode 100644 index de50df47daa0..000000000000 --- a/content/github/building-a-strong-community/managing-how-contributors-report-abuse-in-your-organizations-repository.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Managing how contributors report abuse in your organization's repository -intro: You can allow contributors to report disruptive behavior directly to repository maintainers. -versions: - free-pro-team: '*' ---- - -Anyone with admin permissions to a repository can manage how contributors report abuse in the repository. - -You can enable or disable reported content for public repositories owned by an organization. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.sidebar-moderation-reported-content %} -4. Under "Reported content", select or unselect **Accept content reports from collaborators and prior contributors**. - ![Checkbox for opting into or out of reported content for a repository](/assets/images/help/repository/reported-content-opt-in-checkbox.png) - -### Further reading - -- "[Managing reported content in your organization's repository](/github/building-a-strong-community/managing-reported-content-in-your-organizations-repository)" -- "[Moderating comments and conversations](/github/building-a-strong-community/moderating-comments-and-conversations)" -- "[About community management and moderation](/github/building-a-strong-community/about-community-management-and-moderation)" diff --git a/content/github/building-a-strong-community/managing-reported-content-in-your-organizations-repository.md b/content/github/building-a-strong-community/managing-reported-content-in-your-organizations-repository.md deleted file mode 100644 index 4dc421624336..000000000000 --- a/content/github/building-a-strong-community/managing-reported-content-in-your-organizations-repository.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Managing reported content in your organization's repository -intro: 'After a contributor reports disruptive content in a repository, repository maintainers can view and manage the report.' -versions: - free-pro-team: '*' ---- - -Anyone with admin permissions to a repository can view and manage reported content for the repository. - -### About management of reported content - -Before you can view or manage reported content, you must enable reported content for the repository. For more information, see "[Managing how contributors report abuse in your organization's repository](/github/building-a-strong-community/managing-how-contributors-report-abuse-in-your-organizations-repository)." - -You can track, triage, and respond to reports of disruptive content. In the "Abuse reports" list, you can view all reports and navigate directly to each reported comment on {% data variables.product.prodname_dotcom %}. - -{% data reusables.community.tools-for-moderating %} - -After you finish moderating disruptive content, you can mark the report as resolved. If you decide that you're not done moderating, you can also mark the report as unresolved. - -### Viewing content that a contributor reported - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.sidebar-moderation-reported-content %} -4. To the right of the reported content you'd like to view, click {% octicon "kebab-horizontal" aria-label="The edit icon" %}, then click **View content**. - !["View content" in Edit drop-down for reported content](/assets/images/help/repository/reported-content-report-view-content.png) - -### Resolving a report - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.sidebar-moderation-reported-content %} -4. To the right of the report you'd like to resolve, click {% octicon "kebab-horizontal" aria-label="The edit icon" %}, then click **Mark as resolved**. - !["Mark as resolved" in Edit drop-down for reported content](/assets/images/help/repository/reported-content-mark-report-as-resolved.png) - -### Unresolving a report - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.sidebar-moderation-reported-content %} -{% data reusables.repositories.reported-content-resolved-tab %} -5. To the right of the report you'd like to unresolve, click {% octicon "kebab-horizontal" aria-label="The edit icon" %}, then click **Mark as unresolved**. - !["Mark as unresolved" in Edit drop-down for reported content](/assets/images/help/repository/reported-content-mark-report-as-unresolved.png) - -### Further reading - -- "[About community management and moderation](/github/building-a-strong-community/about-community-management-and-moderation)" diff --git a/content/github/building-a-strong-community/manually-creating-a-single-issue-template-for-your-repository.md b/content/github/building-a-strong-community/manually-creating-a-single-issue-template-for-your-repository.md deleted file mode 100644 index ff57ebed423f..000000000000 --- a/content/github/building-a-strong-community/manually-creating-a-single-issue-template-for-your-repository.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Manually creating a single issue template for your repository -intro: 'When you add a manually-created issue template to your repository, project contributors will automatically see the template''s contents in the issue body.' -redirect_from: - - /articles/creating-an-issue-template-for-your-repository/ - - /articles/manually-creating-a-single-issue-template-for-your-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.legacy-issue-template-tip %} - -You can create an *ISSUE_TEMPLATE/* subdirectory in any of the supported folders to contain multiple issue templates, and use the `template` query parameter to specify the template that will fill the issue body. For more information, see "[About automation for issues and pull requests with query parameters](/articles/about-automation-for-issues-and-pull-requests-with-query-parameters)." - -You can add YAML frontmatter to each issue template to pre-fill the issue title, automatically add labels and assignees, and give the template a name and description that will be shown in the template chooser that people see when creating a new issue in your repository. - -Here is example YAML front matter. - -``` ---- -name: Tracking issue -about: Use this template for tracking new features. -title: "[DATE]: [FEATURE NAME]" -labels: tracking issue, needs triage -assignees: octocat ---- -``` -{% note %} - -**Note:** If a front matter value includes a YAML-reserved character such as `:` , you must put the whole value in quotes. For example, `":bug: Bug"` or `":new: triage needed, :bug: bug"`. - -{% endnote %} - -{% if currentVersion == "free-pro-team@latest" %} - -{% data reusables.repositories.valid-community-issues %} - -{% endif %} - -{% data reusables.repositories.default-issue-templates %} - -### Adding an issue template - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.files.add-file %} -3. In the file name field: - - To make your issue template visible in the repository's root directory, type the name of your *issue_template*. For example, `issue_template.md`. - ![New issue template name in root directory](/assets/images/help/repository/issue-template-file-name.png) - - To make your issue template visible in the repository's `docs` directory, type *docs/* followed by the name of your *issue_template*. For example, `docs/issue_template.md`, - ![New issue template in docs directory](/assets/images/help/repository/issue-template-file-name-docs.png) - - To store your file in a hidden directory, type *.github/* followed by the name of your *issue_template*. For example, `.github/issue_template.md`. - ![New issue template in hidden directory](/assets/images/help/repository/issue-template-hidden-directory.png) - - To create multiple issue templates and use the `template` query parameter to specify a template to fill the issue body, type *.github/ISSUE_TEMPLATE/*, then the name of your issue template. For example, `.github/ISSUE_TEMPLATE/issue_template.md`. You can also store multiple issue templates in an `ISSUE_TEMPLATE` subdirectory within the root or `docs/` directories. For more information, see "[About automation for issues and pull requests with query parameters](/articles/about-automation-for-issues-and-pull-requests-with-query-parameters)." - ![New multiple issue template in hidden directory](/assets/images/help/repository/issue-template-multiple-hidden-directory.png) -4. In the body of the new file, add your issue template. This could include: - - YAML frontmatter - - Expected behavior and actual behavior - - Steps to reproduce the problem - - Specifications like the version of the project, operating system, or hardware -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} Templates are available to collaborators when they are merged into the repository's default branch. -{% data reusables.files.propose_new_file %} - -### Further reading - -- "[About issue and pull request templates](/articles/about-issue-and-pull-request-templates)" -- "[Configuring issue templates for your repository](/articles/configuring-issue-templates-for-your-repository)" -- "[About automation for issues and pull requests with query parameters](/articles/about-automation-for-issues-and-pull-requests-with-query-parameters)" -- "[Creating an issue](/articles/creating-an-issue)" diff --git a/content/github/building-a-strong-community/moderating-comments-and-conversations.md b/content/github/building-a-strong-community/moderating-comments-and-conversations.md deleted file mode 100644 index c3baa99c569a..000000000000 --- a/content/github/building-a-strong-community/moderating-comments-and-conversations.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Moderating comments and conversations -intro: 'Moderating conversations creates a welcoming community for all contributors to your project by promoting healthy collaboration and de-escalating conflict. You can apply your community''s code of conduct to discussions by viewing reported content, editing and deleting comments, and locking conversations.' -mapTopic: true -redirect_from: - - /articles/moderating-comments-and-conversations -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/building-a-strong-community/pinning-a-team-discussion.md b/content/github/building-a-strong-community/pinning-a-team-discussion.md deleted file mode 100644 index f2c944fd89e5..000000000000 --- a/content/github/building-a-strong-community/pinning-a-team-discussion.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Pinning a team discussion -intro: 'You can pin important discussions to your organization''s team pages for easy reference, and unpin discussions that are no longer relevant.' -redirect_from: - - /articles/pinning-a-team-discussion -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team-discussions-tab %} -5. Click {% octicon "pin" aria-label="The pin icon" %} next to the team discussion you want to pin. You can also unpin a discussion by clicking the icon. - ![Pin a discussion](/assets/images/help/projects/pin-discussion-button.png) - -### Further reading - - - "[About team discussions](/articles/about-team-discussions)" - - "[Creating a team discussion](/articles/creating-a-team-discussion)" - - "[Editing or deleting a team discussion](/articles/editing-or-deleting-a-team-discussion)" diff --git a/content/github/building-a-strong-community/reporting-abuse-or-spam.md b/content/github/building-a-strong-community/reporting-abuse-or-spam.md deleted file mode 100644 index e33cd7be4c1b..000000000000 --- a/content/github/building-a-strong-community/reporting-abuse-or-spam.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Reporting abuse or spam -intro: You can report behavior and content that violates community guidelines and terms. -redirect_from: - - /articles/reporting-abuse-or-spam -versions: - free-pro-team: '*' ---- - -Owners, collaborators, prior contributors, and people with write access can report issues, pull requests, and comments on issues, pull requests, and commits. Anyone can report apps in {% data variables.product.prodname_marketplace %}. - -### About reporting abuse or spam - -{% data reusables.policies.github-community-guidelines-and-terms %} - -You can report users that have violated {% data variables.product.prodname_dotcom %}'s Community Guidelines or Terms of Service through {% data variables.contact.report_abuse %} or {% data variables.contact.report_content %}. You can also report issues, pull requests, or comments on issues, pull requests, and commits. - -If reported content is enabled for a public repository, you can also report content directly to repository maintainers. - -### Reporting a user - -{% data reusables.profile.user_profile_page_navigation %} -{% data reusables.profile.user_profile_page_block_or_report %} -3. Click **Report abuse**. - ![Modal box with options to block user or report abuse](/assets/images/help/profile/profile-report-abuse.png) -4. Complete the contact form to tell {% data variables.contact.contact_support %} about the user's behavior, then click **Send request**. - -### Reporting an issue or pull request - -1. Navigate to the issue or pull request you'd like to report. -2. In the upper-right corner of the issue or pull request, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab octicon" %}, then click **Report content**. - ![Button to report a comment](/assets/images/help/repository/menu-report-issue-or-pr.png) -{% data reusables.community.report-content %} - -### Reporting a comment - -1. Navigate to the comment you'd like to report. -2. In the upper-right corner of the comment, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab octicon" %}, then click **Report content**. -![Kebab menu with option to report a comment](/assets/images/help/repository/menu-report-comment.png) -{% data reusables.community.report-content %} - -### Reporting an app in {% data variables.product.prodname_marketplace %} - -{% data reusables.marketplace.visit-marketplace %} -2. Browse to the app you'd like to report. -3. In the left sidebar, under the "Developer links" section, click {% octicon "report" aria-label="The report symbol" %} **Report abuse**. - ![Button to report an app in {% data variables.product.prodname_marketplace %}](/assets/images/help/marketplace/marketplace-report-app.png) -4. Complete the contact form to tell {% data variables.contact.contact_support %} about the app's behavior, then click **Send request**. - -### Reporting contact link abuse in the template chooser - -1. Navigate to the repository that contains the contact link you'd like to report. -2. Under the repository name, click {% octicon "issue-opened" aria-label="The issues icon" %} **Issues**. -3. In the lower-right corner of the template chooser, click **Report abuse**. - ![Link to report an abuse](/assets/images/help/repository/template-chooser-report-abuse.png) -4. Complete the contact form to tell {% data variables.contact.contact_support %} about the contact link's behavior, then click **Send request**. - -### Further reading - -- "[Setting up your project for healthy contributions](/articles/setting-up-your-project-for-healthy-contributions)" -- "[Using templates to encourage useful issues and pull requests](/github/building-a-strong-community/using-templates-to-encourage-useful-issues-and-pull-requests)" -- "[Managing disruptive comments](/articles/managing-disruptive-comments)"{% if currentVersion == "free-pro-team@latest" %} -- "[Maintaining your safety on {% data variables.product.prodname_dotcom %}](/github/building-a-strong-community/maintaining-your-safety-on-github)" -- "[Limiting interactions in your repository](/github/building-a-strong-community/limiting-interactions-in-your-repository)"{% endif %} -- "[Tracking changes in a comment](/articles/tracking-changes-in-a-comment)" diff --git a/content/github/building-a-strong-community/setting-guidelines-for-repository-contributors.md b/content/github/building-a-strong-community/setting-guidelines-for-repository-contributors.md deleted file mode 100644 index e9437a2ba134..000000000000 --- a/content/github/building-a-strong-community/setting-guidelines-for-repository-contributors.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Setting guidelines for repository contributors -redirect_from: - - /articles/how-do-i-set-up-guidelines-for-contributors/ - - /articles/setting-guidelines-for-repository-contributors -intro: You can create guidelines to communicate how people should contribute to your project. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -To help your project contributors do good work, you can add a file with contribution guidelines to your project repository's root, `docs`, or `.github` folder. When someone opens a pull request or creates an issue, they will see a link to that file. - -![contributing-guidelines](/assets/images/help/pull_requests/contributing-guidelines.png) - -For the repository owner, contribution guidelines are a way to communicate how people should contribute. - -For contributors, the guidelines help them verify that they're submitting well-formed pull requests and opening useful issues. - -For both owners and contributors, contribution guidelines save time and hassle caused by improperly created pull requests or issues that have to be rejected and re-submitted. - -You can create default contribution guidelines for your organization{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} or user account{% endif %}. For more information, see "[Creating a default community health file](/github/building-a-strong-community/creating-a-default-community-health-file)." - -{% tip %} - -**Tip:** Repository maintainers can set specific guidelines for issues by creating an issue or pull request template for the repository. For more information, see "[About issue and pull request templates](/articles/about-issue-and-pull-request-templates)." - -{% endtip %} - -### Adding a *CONTRIBUTING* file - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.files.add-file %} -3. Decide whether to store your contributing guidelines in your repository's root, `docs`, or `.github` directory. Then, in the filename field, type the name and extension for the file. Contributing guidelines filenames are not case sensitive, and can have an extension such as *.md* or *.txt*. - ![New file name](/assets/images/help/repository/new-file-name.png) - - To make your contributing guidelines visible in the repository's root directory, type *CONTRIBUTING*. - - To make your contributing guidelines visible in the repository's `docs` directory, type *docs/* to create the new directory, then *CONTRIBUTING*. -4. In the new file, add contribution guidelines. These could include: - - Steps for creating good issues or pull requests. - - Links to external documentation, mailing lists, or a code of conduct. - - Community and behavioral expectations. -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_new_file %} - -### Examples of contribution guidelines - -If you're stumped, here are some good examples of contribution guidelines: - -- The Atom editor [contribution guidelines](https://github.com/atom/atom/blob/master/CONTRIBUTING.md). -- The Ruby on Rails [contribution guidelines](https://github.com/rails/rails/blob/master/CONTRIBUTING.md). -- The Open Government [contribution guidelines](https://github.com/opengovernment/opengovernment/blob/master/CONTRIBUTING.md). - -### Further reading -- The Open Source Guides' section "[Starting an Open Source Project](https://opensource.guide/starting-a-project/)"{% if currentVersion == "free-pro-team@latest" %} -- [{% data variables.product.prodname_learning %}]({% data variables.product.prodname_learning_link %}){% endif %} -- "[Adding a license to a repository](/articles/adding-a-license-to-a-repository)" diff --git a/content/github/building-a-strong-community/setting-up-your-project-for-healthy-contributions.md b/content/github/building-a-strong-community/setting-up-your-project-for-healthy-contributions.md deleted file mode 100644 index d8dc115b1c1c..000000000000 --- a/content/github/building-a-strong-community/setting-up-your-project-for-healthy-contributions.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Setting up your project for healthy contributions -intro: 'Repository maintainers can set contributing guidelines to help collaborators make meaningful, useful contributions to a project.' -redirect_from: - - /articles/helping-people-contribute-to-your-project/ - - /articles/setting-up-your-project-for-healthy-contributions -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/building-a-strong-community/tracking-changes-in-a-comment.md b/content/github/building-a-strong-community/tracking-changes-in-a-comment.md deleted file mode 100644 index 90e74ff0479d..000000000000 --- a/content/github/building-a-strong-community/tracking-changes-in-a-comment.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Tracking changes in a comment -intro: You can view the edit history of a comment or delete sensitive information from the edit history of a comment. -redirect_from: - - /articles/tracking-changes-in-a-comment -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Viewing a comment's edit history details - -Anyone with read access to a repository can view a comment's edit history. - -1. Navigate to the comment you'd like to view the edit history for. -{% data reusables.repositories.edited-comment-list %} - -### Deleting sensitive information from a comment's history - -Comment authors and anyone with write access to a repository can delete sensitive information from a comment's edit history. - -When you delete sensitive information from the comment's edit history, the person who made the edit and when they made the edit is still visible in the comment history but the content of the edit is no longer available. - -1. Navigate to the comment where you would like to delete sensitive information from the edit history. -{% data reusables.repositories.edited-comment-list %} -3. In the top right of the edit history window, click **Options**. Then click **Delete revision from history** to delete the diff that shows the content being added. - ![Delete comment edit details](/assets/images/help/repository/delete-comment-edit-details.png) -4. To confirm deletion, click **OK**. - -### Further reading - -{% if currentVersion == "free-pro-team@latest" %}- "[Reporting abuse or spam](/articles/reporting-abuse-or-spam)"{% endif %} -- "[Editing a comment](/articles/editing-a-comment)" diff --git a/content/github/building-a-strong-community/unblocking-a-user-from-your-organization.md b/content/github/building-a-strong-community/unblocking-a-user-from-your-organization.md deleted file mode 100644 index 616b7024246b..000000000000 --- a/content/github/building-a-strong-community/unblocking-a-user-from-your-organization.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Unblocking a user from your organization -intro: 'Organization owners can unblock a user who was previously blocked, restoring their access to the organization''s repositories.' -redirect_from: - - /articles/unblocking-a-user-from-your-organization -versions: - free-pro-team: '*' ---- - -After unblocking a user from your organization, they'll be able to contribute to your organization's repositories. - -If you selected a specific amount of time to block the user, they will be automatically unblocked when that period of time ends. For more information, see "[Blocking a user from your organization](/articles/blocking-a-user-from-your-organization)." - -{% tip %} - -**Tip**: Any settings that were removed when you blocked the user from your organization, such as collaborator status, stars, and watches, will not be restored when you unblock the user. - -{% endtip %} - -### Unblocking a user in a comment - -1. Navigate to the comment whose author you would like to unblock. -2. In the upper-right corner of the comment, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **Unblock user**. -![The horizontal kebab icon and comment moderation menu showing the unblock user option](/assets/images/help/repository/comment-menu-unblock-user.png) -3. To confirm you would like to unblock the user, click **Okay**. - -### Unblocking a user in the organization settings - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.block_users %} -5. Under "Blocked users", next to the user you'd like to unblock, click **Unblock**. -![Unblock user button](/assets/images/help/organizations/org-unblock-user-button.png) - -### Further reading - -- "[Blocking a user from your organization](/articles/blocking-a-user-from-your-organization)" -- "[Blocking a user from your personal account](/articles/blocking-a-user-from-your-personal-account)" -- "[Unblocking a user from your personal account](/articles/unblocking-a-user-from-your-personal-account)" -- "[Reporting abuse or spam](/articles/reporting-abuse-or-spam)" diff --git a/content/github/building-a-strong-community/unblocking-a-user-from-your-personal-account.md b/content/github/building-a-strong-community/unblocking-a-user-from-your-personal-account.md deleted file mode 100644 index f62dd1c2acbb..000000000000 --- a/content/github/building-a-strong-community/unblocking-a-user-from-your-personal-account.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Unblocking a user from your personal account -intro: 'If you''ve mended fences with a {% data variables.product.prodname_dotcom %} user you''ve blocked, you can unblock their account.' -redirect_from: - - /articles/unblocking-a-user-from-your-personal-account -versions: - free-pro-team: '*' ---- - -When you unblock a user, they'll be able to invite you to be a collaborator to their repositories. If they [@mention you](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams) anywhere on GitHub, you'll receive notifications. - -In repositories you own, the user will be able to collaborate normally. - -You can unblock a user in your account settings or from the user's profile page. - -### Unblocking a user in your account settings - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.blocked_users %} -3. Under "Blocked users", next to the user you'd like to unblock, click **Unblock**. -![Unblock user button](/assets/images/help/organizations/org-unblock-user-button.png) - -### Unblocking a user from their profile page - -{% data reusables.profile.user_profile_page_navigation %} -2. In the left sidebar, under the user's profile picture, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **Unblock or report user**. -![Unblock or report user link](/assets/images/help/profile/profile-unblock-or-report-user.png) -3. Click **Unblock user**. - ![Modal box with option to unblock user or report abuse](/assets/images/help/profile/profile-unblockuser.png) - -{% tip %} - -**Tip**: Settings that were removed when you blocked the user, such as collaborator status, stars, and follows, are not restored when you unblock the user. - -{% endtip %} - -### Further reading - -- "[Blocking a user from your personal account](/articles/blocking-a-user-from-your-personal-account)" -- "[Blocking a user from your organization](/articles/blocking-a-user-from-your-organization)" -- "[Unblocking a user from your organization](/articles/unblocking-a-user-from-your-organization)" -- "[Reporting abuse or spam](/articles/reporting-abuse-or-spam)" diff --git a/content/github/building-a-strong-community/using-templates-to-encourage-useful-issues-and-pull-requests.md b/content/github/building-a-strong-community/using-templates-to-encourage-useful-issues-and-pull-requests.md deleted file mode 100644 index 2463d8891ffb..000000000000 --- a/content/github/building-a-strong-community/using-templates-to-encourage-useful-issues-and-pull-requests.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Using templates to encourage useful issues and pull requests -intro: Repository maintainers can add templates in a repository to help contributors create high-quality issues and pull requests. -mapTopic: true -redirect_from: - - /github/building-a-strong-community/using-issue-and-pull-request-templates - - /articles/using-templates-to-encourage-high-quality-issues-and-pull-requests-in-your-repository/ - - /articles/using-issue-and-pull-request-templates -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/building-a-strong-community/viewing-a-wikis-history-of-changes.md b/content/github/building-a-strong-community/viewing-a-wikis-history-of-changes.md deleted file mode 100644 index e99d199b47c9..000000000000 --- a/content/github/building-a-strong-community/viewing-a-wikis-history-of-changes.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Viewing a wiki's history of changes -intro: 'Because wikis are Git repositories, every change you make is a commit that you can view.' -product: '{% data reusables.gated-features.wikis %}' -redirect_from: - - /articles/viewing-a-wiki-s-history-of-changes - - /articles/viewing-a-wikis-history-of-changes -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Viewing wiki history - -Wiki history includes: -- The user who made the change -- The commit message they provided -- When the change was made - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-wiki %} -3. Using the wiki sidebar, navigate to the page whose history you want to view. -4. At the top of the wiki, click the revision link. - ![Wiki revision link](/assets/images/help/wiki/wiki_revision_link.png) - -### Viewing previous content - -On the wiki history table, you can click a [SHA-1 hash](http://en.wikipedia.org/wiki/SHA-1) -(the sequence of letters and numbers to the far right) to see a wiki page as it -existed at a particular point in time. - -![Wiki SHA number](/assets/images/help/wiki/wiki_sha_number.png) - -### Comparing two revisions - -1. Select two rows that you want to compare. -2. At the top of the history table, click **Compare Revisions**. - ![Wiki compare revisions button](/assets/images/help/wiki/wiki_compare_revisions.png) -3. You'll see a diff of the changes showing which lines were added, removed, and -modified. - -### Reverting previous changes - -You can only revert changes if you have permission to edit the wiki. - -1. Select a row that you want to revert. -2. At the top of the history table, click **Compare Revisions**. - ![Wiki compare revisions button](/assets/images/help/wiki/wiki_compare_revisions.png) -3. You'll see a diff of the changes showing which lines were added, removed, and modified. - ![Wiki revision diff](/assets/images/help/wiki/wiki_revision_diff.png) -4. To revert the newer changes, click **Revert Changes**. - ![Wiki revert changes button](/assets/images/help/wiki/wiki_revert_changes.png) diff --git a/content/github/building-a-strong-community/viewing-users-who-are-blocked-from-your-organization.md b/content/github/building-a-strong-community/viewing-users-who-are-blocked-from-your-organization.md deleted file mode 100644 index 047ea789cc3f..000000000000 --- a/content/github/building-a-strong-community/viewing-users-who-are-blocked-from-your-organization.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Viewing users who are blocked from your organization -intro: 'You can view a list of all users whom you or other owners have blocked from your organization. If a user was blocked for a specific amount of time, you can see the amount of time they were blocked for.' -redirect_from: - - /articles/viewing-users-who-are-blocked-from-your-organization -versions: - free-pro-team: '*' ---- - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.block_users %} -5. Under "Blocked users", review the list of users who are blocked from your organization. - ![List of blocked users](/assets/images/help/settings/list-of-blocked-users-for-org.png) - -### Further reading - -- "[Blocking a user from your organization](/articles/blocking-a-user-from-your-organization)" -- "[Unblocking a user from your organization](/articles/unblocking-a-user-from-your-organization)" -- "[Viewing users you've blocked from your personal account](/articles/viewing-users-you-ve-blocked-from-your-personal-account)" diff --git a/content/github/building-a-strong-community/viewing-users-youve-blocked-from-your-personal-account.md b/content/github/building-a-strong-community/viewing-users-youve-blocked-from-your-personal-account.md deleted file mode 100644 index 0f3bae172f3b..000000000000 --- a/content/github/building-a-strong-community/viewing-users-youve-blocked-from-your-personal-account.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Viewing users you've blocked from your personal account -intro: You can view a list of all users you've blocked from your personal account. -redirect_from: - - /articles/viewing-users-you-ve-blocked-from-your-personal-account - - /articles/viewing-users-youve-blocked-from-your-personal-account -versions: - free-pro-team: '*' ---- - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.blocked_users %} -3. Under "Blocked users", review the list of users you've blocked from your account. - ![List of blocked users](/assets/images/help/settings/list-of-blocked-users.png) - -### Further reading - -- "[Blocking a user from your personal account](/articles/blocking-a-user-from-your-personal-account)" -- "[Unblocking a user from your personal account](/articles/unblocking-a-user-from-your-personal-account)" -- "[Viewing users who are blocked from your organization](/articles/viewing-users-who-are-blocked-from-your-organization)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-branches.md b/content/github/collaborating-with-issues-and-pull-requests/about-branches.md deleted file mode 100644 index d1db7475299b..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/about-branches.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: About branches -intro: 'Use a branch to isolate development work without affecting other branches in the repository. Each repository has one default branch, and can have multiple other branches. You can merge a branch into another branch using a pull request.' -redirect_from: - - /articles/working-with-protected-branches/ - - /articles/about-branches -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### About branches - -Branches allow you to develop features, fix bugs, or safely experiment with new ideas in a contained area of your repository. - -You always create a branch from an existing branch. Typically, you might create a new branch from the default branch of your repository. You can then work on this new branch in isolation from changes that other people are making to the repository. A branch you create to build a feature is commonly referred to as a feature branch or topic branch. For more information, see "[Creating and deleting branches within your repository](/articles/creating-and-deleting-branches-within-your-repository/)." - -You can also use a branch to publish a {% data variables.product.prodname_pages %} site. For more information, see "[About {% data variables.product.prodname_pages %}](/articles/what-is-github-pages)." - -You must have write access to a repository to create a branch, open a pull request, or delete and restore branches in a pull request. For more information, see "[Access permissions on {% data variables.product.prodname_dotcom %}](/github/getting-started-with-github/access-permissions-on-github)." - -### About the default branch - -{% data reusables.branches.new-repo-default-branch %} The default branch is the branch that {% data variables.product.prodname_dotcom %} displays when anyone visits your repository. The default branch is also the initial branch that Git checks out locally out when someone clones the repository. {% data reusables.branches.default-branch-automatically-base-branch %} - -By default, {% data variables.product.product_name %} names the default branch {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.23" %}`main`{% else %}`master`{% endif %} in any new repository. - -{% data reusables.branches.change-default-branch %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} - -{% data reusables.branches.set-default-branch %} - -{% endif %} - -### Working with branches - -Once you're satisfied with your work, you can open a pull request to merge the changes in the current branch (the *head* branch) into another branch (the *base* branch). For more information, see "[About pull requests](/articles/about-pull-requests)." - -After a pull request has been merged, or closed, you can delete the head branch as this is no longer needed. You must have write access in the repository to delete branches. You can't delete branches that are directly associated with open pull requests. For more information, see "[Deleting and restoring branches in a pull request](/github/administering-a-repository/deleting-and-restoring-branches-in-a-pull-request)" - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -{% data reusables.pull_requests.retargeted-on-branch-deletion %} -The following diagrams illustrate this. - - Here someone has created a branch called `feature1` from the `master` branch, and you've then created a branch called `feature2` from `feature1`. There are open pull requests for both branches. The arrows indicate the current base branch for each pull request. At this point, `feature1` is the base branch for `feature2`. If the pull request for `feature2` is merged now, the `feature2` branch will be merged into `feature1`. - - ![merge-pull-request-button](/assets/images/help/branches/pr-retargeting-diagram1.png) - -In the next diagram, someone has merged the pull request for `feature1` into the `master` branch, and they have deleted the `feature1` branch. As a result, {% data variables.product.prodname_dotcom %} has automatically retargeted the pull request for `feature2` so that its base branch is now `master`. - - ![merge-pull-request-button](/assets/images/help/branches/pr-retargeting-diagram2.png) - -Now when you merge the `feature2` pull request, it'll be merged into the `master` branch. -{% endif %} - -### Working with protected branches - -Repository administrators can enable protections on a branch. If you're working on a branch that's protected, you won't be able to delete or force push to the branch. Repository administrators can additionally enable several other protected branch settings to enforce various workflows before a branch can be merged. - -{% note %} - -**Note:** If you're a repository administrator, you can merge pull requests on branches with branch protections enabled even if the pull request does not meet the requirements, unless branch protections have been set to "Include administrators." - -{% endnote %} - -To see if your pull request can be merged, look in the merge box at the bottom of the pull request's **Conversation** tab. For more information, see "[About protected branches](/articles/about-protected-branches)." - -When a branch is protected: - -- You won't be able to delete or force push to the branch. -- If required status checks are enabled on the branch, you won't be able to merge changes into the branch until all of the required CI tests pass. For more information, see "[About status checks](/articles/about-status-checks)." -- If required pull request reviews are enabled on the branch, you won't be able to merge changes into the branch until all requirements in the pull request review policy have been met. For more information, see "[Merging a pull request](/articles/merging-a-pull-request)." -- If required review from a code owner is enabled on a branch, and a pull request modifies code that has an owner, a code owner must approve the pull request before it can be merged. For more information, see "[About code owners](/articles/about-code-owners)." -- If required commit signing is enabled on a branch, you won't be able to push any commits to the branch that are not signed and verified. For more information, see "[About commit signature verification](/articles/about-commit-signature-verification)" and "[About required commit signing](/articles/about-required-commit-signing)."{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -- If you use {% data variables.product.prodname_dotcom %} 's conflict editor to fix conflicts for a pull request that you created from a protected branch, {% data variables.product.prodname_dotcom %} helps you to create an alternative branch for the pull request, so that your resolution of the conflicts can be merged. For more information, see "[Resolving a merge conflict on {% data variables.product.prodname_dotcom %}](/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github)."{% endif %} - -### Further reading - -- "[About pull requests](/articles/about-pull-requests)" -- "[Branch](/articles/github-glossary/#branch)" in the {% data variables.product.prodname_dotcom %} glossary -- "[Branches in a Nutshell](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell)" in the Git documentation diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-collaborative-development-models.md b/content/github/collaborating-with-issues-and-pull-requests/about-collaborative-development-models.md deleted file mode 100644 index 34f8582714bf..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/about-collaborative-development-models.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: About collaborative development models -intro: The way you use pull requests depends on the type of development model you use in your project. -redirect_from: - - /articles/types-of-collaborative-development-models/ - - /articles/about-collaborative-development-models -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -There are two main types of development models with which you'd use pull requests. In the *fork and pull model*, anyone can fork an existing repository and push changes to their personal fork. You do not need permission to the source repository to push to a user-owned fork. The changes can be pulled into the source repository by the project maintainer. When you open a pull request proposing changes from your user-owned fork to a branch in the source (upstream) repository, you can allow anyone with push access to the upstream repository to make changes to your pull request. This model is popular with open source projects as it reduces the amount of friction for new contributors and allows people to work independently without upfront coordination. - -{% tip %} - -**Tip:** {% data reusables.open-source.open-source-guide-general %} {% data reusables.open-source.open-source-learning-lab %} - -{% endtip %} - -In the *shared repository model*, collaborators are granted push access to a single shared repository and topic branches are created when changes need to be made. Pull requests are useful in this model as they initiate code review and general discussion about a set of changes before the changes are merged into the main development branch. This model is more prevalent with small teams and organizations collaborating on private projects. - -### Further reading - -- "[About pull requests](/articles/about-pull-requests)" -- "[Creating a pull request from a fork](/articles/creating-a-pull-request-from-a-fork)" -- "[Allowing changes to a pull request branch created from a fork](/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-comparing-branches-in-pull-requests.md b/content/github/collaborating-with-issues-and-pull-requests/about-comparing-branches-in-pull-requests.md deleted file mode 100644 index c66689d29b11..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/about-comparing-branches-in-pull-requests.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: About comparing branches in pull requests -intro: Pull requests display diffs to compare the changes you made in your topic branch against the base branch that you want to merge your changes into. -redirect_from: - - /articles/about-comparing-branches-in-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% note %} - -**Note:** When creating your pull request, you can change the base branch that you're comparing your changes against. For more information, see "[Creating a pull request](/articles/creating-a-pull-request#changing-the-branch-range-and-destination-repository)." - -{% endnote %} - -You can view proposed changes in a pull request in the Files changed tab. - -![Pull Request Files changed tab](/assets/images/help/pull_requests/pull-request-tabs-changed-files.png) - -Rather than viewing the commits themselves, you can view the proposed changes as they'll appear in the files once the pull request is merged. The files appear in alphabetical order within the Files changed tab. Additions to the files appear in green and are prefaced by a `+` sign while content that has been removed appears in red and is prefaced by a `-` sign. - -### Diff view options - -{% tip %} - -**Tip:** If you're having a hard time understanding the context of a change, you can click **View** in the Files changed tab to view the whole file with the proposed changes. - -{% endtip %} - -You have several options for viewing a diff: -- The unified view shows updated and existing content together in a linear view. -- The split view shows old content on one side and new content on the other side. -- The rich diff view shows a preview of how the changes will look once the pull request is merged. -- The source view shows the changes in source without the formatting of the rich diff view. - -You can also choose to ignore whitespace changes to get a more accurate view of the substantial changes in a pull request. - -![Diff viewing options menu](/assets/images/help/pull_requests/diff-settings-menu.png) - -To simplify reviewing changes in a large pull request, you can filter the diff to only show selected file types, show files you are a CODEOWNER of, hide files you have already viewed, or hide deleted files. For more information, see "[Filtering files in a pull request by file type](/articles/filtering-files-in-a-pull-request)." - - ![File filter drop-down menu](/assets/images/help/pull_requests/file-filter-menu.png) - -### Three-dot and two-dot Git diff comparisons - -By default, pull requests on {% data variables.product.prodname_dotcom %} show a three-dot diff, or a comparison between the most recent version of the topic branch and the commit where the topic branch was last synced with the base branch. - -To see two committish references in a two-dot diff comparison on {% data variables.product.prodname_dotcom %}, you can edit the URL of your repository's "Comparing changes" page. For more information, see the [Git Glossary for "committish"](https://git-scm.com/docs/gitglossary#gitglossary-aiddefcommit-ishacommit-ishalsocommittish) from the _Pro Git_ book site. - -{% data reusables.repositories.two-dot-diff-comparison-example-urls %} - -A two-dot diff compares two Git committish references, such as SHAs or OIDs (Object IDs), directly with each other. On {% data variables.product.prodname_dotcom %}, the Git committish references in a two-dot diff comparison must be pushed to the same repository or its forks. - -If you want to simulate a two-dot diff in a pull request and see a comparison between the most recent versions of each branch, you can merge the base branch into your topic branch, which updates the last common ancestor between your branches. - -For more information about Git commands to compare changes, see "[Git diff options](https://git-scm.com/docs/git-diff#git-diff-emgitdiffemltoptionsgtltcommitgtltcommitgt--ltpathgt82308203)" from the _Pro Git_ book site. - -### Reasons diffs will not display -- You've exceeded the total limit of files or certain file types. For more information, see "[Limits for viewing content and diffs in a repository](/articles/limits-for-viewing-content-and-diffs-in-a-repository/#diff-limits)." -- Your file matches a rule in the repository's *.gitattributes* file to block that file from displaying by default. For more information, see "[Customizing how changed files appear on GitHub](/articles/customizing-how-changed-files-appear-on-github)." - -### Further reading - -- "[About pull requests](/articles/about-pull-requests)" -- "[About forks](/articles/about-forks)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github.md b/content/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github.md deleted file mode 100644 index b46797d67b25..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/about-conversations-on-github.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: About conversations on GitHub -intro: 'You can discuss specific projects and changes, as well as broader projects or team goals, using different types of discussions on {% data variables.product.product_name %}.' -redirect_from: - - /articles/about-discussions-in-issues-and-pull-requests/ - - /articles/about-conversations-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Discussions on {% data variables.product.product_name %} - -You can create and participate in issues, pull requests, and team discussions, depending on the type of conversation you'd like to have. - -Issues are useful for discussing specific details of a project such as bug reports and planned improvements. For more information, see "[About issues](/articles/about-issues)." Pull requests allow you to comment directly on proposed changes. For more information, see "[About pull requests](/articles/about-pull-requests)" and "[Commenting on a pull request](/articles/commenting-on-a-pull-request)." - -{% data reusables.organizations.team-discussions-purpose %} For more information, see "[About team discussions](/articles/about-team-discussions)." - -### Reacting to ideas in comments - -You can show your support or dissent for an idea in a conversation. When you add a reaction to a comment or the body of a team discussion, issue, or pull request, people subscribed to the conversation won't receive a notification. For more information about subscriptions, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}"[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications){% else %}"[Subscribing to and unsubscribing from notifications](/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications){% endif %}." - -![Example of an issue with reactions](/assets/images/help/repository/issue-reactions.png) - -{% if currentVersion == "free-pro-team@latest" %} - -{% tip %} - -**Tip:** You can also add reactions using your mobile device. - -{% endtip %} - -{% endif %} -### Following contribution guidelines - -Before you open an issue or pull request, check to see if the repository has contributing guidelines. The *CONTRIBUTING.md* file includes information about how the repository maintainer would like you to contribute ideas to the project. - -Similar to contributing guidelines, the repository maintainer may have included a template for information to include in an issue or pull request. Completing the prompts from the template may help you get a better response from maintainers. - -### Further reading - -- "[Setting up your project for healthy contributions](/articles/setting-up-your-project-for-healthy-contributions)" -- "[Using templates to encourage useful issues and pull requests](/github/building-a-strong-community/using-templates-to-encourage-useful-issues-and-pull-requests)" -- "[Moderating comments and conversations](/articles/moderating-comments-and-conversations)" -- "[Writing on {% data variables.product.prodname_dotcom %}](/articles/writing-on-github)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-forks.md b/content/github/collaborating-with-issues-and-pull-requests/about-forks.md deleted file mode 100644 index 81a8981bbed0..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/about-forks.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: About forks -intro: A fork is a copy of a repository that you manage. Forks let you make changes to a project without affecting the original repository. You can fetch updates from or submit changes to the original repository with pull requests. -redirect_from: - - /articles/about-forks -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Forking a repository is similar to copying a repository, with two major differences: - -* You can use a pull request to suggest changes from your user-owned fork to the original repository, also known as the *upstream* repository. -* You can bring changes from the upstream repository to your local fork by synchronizing your fork with the upstream repository. - -{% data reusables.repositories.you-can-fork %} - -{% data reusables.repositories.desktop-fork %} - -Deleting a fork will not delete the original upstream repository. You can make any changes you want to your fork—add collaborators, rename files, generate {% data variables.product.prodname_pages %}—with no effect on the original.{% if currentVersion == "free-pro-team@latest" %} You cannot restore a deleted forked repository. For more information, see "[Restoring a deleted repository](/articles/restoring-a-deleted-repository)."{% endif %} - -In open source projects, forks are often used to iterate on ideas or changes before they are offered back to the upstream repository. When you make changes in your user-owned fork and open a pull request that compares your work to the upstream repository, you can give anyone with push access to the upstream repository permission to push changes to your pull request branch. This speeds up collaboration by allowing repository maintainers the ability to make commits or run tests locally to your pull request branch from a user-owned fork before merging. You cannot give push permissions to a fork owned by an organization. - -{% data reusables.repositories.private_forks_inherit_permissions %} - -If you want to create a new repository from the contents of an existing repository but don't want to merge your changes upstream in the future, you can duplicate the repository or, if the repository is a template, use the repository as a template. For more information, see "[Duplicating a repository](/articles/duplicating-a-repository)" and [Creating a repository from a template](/articles/creating-a-repository-from-a-template)". - -### Further reading - -- "[About collaborative development models](/articles/about-collaborative-development-models)" -- "[Creating a pull request from a fork](/articles/creating-a-pull-request-from-a-fork)" -- [Open Source Guides](https://opensource.guide/){% if currentVersion == "free-pro-team@latest" %} -- [{% data variables.product.prodname_learning %}]({% data variables.product.prodname_learning_link %}){% endif %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-merge-conflicts.md b/content/github/collaborating-with-issues-and-pull-requests/about-merge-conflicts.md deleted file mode 100644 index d35d7142016e..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/about-merge-conflicts.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: About merge conflicts -intro: 'Merge conflicts happen when you merge branches that have competing commits, and Git needs your help to decide which changes to incorporate in the final merge.' -redirect_from: - - /articles/about-merge-conflicts -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Git can often resolve differences between branches and merge them automatically. Usually, the changes are on different lines, or even in different files, which makes the merge simple for computers to understand. However, sometimes there are competing changes that Git can't resolve without your help. Often, merge conflicts happen when people make different changes to the same line of the same file, or when one person edits a file and another person deletes the same file. - -You must resolve all merge conflicts before you can merge a pull request on {% data variables.product.product_name %}. If you have a merge conflict between the compare branch and base branch in your pull request, you can view a list of the files with conflicting changes above the **Merge pull request** button. The **Merge pull request** button is deactivated until you've resolved all conflicts between the compare branch and base branch. - -![merge conflict error message](/assets/images/help/pull_requests/merge_conflict_error_on_github.png) - -### Resolving merge conflicts - -To resolve a merge conflict, you must manually edit the conflicted file to select the changes that you want to keep in the final merge. There are a couple of different ways to resolve a merge conflict: - -- If your merge conflict is caused by competing line changes, such as when people make different changes to the same line of the same file on different branches in your Git repository, you can resolve it on {% data variables.product.product_name %} using the conflict editor. For more information, see "[Resolving a merge conflict on {% data variables.product.prodname_dotcom %}](/articles/resolving-a-merge-conflict-on-github)." -- For all other types of merge conflicts, you must resolve the merge conflict in a local clone of the repository and push the change to your branch on {% data variables.product.product_name %}. You can use the command line or a tool like [{% data variables.product.prodname_desktop %}](https://desktop.github.com/) to push the change. For more information, see "[Resolving a merge conflict on the command line](/articles/resolving-a-merge-conflict-using-the-command-line)." - -If you have a merge conflict on the command line, you cannot push your local changes to {% data variables.product.product_name %} until you resolve the merge conflict locally on your computer. If you try merging branches on the command line that have a merge conflict, you'll get an error message. For more information, see "[Resolving a merge conflict using the command line](/articles/resolving-a-merge-conflict-using-the-command-line/)." -```shell -$ git merge BRANCH-NAME -> Auto-merging styleguide.md -> CONFLICT (content): Merge conflict in styleguide.md -> Automatic merge failed; fix conflicts and then commit the result -``` - -### Further reading - -- "[About pull request merges](/articles/about-pull-request-merges/)" -- "[About pull requests](/articles/about-pull-requests/)" -- "[Resolving a merge conflict using the command line](/articles/resolving-a-merge-conflict-using-the-command-line)" -- "[Resolving a merge conflict on GitHub](/articles/resolving-a-merge-conflict-on-github)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-merges.md b/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-merges.md deleted file mode 100644 index 5208e81726e1..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-merges.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: About pull request merges -intro: 'You can [merge pull requests](/articles/merging-a-pull-request) by retaining all the commits in a feature branch, squashing all commits into a single commit, or by rebasing individual commits from the `head` branch onto the `base` branch.' -redirect_from: - - /articles/about-pull-request-merge-squashing/ - - /articles/about-pull-request-merges -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.pull_requests.default_merge_option %} - -### Squash and merge your pull request commits - -{% data reusables.pull_requests.squash_and_merge_summary %} - -#### Merge message for a squash merge - -When you squash and merge, {% data variables.product.prodname_dotcom %} generates a commit message which you can change if you want to. The message default depends on whether the pull request contains multiple commits or just one. - -Number of commits | Summary | Description | ------------------ | ------- | ----------- | -One commit | The title of the commit message for the single commit, followed by the pull request number | The body text of the commit message for the single commit -More than one commit | The pull request title, followed by the pull request number | A list of the commit messages for all of the squashed commits, in date order - -#### Squashing and merging a long-running branch - -If you plan to continue work on the [head branch](/github/getting-started-with-github/github-glossary#head-branch) of a pull request after the pull request is merged, we recommend you don't squash and merge the pull request. - -When you create a pull request, {% data variables.product.prodname_dotcom %} identifies the most recent commit that is on both the head branch and the [base branch](/github/getting-started-with-github/github-glossary#base-branch): the common ancestor commit. When you squash and merge the pull request, {% data variables.product.prodname_dotcom %} creates a commit on the base branch that contains all of the changes you made on the head branch since the common ancestor commit. - -Because this commit is only on the base branch and not the head branch, the common ancestor of the two branches remains unchanged. If you continue to work on the head branch, then create a new pull request between the two branches, the pull request will include all of the commits since the common ancestor, including commits that you squashed and merged in the previous pull request. If there are no conflicts, you can safely merge these commits. However, this workflow makes merge conflicts more likely. If you continue to squash and merge pull requests for a long-running head branch, you will have to resolve the same conflicts repeatedly. - -### Rebase and merge your pull request commits - -{% data reusables.pull_requests.rebase_and_merge_summary %} - -You aren't able to automatically rebase and merge on {% data variables.product.product_location %} when: -- The pull request has merge conflicts. -- Rebasing the commits from the base branch into the head branch runs into conflicts. -- Rebasing the commits is considered "unsafe," such as when a rebase is possible without merge conflicts but would produce a different result than a merge would. - -If you still want to rebase the commits but can't rebase and merge automatically on {% data variables.product.product_location %} you must: -- Rebase the topic branch (or head branch) onto the base branch locally on the command line -- [Resolve any merge conflicts on the command line](/articles/resolving-a-merge-conflict-using-the-command-line/). -- Force-push the rebased commits to the pull request's topic branch (or remote head branch). - -Anyone with write permissions in the repository, can then [merge the changes](/articles/merging-a-pull-request/) using the rebase and merge button on {% data variables.product.product_location %}. - -### Further reading - -- "[About pull requests](/articles/about-pull-requests/)" -- "[Addressing merge conflicts](/articles/addressing-merge-conflicts)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-reviews.md b/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-reviews.md deleted file mode 100644 index 426a98eba6cc..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/about-pull-request-reviews.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: About pull request reviews -intro: 'Reviews allow collaborators to comment on the changes proposed in pull requests, approve the changes, or request further changes before the pull request is merged. Repository administrators can require that all pull requests are approved before being merged.' -redirect_from: - - /articles/about-pull-request-reviews -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About pull request reviews - -After a pull request is opened, anyone with *read* access can review and comment on the changes it proposes. You can also suggest specific changes to lines of code, which the author can apply directly from the pull request. For more information, see "[Reviewing proposed changes in a pull request](/articles/reviewing-proposed-changes-in-a-pull-request)." - -Repository owners and collaborators can request a pull request review from a specific person. Organization members can also request a pull request review from a team with read access to the repository. For more information, see "[Requesting a pull request review](/articles/requesting-a-pull-request-review)." {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %}You can specify a subset of team members to be automatically assigned in the place of the whole team. For more information, see "[Managing code review assignment for your team](/github/setting-up-and-managing-organizations-and-teams/managing-code-review-assignment-for-your-team)."{% endif %} - -Reviews allow for discussion of proposed changes and help ensure that the changes meet the repository's contributing guidelines and other quality standards. You can define which individuals or teams own certain types or areas of code in a CODEOWNERS file. When a pull request modifies code that has a defined owner, that individual or team will automatically be requested as a reviewer. For more information, see "[About code owners](/articles/about-code-owners/)." - -{% if currentVersion == "free-pro-team@latest" %}You can schedule reminders for pull requests that need to be reviewed. For more information, see "[Managing scheduled reminders for pull requests](/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-pull-requests)."{% endif %} - -![Header of review requesting changes with line comments](/assets/images/help/pull_requests/review-header-with-line-comment.png) - -A review has three possible statuses: -- **Comment**: Submit general feedback without explicitly approving the changes or requesting additional changes. -- **Approve**: Submit feedback and approve merging the changes proposed in the pull request. -- **Request changes**: Submit feedback that must be addressed before the pull request can be merged. - -![Image of review statuses](/assets/images/help/pull_requests/pull-request-review-statuses.png) - -{% data reusables.repositories.request-changes-tips %} - -You can view all of the reviews a pull request has received in the Conversation timeline, and you can see reviews by repository owners and collaborators in the pull request's merge box. - -![Image of reviews in a merge box](/assets/images/help/pull_requests/merge_box/pr-reviews-in-merge-box.png) - -{% data reusables.search.requested_reviews_search_tip %} - -{% data reusables.pull_requests.resolving-conversations %} - -### Required reviews - -{% data reusables.pull_requests.required-reviews-for-prs-summary %} - -For more information, see "[About required reviews for pull requests](/articles/about-required-reviews-for-pull-requests)." - -{% tip %} - -**Tip**: If necessary, people with *admin* or *write* access to a repository can dismiss a pull request review. For more information, see "[Dismissing a pull request review](/articles/dismissing-a-pull-request-review)." - -{% endtip %} - -### Further reading - -- "[Reviewing proposed changes in a pull request](/articles/reviewing-proposed-changes-in-a-pull-request)" -- "[Enabling required reviews for pull requests](/articles/enabling-required-reviews-for-pull-requests)" -- "[Viewing a pull request review](/articles/viewing-a-pull-request-review)" -- "[Setting guidelines for repository contributors](/articles/setting-guidelines-for-repository-contributors)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-pull-requests.md b/content/github/collaborating-with-issues-and-pull-requests/about-pull-requests.md deleted file mode 100644 index 0345e2af7d9e..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/about-pull-requests.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: About pull requests -intro: 'Pull requests let you tell others about changes you''ve pushed to a branch in a repository on {% data variables.product.product_name %}. Once a pull request is opened, you can discuss and review the potential changes with collaborators and add follow-up commits before your changes are merged into the base branch.' -redirect_from: - - /articles/using-pull-requests/ - - /articles/about-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About pull requests - -{% note %} - -**Note:** When working with pull requests, keep the following in mind: -* If you're working in the [shared repository model](/articles/about-collaborative-development-models), we recommend that you use a topic branch for your pull request. While you can send pull requests from any branch or commit, with a topic branch you can push follow-up commits if you need to update your proposed changes. -* When pushing commits to a pull request, don't force push. Force pushing can corrupt your pull request. - -{% endnote %} - -After initializing a pull request, you'll see a review page that shows a high-level overview of the changes between your branch (the compare branch) and the repository's base branch. You can add a summary of the proposed changes, review the changes made by commits, add labels, milestones, and assignees, and @mention individual contributors or teams. For more information, see "[Creating a pull request](/articles/creating-a-pull-request)." - -Once you've created a pull request, you can push commits from your topic branch to add them to your existing pull request. These commits will appear in chronological order within your pull request and the changes will be visible in the "Files changed" tab. - -Other contributors can review your proposed changes, add review comments, contribute to the pull request discussion, and even add commits to the pull request. - -{% if currentVersion == "free-pro-team@latest" %} -You can see information about the branch's current deployment status and past deployment activity on the "Conversation" tab. For more information, see "[Viewing deployment activity for a repository](/articles/viewing-deployment-activity-for-your-repository)." -{% endif %} - -After you're happy with the proposed changes, you can merge the pull request. If you're working in a shared repository model, you create a pull request and you, or someone else, will merge your changes from your feature branch into the base branch you specify in your pull request. For more information, see "[Merging a pull request](/articles/merging-a-pull-request)." - -{% data reusables.pull_requests.required-checks-must-pass-to-merge %} - -{% data reusables.pull_requests.close-issues-using-keywords %} - -{% tip %} - -**Tips:** -- To toggle between collapsing and expanding all outdated review comments in a pull request, hold down optionAltAlt and click **Show outdated** or **Hide outdated**. For more shortcuts, see "[Keyboard shortcuts](/articles/keyboard-shortcuts)." -- You can squash commits when merging a pull request to gain a more streamlined view of changes. For more information, see "[About pull request merges](/articles/about-pull-request-merges)." - -{% endtip %} - -You can visit your dashboard to quickly find links to recently updated pull requests you're working on or subscribed to. For more information, see "[About your personal dashboard](/articles/about-your-personal-dashboard)." - -### Draft pull requests - -{% data reusables.gated-features.draft-prs %} - -When you create a pull request, you can choose to create a pull request that is ready for review or a draft pull request. Draft pull requests cannot be merged, and code owners are not automatically requested to review draft pull requests. For more information about creating a draft pull request, see "[Creating a pull request](/articles/creating-a-pull-request)" and "[Creating a pull request from a fork](/articles/creating-a-pull-request-from-a-fork)." - -{% data reusables.pull_requests.mark-ready-review %} You can convert a pull request to a draft at any time. For more information, see "[Changing the stage of a pull request](/articles/changing-the-stage-of-a-pull-request)." - -### Differences between commits on compare and pull request pages - -The compare and pull request pages use different methods to calculate the diff for changed files: - -- Compare pages show the diff between the tip of the head ref and the current common ancestor (that is, the merge base) of the head and base ref. -- Pull request pages show the diff between the tip of the head ref and the common ancestor of the head and base ref at the time when the pull request was created. Consequently, the merge base used for the comparison might be different. - -### Further reading - -- "[Pull request](/articles/github-glossary/#pull-request)" in the {% data variables.product.prodname_dotcom %} glossary -- "[About branches](/articles/about-branches)" -- "[Commenting on a pull request](/articles/commenting-on-a-pull-request)" -- "[Merging a pull request](/articles/merging-a-pull-request)" -- "[Closing a pull request](/articles/closing-a-pull-request)" -- "[Deleting unused branches](/articles/deleting-unused-branches)" -- "[About pull request merges](/articles/about-pull-request-merges)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/about-status-checks.md b/content/github/collaborating-with-issues-and-pull-requests/about-status-checks.md deleted file mode 100644 index dacac35e51df..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/about-status-checks.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: About status checks -intro: Status checks let you know if your commits meet the conditions set for the repository you're contributing to. -redirect_from: - - /articles/about-statuses/ - - /articles/about-status-checks -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Status checks are based on external processes, such as continuous integration builds, which run for each push you make to a repository. You can see the *pending*, *passing*, or *failing* state of status checks next to individual commits in your pull request. - -![List of commits and statuses](/assets/images/help/pull_requests/commit-list-statuses.png) - -Anyone with write permissions to a repository can set the state for any status check in the repository. - -You can see the overall state of the last commit to a branch on your repository's branches page or in your repository's list of pull requests. - -{% data reusables.pull_requests.required-checks-must-pass-to-merge %} - -### Types of status checks on {% data variables.product.product_name %} - -There are two types of status checks on {% data variables.product.product_name %}: - -- Checks -- Statuses - -_Checks_ are different from _statuses_ in that they provide line annotations, more detailed messaging, and are only available for use with {% data variables.product.prodname_github_app %}s. - -Organization owners and users with push access to a repository can create checks and statuses with {% data variables.product.product_name %}'s API. For more information, see "[Checks](/v3/checks/)" and "[Statuses](/v3/repos/statuses/)." - -### Checks - -When _checks_ are set up in a repository, pull requests have a **Checks** tab where you can view detailed build output from status checks and rerun failed checks. - -![Status checks within a pull request](/assets/images/help/pull_requests/checks.png) - -When a specific line in a commit causes a check to fail, you will see details about the failure, warning, or notice next to the relevant code in the **Files** tab of the pull request. - -![Details of a status check](/assets/images/help/pull_requests/checks-detailed.png) - -You can navigate between the checks summaries for various commits in a pull request, using the commit drop-down menu under the **Conversation** tab. - -![Check summaries for different commits in a drop-down menu](/assets/images/help/pull_requests/checks-summary-for-various-commits.png) - -#### Skipping and requesting checks for individual commits - -When a repository is set to automatically request checks for pushes, you can choose to skip checks for an individual commit you push. When a repository is _not_ set to automatically request checks for pushes, you can request checks for an individual commit you push. For more information on these settings, see "[Check Suites](/rest/reference/checks#update-repository-preferences-for-check-suites)." - -To skip or request checks for your commit, add one of the following trailer lines to the end of your commit message: - -- To _skip checks_ for a commit, type your commit message and a short, meaningful description of your changes. After your commit description, instead of a closing quotation, add two empty lines followed by `skip-checks: true`: - ```shell - $ git commit -m "Update README. - > - > - skip-checks: true - ``` - - To _request_ checks for a commit, type your commit message and a short, meaningful description of your changes. After your commit description, instead of a closing quotation, add two empty lines followed by `request-checks: true`: - ```shell - $ git commit -m "Refactor usability tests. - > - > - request-checks: true - ``` - diff --git a/content/github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts.md b/content/github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts.md deleted file mode 100644 index 4796d0c19943..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Addressing merge conflicts -intro: 'If your changes have merge conflicts with the base branch, you must address the merge conflicts before you can merge your pull request''s changes.' -mapTopic: true -redirect_from: - - /articles/addressing-merge-conflicts -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md b/content/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md deleted file mode 100644 index 027319e06f19..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Allowing changes to a pull request branch created from a fork -intro: 'For greater collaboration, you can allow commits on branches you''ve created from forks owned by your user account.' -redirect_from: - - /articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork -permissions: People with push access to the upstream repository of a fork owned by a user account can commit to the forked branches. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Only pull request authors can give upstream repository maintainers, or those with push access to the upstream repository, permission to make commits to their pull request's compare branch in a user-owned fork. To learn more about upstream repositories, see "[About forks](/articles/about-forks)." - -Pull request authors can give these permissions when they initially create a pull request from a user-owned fork or after they create the pull request. For more information, see "[Creating a pull request from a fork](/articles/creating-a-pull-request-from-a-fork)." - -You can set commit permissions when you first create a pull request from a fork. For more information, see "[Creating a pull request from a fork](/articles/creating-a-pull-request-from-a-fork)." Additionally, you can modify an existing pull request to let repository maintainers make commits to your branch. - -### Enabling repository maintainer permissions on existing pull requests - -1. On {% data variables.product.product_name %}, navigate to the main page of the upstream repository of your pull request. -2. Under the upstream repository name, click {% octicon "git-pull-request" aria-label="The pull request icon" %} **Pull requests**. -![Issues and pull requests tab selection](/assets/images/help/repository/repo-tabs-pull-requests.png) -3. In the list of pull requests, navigate to the pull request that you'd like to allow commits on. -{% data reusables.repositories.allow-maintainers-user-forks %} - - ![allow-maintainers-to-make-edits-sidebar-checkbox](/assets/images/help/pull_requests/allow-maintainers-to-make-edits-sidebar-checkbox.png) - -### Further reading - -- "[Committing changes to a pull request branch created from a fork](/articles/committing-changes-to-a-pull-request-branch-created-from-a-fork)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/approving-a-pull-request-with-required-reviews.md b/content/github/collaborating-with-issues-and-pull-requests/approving-a-pull-request-with-required-reviews.md deleted file mode 100644 index ec0f2b6c1d49..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/approving-a-pull-request-with-required-reviews.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Approving a pull request with required reviews -intro: 'If your repository requires reviews, pull requests must have a specific number of approving reviews from people with _write_ or _admin_ permissions in the repository before they can be merged.' -redirect_from: - - /articles/approving-a-pull-request-with-required-reviews -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -For more information about required reviews, see "[About required reviews for pull requests](/articles/about-required-reviews-for-pull-requests)." - -You can comment on a pull request, approve the changes, or request improvements before approving. For more information, see "[About required reviews for pull requests](/articles/about-required-reviews-for-pull-requests)" and "[Reviewing proposed changes in a pull request](/articles/reviewing-proposed-changes-in-a-pull-request)." - -{% data reusables.search.requested_reviews_search %} - -{% tip %} - -**Tip**: If a pull request you approved has changed significantly, you can dismiss your review. The pull request will need a new review before it can be merged. For more information, see "[Dismissing a pull request review](/articles/dismissing-a-pull-request-review)." - -{% endtip %} - -{% data reusables.repositories.sidebar-pr %} -{% data reusables.repositories.choose-pr-review %} -{% data reusables.repositories.changed-files %} -4. Review the changes in the pull request, and optionally, [comment on specific lines](/articles/reviewing-proposed-changes-in-a-pull-request/#starting-a-review). -{% data reusables.repositories.review-changes %} -{% data reusables.repositories.review-summary-comment %} -7. Select **Approve** to approve merging the changes proposed in the pull request. -{% data reusables.repositories.submit-review %} - -{% data reusables.repositories.request-changes-tips %} - -### Further reading - -- "[About required reviews for pull requests](/articles/about-required-reviews-for-pull-requests)" -- "[Reviewing proposed changes in a pull request](/articles/reviewing-proposed-changes-in-a-pull-request)" -- "[Commenting on a pull request](/articles/commenting-on-a-pull-request)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/changing-the-base-branch-of-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/changing-the-base-branch-of-a-pull-request.md deleted file mode 100644 index 80e6bb425e8b..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/changing-the-base-branch-of-a-pull-request.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Changing the base branch of a pull request -intro: 'After a pull request is opened, you can change the base branch to compare the changes in the pull request against a different branch.' -redirect_from: - - /articles/changing-the-base-branch-of-a-pull-request -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% warning %} - -**Warning**: When you change the base branch of your pull request, some commits may be removed from the timeline. Review comments may also become outdated, as the line of code that the comment referenced may no longer be part of the changes in the pull request. - -{% endwarning %} - -{% data reusables.repositories.sidebar-pr %} -2. In the "Pull Requests" list, click the pull request you'd like to modify. -3. Next to the pull request's title, click **Edit**. ![Pull Request edit button](/assets/images/help/pull_requests/pull-request-edit.png) -4. In the base branch drop-down menu, select the base branch you'd like to [compare changes against](/github/committing-changes-to-your-project/comparing-commits#comparing-branches). ![Base branch drop-down menu ](/assets/images/help/pull_requests/pull-request-edit-base-branch.png) -5. Read the information about changing the base branch and click **Change base**. ![Base branch change confirmation button ](/assets/images/help/pull_requests/pull-request-base-branch-confirm.png) - -{% tip %} - -**Tip:** When you open a pull request, {% data variables.product.product_name %} will set the base to the commit that branch references. If the branch is updated in the future, {% data variables.product.product_name %} will not update the base branch's commit. - -{% endtip %} - -### Further reading - -- "[Creating a pull request](/articles/creating-a-pull-request)" -- "[About pull requests](/articles/about-pull-requests)" -- "[Reviewing proposed changes in a pull request](/articles/reviewing-proposed-changes-in-a-pull-request)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request.md deleted file mode 100644 index 4d3707edab93..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Changing the stage of a pull request -intro: 'You can mark a draft pull request as ready for review{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} or convert a pull request to a draft{% endif %}.' -permissions: People with write permissions to a repository and pull request authors can change the stage of a pull request. -product: '{% data reusables.gated-features.draft-prs %}' -redirect_from: - - /articles/changing-the-stage-of-a-pull-request -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Marking a pull request as ready for review - -{% data reusables.pull_requests.mark-ready-review %} - -{% data reusables.repositories.sidebar-pr %} -2. In the "Pull requests" list, click the pull request you'd like to mark as ready for review. -3. In the merge box, click **Ready for review**. - ![Ready for review button](/assets/images/help/pull_requests/ready-for-review-button.png) - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} - -### Converting a pull request to a draft - -You can convert a pull request to a draft at any time. For example, if you accidentally opened a pull request instead of a draft, or if you've received feedback on your pull request that needs to be addressed, you can convert the pull request to a draft to indicate further changes are needed. No one can merge the pull request until you mark the pull request as ready for review again. People who are already subscribed to notifications for the pull request will not be unsubscribed when you convert the pull request to a draft. - -{% data reusables.repositories.sidebar-pr %} -2. In the "Pull requests" list, click the pull request you'd like to convert to a draft. -3. In the right sidebar, under "Reviewers," click **Convert to draft**. - ![Convert to draft link](/assets/images/help/pull_requests/convert-to-draft-link.png) -4. Click **Convert to draft**. - ![Convert to draft confirmation](/assets/images/help/pull_requests/convert-to-draft-dialog.png) - -{% endif %} - -### Further reading - -- "[About pull requests](/github/collaborating-with-issues-and-pull-requests/about-pull-requests)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally.md b/content/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally.md deleted file mode 100644 index 5a17c2db0091..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Checking out pull requests locally -intro: 'When someone sends you a pull request from a fork or branch of your repository, you can merge it locally to resolve a merge conflict or to test and verify the changes before merging on {% data variables.product.product_name %}.' -redirect_from: - - /articles/checking-out-pull-requests-locally -permissions: Anyone with write access to a repository can pull a remote pull request down locally. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - {% note %} - - **Note:** Pull request authors can give upstream repository maintainers, or those with push access to the upstream repository, permission to make commits to their pull request's compare branch in a user-owned fork. For more information, see "[Allowing changes to a pull request branch created from a fork](/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork)." - - {% endnote %} - -### Modifying an active pull request locally - -{% data reusables.repositories.sidebar-pr %} -2. In the list of pull requests, click the pull request you'd like to modify.{% if currentVersion == "free-pro-team@latest" %} -3. To choose where you'd like to open the pull request, select the **Open with {% octicon "triangle-down" aria-label="The down triangle icon" %}** drop-down and click one of the tabs. - ![Link to access command line pull request instructions](/assets/images/help/pull_requests/open-with-button.png){% else %} -3. In the merge box, click **command line instructions**. Follow the sequence of steps to bring down the proposed pull request. - ![Link to access command line pull request instructions](/assets/images/help/pull_requests/pull_request_show_command_line_merge.png) -4. Optionally, to view proposed changes in {% data variables.product.prodname_desktop %}, click **open this in {% data variables.product.prodname_desktop %}**. - ![Link to open a pull request locally in Desktop](/assets/images/help/desktop/open-pr-in-desktop.png){% endif %} - -### Modifying an inactive pull request locally - -If a pull request's author is unresponsive to requests or has deleted their fork, the pull request can still be merged. However, if you want to make changes to a pull request and the author is not responding, you'll need to perform some additional steps to update the pull request. - -Once a pull request is opened, {% data variables.product.product_name %} stores all of the changes remotely. In other words, commits in a pull request are available in a repository even before the pull request is merged. You can fetch an open pull request and recreate it as your own. - -Anyone can work with a previously opened pull request to continue working on it, test it out, or even open a new pull request with additional changes. However, only collaborators with push access can merge pull requests. - -{% data reusables.repositories.sidebar-issue-pr %} -2. In the "Pull Requests" list, click the pull request you'd like to merge. -3. Find the ID number of the inactive pull request. This is the sequence of digits right after the pull request's title. - ![Pull Requests ID number](/assets/images/help/pull_requests/pull_request_id_number.png) -{% data reusables.command_line.open_the_multi_os_terminal %} -5. Fetch the reference to the pull request based on its ID number, creating a new branch in the process. - ```shell - $ git fetch origin pull/ID/head:BRANCHNAME - ``` -6. Switch to the new branch that's based on this pull request: - ```shell - [main] $ git checkout BRANCHNAME - > Switched to a new branch 'BRANCHNAME' - ``` -7. At this point, you can do anything you want with this branch. You can run some local tests, or merge other branches into the branch. -8. When you're ready, you can push the new branch up: - ```shell - [pull-inactive-pull-request] $ git push origin BRANCHNAME - > Counting objects: 32, done. - > Delta compression using up to 8 threads. - > Compressing objects: 100% (26/26), done. - > Writing objects: 100% (29/29), 74.94 KiB | 0 bytes/s, done. - > Total 29 (delta 8), reused 0 (delta 0) - > To https://{% data variables.command_line.codeblock %}/username/repository.git - > * [new branch] BRANCHNAME -> BRANCHNAME - ``` -9. [Create a new pull request](/articles/creating-a-pull-request) with your new branch. - -### Error: Failed to push some refs - -The remote `refs/pull/` namespace is *read-only*. If you try to push any commits there, you'll see this error: -```shell -! [remote rejected] HEAD -> refs/pull/1/head (deny updating a hidden ref) -error: failed to push some refs to 'git@github.local:USERNAME/REPOSITORY.git' -``` - -{% tip %} - -**Tip:** When you remove or rename a remote reference, your local `refs/pull/origin/` namespace will not be affected by calls to `git-remote`. - -{% endtip %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/closing-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/closing-a-pull-request.md deleted file mode 100644 index 070612bd21c3..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/closing-a-pull-request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Closing a pull request -intro: 'You may choose to *close* a pull request without [merging it into the upstream branch](/articles/merging-a-pull-request). This can be handy if the changes proposed in the branch are no longer needed, or if another solution has been proposed in another branch.' -redirect_from: - - /articles/closing-a-pull-request -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% tip %} - -**Tip**: If you opened a pull request with the wrong base branch, rather than closing it out and opening a new one, you can instead change the base branch. For more information, see "[Changing the base branch of a pull request](/articles/changing-the-base-branch-of-a-pull-request)." - -{% endtip %} - -{% data reusables.repositories.sidebar-pr %} -2. In the "Pull Requests" list, click the pull request you'd like to close. -3. At the bottom of the pull request, below the comment box, click **Close pull request**. - ![The close Pull Request button](/assets/images/help/pull_requests/pullrequest-closebutton.png) -4. Optionally, [delete the branch](/articles/deleting-unused-branches). This keeps the list of branches in your repository tidy. diff --git a/content/github/collaborating-with-issues-and-pull-requests/collaborating-on-repositories-with-code-quality-features.md b/content/github/collaborating-with-issues-and-pull-requests/collaborating-on-repositories-with-code-quality-features.md deleted file mode 100644 index 0d6e6b63f5bd..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/collaborating-on-repositories-with-code-quality-features.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Collaborating on repositories with code quality features -intro: 'Workflow quality features like statuses, {% if enterpriseServerVersions contains currentVersion %}pre-receive hooks, {% endif %}protected branches, and required status checks help collaborators make contributions that meet conditions set by organization and repository administrators.' -mapTopic: true -redirect_from: - - /articles/collaborating-on-repositories-with-code-quality-features-enabled/ - - /articles/collaborating-on-repositories-with-code-quality-features -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request.md deleted file mode 100644 index a8d2506a6e78..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Commenting on a pull request -redirect_from: - - /articles/adding-commit-comments/ - - /articles/commenting-on-the-diff-of-a-pull-request/ - - /articles/commenting-on-differences-between-files/ - - /articles/commenting-on-a-pull-request -intro: 'After you open a pull request in a repository, collaborators or team members can comment on the comparison of files between the two specified branches, or leave general comments on the project as a whole.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About pull request comments - -You can comment on a pull request's **Conversation** tab to leave general comments, questions, or props. You can also suggest changes that the author of the pull request can apply directly from your comment. - -![Pull Request conversation](/assets/images/help/pull_requests/conversation.png) - -You can also comment on specific sections of a file on a pull request's **Files changed** tab in the form of individual line comments or as part of a [pull request review](/articles/about-pull-request-reviews). Adding line comments is a great way to discuss questions about implementation or provide feedback to the author. - -For more information on adding line comments to a pull request review, see ["Reviewing proposed changes in a pull request."](/articles/reviewing-proposed-changes-in-a-pull-request) - -{% note %} - -**Note:** If you reply to a pull request via email, your comment will be added on the **Conversation** tab and will not be part of a pull request review. - -{% endnote %} - -To reply to an existing line comment, you'll need to navigate to the comment on either the **Conversation** tab or **Files changed** tab and add an additional line comment below it. - -{% tip %} - -**Tips:** -- Pull request comments support the same [formatting](/categories/writing-on-github) as regular comments on {% data variables.product.product_name %}, such as @mentions, emoji, and references. -- You can [add reactions](/articles/about-conversations-on-github#reacting-to-ideas-in-comments) to comments in pull requests in the **Files changed** tab. - -{% endtip %} - -### Adding line comments to a pull request - -{% data reusables.repositories.sidebar-pr %} -2. In the list of pull requests, click the pull request where you'd like to leave line comments. -{% data reusables.repositories.changed-files %} -{% data reusables.repositories.start-line-comment %} -{% data reusables.repositories.type-line-comment %} -{% data reusables.repositories.suggest-changes %} -5. When you're done, click **Add single comment**. - ![Inline comment window](/assets/images/help/commits/inline-comment.png) - -Anyone watching the pull request or repository will receive a notification of your comment. - -{% data reusables.pull_requests.resolving-conversations %} - -### Further reading - -- "[Creating a permanent link to a code snippet](/articles/creating-a-permanent-link-to-a-code-snippet/)" -{% if currentVersion == "free-pro-team@latest" %}- "[Reporting abuse or spam](/articles/reporting-abuse-or-spam)" -{% endif %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md b/content/github/collaborating-with-issues-and-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md deleted file mode 100644 index 99e4880038af..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/committing-changes-to-a-pull-request-branch-created-from-a-fork.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Committing changes to a pull request branch created from a fork -intro: You can commit changes on a pull request branch that was created from a fork of your repository with permission from the pull request creator. -redirect_from: - - /articles/committing-changes-to-a-pull-request-branch-created-from-a-fork -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can only make commits on pull request branches that: -- are opened in a repository that you have push access to and that were created from a fork of that repository -- are on a user-owned fork -- have permission granted from the pull request creator -- don't have [branch restrictions](/articles/about-branch-restrictions) that will prevent you from committing - -Only the user who created the pull request can give you permission to push commits to the user-owned fork. For more information, see "[Allowing changes to a pull request branch created from a fork](/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork)." - -{% note %} - -**Note:** You can also make commits to a pull request branch from a fork of your repository through {% data variables.product.product_location %} by creating your own copy (or fork) of the fork of your repository and committing changes to the same head branch that the original pull request changes were created on. For some general guidelines, see "[Creating a pull request from a fork](/articles/creating-a-pull-request-from-a-fork)." - -{% endnote %} - -1. On {% data variables.product.product_name %}, navigate to the main page of the fork (or copy of your repository) where the pull request branch was created. -{% data reusables.repositories.copy-clone-url %} -{% data reusables.command_line.open_the_multi_os_terminal %} - {% tip %} - - **Tip:** If you prefer to clone the fork using {% data variables.product.prodname_desktop %}, then see "[Cloning a repository to {% data variables.product.prodname_desktop %}](/articles/cloning-a-repository/#cloning-a-repository-to-github-desktop)." - - {% endtip %} -4. Change the current working directory to the location where you want to download the cloned directory. - ```shell - $ cd open-source-projects - ``` -5. Type `git clone`, and then paste the URL you copied in Step 3. - ```shell - $ git clone https://{% data variables.command_line.codeblock %}/USERNAME/FORK-OF-THE-REPOSITORY - ``` -6. Press **Enter**. Your local clone will be created. - ```shell - $ git clone https://{% data variables.command_line.codeblock %}/USERNAME/FORK-OF-THE-REPOSITORY - > Cloning into `FORK-OF-THE-REPOSITORY`... - > remote: Counting objects: 10, done. - > remote: Compressing objects: 100% (8/8), done. - > remove: Total 10 (delta 1), reused 10 (delta 1) - > Unpacking objects: 100% (10/10), done. - ``` - {% tip %} - - **Tip:** The error message "fatal: destination path 'REPOSITORY-NAME' already exists and is not an empty directory" means that your current working directory already contains a repository with the same name. To resolve the error, you must clone the fork in a different directory. - - {% endtip %} -7. Navigate into your new cloned repository. - ```shell - $ cd FORK-OF-THE-REPOSITORY - ``` -7. Switch branches to the compare branch of the pull request where the original changes were made. If you navigate to the original pull request, you'll see the compare branch at the top of the pull request. -![compare-branch-example](/assets/images/help/pull_requests/compare-branch-example.png) - In this example, the compare branch is `test-branch`: - ```shell - $ git checkout test-branch - ``` - - {% tip %} - - **Tip:** For more information about pull request branches, including examples, see "[Creating a Pull Request](/articles/creating-a-pull-request/#changing-the-branch-range-and-destination-repository)." - - {% endtip %} -8. At this point, you can do anything you want with this branch. You can push new commits to it, run some local tests, or merge other branches into the branch. Make modifications as you like. -9. After you commit your changes to the head branch of the pull request you can push your changes up to the original pull request directly. In this example, the head branch is `test-branch`: - ```shell - $ git push origin test-branch - > Counting objects: 32, done. - > Delta compression using up to 8 threads. - > Compressing objects: 100% (26/26), done. - > Writing objects: 100% (29/29), 74.94 KiB | 0 bytes/s, done. - > Total 29 (delta 8), reused 0 (delta 0) - > To https://{% data variables.command_line.codeblock %}/USERNAME/FORK-OF-THE-REPOSITORY.git - > 12da2e9..250e946 test-branch -> test-branch - ``` - -Your new commits will be reflected on the original pull request on {% data variables.product.product_location %}. - -### Further Reading - -- "[About forks](/articles/about-forks)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork.md b/content/github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork.md deleted file mode 100644 index 846528296ee6..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Configuring a remote for a fork -intro: 'You must configure a remote that points to the upstream repository in Git to [sync changes you make in a fork](/articles/syncing-a-fork) with the original repository. This also allows you to sync changes made in the original repository with the fork.' -redirect_from: - - /articles/configuring-a-remote-for-a-fork -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% data reusables.command_line.open_the_multi_os_terminal %} -2. List the current configured remote repository for your fork. - ```shell - $ git remote -v - > origin https://{% data variables.command_line.codeblock %}/YOUR_USERNAME/YOUR_FORK.git (fetch) - > origin https://{% data variables.command_line.codeblock %}/YOUR_USERNAME/YOUR_FORK.git (push) - ``` -3. Specify a new remote *upstream* repository that will be synced with the fork. - ```shell - $ git remote add upstream https://{% data variables.command_line.codeblock %}/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git - ``` -4. Verify the new upstream repository you've specified for your fork. - ```shell - $ git remote -v - > origin https://{% data variables.command_line.codeblock %}/YOUR_USERNAME/YOUR_FORK.git (fetch) - > origin https://{% data variables.command_line.codeblock %}/YOUR_USERNAME/YOUR_FORK.git (push) - > upstream https://{% data variables.command_line.codeblock %}/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch) - > upstream https://{% data variables.command_line.codeblock %}/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push) - ``` diff --git a/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork.md b/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork.md deleted file mode 100644 index 1300ef6b46fc..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Creating a pull request from a fork -intro: You can create a pull request to propose changes you've made to a fork of an upstream repository. -redirect_from: - - /articles/creating-a-pull-request-from-a-fork -permissions: Anyone with write access to a repository can create a pull request from user-owned fork. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can also give the upstream repository's maintainers permission to push commits to a user-owned fork. If your pull request compares your topic branch with a branch in the upstream repository as the base branch, then your topic branch is also called the compare branch of the pull request. For more information about pull request branches, including examples, see "[Creating a pull request](/articles/creating-a-pull-request/#changing-the-branch-range-and-destination-repository)." - -{% data reusables.pull_requests.perms-to-open-pull-request %} - -1. Navigate to the original repository where you created your fork. -{% data reusables.repositories.new-pull-request %} -3. On the Compare page, click **compare across forks**. - ![Compare across forks link](/assets/images/help/pull_requests/compare-across-forks-link.png) -4. In the "base branch" drop-down menu, select the branch of the upstream repository you'd like to merge changes into. - ![Drop-down menus for choosing the base fork and branch](/assets/images/help/pull_requests/choose-base-fork-and-branch.png) -5. In the "head fork" drop-down menu, select your fork, then use the "compare branch" drop-down menu to select the branch you made your changes in. - ![Drop-down menus for choosing the head fork and compare branch](/assets/images/help/pull_requests/choose-head-fork-compare-branch.png) -{% data reusables.repositories.pr-title-description %} -{% data reusables.repositories.allow-maintainers-user-forks %} - - ![allow-maintainers-to-make-edits-checkbox](/assets/images/help/pull_requests/allow-maintainers-to-make-edits.png) -{% data reusables.repositories.create-pull-request %} - -{% data reusables.repositories.asking-for-review %} - -### Further reading - -- "[Working with forks](/articles/working-with-forks)" -- "[Allowing changes to a pull request branch created from a fork](/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request.md deleted file mode 100644 index dbad56a3a137..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Creating a pull request -intro: 'Create a pull request to propose and collaborate on changes to a repository. These changes are proposed in a *branch*, which ensures that the default branch only contains finished and approved work.' -redirect_from: - - /articles/creating-a-pull-request -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Anyone with read permissions to a repository can create a pull request, but you must have write permissions to create a branch. If you want to create a new branch for your pull request and don't have write permissions to the repository, you can fork the repository first. For more information, see "[Creating a pull request from a fork](/articles/creating-a-pull-request-from-a-fork)" and "[About forks](/articles/about-forks)." - -You can specify which branch you'd like to merge your changes into when you create your pull request. Pull requests can only be opened between two branches that are different. - -{% data reusables.pull_requests.perms-to-open-pull-request %} - -{% data reusables.pull_requests.close-issues-using-keywords %} - -### Changing the branch range and destination repository - -By default, pull requests are based on the parent repository's default branch. For more information, see "[About branches](/github/collaborating-with-issues-and-pull-requests/about-branches#about-the-default-branch)." - -If the default parent repository isn't correct, you can change both the parent repository and the branch with the drop-down lists. You can also swap your head and base branches with the drop-down lists to establish diffs between reference points. References here must be branch names in your GitHub repository. - -![Pull Request editing branches](/assets/images/help/pull_requests/pull-request-review-edit-branch.png) - -When thinking about branches, remember that the *base branch* is **where** changes should be applied, the *head branch* contains **what** you would like to be applied. - -When you change the base repository, you also change notifications for the pull request. Everyone that can push to the base repository will receive an email notification and see the new pull request in their dashboard the next time they sign in. - -When you change any of the information in the branch range, the Commit and Files changed preview areas will update to show your new range. - -{% tip %} - -**Tips**: -- Using the compare view, you can set up comparisons across any timeframe. For more information, see "[Comparing commits](/github/committing-changes-to-your-project/comparing-commits)." -- Project maintainers can add a pull request template for a repository. Templates include prompts for information in the body of a pull request. For more information, see "[About issue and pull request templates](/articles/about-issue-and-pull-request-templates)." - -{% endtip %} - -### Creating the pull request - -{% tip %} - -**Tip**: You can also use {% data variables.product.prodname_desktop %} to create a pull request. For more information, see “[Creating an issue or pull request](/desktop/contributing-to-projects/creating-an-issue-or-pull-request)" in the {% data variables.product.prodname_desktop %} documentation. - -{% endtip %} - -{% data reusables.repositories.navigate-to-repo %} -2. In the "Branch" menu, choose the branch that contains your commits. - ![Branch dropdown menu](/assets/images/help/pull_requests/branch-dropdown.png) -{% data reusables.repositories.new-pull-request %} -4. Use the _base_ branch dropdown menu to select the branch you'd like to merge your changes into, then use the _compare_ branch drop-down menu to choose the topic branch you made your changes in. - ![Drop-down menus for choosing the base and compare branches](/assets/images/help/pull_requests/choose-base-and-compare-branches.png) -{% data reusables.repositories.pr-title-description %} -{% data reusables.repositories.create-pull-request %} - -{% data reusables.repositories.asking-for-review %} - -After your pull request has been reviewed, it can be [merged into the repository](/articles/merging-a-pull-request). - -### Further reading - -- "[Creating a pull request from a fork](/articles/creating-a-pull-request-from-a-fork)" -- "[Changing the base branch of a pull request](/articles/changing-the-base-branch-of-a-pull-request)" -- "[Adding issues and pull requests to a project board from the sidebar](/articles/adding-issues-and-pull-requests-to-a-project-board/#adding-issues-and-pull-requests-to-a-project-board-from-the-sidebar)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository.md b/content/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository.md deleted file mode 100644 index 8049c3962c3c..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Creating and deleting branches within your repository -intro: 'You can create or delete branches directly on {% data variables.product.product_name %}.' -redirect_from: - - /articles/deleting-branches-in-a-pull-request/ - - /articles/creating-and-deleting-branches-within-your-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Creating a branch - -{% data reusables.repositories.navigate-to-repo %} - -1. Optionally, if you want to create your new branch from a branch other than the default branch for the repository, click {% octicon "git-branch" aria-label="The branch icon" %} **NUMBER branches** then choose another branch: - ![Branches link on overview page](/assets/images/help/branches/branches-link.png) -1. Click the branch selector menu. - ![branch selector menu](/assets/images/help/branch/branch-selection-dropdown.png) -1. Type a unique name for your new branch, then select **Create branch**. - ![branch creation text box](/assets/images/help/branch/branch-creation-text-box.png) - -### Deleting a branch - -{% data reusables.pull_requests.automatically-delete-branches %} - -If the branch you want to delete is the repository's default branch, you must choose a new default branch before deleting the branch. For more information, see "[Changing the default branch](/github/administering-a-repository/changing-the-default-branch)." - -If the branch you want to delete is associated with an open pull request, you must merge or close the pull request before deleting the branch. For more information, see "[Merging a pull request](/github/collaborating-with-issues-and-pull-requests/merging-a-pull-request)" or "[Closing a pull request](/github/collaborating-with-issues-and-pull-requests/closing-a-pull-request)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.navigate-to-branches %} -1. Scroll to the branch that you want to delete, then click {% octicon "trashcan" aria-label="The trashcan icon to delete the branch" %}. - ![delete the branch](/assets/images/help/branches/branches-delete.png) - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -{% data reusables.pull_requests.retargeted-on-branch-deletion %} -{% endif %} -For more information, see "[About branches](/github/collaborating-with-issues-and-pull-requests/about-branches#working-with-branches)." - -### Further reading - -- "[About branches](/github/collaborating-with-issues-and-pull-requests/about-branches)" -- "[Viewing branches in your repository](/github/administering-a-repository/viewing-branches-in-your-repository)" -- "[Deleting and restoring branches in a pull request](/github/administering-a-repository/deleting-and-restoring-branches-in-a-pull-request)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/dismissing-a-pull-request-review.md b/content/github/collaborating-with-issues-and-pull-requests/dismissing-a-pull-request-review.md deleted file mode 100644 index cfc3eefbaada..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/dismissing-a-pull-request-review.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Dismissing a pull request review -intro: 'If your repository [requires reviews](/articles/about-required-reviews-for-pull-requests), you can dismiss pull request reviews that are no longer valid or are unable to be approved by the reviewer.' -redirect_from: - - /articles/dismissing-a-pull-request-review -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.pull_requests.dismiss_review %} -This changes the status of the review to a review comment. When you dismiss a review, you must add a comment explaining why you dismissed it. Your comment will be added to the pull request conversation. - -{% data reusables.search.requested_reviews_search %} - -{% data reusables.repositories.sidebar-pr %} -{% data reusables.repositories.choose-pr-review %} -3. On the "Conversation" tab, scroll to the review you'd like to dismiss, then click {% octicon "chevron-down" aria-label="The down button" %}. ![Chevron icon in the merge box](/assets/images/help/pull_requests/merge_box/pull-request-open-menu.png) -4. Click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **Dismiss review**. -![Kebab icon in merge box](/assets/images/help/pull_requests/merge_box/pull-request-dismiss-review.png) -5. Type your reason for dismissing the review, then click **Dismiss review**. - ![Dismiss review button](/assets/images/help/pull_requests/merge_box/pull-request-dismiss-review-button.png) - -### Further reading - -- "[About pull request reviews](/articles/about-pull-request-reviews)" -- "[Reviewing proposed changes in a pull request](/articles/reviewing-proposed-changes-in-a-pull-request)" -- "[About required reviews for pull requests](/articles/about-required-reviews-for-pull-requests)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/filtering-files-in-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/filtering-files-in-a-pull-request.md deleted file mode 100644 index 0eebf38056a9..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/filtering-files-in-a-pull-request.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Filtering files in a pull request -intro: 'To help you quickly review changes in a large pull request, you can filter changed files.' -redirect_from: - - /articles/filtering-files-in-a-pull-request-by-file-type/ - - /articles/filtering-files-in-a-pull-request -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can filter files in a pull request by file extension type, such as `.html` or `.js`, lack of an extension, code ownership, or dotfiles. - -{% tip %} - -**Tip:** To simplify your pull request diff view, you can also temporarily hide deleted files or files you have already viewed in the pull request diff from the file filter drop-down menu. - -{% endtip %} - -{% data reusables.repositories.sidebar-pr %} -2. In the list of pull requests, click the pull request you'd like to filter. -{% data reusables.repositories.changed-files %} -4. Use the File filter drop-down menu, and select, unselect, or click the desired filters. - ![File filter option above pull request diff](/assets/images/help/pull_requests/file-filter-option.png) -5. Optionally, to clear the filter selection, under the **Files changed** tab, click **Clear**. - ![Clear file filter selection](/assets/images/help/pull_requests/clear-file-filter.png) - -### Further reading - -- "[About comparing branches in a pull request](/articles/about-comparing-branches-in-pull-requests)" -- "[Finding changed methods and functions in a pull request](/articles/finding-changed-methods-and-functions-in-a-pull-request)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md deleted file mode 100644 index 75d5287ca024..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/finding-changed-methods-and-functions-in-a-pull-request.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Finding changed methods and functions in a pull request -intro: 'You can quickly find proposed changes to a method or function in a pull request in *.go*, *.js*, *.ts*, *.py*, *.php*, and *.rb* files.' -redirect_from: - - /articles/finding-changed-methods-and-functions-in-a-pull-request -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Anyone with read access to a repository can see a summary list of the functions and methods changes in certain files of a pull request. - -The summary list of methods and functions is created from these supported file types: - - Go - - JavaScript (includes Typescript, Flow, and other types of JavaScript) - - PHP - - Python - - Ruby - -{% data reusables.repositories.sidebar-pr %} -2. In the list of pull requests, click the pull request where you'd like to find the changed functions and methods. -{% data reusables.repositories.changed-files %} -4. To see a summary list of the changed functions and methods, click **Jump to...**. -![Jump to drop-down menu](/assets/images/help/pull_requests/jump-to-menu.png) -5. Select the changed function or method from the drop-down menu. You can also enter the name of the function or method to filter results. - ![Filter function and methods](/assets/images/help/pull_requests/filter-function-and-methods.png) - - {% note %} - - **Note:** If you don't see the functions or methods you expected, confirm that your code compiles and doesn't contain errors. Only functions and methods changed in this pull request and found in *.go*, *.js*, *.ts*, *.py*, *.php*, and *.rb* files appear in the drop-down menu. - - {% endnote %} - -6. You'll be redirected to the first line of the function or method you selected. - ![view function or method in files changed](/assets/images/help/pull_requests/view-selected-function-or-method.png) - -### Further reading - -- "[About comparing branches in a pull request](/articles/about-comparing-branches-in-pull-requests)" -- "[Filtering files in a pull request by file type](/articles/filtering-files-in-a-pull-request)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/github-flow.md b/content/github/collaborating-with-issues-and-pull-requests/github-flow.md deleted file mode 100644 index 74cb2abee77f..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/github-flow.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: GitHub flow -intro: 'At GitHub, we use our products every day and have developed a workflow to collaborate on projects. To make it work for teams regardless of their size or technical expertise, we made sure each step in our workflow can be completed within a web-based interface.' -redirect_from: - - /articles/creating-and-editing-files-in-your-repository/ - - /articles/github-flow-in-the-browser/ - - /articles/github-flow -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Following the GitHub flow - -1. [Create a branch](/articles/creating-and-deleting-branches-within-your-repository) from the repository. -2. [Create](/articles/creating-new-files), [edit](/articles/editing-files), [rename](/articles/renaming-a-file), [move](/articles/moving-a-file-to-a-new-location), or [delete](/articles/deleting-files) files. -3. [Send a pull request](/articles/creating-a-pull-request) from your branch with your proposed changes to kick off a discussion. -4. Make changes on your branch as needed. Your pull request will update automatically. -5. [Merge the pull request](/articles/merging-a-pull-request) once the branch is ready to be merged. -6. [Tidy up](/articles/deleting-unused-branches) your branches using the delete button in the pull request or on the branches page. - -### Further reading - -- The illustrated guide to "[Understanding the GitHub Flow](https://guides.github.com/introduction/flow/)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request.md deleted file mode 100644 index c27882c312ef..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/incorporating-changes-from-a-pull-request.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Incorporating changes from a pull request -intro: 'You can propose changes to your work on {% data variables.product.product_name %} through pull requests. Learn how to create, manage, and merge pull requests.' -mapTopic: true -redirect_from: - - /articles/incorporating-changes-from-a-pull-request -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request.md deleted file mode 100644 index 421cb8250643..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Incorporating feedback in your pull request -intro: 'When reviewers suggest changes in a pull request, you can automatically incorporate the changes into the pull request or open an issue to track out-of-scope suggestions.' -redirect_from: - - /articles/incorporating-feedback-in-your-pull-request -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Applying suggested changes - -Other people can suggest specific changes to your pull request. You can apply these suggested changes directly in a pull request if you have write access to the repository. If the pull request was created from a fork and the author allowed edits from maintainers, you can also apply suggested changes if you have write access to the upstream repository. For more information, see "[Commenting on a pull request](/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request)" and "[Allowing changes to a pull request branch created from a fork](/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork)." - -To quickly incorporate more than one suggested change into a single commit, you can also apply suggested changes as a batch. Applying one suggested change or a batch of suggested changes creates a single commit on the compare branch of the pull request. - -Each person who suggested a change included in the commit will be a co-author of the commit. The person who applies the suggested changes will be a co-author and the committer of the commit. For more information about the term committer in Git, see "[Git Basics - Viewing the Commit History](https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History)" from the _Pro Git_ book site. - -{% data reusables.repositories.sidebar-pr %} -2. In the list of pull requests, click the pull request you'd like to apply a suggested change to. -3. Navigate to the first suggested change you'd like to apply. - - To apply the change in its own commit, click **Commit suggestion**. - ![Commit suggestion button](/assets/images/help/pull_requests/commit-suggestion-button.png) - - To add the suggestion to a batch of changes, click **Add suggestion to batch**. Continue to add the suggested changes you want to include in a single commit. When you've finished adding suggested changes, click **Commit suggestions**. - ![Add suggestion to batch button](/assets/images/help/pull_requests/add-suggestion-to-batch.png) -4. In the commit message field, type a short, meaningful commit message that describes the change you made to the file or files. -![Commit message field](/assets/images/help/pull_requests/suggested-change-commit-message-field.png) -5. Click **Commit changes.** -![Commit changes button](/assets/images/help/pull_requests/commit-changes-button.png) - -### Opening an issue for an out-of-scope suggestion - -If someone suggests changes to your pull request and the changes are out of the pull request's scope, you can open a new issue to track the feedback. For more information, see "[Opening an issue from a comment](/github/managing-your-work-on-github/opening-an-issue-from-a-comment)." - -### Further reading - -- "[About pull request reviews](/github/collaborating-with-issues-and-pull-requests/about-pull-request-reviews)" -- "[Reviewing proposed changes in a pull request](/github/collaborating-with-issues-and-pull-requests/reviewing-proposed-changes-in-a-pull-request)" -- "[Commenting on a pull request](/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request)" -- "[Requesting a pull request review](/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review)" -- "[Opening an issue from a comment](/github/managing-your-work-on-github/opening-an-issue-from-a-comment)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/index.md b/content/github/collaborating-with-issues-and-pull-requests/index.md deleted file mode 100644 index 63d76c463f4c..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/index.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Collaborating with issues and pull requests -intro: 'Use the {% data variables.product.prodname_dotcom %} flow to track and discuss changes in issues, then propose and review changes in pull requests.' -redirect_from: - - /categories/63/articles/ - - /categories/collaborating/ - - /categories/collaborating-on-projects-using-pull-requests/ - - /categories/collaborating-on-projects-using-issues-and-pull-requests/ - - /categories/collaborating-with-issues-and-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /overview %} - {% link_in_list /github-flow %} - {% link_in_list /about-collaborative-development-models %} - {% link_in_list /about-conversations-on-github %} -{% topic_link_in_list /working-with-forks %} - {% link_in_list /about-forks %} - {% link_in_list /configuring-a-remote-for-a-fork %} - {% link_in_list /syncing-a-fork %} - {% link_in_list /merging-an-upstream-repository-into-your-fork %} - {% link_in_list /allowing-changes-to-a-pull-request-branch-created-from-a-fork %} - {% link_in_list /what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility %} -{% topic_link_in_list /collaborating-on-repositories-with-code-quality-features %} - {% link_in_list /about-status-checks %} - - {% link_in_list /working-with-pre-receive-hooks %} - -{% topic_link_in_list /proposing-changes-to-your-work-with-pull-requests %} - {% link_in_list /about-branches %} - {% link_in_list /creating-and-deleting-branches-within-your-repository %} - {% link_in_list /about-pull-requests %} - {% link_in_list /about-comparing-branches-in-pull-requests %} - {% link_in_list /creating-a-pull-request %} - {% link_in_list /creating-a-pull-request-from-a-fork %} - - {% link_in_list /changing-the-stage-of-a-pull-request %} - - {% link_in_list /requesting-a-pull-request-review %} - {% link_in_list /changing-the-base-branch-of-a-pull-request %} - {% link_in_list /committing-changes-to-a-pull-request-branch-created-from-a-fork %} -{% topic_link_in_list /addressing-merge-conflicts %} - {% link_in_list /about-merge-conflicts %} - {% link_in_list /resolving-a-merge-conflict-on-github %} - {% link_in_list /resolving-a-merge-conflict-using-the-command-line %} -{% topic_link_in_list /reviewing-changes-in-pull-requests %} - {% link_in_list /about-pull-request-reviews %} - {% link_in_list /reviewing-proposed-changes-in-a-pull-request %} - - {% link_in_list /filtering-files-in-a-pull-request %} - - {% link_in_list /finding-changed-methods-and-functions-in-a-pull-request %} - {% link_in_list /commenting-on-a-pull-request %} - {% link_in_list /viewing-a-pull-request-review %} - - {% link_in_list /incorporating-feedback-in-your-pull-request %} - - {% link_in_list /approving-a-pull-request-with-required-reviews %} - {% link_in_list /dismissing-a-pull-request-review %} - {% link_in_list /checking-out-pull-requests-locally %} -{% topic_link_in_list /incorporating-changes-from-a-pull-request %} - {% link_in_list /about-pull-request-merges %} - {% link_in_list /merging-a-pull-request %} - {% link_in_list /closing-a-pull-request %} - {% link_in_list /reverting-a-pull-request %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/merging-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/merging-a-pull-request.md deleted file mode 100644 index 2e3d0f54367a..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/merging-a-pull-request.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Merging a pull request -intro: Merge a pull request into the upstream branch when work is completed. Anyone with push access to the repository can complete the merge. -redirect_from: - - /articles/merging-a-pull-request -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### About pull request merges - -In a pull request, you propose that changes you've made on a head branch should be merged into a base branch. {% data reusables.pull_requests.about-protected-branches %} However, there may be restrictions on when you can merge a pull request into a specific branch. For example, you may only be able to merge a pull request into the default branch if required status checks are passing. For more information, see "[About protected branches](/github/administering-a-repository/about-protected-branches)." - -If the pull request has merge conflicts, or if you'd like to test the changes before merging, you can [check out the pull request locally](/articles/checking-out-pull-requests-locally) and merge it using the command line. - -You can't merge a draft pull request. For more information about draft pull requests, see "[About pull requests](/articles/about-pull-requests#draft-pull-requests)." - -{% data reusables.pull_requests.automatically-delete-branches %} - -If you decide you don't want the changes in a topic branch to be merged to the upstream branch, you can [close the pull request](/articles/closing-a-pull-request) without merging. - -### Merging a pull request on {% data variables.product.prodname_dotcom %} - -{% data reusables.repositories.sidebar-pr %} -2. In the "Pull Requests" list, click the pull request you'd like to merge. -3. Depending on the merge options enabled for your repository, you can: - - [Merge all of the commits into the base branch](/articles/about-pull-request-merges/) by clicking **Merge pull request**. If the **Merge pull request** option is not shown, then click the merge drop down menu and select **Create a merge commit**. - ![merge-pull-request-button](/assets/images/help/pull_requests/pullrequest-mergebutton.png) - - [Squash the commits into one commit](/articles/about-pull-request-merges/#squash-and-merge-your-pull-request-commits) by clicking the merge drop down menu, selecting **Squash and merge** and then clicking the **Squash and merge** button. - ![click-squash-and-merge-button](/assets/images/help/pull_requests/select-squash-and-merge-from-drop-down-menu.png) - - [Rebase the commits individually onto the base branch](/articles/about-pull-request-merges/#rebase-and-merge-your-pull-request-commits) by clicking the merge drop down menu, selecting **Rebase and merge** and then clicking the **Rebase and merge** button. - ![select-rebase-and-merge-from-drop-down-menu](/assets/images/help/pull_requests/select-rebase-and-merge-from-drop-down-menu.png) - - {% note %} - - **Note:** Rebase and merge will always update the committer information and create new commit SHAs. For more information, see "[About pull request merges](/articles/about-pull-request-merges#rebase-and-merge-your-pull-request-commits)." - - {% endnote %} -4. If prompted, type a commit message, or accept the default message. - - {% data reusables.pull_requests.default-commit-message-squash-merge %} - ![Commit message field](/assets/images/help/pull_requests/merge_box/pullrequest-commitmessage.png) - -{% data reusables.files.choose-commit-email %} - -6. Click **Confirm merge**, **Confirm squash and merge**, or **Confirm rebase and merge**. -6. Optionally, [delete the branch](/articles/deleting-unused-branches). This keeps the list of branches in your repository tidy. - -The repository may be configured so that the head branch for a pull request is automatically deleted when you merge a pull request. For more information, see "[Managing the automatic deletion of branches](/github/administering-a-repository/managing-the-automatic-deletion-of-branches)." - - {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} - {% note %} - - **Note:** {% data reusables.pull_requests.retargeted-on-branch-deletion %} - For more information, see "[About branches](/github/collaborating-with-issues-and-pull-requests/about-branches#working-with-branches)." - - {% endnote %} - {% endif %} - -Pull requests are merged using [the `--no-ff` option](https://git-scm.com/docs/git-merge#_fast_forward_merge), except for [pull requests with squashed or rebased commits](/articles/about-pull-request-merges), which are merged using the fast-forward option. - -{% data reusables.pull_requests.close-issues-using-keywords %} - -### Further reading - -- "[Reverting a pull request](/articles/reverting-a-pull-request)" -- "[Syncing your branch](/desktop/guides/contributing-to-projects/syncing-your-branch/)" using {% data variables.product.prodname_desktop %} -- "[About pull request merges](/articles/about-pull-request-merges)" -- "[Addressing merge conflicts](/articles/addressing-merge-conflicts)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/merging-an-upstream-repository-into-your-fork.md b/content/github/collaborating-with-issues-and-pull-requests/merging-an-upstream-repository-into-your-fork.md deleted file mode 100644 index 52c1a63c1a13..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/merging-an-upstream-repository-into-your-fork.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Merging an upstream repository into your fork -intro: 'If you don''t have push (write) access to an upstream repository, then you can pull commits from that repository into your own fork.' -redirect_from: - - /articles/merging-an-upstream-repository-into-your-fork -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Change the current working directory to your local project. -3. Check out the branch you wish to merge to. Usually, you will merge into the default branch. - ```shell - $ git checkout DEFAULT_BRANCH_NAME - ``` -4. Pull the desired branch from the upstream repository. This method will retain the commit history without modification. - ```shell - $ git pull https://{% data variables.command_line.codeblock %}/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git BRANCH_NAME - ``` -5. If there are conflicts, resolve them. For more information, see "[Addressing merge conflicts](/articles/addressing-merge-conflicts)". -6. Commit the merge. -7. Review the changes and ensure they are satisfactory. -8. Push the merge to your GitHub repository. - ```shell - $ git push origin DEFAULT_BRANCH_NAME - ``` diff --git a/content/github/collaborating-with-issues-and-pull-requests/overview.md b/content/github/collaborating-with-issues-and-pull-requests/overview.md deleted file mode 100644 index 298beb20bc44..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/overview.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Overview -intro: 'Learn about the {% data variables.product.prodname_dotcom %} flow and different ways to collaborate on and discuss your projects.' -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests.md b/content/github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests.md deleted file mode 100644 index eeee79dbdd41..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Proposing changes to your work with pull requests -intro: 'After you add changes to a topic branch or fork, you can open a pull request to ask your collaborators or the repository administrator to review your changes before merging them into the project.' -mapTopic: true -redirect_from: - - /articles/proposing-changes-to-your-work-with-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review.md b/content/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review.md deleted file mode 100644 index 57272d628c4c..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Requesting a pull request review -intro: 'After you create a pull request, you can ask a specific person to review the changes you''ve proposed. If you''re an organization member, you can also request a specific team to review your changes.' -redirect_from: - - /articles/requesting-a-pull-request-review -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Owners and collaborators on a repository owned by a user account can assign pull request reviews. Organization members with triage permissions to a repository can assign a pull request review. - -Owners or collaborators can assign a pull request review to any person that has been explicitly granted [read access](/articles/access-permissions-on-github) to a user-owned repository. Organization members can assign a pull request review to any person or team with read access to a repository. The requested reviewer or team will receive a notification that you asked them to review the pull request. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %}If you request a review from a team and code review assignment is enabled, specific members will be requested and the team will be removed as a reviewer. For more information, see "[Managing code review assignment for your team](/github/setting-up-and-managing-organizations-and-teams/managing-code-review-assignment-for-your-team)."{% endif %} - -{% note %} - -**Note:** Pull request authors can't request reviews unless they are either a repository owner or collaborator with write access to the repository. - -{% endnote %} - -You can request a review from either a suggested or specific person. Suggested reviewers are based on [git blame data](/articles/tracking-changes-in-a-file/). If you request a review, other people with read access to the repository can still review your pull request. Once someone has reviewed your pull request and you've made the necessary changes, you can re-request review from the same reviewer. If the requested reviewer does not submit a review, and the pull request meets the repository's [mergeability requirements](/articles/defining-the-mergeability-of-pull-requests), you can still merge the pull request. - -{% data reusables.repositories.sidebar-pr %} -2. In the list of pull requests, click the pull request that you'd like to ask a specific person or a team to review. -3. Navigate to **Reviewers** in the right sidebar. -4. To request a review from a suggested person under **Reviewers**, next to their username, click **Request**. - ![Reviewers request icon in the right sidebar](/assets/images/help/pull_requests/request-suggested-review.png) -5. Optionally, to request a review from someone other than a suggested person, click **Reviewers**, then click on a name in the dropdown menu. - ![Reviewers gear icon in the right sidebar](/assets/images/help/pull_requests/request-a-review-not-suggested.png) -6. Optionally, if you know the name of the person or team you'd like a review from, click **Reviewers**, then type the username of the person or the name of the team you're asking to review your changes. Click their team name or username to request a review. - ![Field to enter a reviewer's username and drop-down with reviewer's name](/assets/images/help/pull_requests/choose-pull-request-reviewer.png) -7. After your pull request is reviewed and you've made the necessary changes, you can ask a reviewer to re-review your pull request. Navigate to **Reviewers** in the right sidebar and click {% octicon "sync" aria-label="The sync icon" %} next to the reviewer's name whose review you'd like. - ![Re-review sync icon in the right sidebar](/assets/images/help/pull_requests/request-re-review.png) - -### Further reading - -- "[About pull request reviews](/articles/about-pull-request-reviews)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github.md b/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github.md deleted file mode 100644 index 1ee0772fd001..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Resolving a merge conflict on GitHub -intro: 'You can resolve simple merge conflicts that involve competing line changes on GitHub, using the conflict editor.' -redirect_from: - - /articles/resolving-a-merge-conflict-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can only resolve merge conflicts on {% data variables.product.product_name %} that are caused by competing line changes, such as when people make different changes to the same line of the same file on different branches in your Git repository. For all other types of merge conflicts, you must resolve the conflict locally on the command line. For more information, see "[Resolving a merge conflict using the command line](/articles/resolving-a-merge-conflict-using-the-command-line/)." - -{% if enterpriseServerVersions contains currentVersion %} -If a site administrator disables the merge conflict editor for pull requests between repositories, you cannot use the conflict editor on {% data variables.product.product_name %} and must resolve merge conflicts on the command line. For example, if the merge conflict editor is disabled, you cannot use it on a pull request between a fork and upstream repository. -{% endif %} - -{% warning %} - -{% if currentVersion ver_lt "enterprise-server@2.22" %} -**Warning:** When you resolve a merge conflict on {% data variables.product.product_name %}, the entire [base branch](/github/getting-started-with-github/github-glossary#base-branch) of your pull request is merged into the [head branch](/github/getting-started-with-github/github-glossary#head-branch), even if the head branch is the default branch of your repository or a protected branch. Make sure you really want to commit to this branch. -{% else %} -**Warning:** When you resolve a merge conflict on {% data variables.product.product_name %}, the entire [base branch](/github/getting-started-with-github/github-glossary#base-branch) of your pull request is merged into the [head branch](/github/getting-started-with-github/github-glossary#head-branch). Make sure you really want to commit to this branch. If the head branch is the default branch of your repository, you'll be given the option of creating a new branch to serve as the head branch for your pull request. If the head branch is protected you won't be able to merge your conflict resolution into it, so you'll be prompted to create a new head branch. For more information, see "[About protected branches](/github/administering-a-repository/about-protected-branches)." -{% endif %} - -{% endwarning %} - -{% data reusables.repositories.sidebar-pr %} -1. In the "Pull Requests" list, click the pull request with a merge conflict that you'd like to resolve. -1. Near the bottom of your pull request, click **Resolve conflicts**. -![Resolve merge conflicts button](/assets/images/help/pull_requests/resolve-merge-conflicts-button.png) - - {% tip %} - - **Tip:** If the **Resolve conflicts** button is deactivated, your pull request's merge conflict is too complex to resolve on {% data variables.product.product_name %}{% if enterpriseServerVersions contains currentVersion %} or the site administrator has disabled the conflict editor for pull requests between repositories{% endif %}. You must resolve the merge conflict using an alternative Git client, or by using Git on the command line. For more information see "[Resolving a merge conflict using the command line](/articles/resolving-a-merge-conflict-using-the-command-line)." - - {% endtip %} -{% data reusables.pull_requests.decide-how-to-resolve-competing-line-change-merge-conflict %} - ![View merge conflict example with conflict markers](/assets/images/help/pull_requests/view-merge-conflict-with-markers.png) -1. If you have more than one merge conflict in your file, scroll down to the next set of conflict markers and repeat steps four and five to resolve your merge conflict. -1. Once you've resolved all the conflicts in the file, click **Mark as resolved**. - ![Click mark as resolved button](/assets/images/help/pull_requests/mark-as-resolved-button.png) -1. If you have more than one file with a conflict, select the next file you want to edit on the left side of the page under "conflicting files" and repeat steps four through seven until you've resolved all of your pull request's merge conflicts. - ![Select next conflicting file if applicable](/assets/images/help/pull_requests/resolve-merge-conflict-select-conflicting-file.png) -1. Once you've resolved all your merge conflicts, click **Commit merge**. This merges the entire base branch into your head branch. - ![Resolve merge conflicts button](/assets/images/help/pull_requests/merge-conflict-commit-changes.png){% if currentVersion ver_lt "enterprise-server@2.22" %} -1. If prompted, review the branch that you are committing to. If you want to commit to this branch, click **I understand, update _BRANCH_**. -![Merge conflict confirmation window](/assets/images/help/pull_requests/merge-conflict-confirmation.png){% else %} -1. If prompted, review the branch that you are committing to. - - If the head branch is the default branch of the repository, you can choose either to update this branch with the changes you made to resolve the conflict, or to create a new branch and use this as the head branch of the pull request. - ![Prompt to review the branch that will be updated](/assets/images/help/pull_requests/conflict-resolution-merge-dialog-box.png) - - If you choose to create a new branch, enter a name for the branch. - - If the head branch of your pull request is protected you must create a new branch. You won't get the option to update the protected branch. - - Click **Create branch and update my pull request** or **I understand, continue updating _BRANCH_**. The button text corresponds to the action you are performing. -{% endif %} -1. To merge your pull request, click **Merge pull request**. For more information about other pull request merge options, see "[Merging a pull request](/articles/merging-a-pull-request/)." - -### Further reading - -- "[About pull request merges](/articles/about-pull-request-merges)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line.md b/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line.md deleted file mode 100644 index cc9216b99e49..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Resolving a merge conflict using the command line -intro: You can resolve merge conflicts using the command line and a text editor. -redirect_from: - - /articles/resolving-a-merge-conflict-from-the-command-line/ - - /articles/resolving-a-merge-conflict-using-the-command-line -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Merge conflicts occur when competing changes are made to the same line of a file, or when one person edits a file and another person deletes the same file. For more information, see "[About merge conflicts](/articles/about-merge-conflicts/)." - -{% tip %} - -**Tip:** You can use the conflict editor on {% data variables.product.product_name %} to resolve competing line change merge conflicts between branches that are part of a pull request. For more information, see "[Resolving a merge conflict on GitHub](/articles/resolving-a-merge-conflict-on-github)." - -{% endtip %} - -### Competing line change merge conflicts - -To resolve a merge conflict caused by competing line changes, you must choose which changes to incorporate from the different branches in a new commit. - -For example, if you and another person both edited the file _styleguide.md_ on the same lines in different branches of the same Git repository, you'll get a merge conflict error when you try to merge these branches. You must resolve this merge conflict with a new commit before you can merge these branches. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Navigate into the local Git repository that has the merge conflict. - ```shell - cd REPOSITORY-NAME - ``` -3. Generate a list of the files affected by the merge conflict. In this example, the file *styleguide.md* has a merge conflict. - ```shell - $ git status - > # On branch branch-b - > # You have unmerged paths. - > # (fix conflicts and run "git commit") - > # - > # Unmerged paths: - > # (use "git add ..." to mark resolution) - > # - > # both modified: styleguide.md - > # - > no changes added to commit (use "git add" and/or "git commit -a") - ``` -4. Open your favorite text editor, such as [Atom](https://atom.io/), and navigate to the file that has merge conflicts. -5. To see the beginning of the merge conflict in your file, search the file for the conflict marker `<<<<<<<`. When you open the file in your text editor, you'll see the changes from the HEAD or base branch after the line `<<<<<<< HEAD`. Next, you'll see `=======`, which divides your changes from the changes in the other branch, followed by `>>>>>>> BRANCH-NAME`. In this example, one person wrote "open an issue" in the base or HEAD branch and another person wrote "ask your question in IRC" in the compare branch or `branch-a`. - - ``` -If you have questions, please -<<<<<<< HEAD -open an issue -======= -ask your question in IRC. ->>>>>>> branch-a - ```` -{% data reusables.pull_requests.decide-how-to-resolve-competing-line-change-merge-conflict %} In this example, both changes are incorporated into the final merge: - - ```shell - If you have questions, please open an issue or ask in our IRC channel if it's more urgent. - ``` -7. Add or stage your changes. - ```shell - $ git add . - ``` -8. Commit your changes with a comment. - ```shell - $ git commit -m "Resolved merge conflict by incorporating both suggestions." - ``` - -You can now merge the branches on the command line or [push your changes to your remote repository](/articles/pushing-commits-to-a-remote-repository/) on {% data variables.product.product_name %} and [merge your changes](/articles/merging-a-pull-request/) in a pull request. - -### Removed file merge conflicts - -To resolve a merge conflict caused by competing changes to a file, where a person deletes a file in one branch and another person edits the same file, you must choose whether to delete or keep the removed file in a new commit. - -For example, if you edited a file, such as *README.md*, and another person removed the same file in another branch in the same Git repository, you'll get a merge conflict error when you try to merge these branches. You must resolve this merge conflict with a new commit before you can merge these branches. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Navigate into the local Git repository that has the merge conflict. - ```shell - cd REPOSITORY-NAME - ``` -2. Generate a list of the files affected by the merge conflict. In this example, the file *README.md* has a merge conflict. - ```shell - $ git status - > # On branch main - > # Your branch and 'origin/main' have diverged, - > # and have 1 and 2 different commits each, respectively. - > # (use "git pull" to merge the remote branch into yours) - > # You have unmerged paths. - > # (fix conflicts and run "git commit") - > # - > # Unmerged paths: - > # (use "git add/rm ..." as appropriate to mark resolution) - > # - > # deleted by us: README.md - > # - > # no changes added to commit (use "git add" and/or "git commit -a") - ``` -3. Open your favorite text editor, such as [Atom](https://atom.io/), and navigate to the file that has merge conflicts. -6. Decide if you want keep the removed file. You may want to view the latest changes made to the removed file in your text editor. - - To add the removed file back to your repository: - ```shell - $ git add README.md - ``` - To remove this file from your repository: - ```shell - $ git rm README.md - > README.md: needs merge - > rm 'README.md' - ``` -7. Commit your changes with a comment. - ```shell - $ git commit -m "Resolved merge conflict by keeping README.md file." - > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d - ``` - -You can now merge the branches on the command line or [push your changes to your remote repository](/articles/pushing-commits-to-a-remote-repository/) on {% data variables.product.product_name %} and [merge your changes](/articles/merging-a-pull-request/) in a pull request. - -### Further reading - -- "[About merge conflicts](/articles/about-merge-conflicts)" -- "[Checking out pull requests locally](/articles/checking-out-pull-requests-locally/)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/reverting-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/reverting-a-pull-request.md deleted file mode 100644 index 636d09b53c8c..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/reverting-a-pull-request.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Reverting a pull request -intro: You can revert a pull request after it's been merged to the upstream branch. -redirect_from: - - /articles/reverting-a-pull-request -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -### About reverting a pull request - -Reverting a pull request on {% data variables.product.product_name %} creates a new pull request that contains one revert of the merge commit from the original merged pull request. - -### Reverting a pull request - -{% note %} - -**Note:** You may need to revert the individual commits in your pull request if either of the following is true. - -- Reverting the pull request causes merge conflicts -- The original pull request was not originally merged on {% data variables.product.product_name %}. For example, someone could have merged the pull request using a fast-forward merge on the command line. - -For more information about using Git to manually revert individual commits, see [Git revert](https://git-scm.com/docs/git-revert.html) in the Git documentation. - -{% endnote %} - -{% data reusables.repositories.sidebar-pr %} -2. In the "Pull Requests" list, click the pull request you'd like to revert. -3. Near the bottom of the pull request, click **Revert**. - ![Revert pull request link](/assets/images/help/pull_requests/revert-pull-request-link.png) -4. Merge the resulting pull request. For more information, see "[Merging a pull request](/github/collaborating-with-issues-and-pull-requests/merging-a-pull-request)." diff --git a/content/github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests.md b/content/github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests.md deleted file mode 100644 index c93e774980ef..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Reviewing changes in pull requests -redirect_from: - - /articles/reviewing-and-discussing-changes-in-pull-requests/ - - /articles/reviewing-changes-in-pull-requests -intro: 'After a pull request has been opened, you can review and discuss the set of proposed changes.' -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/collaborating-with-issues-and-pull-requests/reviewing-proposed-changes-in-a-pull-request.md b/content/github/collaborating-with-issues-and-pull-requests/reviewing-proposed-changes-in-a-pull-request.md deleted file mode 100644 index a35e7f5ca345..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/reviewing-proposed-changes-in-a-pull-request.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Reviewing proposed changes in a pull request -intro: 'In a pull request, you can review and discuss commits, changed files, and the differences (or "diff") between the files in the base and compare branches.' -redirect_from: - - /articles/reviewing-proposed-changes-in-a-pull-request -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About reviewing pull requests - -You can review changes in a pull request one file at a time. While reviewing the files in a pull request, you can leave individual comments on specific changes. After you finish reviewing each file, you can mark the file as viewed. This collapses the file, helping you identify the files you still need to review. A progress bar in the pull request header shows the number of files you've viewed. After reviewing as many files as you want, you can approve the pull request or request additional changes by submitting your review with a summary comment. - -{% data reusables.search.requested_reviews_search_tip %} - -### Starting a review - -{% data reusables.repositories.sidebar-pr %} -{% data reusables.repositories.choose-pr-review %} -{% data reusables.repositories.changed-files %} -{% data reusables.repositories.start-line-comment %} -{% data reusables.repositories.type-line-comment %} -{% data reusables.repositories.suggest-changes %} -5. When you're done, click **Start a review**. If you have already started a review, you can click **Add review comment**. - ![Start a review button](/assets/images/help/pull_requests/start-a-review-button.png) - -Before you submit your review, your line comments are _pending_ and only visible to you. You can edit pending comments anytime before you submit your review. To cancel a pending review, including all of its pending comments, scroll down to the end of the timeline on the Conversation tab, then click **Cancel review**. - -![Cancel review button](/assets/images/help/pull_requests/cancel-review-button.png) - -### Marking a file as viewed - -After you finish reviewing a file, you can mark the file as viewed, and the file will collapse. If the file changes after you view the file, it will be unmarked as viewed. - -{% data reusables.repositories.changed-files %} -2. On the right of the header of the file you've finished reviewing, select **Viewed**. - ![Viewed checkbox](/assets/images/help/pull_requests/viewed-checkbox.png) - -### Submitting your review - -After you've finished reviewing all the files you want in the pull request, submit your review. - -{% data reusables.repositories.changed-files %} -{% data reusables.repositories.review-changes %} -{% data reusables.repositories.review-summary-comment %} -4. Select the type of review you'd like to leave: - ![Radio buttons with review options](/assets/images/help/pull_requests/pull-request-review-statuses.png) - - Select **Comment** to leave general feedback without explicitly approving the changes or requesting additional changes. - - Select **Approve** to submit your feedback and approve merging the changes proposed in the pull request. - - Select **Request changes** to submit feedback that must be addressed before the pull request can be merged. -{% data reusables.repositories.submit-review %} - -{% data reusables.repositories.request-changes-tips %} - -### Further reading - -- "[About pull request reviews](/articles/about-pull-request-reviews)" -- "[About required reviews for pull requests](/articles/about-required-reviews-for-pull-requests)" -- "[Approving a pull request with required reviews](/articles/approving-a-pull-request-with-required-reviews)" -- "[Commenting on a pull request](/articles/commenting-on-a-pull-request)" -- "[Filtering pull requests by review status](/articles/filtering-pull-requests-by-review-status)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/syncing-a-fork.md b/content/github/collaborating-with-issues-and-pull-requests/syncing-a-fork.md deleted file mode 100644 index 191d4d009393..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/syncing-a-fork.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Syncing a fork -intro: Sync a fork of a repository to keep it up-to-date with the upstream repository. -redirect_from: - - /articles/syncing-a-fork -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Before you can sync your fork with an upstream repository, you must [configure a remote that points to the upstream repository](/articles/configuring-a-remote-for-a-fork) in Git. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Change the current working directory to your local project. -3. Fetch the branches and their respective commits from the upstream repository. Commits to `main` will be stored in a local branch, `upstream/main`. - ```shell - $ git fetch upstream - > remote: Counting objects: 75, done. - > remote: Compressing objects: 100% (53/53), done. - > remote: Total 62 (delta 27), reused 44 (delta 9) - > Unpacking objects: 100% (62/62), done. - > From https://{% data variables.command_line.codeblock %}/ORIGINAL_OWNER/ORIGINAL_REPOSITORY - > * [new branch] main -> upstream/main - ``` -4. Check out your fork's local `main` branch. - ```shell - $ git checkout main - > Switched to branch 'main' - ``` -5. Merge the changes from `upstream/main` into your local `main` branch. This brings your fork's `main` branch into sync with the upstream repository, without losing your local changes. - ```shell - $ git merge upstream/main - > Updating a422352..5fdff0f - > Fast-forward - > README | 9 ------- - > README.md | 7 ++++++ - > 2 files changed, 7 insertions(+), 9 deletions(-) - > delete mode 100644 README - > create mode 100644 README.md - ``` If your local branch didn't have any unique commits, Git will instead perform a "fast-forward": - ```shell - $ git merge upstream/main - > Updating 34e91da..16c56ad - > Fast-forward - > README.md | 5 +++-- - > 1 file changed, 3 insertions(+), 2 deletions(-) - ``` - -{% tip %} - -**Tip**: Syncing your fork only updates your local copy of the repository. To update your fork on {% data variables.product.product_location %}, you must [push your changes](/articles/pushing-commits-to-a-remote-repository/). - -{% endtip %} diff --git a/content/github/collaborating-with-issues-and-pull-requests/viewing-a-pull-request-review.md b/content/github/collaborating-with-issues-and-pull-requests/viewing-a-pull-request-review.md deleted file mode 100644 index 4e48d17874f5..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/viewing-a-pull-request-review.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Viewing a pull request review -intro: You can view all of the comments made in a single pull request review. -redirect_from: - - /articles/viewing-a-pull-request-review -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.search.requested_reviews_search %} - -When you view a full review, you'll see the same version of the pull request as the reviewer did at the time of the review. - -{% data reusables.repositories.sidebar-pr %} -{% data reusables.repositories.choose-pr-review %} -3. On the "Conversation" tab, scroll to the review you'd like to see, then click **View changes**. - ![Review header with link to full review](/assets/images/help/pull_requests/view-full-review-view-changes.png) - -### Further reading - -- "[About pull request reviews](/articles/about-pull-request-reviews)" -- "[Reviewing proposed changes in a pull request](/articles/reviewing-proposed-changes-in-a-pull-request)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md b/content/github/collaborating-with-issues-and-pull-requests/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md deleted file mode 100644 index 5041c7cf3902..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: What happens to forks when a repository is deleted or changes visibility? -intro: Deleting your repository or changing its visibility affects that repository's forks. -redirect_from: - - /articles/changing-the-visibility-of-a-network/ - - /articles/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.deleted_forks_from_private_repositories_warning %} - -#### Deleting a private repository - -When you delete a private repository, all of its private forks are also deleted. - -#### Deleting a public repository - -When you delete a public repository, one of the existing public forks is chosen to be the new parent repository. All other repositories are forked off of this new parent and subsequent pull requests go to this new parent. - -#### Private forks and permissions - -{% data reusables.repositories.private_forks_inherit_permissions %} - -#### Changing a public repository to a private repository - -If a public repository is made private, its public forks are split off into a new network. As with deleting a public repository, one of the existing public forks is chosen to be the new parent repository and all other repositories are forked off of this new parent. Subsequent pull requests go to this new parent. - -In other words, a public repository's forks will remain public in their own separate repository network even after the parent repository is made private. This allows the fork owners to continue to work and collaborate without interruption. If public forks were not moved into a separate network in this way, the owners of those forks would need to get the appropriate [access permissions](/articles/access-permissions-on-github) to pull changes from and submit pull requests to the (now private) parent repository—even though they didn't need those permissions before. - -{% if enterpriseServerVersions contains currentVersion %} -If a public repository has anonymous Git read access enabled and the repository is made private, all of the repository's forks will lose anonymous Git read access and return to the default disabled setting. If a forked repository is made public, repository administrators can re-enable anonymous Git read access. For more information, see "[Enabling anonymous Git read access for a repository](/enterprise/{{ currentVersion }}/user/articles/enabling-anonymous-git-read-access-for-a-repository)." -{% endif %} - -##### Deleting the private repository - -If a public repository is made private and then deleted, its public forks will continue to exist in a separate network. - -#### Changing a private repository to a public repository - -If a private repository is made public, each of its private forks is turned into a standalone private repository and becomes the parent of its own new repository network. Private forks are never automatically made public because they could contain sensitive commits that shouldn't be exposed publicly. - -##### Deleting the public repository - -If a private repository is made public and then deleted, its private forks will continue to exist as standalone private repositories in separate networks. - -### Further reading - -- "[Setting repository visibility](/articles/setting-repository-visibility)" -- "[About forks](/articles/about-forks)" -- "[Managing the forking policy for your repository](/github/administering-a-repository/managing-the-forking-policy-for-your-repository)" -- "[Managing the forking policy for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-the-forking-policy-for-your-organization)" diff --git a/content/github/collaborating-with-issues-and-pull-requests/working-with-forks.md b/content/github/collaborating-with-issues-and-pull-requests/working-with-forks.md deleted file mode 100644 index 5dcdcd1b0a2c..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/working-with-forks.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Working with forks -intro: 'Forks are often used in open source development on {% data variables.product.product_name %}.' -mapTopic: true -redirect_from: - - /articles/working-with-forks -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/collaborating-with-issues-and-pull-requests/working-with-pre-receive-hooks.md b/content/github/collaborating-with-issues-and-pull-requests/working-with-pre-receive-hooks.md deleted file mode 100644 index 85001ffa3167..000000000000 --- a/content/github/collaborating-with-issues-and-pull-requests/working-with-pre-receive-hooks.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Working with pre-receive hooks -intro: '*Pre-receive hooks* enforce rules for contributions before commits may be pushed to a repository.' -redirect_from: - - /articles/working-with-pre-receive-hooks -versions: - enterprise-server: '*' ---- - -Pre-receive hooks run tests on code pushed to a repository to ensure contributions meet repository or organization policy. If the commit contents pass the tests, the push will be accepted into the repository. If the commit contents do not pass the tests, the push will not be accepted. - -If your push isn't accepted, you'll see an error message corresponding to the failed pre-receive hook. - -``` -$ git push -Counting objects: 3, done. -Delta compression using up to 4 threads. -Compressing objects: 100% (2/2), done. -Writing objects: 100% (3/3), 916 bytes | 0 bytes/s, done. -Total 3 (delta 0), reused 0 (delta 0) -remote: always_reject.sh: failed with exit status 1 -remote: error: rejecting all pushes -To https://54.204.174.51/hodor/nope.git - ! [remote rejected] main -> main (pre-receive hook declined) -error: failed to push some refs to 'https://54.204.174.51/hodor/nope.git' -``` - -![Error message for failed pre-receive hook](/assets/images/help/pull_requests/pre-receive-hook-failed-error.png) - -Your {% data variables.product.product_name %} site administrator can create and remove pre-receive hooks for your organization or repository, and may allow organization or repository administrators to enable or disable pre-receive hooks. For more information, see "[Using pre-receive hooks to enforce policy](/enterprise/{{ currentVersion }}/admin/guides/developer-workflow/using-pre-receive-hooks-to-enforce-policy)." diff --git a/content/github/committing-changes-to-your-project/about-commits.md b/content/github/committing-changes-to-your-project/about-commits.md deleted file mode 100644 index ecca717bcb62..000000000000 --- a/content/github/committing-changes-to-your-project/about-commits.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: About commits -intro: You can save small groups of meaningful changes as commits. -redirect_from: - - /articles/why-are-my-commits-in-the-wrong-order - - /github/committing-changes-to-your-project/why-are-my-commits-in-the-wrong-order -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About commits - -{% data reusables.commits.about-commits %} - -You can add a co-author on any commits you collaborate on. For more information, see "[Creating a commit with multiple authors](/github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors)." - -{% if currentVersion == "free-pro-team@latest" %} -You can also create a commit on behalf of an organization. For more information, see "[Creating a commit on behalf of an organization](/github/committing-changes-to-your-project/creating-a-commit-on-behalf-of-an-organization)."{% endif %} - -Rebasing allows you to change a series of commits and can modify the order of the commits in your timeline. For more information, see "[About git rebase](/github/using-git/about-git-rebase)." - -### Further reading -- "[Committing and reviewing changes to your project](/desktop/contributing-to-projects/committing-and-reviewing-changes-to-your-project#about-commits)" on {% data variables.product.prodname_desktop %} diff --git a/content/github/committing-changes-to-your-project/changing-a-commit-message.md b/content/github/committing-changes-to-your-project/changing-a-commit-message.md deleted file mode 100644 index 7f55accc3eae..000000000000 --- a/content/github/committing-changes-to-your-project/changing-a-commit-message.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: Changing a commit message -redirect_from: - - /articles/can-i-delete-a-commit-message/ - - /articles/changing-a-commit-message -intro: 'If a commit message contains unclear, incorrect, or sensitive information, you can amend it locally and push a new commit with a new message to {% data variables.product.product_name %}. You can also change a commit message to add missing information.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Rewriting the most recent commit message - -You can change the most recent commit message using the `git commit --amend` command. - -In Git, the text of the commit message is part of the commit. Changing the commit message will change the commit ID--i.e., the SHA1 checksum that names the commit. Effectively, you are creating a new commit that replaces the old one. - -### Commit has not been pushed online - -If the commit only exists in your local repository and has not been pushed to {% data variables.product.product_location %}, you can amend the commit message with the `git commit --amend` command. - -1. On the command line, navigate to the repository that contains the commit you want to amend. -2. Type `git commit --amend` and press **Enter**. -3. In your text editor, edit the commit message, and save the commit. - - You can add a co-author by adding a trailer to the commit. For more information, see "[Creating a commit with multiple authors](/articles/creating-a-commit-with-multiple-authors)." -{% if currentVersion == "free-pro-team@latest" %} - - You can create commits on behalf of your organization by adding a trailer to the commit. For more information, see "[Creating a commit on behalf of an organization](/articles/creating-a-commit-on-behalf-of-an-organization)" -{% endif %} - -The new commit and message will appear on {% data variables.product.product_location %} the next time you push. - -{% tip %} - -You can change the default text editor for Git by changing the `core.editor` setting. For more information, see "[Basic Client Configuration](https://git-scm.com/book/en/Customizing-Git-Git-Configuration#_basic_client_configuration)" in the Git manual. - -{% endtip %} - -### Amending older or multiple commit messages - -If you have already pushed the commit to {% data variables.product.product_location %}, you will have to force push a commit with an amended message. - -{% warning %} - -We strongly discourage force pushing, since this changes the history of your repository. If you force push, people who have already cloned your repository will have to manually fix their local history. For more information, see "[Recovering from upstream rebase](https://git-scm.com/docs/git-rebase#_recovering_from_upstream_rebase)" in the Git manual. - -{% endwarning %} - -**Changing the message of the most recently pushed commit** - -1. Follow the [steps above](/articles/changing-a-commit-message#commit-has-not-been-pushed-online) to amend the commit message. -2. Use the `push --force` command to force push over the old commit. - ```shell - $ git push --force example-branch - ``` - -**Changing the message of older or multiple commit messages** - -If you need to amend the message for multiple commits or an older commit, you can use interactive rebase, then force push to change the commit history. - -1. On the command line, navigate to the repository that contains the commit you want to amend. -2. Use the `git rebase -i HEAD~n` command to display a list of the last `n` commits in your default text editor. - - ```shell - # Displays a list of the last 3 commits on the current branch - $ git rebase -i HEAD~3 - ``` - The list will look similar to the following: - - ```shell - pick e499d89 Delete CNAME - pick 0c39034 Better README - pick f7fde4a Change the commit message but push the same commit. - - # Rebase 9fdb3bd..f7fde4a onto 9fdb3bd - # - # Commands: - # p, pick = use commit - # r, reword = use commit, but edit the commit message - # e, edit = use commit, but stop for amending - # s, squash = use commit, but meld into previous commit - # f, fixup = like "squash", but discard this commit's log message - # x, exec = run command (the rest of the line) using shell - # - # These lines can be re-ordered; they are executed from top to bottom. - # - # If you remove a line here THAT COMMIT WILL BE LOST. - # - # However, if you remove everything, the rebase will be aborted. - # - # Note that empty commits are commented out - ``` -3. Replace `pick` with `reword` before each commit message you want to change. - ```shell - pick e499d89 Delete CNAME - reword 0c39034 Better README - reword f7fde4a Change the commit message but push the same commit. - ``` -4. Save and close the commit list file. -5. In each resulting commit file, type the new commit message, save the file, and close it. -6. When you're ready to push your changes to GitHub, use the push --force command to force push over the old commit. -```shell -$ git push --force example-branch -``` - -For more information on interactive rebase, see "[Interactive mode](https://git-scm.com/docs/git-rebase#_interactive_mode)" in the Git manual. - -{% tip %} - -As before, amending the commit message will result in a new commit with a new ID. However, in this case, every commit that follows the amended commit will also get a new ID because each commit also contains the id of its parent. - -{% endtip %} - -{% warning %} - -If you have included sensitive information in a commit message, force pushing a commit with an amended commit may not remove the original commit from {% data variables.product.product_name %}. The old commit will not be a part of a subsequent clone; however, it may still be cached on {% data variables.product.product_name %} and accessible via the commit ID. You must contact {% data variables.contact.contact_support %} with the old commit ID to have it purged from the remote repository. - -{% endwarning %} - -### Further reading - -* "[Signing commits](/articles/signing-commits)" diff --git a/content/github/committing-changes-to-your-project/commit-branch-and-tag-labels.md b/content/github/committing-changes-to-your-project/commit-branch-and-tag-labels.md deleted file mode 100644 index e4685d213c42..000000000000 --- a/content/github/committing-changes-to-your-project/commit-branch-and-tag-labels.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Commit branch and tag labels -intro: You can easily see what branch a commit is in by looking at the labels beneath the commit on the commit page. -redirect_from: - - /articles/commit-branch-and-tag-labels -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If your commit is not on the default branch, an indicator will show the branches which contain the commit. If the commit is part of an unmerged pull request, it will show a link. - -![Commit branch label](/assets/images/help/commits/Commit-branch-label.png) - -Once the commit is on the default branch, any tags that contain the commit will be shown and the default branch will be the only branch listed. - -![Commit-main-label](/assets/images/help/commits/Commit-master-label.png) - -### Further reading - -* "[Signing commits](/articles/signing-commits)" -* "[Signing tags](/articles/signing-tags)" diff --git a/content/github/committing-changes-to-your-project/commit-exists-on-github-but-not-in-my-local-clone.md b/content/github/committing-changes-to-your-project/commit-exists-on-github-but-not-in-my-local-clone.md deleted file mode 100644 index f01c3927a965..000000000000 --- a/content/github/committing-changes-to-your-project/commit-exists-on-github-but-not-in-my-local-clone.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Commit exists on GitHub but not in my local clone -intro: 'Sometimes a commit will be viewable on {% data variables.product.product_name %}, but will not exist in your local clone of the repository.' -redirect_from: - - /articles/commit-exists-on-github-but-not-in-my-local-clone -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When you use `git show` to view a specific commit on the command line, you may get a fatal error. - -For example, you may receive a `bad object` error locally: - -```shell -$ git show 1095ff3d0153115e75b7bca2c09e5136845b5592 -> fatal: bad object 1095ff3d0153115e75b7bca2c09e5136845b5592 -``` - -However, when you view the commit on {% data variables.product.product_location %}, you'll be able to see it without any problems: - -`github.com/$account/$repository/commit/1095ff3d0153115e75b7bca2c09e5136845b5592` - -There are several possible explanations: - -* The local repository is out of date. -* The branch that contains the commit was deleted, so the commit is no longer referenced. -* Someone force pushed over the commit. - -### The local repository is out of date - -Your local repository may not have the commit yet. To get information from your remote repository to your local clone, use `git fetch`: - -```shell -$ git fetch remote -``` - -This safely copies information from the remote repository to your local clone without making any changes to the files you have checked out. -You can use `git fetch upstream` to get information from a repository you've forked, or `git fetch origin` to get information from a repository you've only cloned. - -{% tip %} - -**Tip**: For more information, read about [managing remotes and fetching data](https://git-scm.com/book/en/Git-Basics-Working-with-Remotes) in the [Pro Git](https://git-scm.com/book) book. - -{% endtip %} - -### The branch that contained the commit was deleted - -If a collaborator on the repository has deleted the branch containing the commit -or has force pushed over the branch, the missing commit may have been orphaned -(i.e. it cannot be reached from any reference) and therefore will not be fetched -into your local clone. - -Fortunately, if any collaborator has a local clone of the repository with the -missing commit, they can push it back to {% data variables.product.product_name %}. They need to make sure the commit -is referenced by a local branch and then push it as a new branch to {% data variables.product.product_name %}. - -Let's say that the person still has a local branch (call it `B`) that contains -the commit. This might be tracking the branch that was force pushed or deleted -and they simply haven't updated yet. To preserve the commit, they can push that -local branch to a new branch (call it `recover-B`) on {% data variables.product.product_name %}. For this example, -let's assume they have a remote named `upstream` via which they have push access -to `github.com/$account/$repository`. - -The other person runs: - -```shell -$ git branch recover-B B -# Create a new local branch referencing the commit -$ git push upstream B:recover-B -# Push local B to new upstream branch, creating new reference to commit -``` - -Now, *you* can run: - -```shell -$ git fetch upstream recover-B -# Fetch commit into your local repository. -``` - -### Avoid force pushes - -Avoid force pushing to a repository unless absolutely necessary. This is especially true if more than one person can push to the repository. - -### Further reading - -- ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/Git-Basics-Working-with-Remotes) -- ["Data Recovery" from the _Pro Git_ book](https://git-scm.com/book/en/Git-Internals-Maintenance-and-Data-Recovery) diff --git a/content/github/committing-changes-to-your-project/comparing-commits.md b/content/github/committing-changes-to-your-project/comparing-commits.md deleted file mode 100644 index e350494c34de..000000000000 --- a/content/github/committing-changes-to-your-project/comparing-commits.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Comparing commits -redirect_from: - - /articles/comparing-commits-across-time - - /github/committing-changes-to-your-project/comparing-commits-across-time -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can compare the state of your repository across branches, tags, commits, and dates. To compare different versions of your repository, append `/compare` to your repository's path. - -We'll demonstrate the power of Compare by looking at the compare page for [a fork of the Linguist repo](https://github.com/octocat/linguist), which is at [https://github.com/octocat/linguist/compare/master...octocat:master](https://github.com/octocat/linguist/compare/master...octocat:master). - -Every repository's Compare view contains two drop down menus: `base` and `compare`. - -`base` should be considered the starting point of your comparison, and `compare` is the endpoint. During a comparison, you can always change your `base` and `compare` points by clicking on **Edit**. - -### Comparing branches - -The most common use of Compare is to compare branches, such as when you're starting a new pull request. You'll always be taken to the branch comparison view when starting [a new pull request](/articles/creating-a-pull-request). - -To compare branches, you can select a branch name from the `compare` drop down menu at the top of the page. - -Here's an example of a [comparison between two branches](https://github.com/octocat/linguist/compare/master...octocat:an-example-comparison-for-docs). - -### Comparing tags - -Comparing release tags will show you changes to your repository since the last release. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -For more information, see "[Comparing releases](/github/administering-a-repository/comparing-releases)."{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}To compare tags, you can select a tag name from the `compare` drop-down menu at the top of the page.{% else %} Instead of typing a branch name, type the name of your tag in the `compare` drop down menu.{% endif %} - -Here's an example of a [comparison between two tags](https://github.com/octocat/linguist/compare/v2.2.0...octocat:v2.3.3). - -### Comparing commits - -You can also compare two arbitrary commits in your repository or its forks on {% data variables.product.prodname_dotcom %} in a two-dot diff comparison. - -To quickly compare two commits or Git Object IDs (OIDs) directly with each other in a two-dot diff comparison on {% data variables.product.prodname_dotcom %}, edit the URL of your repository's "Comparing changes" page. - -{% data reusables.repositories.two-dot-diff-comparison-example-urls %} - -To learn more about other comparison options, see "[Three-dot and two-dot diff comparisons](/articles/about-comparing-branches-in-pull-requests#three-dot-and-two-dot-git-diff-comparisons)." - -### Comparing across forks - -You can compare your base repository and any forked repository. This is the view that's presented when a user performs a Pull Request to a project. - -To compare branches on different repositories, preface the branch names with user names. For example, by specifying `octocat:main` for `base` and `octo-org:main` for `compare`, you can compare the `main` branch of the repositories respectively owned by `octocat` and `octo-org`. - -Here's an example of a [comparison between two repositories](https://github.com/octocat/linguist/compare/master...octo-org:master). - -### Comparisons across commits - -As a shortcut, Git uses the `^` notation to mean "one commit prior." - -You can use this notation to compare a single commit or branch against its immediate predecessors. For example, `96d29b7^^^^^` indicates five commits prior to `96d29b7`, because there are five `^` marks. Typing `96d29b7^^^^^` in the `base` branch and `96d29b7` in the `compare` branch compares the five commits made before `96d29b7` with the `96d29b7` commit. - -Here's an example of a [comparison using the `^` notation](https://github.com/octocat/linguist/compare/octocat:96d29b7%5E%5E%5E%5E%5E...octocat:96d29b7). - -### Further reading - -- "[Changing the base branch of a pull request](/articles/changing-the-base-branch-of-a-pull-request)" diff --git a/content/github/committing-changes-to-your-project/creating-a-commit-on-behalf-of-an-organization.md b/content/github/committing-changes-to-your-project/creating-a-commit-on-behalf-of-an-organization.md deleted file mode 100644 index a84bef98b1c3..000000000000 --- a/content/github/committing-changes-to-your-project/creating-a-commit-on-behalf-of-an-organization.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Creating a commit on behalf of an organization -intro: 'You can create commits on behalf of an organization by adding a trailer to the commit''s message. Commits attributed to an organization include an `on-behalf-of` badge on {% data variables.product.product_name %}.' -redirect_from: - - /articles/creating-a-commit-on-behalf-of-an-organization -versions: - free-pro-team: '*' ---- - -{% note %} - -**Note:** The ability to create a commit on behalf of an organization is currently in public beta and is subject to change. - -{% endnote %} - -To create commits on behalf of an organization: - -- you must be a member of the organization indicated in the trailer -- you must sign the commit -- your commit email and the organization email must be in a domain verified by the organization -- your commit message must end with the commit trailer `on-behalf-of: @org ` - - `org` is the organization's login - - `name@organization.com` is in the organization's domain - -Organization's can use the `name@organization.com` email as a public point of contact for open source efforts. - -### Creating commits with an `on-behalf-of` badge on the command line - -{% data reusables.pull_requests.commit-message-with-trailer-beginning %} - -2. On the next line of the commit message, type `on-behalf-of: @org `, then a closing quotation mark. - - ```shell - $ git commit -m "Refactor usability tests. - > - > - on-behalf-of: @org <name@organization.com>" - ``` - -The new commit, message, and badge will appear on {% data variables.product.product_location %} the next time you push. For more information, see "[Pushing changes to a remote repository](/articles/pushing-commits-to-a-remote-repository/)." - -### Creating commits with an `on-behalf-of` badge on {% data variables.product.product_name %} - -After you've made changes in a file using the web editor on {% data variables.product.product_name %}, you can create a commit on behalf of your organization by adding an `on-behalf-of:` trailer to the commit's message. - -1. After making your changes, at the bottom of the page, type a short, meaningful commit message that describes the changes you made. - ![Commit message for your change](/assets/images/help/repository/write-commit-message-quick-pull.png) - -2. In the text box below your commit message, add `on-behalf-of: @org `. - - ![Commit message on-behalf-of trailer example in second commit message text box](/assets/images/help/repository/write-commit-message-on-behalf-of-trailer.png) -4. Click **Commit changes** or **Propose changes**. - -The new commit, message, and badge will appear on {% data variables.product.product_location %}. - -### Further reading - -- "[Viewing contributions on your profile](/articles/viewing-contributions-on-your-profile)" -- "[Why are my contributions not showing up on my profile?](/articles/why-are-my-contributions-not-showing-up-on-my-profile)" -- "[Viewing a summary of repository activity](/articles/viewing-a-summary-of-repository-activity)" -- "[Viewing a project’s contributors](/articles/viewing-a-projects-contributors)" -- "[Changing a commit message](/articles/changing-a-commit-message)" diff --git a/content/github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors.md b/content/github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors.md deleted file mode 100644 index 7176500a25ca..000000000000 --- a/content/github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Creating a commit with multiple authors -intro: 'You can attribute a commit to more than one author by adding one or more `Co-authored-by` trailers to the commit''s message. Co-authored commits are visible on {% data variables.product.product_name %}{% if enterpriseServerVersions contains currentVersion %} and can be included in the profile contributions graph and the repository''s statistics{% endif %}.' -redirect_from: - - /articles/creating-a-commit-with-multiple-authors -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Required co-author information - -Before you can add a co-author to a commit, you must know the appropriate email to use for each co-author. For the co-author's commit to count as a contribution, you must use the email associated with their {% data variables.product.product_name %} account. - -{% if currentVersion == "free-pro-team@latest" %} - -If a person chooses to keep their email address private, you should use their {% data variables.product.product_name %}-provided `no-reply` email to protect their privacy. Otherwise, the co-author's email will be available to the public in the commit message. If you want to keep your email private, you can choose to use a {% data variables.product.product_name %}-provided `no-reply` email for Git operations and ask other co-authors to list your `no-reply` email in commit trailers. - -For more information, see "[Setting your commit email address](/articles/setting-your-commit-email-address)." - - {% tip %} - - **Tip:** You can help a co-author find their preferred email address by sharing this information: - - To find your {% data variables.product.product_name %}-provided `no-reply` email, navigate to your email settings page under "Keep my email address private." - - To find the email you used to configure Git on your computer, run `git config user.email` on the command line. - - {% endtip %} - -{% endif %} - -### Creating co-authored commits using {% data variables.product.prodname_desktop %} - -You can use {% data variables.product.prodname_desktop %} to create a commit with a co-author. For more information, see "[Write a commit message and push your changes](/desktop/contributing-to-projects/committing-and-reviewing-changes-to-your-project#3-write-a-commit-message-and-push-your-changes)" and [{% data variables.product.prodname_desktop %}](https://desktop.github.com). - -![Add a co-author to the commit message](/assets/images/help/desktop/co-authors-demo-hq.gif) - -### Creating co-authored commits on the command line - -{% data reusables.pull_requests.collect-co-author-commit-git-config-info %} - -{% data reusables.pull_requests.commit-message-with-trailer-beginning %} - -3. On the next line of the commit message, type `Co-authored-by: name ` with specific information for each co-author. After the co-author information, add a closing quotation mark. - - If you're adding multiple co-authors, give each co-author their own line and `Co-authored-by:` commit trailer. - ```shell - $ git commit -m "Refactor usability tests. - > - > - Co-authored-by: name <name@example.com> - Co-authored-by: another-name <another-name@example.com>" - ``` - -The new commit and message will appear on {% data variables.product.product_location %} the next time you push. For more information, see "[Pushing changes to a remote repository](/articles/pushing-commits-to-a-remote-repository/)." - -### Creating co-authored commits on {% data variables.product.product_name %} - -After you've made changes in a file using the web editor on {% data variables.product.product_name %}, you can create a co-authored commit by adding a `Co-authored-by:` trailer to the commit's message. - -{% data reusables.pull_requests.collect-co-author-commit-git-config-info %} -2. After making your changes together, at the bottom of the page, type a short, meaningful commit message that describes the changes you made. - ![Commit message for your change](/assets/images/help/repository/write-commit-message-quick-pull.png) -3. In the text box below your commit message, add `Co-authored-by: name ` with specific information for each co-author. If you're adding multiple co-authors, give each co-author their own line and `Co-authored-by:` commit trailer. - - ![Commit message co-author trailer example in second commit message text box](/assets/images/help/repository/write-commit-message-co-author-trailer.png) -4. Click **Commit changes** or **Propose changes**. - -The new commit and message will appear on {% data variables.product.product_location %}. - -### Further reading -{% if enterpriseServerVersions contains currentVersion %} -- "[Viewing contributions on your profile](/articles/viewing-contributions-on-your-profile)" -- "[Why are my contributions not showing up on my profile?](/articles/why-are-my-contributions-not-showing-up-on-my-profile)"{% endif %} -- "[Viewing a summary of repository activity](/articles/viewing-a-summary-of-repository-activity)" -- "[Viewing a project's contributors](/articles/viewing-a-projects-contributors)" -- "[Changing a commit message](/articles/changing-a-commit-message)" -- "[Committing and reviewing changes to your project](/desktop/contributing-to-projects/committing-and-reviewing-changes-to-your-project#3-write-a-commit-message-and-push-your-changes)" in the {% data variables.product.prodname_desktop %} documentation diff --git a/content/github/committing-changes-to-your-project/creating-and-editing-commits.md b/content/github/committing-changes-to-your-project/creating-and-editing-commits.md deleted file mode 100644 index 59c9a7e12e8d..000000000000 --- a/content/github/committing-changes-to-your-project/creating-and-editing-commits.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Creating and editing commits -intro: '' -mapTopic: true -redirect_from: - - /articles/creating-and-editing-commits -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/committing-changes-to-your-project/differences-between-commit-views.md b/content/github/committing-changes-to-your-project/differences-between-commit-views.md deleted file mode 100644 index f8f0dd08f2b8..000000000000 --- a/content/github/committing-changes-to-your-project/differences-between-commit-views.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Differences between commit views -redirect_from: - - /articles/differences-between-commit-views -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -On {% data variables.product.product_name %}, you can see the commit history of a repository by: - -- Navigating directly to [the commits page](https://github.com/mozilla/rust/commits/master) of a repository -- Clicking on a file, then clicking **History**, to get to [the commit history for a specific file](https://github.com/mozilla/rust/commits/master/README.md) - -These two commit views may show _different_ information at times. The history for a single file may omit commits found on the repository's commit history. - -Git has several different ways of showing the history of a repository. When Git shows the history of a single file, it simplifies history by omitting -commits that did not change the file. Instead of looking at every commit to -decide whether it touched the file, Git will omit a whole branch if that branch, -when merged, did not impact the final contents of the file. Any commits on the -branch that touched the file will not be shown. - -For a file's commit history, {% data variables.product.product_name %} explicitly follows this simple strategy. It makes the history simpler by removing commits that didn't contribute to the final result. For example, if a side branch made a change and then reverted it, that commit would not show up in the branch history. This makes reviewing branches more efficient, since you only see the commits that affect the file. - -This truncated view might not always contain the information you're -after. If you want to see the entire history, {% data variables.product.product_name %} provides a view with more -information on a repository's commits page. - -For more information on how Git considers commit history, see [the "History Simplification"](https://git-scm.com/docs/git-log#_history_simplification) section of the `git log` help article. - -### Further reading - -- "[Signing commits](/articles/signing-commits)" -- "[Searching commits](/articles/searching-commits)" diff --git a/content/github/committing-changes-to-your-project/index.md b/content/github/committing-changes-to-your-project/index.md deleted file mode 100644 index b35dd61831cd..000000000000 --- a/content/github/committing-changes-to-your-project/index.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Committing changes to your project -redirect_from: - - /categories/21/articles/ - - /categories/commits/ - - /categories/committing-changes-to-your-project -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /creating-and-editing-commits %} - {% link_in_list /about-commits %} - {% link_in_list /creating-a-commit-with-multiple-authors %} - - {% link_in_list /creating-a-commit-on-behalf-of-an-organization %} - - {% link_in_list /changing-a-commit-message %} -{% topic_link_in_list /viewing-and-comparing-commits %} - {% link_in_list /commit-branch-and-tag-labels %} - {% link_in_list /comparing-commits %} - {% link_in_list /differences-between-commit-views %} -{% topic_link_in_list /troubleshooting-commits %} - {% link_in_list /commit-exists-on-github-but-not-in-my-local-clone %} - {% link_in_list /why-are-my-commits-linked-to-the-wrong-user %} diff --git a/content/github/committing-changes-to-your-project/troubleshooting-commits.md b/content/github/committing-changes-to-your-project/troubleshooting-commits.md deleted file mode 100644 index e9c329d4372b..000000000000 --- a/content/github/committing-changes-to-your-project/troubleshooting-commits.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Troubleshooting commits -intro: '' -mapTopic: true -redirect_from: - - /articles/troubleshooting-commits -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/committing-changes-to-your-project/viewing-and-comparing-commits.md b/content/github/committing-changes-to-your-project/viewing-and-comparing-commits.md deleted file mode 100644 index 137945c6cb97..000000000000 --- a/content/github/committing-changes-to-your-project/viewing-and-comparing-commits.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Viewing and comparing commits -intro: '' -mapTopic: true -redirect_from: - - /articles/viewing-and-comparing-commits -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/committing-changes-to-your-project/why-are-my-commits-linked-to-the-wrong-user.md b/content/github/committing-changes-to-your-project/why-are-my-commits-linked-to-the-wrong-user.md deleted file mode 100644 index 5f44701f6c58..000000000000 --- a/content/github/committing-changes-to-your-project/why-are-my-commits-linked-to-the-wrong-user.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Why are my commits linked to the wrong user? -redirect_from: - - /articles/how-do-i-get-my-commits-to-link-to-my-github-account/ - - /articles/why-are-my-commits-linked-to-the-wrong-user -intro: '{% data variables.product.product_name %} uses the email address in the commit header to link the commit to a GitHub user. If your commits are being linked to another user, or not linked to a user at all, you may need to change your local Git configuration settings, add an email address to your account email settings, or do both.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -{% tip %} - -**Note**: If your commits are linked to another user, that does not mean the user can access your repository. A user can only access a repository you own if you add them as a collaborator or add them to a team that has access to the repository. - -{% endtip %} - -### Commits are linked to another user - -If your commits are linked to another user, that means the user has added the email address in your local Git configuration settings to their {% data variables.product.product_name %} account. In this case, you can change the email in your local Git configuration settings and add the new email address to your {% data variables.product.product_name %} account to link future commits to your account. - -1. To change the email address in your local Git configuration, follow the steps in "[Setting your commit email address in Git](/articles/setting-your-commit-email-address)". If you work on multiple machines, you will need to change this setting on each one. -2. Add the email address from step 2 to your account settings by following the steps in "[Adding an email address to your GitHub account](/articles/adding-an-email-address-to-your-github-account)". - -Commits you make from this point forward will be linked to your account. - -### Commits are not linked to any user - -If your commits are not linked to any user, the commit author's name will not be rendered as a link to a user profile. - -To check the email address used for those commits and connect commits to your account, take the following steps: - -1. Navigate to the commit by clicking the commit message link. -![Commit message link](/assets/images/help/commits/commit-msg-link.png) -2. To read a message about why the commit is not linked, hover over the blue {% octicon "question" aria-label="Question mark" %} to the right of the username. -![Commit hover message](/assets/images/help/commits/commit-hover-msg.png) - - - **Unrecognized author (with email address)** If you see this message with an email address, it means the address has not been added to your account settings. To link your commits, [add the email address to your GitHub email settings](/articles/adding-an-email-address-to-your-github-account). If your email address has a Gravatar associated with it, the Gravatar will be displayed next to your username, rather than the default gray Octocat. - - **Unrecognized author (no email address)** If you see this message without an email address, it means you used a generic email address that can't be added to your email settings. You will need to [set your commit email address in Git](/articles/setting-your-commit-email-address), then [add the new address to your GitHub email settings](/articles/adding-an-email-address-to-your-github-account) to link your future commits. Old commits will not be linked. - - **Invalid email** This means the email address in your local Git configuration settings is either blank or not formatted as an email address. You will need to [set your commit email address in Git](/articles/setting-your-commit-email-address), then [add the new address to your GitHub email settings](/articles/adding-an-email-address-to-your-github-account) to link your future commits. Old commits will not be linked. - -{% warning %} - -If your local Git configuration contained a generic email address, or an email address that was already attached to another user's account, then your previous commits will not be linked to your account. While Git does allow you to change the email address used for previous commits, we strongly discourage this, especially in a shared repository. - -{% endwarning %} - -### Further reading - -* "[Searching commits](/articles/searching-commits)" diff --git a/content/github/creating-cloning-and-archiving-repositories/about-archiving-content-and-data-on-github.md b/content/github/creating-cloning-and-archiving-repositories/about-archiving-content-and-data-on-github.md deleted file mode 100644 index 3b9fb08f27e5..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/about-archiving-content-and-data-on-github.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: About archiving content and data on GitHub -intro: 'You can archive content and data on {% data variables.product.product_name %} for other people to view and reference.' -redirect_from: - - /articles/about-archiving-content-and-data-on-github -versions: - free-pro-team: '*' ---- - -### Persistence of public repositories - -{% data variables.product.product_name %} intends to keep your public repositories available unless you remove them. In some cases, we may make public content unavailable, for example if: - -- We receive a [DMCA Takedown Notice](/articles/dmca-takedown-policy) for content in a repository. -- We determine that a repository's content violates our [Community Guidelines](/articles/github-community-guidelines) or [Terms of Service](/articles/github-terms-of-service/). - -Academics and researchers can reference this information in data management plans. - -### About the {% data variables.product.prodname_archive %} - -{% data reusables.repositories.about-github-archive-program %} - -The {% data variables.product.prodname_archive %} enables third-party partners to archive public repositories using the public API. These partners archive different types of data at varying frequencies and make the data available to the public. The {% data variables.product.prodname_archive %} also protects the data on an ongoing basis by storing multiple copies across various data formats and locations. For example, {% data variables.product.company_short %} stores repositories in the {% data variables.product.prodname_arctic_vault %}, a very-long-term archive intended to last at least 1,000 years. For more information, see [{% data variables.product.prodname_archive %}](https://archiveprogram.github.com/). - -Responsible use of archives includes respecting users' privacy. For more information, see "[Public information on GitHub](/articles/github-privacy-statement/#public-information-on-github)." - -You can opt out of the {% data variables.product.prodname_archive %} for your repository. For more information, see "[Opting into or out of the {% data variables.product.prodname_archive %} for your public repository](/github/understanding-how-github-uses-and-protects-your-data/opting-into-or-out-of-the-github-archive-program-for-your-public-repository)." - -### Adding an open source license to increase archivability - -Libraries and researchers may require legal protections to create archives of publicly available content. If you want third parties to consider your work on {% data variables.product.product_name %} for archiving, you can add an [open source license](/articles/open-source-licensing) to your projects. An open source license gives contributors explicit permissions to copy and distribute the material in your repositories. diff --git a/content/github/creating-cloning-and-archiving-repositories/about-archiving-repositories.md b/content/github/creating-cloning-and-archiving-repositories/about-archiving-repositories.md deleted file mode 100644 index 9e87c1f42cf1..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/about-archiving-repositories.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: About archiving repositories -intro: 'When you archive a repository, you are letting people know that a project is no longer actively maintained.' -redirect_from: - - /articles/about-archiving-repositories -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% if currentVersion == "free-pro-team@latest" %} -{% note %} - -**Note:** If you have a legacy per-repository billing plan, you will still be charged for your archived repository. If you don't want to be charged for an archived repository, you must upgrade to a new product. For more information, see "[{% data variables.product.prodname_dotcom %}'s products](/articles/github-s-products)." - -{% endnote %} -{% endif %} - -{% data reusables.repositories.archiving-repositories-recommendation %} - -Once a repository is archived, you cannot add or remove collaborators or teams. Contributors with access to the repository can only fork or star your project. - -When a repository is archived, its issues, pull requests, code, labels, milestones, projects, wiki, releases, commits, tags, branches, reactions, code scanning alerts, and comments become read-only. To make changes in an archived repository, you must unarchive the repository first. - -You can search for archived repositories. For more information, see "[Searching for repositories](/articles/searching-for-repositories/#search-based-on-whether-a-repository-is-archived)." You can also search for issues and pull requests within archived repositories. For more information, see "[Searching issues and pull requests](/articles/searching-issues-and-pull-requests/#search-based-on-whether-a-repository-is-archived)." - -### Further reading -- "[Archiving repositories](/articles/archiving-repositories)" diff --git a/content/github/creating-cloning-and-archiving-repositories/about-code-owners.md b/content/github/creating-cloning-and-archiving-repositories/about-code-owners.md deleted file mode 100644 index 146dee968204..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/about-code-owners.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: About code owners -intro: You can use a CODEOWNERS file to define individuals or teams that are responsible for code in a repository. -redirect_from: - - /articles/about-codeowners/ - - /articles/about-code-owners -product: '{% data reusables.gated-features.code-owners %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -People with admin or owner permissions can set up a CODEOWNERS file in a repository. - -The people you choose as code owners must have write permissions for the repository. When the code owner is a team, that team must have write permissions, even if all the individual members of the team already have write permissions directly, through organization membership, or through another team membership. - -### About code owners - -Code owners are automatically requested for review when someone opens a pull request that modifies code that they own. Code owners are not automatically requested to review draft pull requests. For more information about draft pull requests, see "[About pull requests](/github/collaborating-with-issues-and-pull-requests/about-pull-requests#draft-pull-requests)." When you mark a draft pull request as ready for review, code owners are automatically notified. If you convert a pull request to a draft, people who are already subscribed to notifications are not automatically unsubscribed. For more information, see "[Changing the stage of a pull request](/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request)." - -When someone with admin or owner permissions has enabled required reviews, they also can optionally require approval from a code owner before the author can merge a pull request in the repository. For more information, see "[Enabling required reviews for pull requests](/github/administering-a-repository/enabling-required-reviews-for-pull-requests)." - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %}If a team has enabled code review assignments, the individual approvals won't satisfy the requirement for code owner approval in a protected branch. For more information, see "[Managing code review assignment for your team](/github/setting-up-and-managing-organizations-and-teams/managing-code-review-assignment-for-your-team)."{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -If a file has a code owner, you can see who the code owner is before you open a pull request. In the repository, you can browse to the file and hover over {% octicon "shield-lock" aria-label="The edit icon" %}. - -![Code owner for a file in a repository](/assets/images/help/repository/code-owner-for-a-file.png) -{% endif %} - -### CODEOWNERS file location - -To use a CODEOWNERS file, create a new file called `CODEOWNERS` in the root, `docs/`, or `.github/` directory of the repository, in the branch where you'd like to add the code owners. - -Each CODEOWNERS file assigns the code owners for a single branch in the repository. Thus, you can assign different code owners for different branches, such as `@octo-org/codeowners-team` for a code base on the default branch and `@octocat` for a {% data variables.product.prodname_pages %} site on the `gh-pages` branch. - -For code owners to receive review requests, the CODEOWNERS file must be on the base branch of the pull request. For example, if you assign `@octocat` as the code owner for *.js* files on the `gh-pages` branch of your repository, `@octocat` will receive review requests when a pull request with changes to *.js* files is opened between the head branch and `gh-pages`. - -### CODEOWNERS syntax - -A CODEOWNERS file uses a pattern that follows the same rules used in [gitignore](https://git-scm.com/docs/gitignore#_pattern_format) files. The pattern is followed by one or more {% data variables.product.prodname_dotcom %} usernames or team names using the standard `@username` or `@org/team-name` format. You can also refer to a user by an email address that has been added to their {% data variables.product.product_name %} account, for example `user@example.com`. - -If any line in your CODEOWNERS file contains invalid syntax, the file will not be detected and will not be used to request reviews. Invalid syntax includes inline comments and user or team names that do not exist on {% data variables.product.product_name %}. -#### Example of a CODEOWNERS file -``` -# This is a comment. -# Each line is a file pattern followed by one or more owners. - -# These owners will be the default owners for everything in -# the repo. Unless a later match takes precedence, -# @global-owner1 and @global-owner2 will be requested for -# review when someone opens a pull request. -* @global-owner1 @global-owner2 - -# Order is important; the last matching pattern takes the most -# precedence. When someone opens a pull request that only -# modifies JS files, only @js-owner and not the global -# owner(s) will be requested for a review. -*.js @js-owner - -# You can also use email addresses if you prefer. They'll be -# used to look up users just like we do for commit author -# emails. -*.go docs@example.com - -# In this example, @doctocat owns any files in the build/logs -# directory at the root of the repository and any of its -# subdirectories. -/build/logs/ @doctocat - -# The `docs/*` pattern will match files like -# `docs/getting-started.md` but not further nested files like -# `docs/build-app/troubleshooting.md`. -docs/* docs@example.com - -# In this example, @octocat owns any file in an apps directory -# anywhere in your repository. -apps/ @octocat - -# In this example, @doctocat owns any file in the `/docs` -# directory in the root of your repository and any of its -# subdirectories. -/docs/ @doctocat -``` - -### Further reading - -- "[Creating new files](/articles/creating-new-files)" -- "[Inviting collaborators to a personal repository](/articles/inviting-collaborators-to-a-personal-repository)" -- "[Managing an individual's access to an organization repository](/articles/managing-an-individual-s-access-to-an-organization-repository)" -- "[Managing team access to an organization repository](/articles/managing-team-access-to-an-organization-repository)" -- "[Viewing a pull request review](/articles/viewing-a-pull-request-review)" diff --git a/content/github/creating-cloning-and-archiving-repositories/about-readmes.md b/content/github/creating-cloning-and-archiving-repositories/about-readmes.md deleted file mode 100644 index 941ea80297f0..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/about-readmes.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: About READMEs -intro: 'You can add a README file to your repository to tell other people why your project is useful, what they can do with your project, and how they can use it.' -redirect_from: - - /articles/section-links-on-readmes-and-blob-pages/ - - /articles/relative-links-in-readmes/ - - /articles/about-readmes -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -A README file, along with {% if currentVersion == "free-pro-team@latest" %}a [repository license](/articles/licensing-a-repository), [contribution guidelines](/articles/setting-guidelines-for-repository-contributors), and a [code of conduct](/articles/adding-a-code-of-conduct-to-your-project){% else %}a [repository license](/articles/licensing-a-repository) and [contribution guidelines](/articles/setting-guidelines-for-repository-contributors){% endif %}, helps you communicate expectations for and manage contributions to your project. - -A README is often the first item a visitor will see when visiting your repository. README files typically include information on: -- What the project does -- Why the project is useful -- How users can get started with the project -- Where users can get help with your project -- Who maintains and contributes to the project - -If you put your README file in your repository's root, `docs`, or hidden `.github` directory, {% data variables.product.product_name %} will recognize and automatically surface your README to repository visitors. - -![Main page of the github/scientist repository and its README file](/assets/images/help/repository/repo-with-readme.png) - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} - -{% data reusables.profile.profile-readme %} - -![README file on your username/username repository](/assets/images/help/repository/username-repo-with-readme.png) - -{% endif %} - -### Section links in README files and blob pages - -Many projects use a table of contents at the start of a README to direct users to different sections of the file. {% data reusables.repositories.section-links %} - -### Relative links and image paths in README files - -{% data reusables.repositories.relative-links %} - -### Further reading - -- "[Adding a file to a repository](/articles/adding-a-file-to-a-repository)" -- 18F's "[Making READMEs readable](https://github.com/18F/open-source-guide/blob/18f-pages/pages/making-readmes-readable.md)" diff --git a/content/github/creating-cloning-and-archiving-repositories/about-repositories.md b/content/github/creating-cloning-and-archiving-repositories/about-repositories.md deleted file mode 100644 index 8ea218ce1dc1..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/about-repositories.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: About repositories -intro: A repository is like a folder for your project. Your project's repository contains all of your project's files and stores each file's revision history. You can also discuss and manage your project's work within the repository. -redirect_from: - - /articles/about-repositories -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can own repositories individually, or you can share ownership of repositories with other people in an organization. - -You can restrict who has access to a repository by choosing the repository's visibility. For more information, see "[About repository visibility](/github/creating-cloning-and-archiving-repositories/about-repository-visibility)." - -For user-owned repositories, you can give other people collaborator access so that they can collaborate on your project. If a repository is owned by an organization, you can give organization members access permissions to collaborate on your repository. For more information, see "[Permission levels for a user account repository](/articles/permission-levels-for-a-user-account-repository/)" and "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization/)." - -{% if currentVersion == "free-pro-team@latest" %} -With {% data variables.product.prodname_free_team %} for user accounts and organizations, you can work with unlimited collaborators on unlimited public repositories with a full feature set, or unlimited private repositories with a limited feature set. To get advanced tooling for private repositories, you can upgrade to {% data variables.product.prodname_pro %}, {% data variables.product.prodname_team %}, or {% data variables.product.prodname_ghe_cloud %}. {% data reusables.gated-features.more-info %} -{% else %} -Each person and organization can own unlimited repositories and invite an unlimited number of collaborators to all repositories. -{% endif %} - -You can collaborate on your project with others using your repository's issues, pull requests, and project boards. - -![Main page of the octocat/Hello-World repository](/assets/images/help/repository/repo-main-page.png) - -{% data reusables.repositories.repo-size-limit %} - -### Further reading - -- "[Creating a new repository](/articles/creating-a-new-repository)" -- "[Collaborating with issues and pull requests](/categories/collaborating-with-issues-and-pull-requests)" -- "[Managing your work on {% data variables.product.prodname_dotcom %}](/categories/managing-your-work-on-github/)" -- "[Administering a repository](/categories/administering-a-repository)" -- "[Visualizing repository data with graphs](/categories/visualizing-repository-data-with-graphs/)" -- "[About wikis](/articles/about-wikis)" -- "[{% data variables.product.prodname_dotcom %} glossary](/articles/github-glossary)" diff --git a/content/github/creating-cloning-and-archiving-repositories/about-repository-languages.md b/content/github/creating-cloning-and-archiving-repositories/about-repository-languages.md deleted file mode 100644 index d172c0367e52..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/about-repository-languages.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: About repository languages -intro: The files and directories within a repository determine the languages that make up the repository. You can view a repository's languages to get a quick overview of the repository. -redirect_from: - - /articles/my-repository-is-marked-as-the-wrong-language/ - - /articles/why-isn-t-my-favorite-language-recognized/ - - /articles/my-repo-is-marked-as-the-wrong-language/ - - /articles/why-isn-t-sql-recognized-as-a-language/ - - /articles/why-isn-t-my-favorite-language-recognized-by-github/ - - /articles/about-repository-languages -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% data variables.product.product_name %} uses the open source [Linguist library](https://github.com/github/linguist) to -determine file languages for syntax highlighting and repository statistics. Language statistics will update after you push changes to your default branch. - -Some files are hard to identify, and sometimes projects contain more library and vendor files than their primary code. If you're receiving incorrect results, please consult the Linguist [troubleshooting guide](https://github.com/github/linguist#troubleshooting) for help. - -### Markup languages - -Markup languages are rendered to HTML and displayed inline using our open-source [Markup library](https://github.com/github/markup). At this time, we are not accepting new markup languages to show within {% data variables.product.product_name %}. However, we do actively maintain our current markup languages. If you see a problem, [please create an issue](https://github.com/github/markup/issues/new). diff --git a/content/github/creating-cloning-and-archiving-repositories/about-repository-visibility.md b/content/github/creating-cloning-and-archiving-repositories/about-repository-visibility.md deleted file mode 100644 index 8eae27e8aec4..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/about-repository-visibility.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: About repository visibility -intro: 'You can restrict who has access to a repository by choosing a repository''s visibility: {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %}public, internal, or private{% else %} public or private{% endif %}.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About repository visibility - -When you create a repository, you can choose to make the repository public or private. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %}If you're creating the repository in an organization{% if currentVersion == "free-pro-team@latest" %} that is owned by an enterprise account{% endif %}, you can also choose to make the repository internal.{% endif %} - -{% if enterpriseServerVersions contains currentVersion %}If {% data variables.product.product_location_enterprise %} is not in private mode or behind a firewall, p{% else %}P{% endif %}ublic repositories are accessible to everyone on the internet.{% if enterpriseServerVersions contains currentVersion %} Otherwise, public repositories are available to everyone using {% data variables.product.product_location_enterprise %}, including outside collaborators.{% endif %} Private repositories are only accessible to you, people you explicitly share access with, and, for organization repositories, [certain organization members](/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization). {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %}Internal repositories are accessible to members of your enterprise. For more information, see "[About internal repositories](#about-internal-repositories)."{% endif %} - -Organization owners always have access to every repository created in an organization. For more information, see "[Repository permission levels for an organization](/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization)." - -People with admin permissions for a repository can change an existing repository's visibility. For more information, see "[Setting repository visibility](/github/administering-a-repository/setting-repository-visibility)." - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -### About internal repositories - -{% note %} - -**Note:** {% data reusables.gated-features.internal-repos %} - -{% endnote %} - -{% data reusables.repositories.about-internal-repos %} For more information on innersource, see {% data variables.product.prodname_dotcom %}'s whitepaper "[An introduction to innersource](https://resources.github.com/whitepapers/introduction-to-innersource/)." - -All {% if currentVersion == "free-pro-team@latest" %}enterprise members{% else %}organization members{% endif %} have read permissions to the internal repository, but internal repositories are not visible to people {% if currentVersion == "free-pro-team@latest" %}outside of the enterprise account{% else %}who are not members of an organization{% endif %}, including outside collaborators on organization repositories. For more information, see {% if currentVersion == "free-pro-team@latest" %}"[Roles for an enterprise account](/articles/roles-for-an-enterprise-account#enterprise-members)" and {% endif %}"[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)." - -{% data reusables.repositories.internal-repo-default %} - -If a user is removed from {% if currentVersion == "free-pro-team@latest" %}an enterprise account{% else %}all organizations on the instance{% endif %}, that user's forks of internal repositories are removed automatically. -{% endif %} diff --git a/content/github/creating-cloning-and-archiving-repositories/archiving-a-github-repository.md b/content/github/creating-cloning-and-archiving-repositories/archiving-a-github-repository.md deleted file mode 100644 index f61b7497d7ef..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/archiving-a-github-repository.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Archiving a GitHub repository -intro: 'You can archive, back up, and cite your work using {% data variables.product.product_name %}, the API, or third-party tools and services.' -redirect_from: - - /articles/can-i-archive-a-repository/ - - /articles/archiving-a-github-repository - - /enterprise/admin/user-management/archiving-and-unarchiving-repositories -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/creating-cloning-and-archiving-repositories/archiving-repositories.md b/content/github/creating-cloning-and-archiving-repositories/archiving-repositories.md deleted file mode 100644 index 4fb7e1f1c51d..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/archiving-repositories.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Archiving repositories -intro: You can archive a repository to make it read-only for all users and indicate that it's no longer actively maintained. You can also unarchive repositories that have been archived. -redirect_from: - - /articles/archiving-repositories -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.archiving-repositories-recommendation %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Danger Zone", click **Archive this repository** or **Unarchive this repository**. - ![Archive this repository button](/assets/images/help/repository/archive-repository.png) -4. Read the warnings. -5. Type the name of the repository you want to archive or unarchive. - ![Archive repository warnings](/assets/images/help/repository/archive-repository-warnings.png) -6. Click **I understand the consequences, archive this repository**. - -### Further reading -- "[About archiving repositories](/articles/about-archiving-repositories)" diff --git a/content/github/creating-cloning-and-archiving-repositories/backing-up-a-repository.md b/content/github/creating-cloning-and-archiving-repositories/backing-up-a-repository.md deleted file mode 100644 index 9d4131276c48..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/backing-up-a-repository.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Backing up a repository -intro: 'You can use{% if enterpriseServerVersions contains currentVersion %} Git and{% endif %} the API {% if currentVersion == "free-pro-team@latest" %}or a third-party tool {% endif %}to back up your repository.' -redirect_from: - - /articles/backing-up-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% if currentVersion == "free-pro-team@latest" %} - -To download an archive of your repository, you can use the API for user or organization migrations. For more information, see "[Migrations](/v3/migrations/)." -{% else %} - -You can download and back up your repositories manually: - -- To download a repository's Git data to your local machine, you'll need to clone the repository. For more information, see "[Cloning a repository](/articles/cloning-a-repository)." -- You can also download your repository's wiki. For more information, see "[Adding or editing wiki pages](/articles/adding-or-editing-wiki-pages)." - -When you clone a repository or wiki, only Git data, such as project files and commit history, is downloaded. You can use our API to export other elements of your {% data variables.product.product_name %} repository to your local machine: - -- [Issues](/v3/issues/#list-issues-for-a-repository) -- [Pull requests](/v3/pulls/#list-pull-requests) -- [Forks](/rest/reference/repos#list-forks) -- [Comments](/rest/reference/issues#list-issue-comments-for-a-repository) -- [Milestones](/rest/reference/issues#list-milestones) -- [Labels](/rest/reference/issues#list-labels-for-a-repository) -- [Watchers](/rest/reference/activity#list-watchers) -- [Stargazers](/rest/reference/activity#list-stargazers) -- [Projects](/v3/projects/#list-repository-projects) -{% endif %} - -Once you have {% if enterpriseServerVersions contains currentVersion %}a local version of all the content you want to back up, you can create a zip archive and {% else %}downloaded your archive, you can {% endif %}copy it to an external hard drive and/or upload it to a cloud-based backup service such as [Google Drive](https://www.google.com/drive/) or [Dropbox](https://www.dropbox.com/). - -{% if currentVersion == "free-pro-team@latest" %} -### Third-party backup tools - -A number of self-service tools exist that automate backups of repositories. Unlike archival projects, which archive _all_ public repositories on {% data variables.product.product_name %} that have not opted out and make the data accessible to anyone, backup tools will download data from _specific_ repositories and organize it within a new branch or directory. For more information about archival projects, see "[About archiving content and data on {% data variables.product.prodname_dotcom %}](/github/creating-cloning-and-archiving-repositories/about-archiving-content-and-data-on-github#about-the-github-archive-program)." - -You can back up all of a repository's Git data (such as project files and commit history), as well as much data from {% data variables.product.product_name %} (such as issues and pull requests), with [BackHub](https://github.com/marketplace/backhub), which creates daily recurring backups of your repositories with snapshots up to 30 days back in time. BackHub is available in {% data variables.product.prodname_marketplace %}. -{% endif %} diff --git a/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github.md b/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github.md deleted file mode 100644 index d2b0973d49de..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Cloning a repository from GitHub -intro: 'You can clone a remote repository to your local machine. If you run into errors, there are some common troubleshooting solutions.' -mapTopic: true -redirect_from: - - /articles/cloning-a-repository-from-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository.md b/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository.md deleted file mode 100644 index 0d12be6f0bf8..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/cloning-a-repository.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Cloning a repository -intro: 'When you create a repository on {% data variables.product.product_location %}, it exists as a remote repository. You can clone your repository to create a local copy on your computer and sync between the two locations.' -redirect_from: - - /articles/cloning-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About cloning a repository - -You can clone a repository from {% data variables.product.product_location %} to your local computer to make it easier to fix merge conflicts, add or remove files, and push larger commits. When you clone a repository, you copy the repository from {% data variables.product.product_location %} to your local machine. - -Cloning a repository pulls down a full copy of all the repository data that {% data variables.product.product_location %} has at that point in time, including all versions of every file and folder for the project. You can push your changes to the remote repository on {% data variables.product.product_location %}, or pull other people's changes from {% data variables.product.product_location %}. For more information, see "[Using common Git commands](/github/using-git/using-common-git-commands)". - -You can clone your existing repository or clone another person's existing repository to contribute to a project. - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -{% tip %} - -**Tip**: You can also clone a repository using the {% data variables.product.prodname_cli %}. For more information, see "[`gh repo clone`](https://cli.github.com/manual/gh_repo_clone)" in the {% data variables.product.prodname_cli %} documentation. - -{% endtip %} -{% endif %} - -### Cloning a repository using the command line - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.copy-clone-url %} -{% data reusables.command_line.open_the_multi_os_terminal %} -{% data reusables.command_line.change-current-directory-clone %} -{% data reusables.command_line.git-clone-url %} -{% data reusables.command_line.local-clone-created %} - -### Cloning a repository to {% data variables.product.prodname_desktop %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.open-with-github-desktop %} -4. Follow the prompts in {% data variables.product.prodname_desktop %} to complete the clone. - -For more information, see "[Cloning a repository from {% data variables.product.prodname_dotcom %} to {% data variables.product.prodname_desktop %}](/desktop/guides/contributing-to-projects/cloning-a-repository-from-github-to-github-desktop/)." - -### Cloning an empty repository - -An empty repository contains no files. It's often made if you don't initialize the repository with a README when creating it. - -{% data reusables.repositories.navigate-to-repo %} -2. To clone your repository using the command line using HTTPS, under "Quick setup", click {% octicon "clippy" aria-label="The clipboard icon" %}. To clone the repository using an SSH key, including a certificate issued by your organization's SSH certificate authority, click **SSH**, then click {% octicon "clippy" aria-label="The clipboard icon" %}. - ![Empty repository clone URL button](/assets/images/help/repository/empty-https-url-clone-button.png) - - Alternatively, to clone your repository in Desktop, click {% octicon "desktop-download" aria-label="The desktop download button" %} **Set up in Desktop** and follow the prompts to complete the clone. - ![Empty repository clone desktop button](/assets/images/help/repository/empty-desktop-clone-button.png) - -{% data reusables.command_line.open_the_multi_os_terminal %} -{% data reusables.command_line.change-current-directory-clone %} -{% data reusables.command_line.git-clone-url %} -{% data reusables.command_line.local-clone-created %} - -### Troubleshooting cloning errors - -When cloning a repository it's possible that you might encounter some errors. - -If you're unable to clone a repository, check that: - -- You can connect using HTTPS. For more information, see "[HTTPS cloning errors](/github/creating-cloning-and-archiving-repositories/https-cloning-errors)." -- You have permission to access the repository you want to clone. For more information, see "[Error: Repository not found](/github/creating-cloning-and-archiving-repositories/error-repository-not-found)." -- The default branch you want to clone still exists. For more information, see have permission to access the repository you want to clone. For more information, see "[Error: Remote HEAD refers to nonexistent ref, unable to checkout](/github/creating-cloning-and-archiving-repositories/error-remote-head-refers-to-nonexistent-ref-unable-to-checkout)." - -{% if currentVersion == "free-pro-team@latest" %} - -### Further reading - -- "[Troubleshooting connectivity problems](/articles/troubleshooting-connectivity-problems)" -{% endif %} diff --git a/content/github/creating-cloning-and-archiving-repositories/creating-a-new-repository.md b/content/github/creating-cloning-and-archiving-repositories/creating-a-new-repository.md deleted file mode 100644 index a228c3615036..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/creating-a-new-repository.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Creating a new repository -intro: You can create a new repository on your personal account or any organization where you have sufficient permissions. -redirect_from: - - /creating-a-repo/ - - /articles/creating-a-repository-in-an-organization/ - - /articles/creating-a-new-organization-repository/ - - /articles/creating-a-new-repository - - /articles/creating-an-internal-repository - - /github/setting-up-and-managing-your-enterprise-account/creating-an-internal-repository - - /github/creating-cloning-and-archiving-repositories/creating-an-internal-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tip:** Owners can restrict repository creation permissions in an organization. For more information, see "[Restricting repository creation in your organization](/articles/restricting-repository-creation-in-your-organization)." - -{% endtip %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -{% tip %} - -**Tip**: You can also create a repository using the {% data variables.product.prodname_cli %}. For more information, see "[`gh repo create`](https://cli.github.com/manual/gh_repo_create)" in the {% data variables.product.product_location %} documentation. - -{% endtip %} -{% endif %} - -{% data reusables.repositories.create_new %} -2. Optionally, to create a repository with the directory structure and files of an existing repository, use the **Choose a template** drop-down and select a template repository. You'll see template repositories that are owned by you and organizations you're a member of or that you've used before. For more information, see "[Creating a repository from a template](/articles/creating-a-repository-from-a-template)." - ![Template drop-down menu](/assets/images/help/repository/template-drop-down.png){% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -3. Optionally, if you chose to use a template, to include the directory structure and files from all branches in the template, and not just the default branch, select **Include all branches**. - ![Include all branches checkbox](/assets/images/help/repository/include-all-branches.png){% endif %} -3. In the Owner drop-down, select the account you wish to create the repository on. - ![Owner drop-down menu](/assets/images/help/repository/create-repository-owner.png) -{% data reusables.repositories.repo-name %} -{% data reusables.repositories.choose-repo-visibility %} -6. If you're not using a template, there are a number of optional items you can pre-populate your repository with. If you're importing an existing repository to {% data variables.product.product_name %}, don't choose any of these options, as you may introduce a merge conflict. You can add or create new files using the user interface or choose to add new files using the command line later. For more information, see "[Importing a Git repository using the command line](/articles/importing-a-git-repository-using-the-command-line/)," "[Adding a file to a repository using the command line](/articles/adding-a-file-to-a-repository-using-the-command-line)," and "[Addressing merge conflicts](/articles/addressing-merge-conflicts/)." - - You can create a README, which is a document describing your project. For more information, see "[About READMEs](/articles/about-readmes/)." - - You can create a *.gitignore* file, which is a set of ignore rules. For more information, see "[Ignoring files](/articles/ignoring-files)."{% if currentVersion == "free-pro-team@latest" %} - - You can choose to add a software license for your project. For more information, see "[Licensing a repository](/articles/licensing-a-repository)."{% endif %} -{% data reusables.repositories.select-marketplace-apps %} -{% data reusables.repositories.create-repo %} -{% if currentVersion == "free-pro-team@latest" %} -9. At the bottom of the resulting Quick Setup page, under "Import code from an old repository", you can choose to import a project to your new repository. To do so, click **Import code**. -{% endif %} - -### Further reading - -- "[Managing access to your organization's repositories](/articles/managing-access-to-your-organization-s-repositories)" -- [Open Source Guides](https://opensource.guide/){% if currentVersion == "free-pro-team@latest" %} -- [{% data variables.product.prodname_learning %}]({% data variables.product.prodname_learning_link %}){% endif %} diff --git a/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template.md b/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template.md deleted file mode 100644 index 33f0f1a1f05a..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Creating a repository from a template -intro: You can generate a new repository with the same directory structure and files as an existing repository. -redirect_from: - - /articles/creating-a-repository-from-a-template -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About repository templates - -Anyone with read permissions to a template repository can create a repository from that template. For more information, see "[Creating a template repository](/articles/creating-a-template-repository)." - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -{% tip %} - -**Tip**: You can also create a repository from a template using the {% data variables.product.prodname_cli %}. For more information, see "[`gh repo create`](https://cli.github.com/manual/gh_repo_create)" in the {% data variables.product.product_location %} documentation. - -{% endtip %} -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -You can choose to include the directory structure and files from only the default branch of the template repository or to include all branches. -{% endif %} - -Creating a repository from a template is similar to forking a repository, but there are important differences: -- A new fork includes the entire commit history of the parent repository, while a repository created from a template starts with a single commit. -- Commits to a fork don't appear in your contributions graph, while commits to a repository created from a template do appear in your contribution graph. -- A fork can be a temporary way to contribute code to an existing project, while creating a repository from a template starts a new project quickly. - -For more information about forks, see "[About forks](/articles/about-forks)." - -### Creating a repository from a template - -{% data reusables.repositories.navigate-to-repo %} -2. Above the file list, click **Use this template**. - ![Use this template button](/assets/images/help/repository/use-this-template-button.png) -{% data reusables.repositories.owner-drop-down %} -{% data reusables.repositories.repo-name %} -{% data reusables.repositories.choose-repo-visibility %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -6. Optionally, to include the directory structure and files from all branches in the template, and not just the default branch, select **Include all branches**. - ![Include all branches checkbox](/assets/images/help/repository/include-all-branches.png){% endif %} -{% data reusables.repositories.select-marketplace-apps %} -8. Click **Create repository from template**. diff --git a/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github.md b/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github.md deleted file mode 100644 index 4c0813bb8841..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Creating a repository on GitHub -intro: 'After you create your repository on {% data variables.product.product_name %}, you can customize its settings and content.' -mapTopic: true -redirect_from: - - /articles/creating-a-repository-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/creating-cloning-and-archiving-repositories/creating-a-template-repository.md b/content/github/creating-cloning-and-archiving-repositories/creating-a-template-repository.md deleted file mode 100644 index 7fe2328494ad..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/creating-a-template-repository.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Creating a template repository -intro: 'You can make an existing repository a template, so you and others can generate new repositories with the same directory structure{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}, branches,{% endif %} and files.' -permissions: 'Anyone with admin permissions to a repository can make the repository a template.' -redirect_from: - - /articles/creating-a-template-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% note %} - -**Note**: Your template repository cannot include files stored using {% data variables.large_files.product_name_short %}. - -{% endnote %} - -To create a template repository, you must create a repository, then make the repository a template. For more information about creating a repository, see "[Creating a new repository](/articles/creating-a-new-repository)." - -After you make your repository a template, anyone with access to the repository can generate a new repository with the same directory structure and files as your default branch.{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} They can also choose to include all the other branches in your repository.{% endif %} For more information, see "[Creating a repository from a template](/articles/creating-a-repository-from-a-template)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -1. Select **Template repository**. - ![Checkbox to make a repository a template](/assets/images/help/repository/template-repository-checkbox.png) diff --git a/content/github/creating-cloning-and-archiving-repositories/creating-an-issues-only-repository.md b/content/github/creating-cloning-and-archiving-repositories/creating-an-issues-only-repository.md deleted file mode 100644 index 446cc09af424..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/creating-an-issues-only-repository.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Creating an issues-only repository -intro: '{% data variables.product.product_name %} does not provide issues-only access permissions, but you can accomplish this using a second repository which contains only the issues.' -redirect_from: - - /articles/issues-only-access-permissions/ - - /articles/is-there-issues-only-access-to-organization-repositories/ - - /articles/creating-an-issues-only-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -1. Create a **private** repository to host the source code from your project. -2. Create a second repository with the permissions you desire to host the issue tracker. -3. Add a README file to the issues repository explaining the purpose of this repository and linking to the issues section. -4. Set your collaborators or teams to give access to the repositories as you desire. - -Users with write access to both can reference and close issues back and forth across the repositories, but those without the required permissions will see references that contain a minimum of information. - -For example, if you pushed a commit to the private repository's default branch with a message that read `Fixes organization/public-repo#12`, the issue would be closed, but only users with the proper permissions would see the cross-repository reference indicating the commit that closed the issue. Without the permissions, a reference still appears, but the details are omitted. diff --git a/content/github/creating-cloning-and-archiving-repositories/duplicating-a-repository.md b/content/github/creating-cloning-and-archiving-repositories/duplicating-a-repository.md deleted file mode 100644 index a68e3749e8e7..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/duplicating-a-repository.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Duplicating a repository -intro: 'To duplicate a repository without forking it, you can run a special clone command, then mirror-push to the new repository.' -redirect_from: - - /articles/duplicating-a-repo/ - - /articles/duplicating-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Before you can duplicate a repository and push to your new copy, or _mirror_, of the repository, you must [create the new repository](/articles/creating-a-new-repository) on {% data variables.product.product_location %}. In these examples, `exampleuser/new-repository` or `exampleuser/mirrored` are the mirrors. - -### Mirroring a repository - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Create a bare clone of the repository. - ```shell - $ git clone --bare https://{% data variables.command_line.codeblock %}/exampleuser/old-repository.git - ``` -3. Mirror-push to the new repository. - ```shell - $ cd old-repository.git - $ git push --mirror https://{% data variables.command_line.codeblock %}/exampleuser/new-repository.git - ``` -4. Remove the temporary local repository you created earlier. - ```shell - $ cd .. - $ rm -rf old-repository.git - ``` - -### Mirroring a repository that contains {% data variables.large_files.product_name_long %} objects - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Create a bare clone of the repository. Replace the example username with the name of the person or organization who owns the repository, and replace the example repository name with the name of the repository you'd like to duplicate. - ```shell - $ git clone --bare https://{% data variables.command_line.codeblock %}/exampleuser/old-repository.git - ``` -3. Navigate to the repository you just cloned. - ```shell - $ cd old-repository.git - ``` -4. Pull in the repository's {% data variables.large_files.product_name_long %} objects. - ```shell - $ git lfs fetch --all - ``` -5. Mirror-push to the new repository. - ```shell - $ git push --mirror https://{% data variables.command_line.codeblock %}/exampleuser/new-repository.git - ``` -6. Push the repository's {% data variables.large_files.product_name_long %} objects to your mirror. - ```shell - $ git lfs push --all https://github.com/exampleuser/new-repository.git - ``` -7. Remove the temporary local repository you created earlier. - ```shell - $ cd .. - $ rm -rf old-repository.git - ``` - -### Mirroring a repository in another location - -If you want to mirror a repository in another location, including getting updates from the original, you can clone a mirror and periodically push the changes. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Create a bare mirrored clone of the repository. - ```shell - $ git clone --mirror https://{% data variables.command_line.codeblock %}/exampleuser/repository-to-mirror.git - ``` -3. Set the push location to your mirror. - ```shell - $ cd repository-to-mirror.git - $ git remote set-url --push origin https://{% data variables.command_line.codeblock %}/exampleuser/mirrored - ``` - -As with a bare clone, a mirrored clone includes all remote branches and tags, but all local references will be overwritten each time you fetch, so it will always be the same as the original repository. Setting the URL for pushes simplifies pushing to your mirror. To update your mirror, fetch updates and push. - -```shell -$ git fetch -p origin -$ git push --mirror -``` diff --git a/content/github/creating-cloning-and-archiving-repositories/error-remote-head-refers-to-nonexistent-ref-unable-to-checkout.md b/content/github/creating-cloning-and-archiving-repositories/error-remote-head-refers-to-nonexistent-ref-unable-to-checkout.md deleted file mode 100644 index d027c119f891..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/error-remote-head-refers-to-nonexistent-ref-unable-to-checkout.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: 'Error: Remote HEAD refers to nonexistent ref, unable to checkout' -intro: 'This error occurs if the default branch of a repository has been deleted on {% data variables.product.product_location %}.' -redirect_from: - - /articles/error-remote-head-refers-to-nonexistent-ref-unable-to-checkout -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Detecting this error is simple; Git will warn you when you try to clone the repository: - -```shell -$ git clone https://{% data variables.command_line.codeblock %}/user/repo.git -# Clone a repo -> Cloning into 'repo'... -> remote: Counting objects: 66179, done. -> remote: Compressing objects: 100% (15587/15587), done. -> remote: Total 66179 (delta 46985), reused 65596 (delta 46402) -> Receiving objects: 100% (66179/66179), 51.66 MiB | 667 KiB/s, done. -> Resolving deltas: 100% (46985/46985), done. -> warning: remote HEAD refers to nonexistent ref, unable to checkout. -``` - -To fix the error, you'll need to be an administrator of the repository on {% data variables.product.product_location %}. -You'll want to [change the default branch](/github/administering-a-repository/changing-the-default-branch) of the repository. - -After that, you can get a list of all the available branches from the command line: - -```shell -$ git branch -a -# Lists ALL the branches -> remotes/origin/awesome -> remotes/origin/more-work -> remotes/origin/new-main -``` - -Then, you can just switch to your new branch: - -```shell -$ git checkout new-main -# Create and checkout a tracking branch -> Branch new-main set up to track remote branch new-main from origin. -> Switched to a new branch 'new-main' -``` diff --git a/content/github/creating-cloning-and-archiving-repositories/error-repository-not-found.md b/content/github/creating-cloning-and-archiving-repositories/error-repository-not-found.md deleted file mode 100644 index ac2f3dfca557..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/error-repository-not-found.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: 'Error: Repository not found' -intro: '{% if currentVersion == "free-pro-team@latest" %}If you see this error when cloning a repository, it means that the repository does not exist or you do not have permission to access it. There are a few solutions to this error, depending on the cause.{% else %}If you see this error when cloning a repository, it means that the repository does not exist, you do not have permission to access it, or your GitHub Enterprise instance is in private mode. There are a few solutions to this error, depending on the cause.{% endif %}' -redirect_from: - - /articles/error-repository-not-found -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Check your spelling - -Typos happen, and repository names are case-sensitive. If you try to clone `git@{% data variables.command_line.codeblock %}:user/repo.git`, but the repository is really named `User/Repo` you will receive this error. - -To avoid this error, when cloning, always copy and paste the clone URL from the repository's page. For more information, see "[Cloning a repository](/articles/cloning-a-repository)." - -To update the remote on an existing repository, see "[Changing a remote's URL](/articles/changing-a-remote-s-url)". - -### Checking your permissions - -If you are trying to clone a private repository but do not have permission to view the repository, you will receive this error. - -Make sure that you have access to the repository in one of these ways: - -* The owner of the repository -* A [collaborator](/articles/inviting-collaborators-to-a-personal-repository) on the repository -* A [member of a team](/articles/adding-organization-members-to-a-team) that has access to the repository (if the repository belongs to an organization) - -### Check your SSH access - -In rare circumstances, you may not have the proper SSH access to a repository. - -You should ensure that the SSH key you are using is attached to your {% data variables.product.product_name %} user account. You can check this by typing -the following into the command line: - -```shell -$ ssh -T git@{% data variables.command_line.codeblock %} -> Hi username! You've successfully authenticated, but GitHub does not -> provide shell access. -``` - -If the repository belongs to an organization and you're using an SSH key generated by an OAuth App, OAuth App access may have been restricted by an organization owner. For more information, see "About OAuth App access restrictions." - -For more information, see [Adding a new SSH key to your GitHub account](/articles/adding-a-new-ssh-key-to-your-github-account). - -{% if enterpriseServerVersions contains currentVersion %} - -### Check if your instance is in private mode - -If your site administrator has enabled private mode on your GitHub Enterprise instance, anonymous clones over `git://` will be disabled. If you are unable to clone a repository, contact your site administrator. - -{% endif %} - -### Check that the repository really exists - -If all else fails, make sure that the repository really exists on {% data variables.product.product_location %}! -If you're trying to push to a repository that doesn't exist, you'll get this error. diff --git a/content/github/creating-cloning-and-archiving-repositories/https-cloning-errors.md b/content/github/creating-cloning-and-archiving-repositories/https-cloning-errors.md deleted file mode 100644 index c9b89a3790ec..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/https-cloning-errors.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: HTTPS cloning errors -intro: 'There are a few common errors when using HTTPS with Git. These errors usually indicate you have an old version of Git, or you don''t have access to the repository.' -redirect_from: - - /articles/error-the-requested-url-returned-error-403/ - - /articles/error-the-requested-url-returned-error-401/ - - /articles/error-did-you-run-git-update-server-info-on-the-server/ - - /articles/error-the-requested-url-returned-error-403-while-accessing-https-jackfan.us.kg-user-repo-git-info-refs/ - - /articles/https-cloning-errors -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Here's an example of an HTTPS error you might receive: - -```shell -> error: The requested URL returned error: 401 while accessing -> https://{% data variables.command_line.codeblock %}/user/repo.git/info/refs?service=git-receive-pack -> fatal: HTTP request failed -``` - -```shell -> Error: The requested URL returned error: 403 while accessing -> https://{% data variables.command_line.codeblock %}/user/repo.git/info/refs -> fatal: HTTP request failed -``` - -```shell -> Error: https://{% data variables.command_line.codeblock %}/user/repo.git/info/refs not found: did you run git -> update-server-info on the server? -``` - -### Check your Git version - -There's no minimum Git version necessary to interact with {% data variables.product.product_name %}, but we've found version 1.7.10 to be a comfortable stable version that's available on many platforms. You can always [download the latest version on the Git website](https://git-scm.com/downloads). - -### Ensure the remote is correct - -The repository you're trying to fetch must exist on {% data variables.product.product_location %}, and the URL is case-sensitive. - -You can find the URL of the local repository by opening the command line and -typing `git remote -v`: - -```shell -$ git remote -v -# View existing remotes -> origin https://github.com/github/reactivecocoa.git (fetch) -> origin https://github.com/github/reactivecocoa.git (push) - -$ git remote set-url origin https://github.com/github/ReactiveCocoa.git -# Change the 'origin' remote's URL - -$ git remote -v -# Verify new remote URL -> origin https://github.com/github/ReactiveCocoa.git (fetch) -> origin https://github.com/github/ReactiveCocoa.git (push) -``` - -Alternatively, you can change the URL through our -[{% data variables.product.prodname_desktop %}](https://desktop.github.com/) application. - -### Provide an access token - -To access {% data variables.product.prodname_dotcom %}, you must authenticate with a personal access token instead of your password. For more information, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." - -{% data reusables.command_line.provide-an-access-token %} - -### Check your permissions - -When prompted for a username and password, make sure you use an account that has access to the repository. - -{% tip %} - -**Tip**: If you don't want to enter your credentials every time you interact with the remote repository, you can turn on [credential caching](/github/using-git/caching-your-github-credentials-in-git). If you are already using credential caching, please make sure that your computer has the correct credentials cached. Incorrect or out of date credentials will cause authentication to fail. - -{% endtip %} - -### Use SSH instead - -If you've previously set up SSH keys, you can use the SSH clone URL instead of HTTPS. For more information, see "[Which remote URL should I use?](/articles/which-remote-url-should-i-use)" diff --git a/content/github/creating-cloning-and-archiving-repositories/index.md b/content/github/creating-cloning-and-archiving-repositories/index.md deleted file mode 100644 index 41fc0849515f..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/index.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: 'Creating, cloning, and archiving repositories' -intro: 'You can choose from a variety of configuration options when creating or cloning a repository. You can also use repositories to archive content and data on {% data variables.product.prodname_dotcom %}.' -redirect_from: - - /categories/repositories/ - - /categories/24/articles/ - - /categories/creating-cloning-and-archiving-repositories -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /creating-a-repository-on-github %} - {% link_in_list /about-repositories %} - {% link_in_list /about-repository-visibility %} - {% link_in_list /creating-a-new-repository %} - - {% link_in_list /creating-a-repository-from-a-template %} - - {% link_in_list /about-readmes %} - {% link_in_list /about-code-owners %} - {% link_in_list /about-repository-languages %} - {% link_in_list /licensing-a-repository %} - - {% link_in_list /creating-a-template-repository %} - - {% link_in_list /creating-an-issues-only-repository %} - {% link_in_list /limits-for-viewing-content-and-diffs-in-a-repository %} - {% link_in_list /duplicating-a-repository %} -{% topic_link_in_list /cloning-a-repository-from-github %} - {% link_in_list /cloning-a-repository %} - {% link_in_list /https-cloning-errors %} - {% link_in_list /error-repository-not-found %} - {% link_in_list /error-remote-head-refers-to-nonexistent-ref-unable-to-checkout %} -{% topic_link_in_list /archiving-a-github-repository %} - {% link_in_list /about-archiving-repositories %} - {% link_in_list /archiving-repositories %} - - {% link_in_list /about-archiving-content-and-data-on-github %} - {% link_in_list /referencing-and-citing-content %} - - {% link_in_list /backing-up-a-repository %} diff --git a/content/github/creating-cloning-and-archiving-repositories/licensing-a-repository.md b/content/github/creating-cloning-and-archiving-repositories/licensing-a-repository.md deleted file mode 100644 index 1e702964b182..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/licensing-a-repository.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Licensing a repository -intro: 'Public repositories on GitHub are often used to share open source software. For your repository to truly be open source, you''ll need to license it so that others are free to use, change, and distribute the software.' -redirect_from: - - /articles/open-source-licensing/ - - /articles/licensing-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Choosing the right license - -We created [choosealicense.com](http://choosealicense.com), to help you understand how to license your code. A software license tells others what they can and can't do with your source code, so it's important to make an informed decision. - -You're under no obligation to choose a license. However, without a license, the default copyright laws apply, meaning that you retain all rights to your source code and no one may reproduce, distribute, or create derivative works from your work. If you're creating an open source project, we strongly encourage you to include an open source license. The [Open Source Guide](https://opensource.guide/legal/#which-open-source-license-is-appropriate-for-my-project) provides additional guidance on choosing the correct license for your project. - -{% note %} - -**Note:** If you publish your source code in a public repository on GitHub, {% if currentVersion == "free-pro-team@latest" %}according to the [Terms of Service](/articles/github-terms-of-service), {% endif %}other GitHub users have the right to view and fork your repository within the GitHub site. If you have already created a public repository and no longer want users to have access to it, you can make your repository private. When you convert a public repository to a private repository, existing forks or local copies created by other users will still exist. For more information, see "[Making a public repository private](/articles/making-a-public-repository-private)." - -{% endnote %} - -### Determining the location of your license - -Most people place their license text in a file named `LICENSE.txt` (or `LICENSE.md`) in the root of the repository; [here's an example from Hubot](https://github.com/github/hubot/blob/master/LICENSE.md). - -Some projects include information about their license in their README. For example, a project's README may include a note saying "This project is licensed under the terms of the MIT license." - -As a best practice, we encourage you to include the license file with your project. - -### Searching GitHub by license type - -You can filter repositories based on their license or license family using the `license` qualifier and the exact license keyword: - -License | License keyword ---- | --- -| Academic Free License v3.0 | `afl-3.0` | -| Apache license 2.0 | `apache-2.0` | -| Artistic license 2.0 | `artistic-2.0` | -| Boost Software License 1.0 | `bsl-1.0` | -| BSD 2-clause "Simplified" license | `bsd-2-clause` | -| BSD 3-clause "New" or "Revised" license | `bsd-3-clause` | -| BSD 3-clause Clear license | `bsd-3-clause-clear` | -| Creative Commons license family | `cc` | -| Creative Commons Zero v1.0 Universal | `cc0-1.0` | -| Creative Commons Attribution 4.0 | `cc-by-4.0` | -| Creative Commons Attribution Share Alike 4.0 | `cc-by-sa-4.0` | -| Do What The F*ck You Want To Public License | `wtfpl` | -| Educational Community License v2.0 | `ecl-2.0` | -| Eclipse Public License 1.0 | `epl-1.0` | -| Eclipse Public License 2.0 | `epl-2.0` | -| European Union Public License 1.1 | `eupl-1.1` | -| GNU Affero General Public License v3.0 | `agpl-3.0` | -| GNU General Public License family | `gpl` | -| GNU General Public License v2.0 | `gpl-2.0` | -| GNU General Public License v3.0 | `gpl-3.0` | -| GNU Lesser General Public License family | `lgpl` | -| GNU Lesser General Public License v2.1 | `lgpl-2.1` | -| GNU Lesser General Public License v3.0 | `lgpl-3.0` | -| ISC | `isc` | -| LaTeX Project Public License v1.3c | `lppl-1.3c` | -| Microsoft Public License | `ms-pl` | -| MIT | `mit` | -| Mozilla Public License 2.0 | `mpl-2.0` | -| Open Software License 3.0 | `osl-3.0` | -| PostgreSQL License | `postgresql` | -| SIL Open Font License 1.1 | `ofl-1.1` | -| University of Illinois/NCSA Open Source License | `ncsa` | -| The Unlicense | `unlicense` | -| zLib License | `zlib` | - -When you search by a family license, your results will include all licenses in that family. For example, when you use the query `license:gpl`, your results will include repositories licensed under GNU General Public License v2.0 and GNU General Public License v3.0. For more information, see "[Searching for repositories](/articles/searching-for-repositories/#search-by-license)." - -### Detecting a license - -[The open source Ruby gem Licensee](https://github.com/benbalter/licensee) compares the repository's *LICENSE* file to a short list of known licenses. Licensee also provides the [Licenses API](/v3/licenses/) and [gives us insight into how repositories on {% data variables.product.product_name %} are licensed](https://github.com/blog/1964-open-source-license-usage-on-jackfan.us.kg). If your repository is using a license that isn't listed on the [Choose a License website](http://choosealicense.com/appendix/), you can [request including the license](https://github.com/github/choosealicense.com/blob/gh-pages/CONTRIBUTING.md#adding-a-license). - -If your repository is using a license that is listed on the Choose a License website and it's not displaying clearly at the top of the repository page, it may contain multiple licenses or other complexity. To have your license detected, simplify your *LICENSE* file and note the complexity somewhere else, such as your repository's *README* file. - -### Applying a license to a repository with an existing license - -The license picker is only available when you create a new project on GitHub. You can manually add a license using the browser. For more information on adding a license to a repository, see "[Adding a license to a repository](/articles/adding-a-license-to-a-repository)." - -![Screenshot of license picker on GitHub.com](/assets/images/help/repository/repository-license-picker.png) - -### Disclaimer - -The goal of GitHub's open source licensing efforts is to provide a starting point to help you make an informed choice. GitHub displays license information to help users get information about open source licenses and the projects that use them. We hope it helps, but please keep in mind that we’re not lawyers and that we make mistakes like everyone else. For that reason, GitHub provides the information on an “as-is” basis and makes no warranties regarding any information or licenses provided on or through it, and disclaims liability for damages resulting from using the license information. If you have any questions regarding the right license for your code or any other legal issues relating to it, it’s always best to consult with a professional. - -### Further reading - -- The Open Source Guides' section "[The Legal Side of Open Source](https://opensource.guide/legal/)"{% if currentVersion == "free-pro-team@latest" %} -- [{% data variables.product.prodname_learning %}]({% data variables.product.prodname_learning_link %}){% endif %} diff --git a/content/github/creating-cloning-and-archiving-repositories/limits-for-viewing-content-and-diffs-in-a-repository.md b/content/github/creating-cloning-and-archiving-repositories/limits-for-viewing-content-and-diffs-in-a-repository.md deleted file mode 100644 index fc160231c600..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/limits-for-viewing-content-and-diffs-in-a-repository.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Limits for viewing content and diffs in a repository -intro: 'Certain types of resources can be quite large, requiring excessive processing on {% data variables.product.product_name %}. Because of this, limits are set to ensure requests complete in a reasonable amount of time.' -redirect_from: - - /articles/what-are-the-limits-for-viewing-content-and-diffs-in-my-repository/ - - /articles/limits-for-viewing-content-and-diffs-in-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Most of the limits below affect both {% data variables.product.product_name %} and the API. - -### Text limits - -Text files over **1 MB** are always displayed as plain text. Code is not syntax highlighted, and prose files are not converted to HTML (such as Markdown, AsciiDoc, *etc.*). - -Text files over **5 MB** are only available through their raw URLs, which are served through `{% data variables.product.raw_github_com %}`; for example, `https://{% data variables.product.raw_github_com %}/octocat/Spoon-Knife/master/index.html`. Click the **Raw** button to get the raw URL for a file. - -### Diff limits - -Because diffs can become very large, we impose these limits on diffs for commits, pull requests, and compare views: - -- No single file's diff may exceed *20,000 lines that you can load* or *1 MB* of raw diff data. *Four hundred lines* and *20 KB* are automatically loaded for a single file. -- The maximum number of files in a single diff is limited to *3,000*. -- The maximum number of renderable files (such as images, PDFs, and GeoJSON files) in a single diff is limited to *25*. - -Some portions of a limited diff may be displayed, but anything exceeding the limit is not shown. - -### Commit listings limits - -The compare view and pull requests pages display a list of commits between the `base` and `head` revisions. These lists are limited to **250** commits. If they exceed that limit, a note indicates that additional commits are present (but they're not shown). diff --git a/content/github/creating-cloning-and-archiving-repositories/referencing-and-citing-content.md b/content/github/creating-cloning-and-archiving-repositories/referencing-and-citing-content.md deleted file mode 100644 index 6bf832fcb67e..000000000000 --- a/content/github/creating-cloning-and-archiving-repositories/referencing-and-citing-content.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Referencing and citing content -intro: You can use third-party tools to cite and reference content on GitHub. -redirect_from: - - /articles/referencing-and-citing-content -versions: - free-pro-team: '*' ---- - -### Issuing a persistent identifier for your repository with Zenodo - -To make your repositories easier to reference in academic literature, you can create persistent identifiers, also known as Digital Object Identifiers (DOIs). You can use the data archiving tool [Zenodo](https://zenodo.org/about) to archive a {% data variables.product.product_name %} repository and issue a DOI for the archive. - -{% tip %} - -**Tips:** -- Zenodo can only access public repositories, so make sure the repository you want to archive is [public](/articles/making-a-private-repository-public). -- If you want to archive a repository that belongs to an organization, the organization owner may need to [approve access](/articles/approving-oauth-apps-for-your-organization) for the Zenodo application. -- Make sure to include a [license](/articles/open-source-licensing) in your repository so readers know how they can reuse your work. - -{% endtip %} - -1. Navigate to [Zenodo](http://zenodo.org/). -2. In the upper-left corner of the screen, click **Log in**. ![Zenodo log in button](/assets/images/help/repository/zenodo_login.png) -3. Click **Log in with GitHub**. ![Log into Zenodo with GitHub](/assets/images/help/repository/zenodo_login_with_github.png) -4. Review the information about access permissions, then click **Authorize application**. ![Authorize Zenodo](/assets/images/help/repository/zenodo_authorize.png) -5. Navigate to the [Zenodo GitHub page](https://zenodo.org/account/settings/github/). ![Zenodo GitHub page](/assets/images/help/repository/zenodo_github_page.png) -6. To the right of the name of the repository you want to archive, toggle the button from **Off** to **On** to enable it for archiving. ![Enable Zenodo archiving on repository](/assets/images/help/repository/zenodo_toggle_on.png) - -Zenodo archives your repository and issues a new DOI each time you create a new {% data variables.product.product_name %} [release](/articles/about-releases/). Follow the steps at "[Creating releases](/articles/creating-releases/)" to create a new one. - -### Publicizing and citing research material with Figshare - -Academics can use the data management service [Figshare](http://figshare.com) to publicize and cite research material. For more information, see [Figshare's support site](https://knowledge.figshare.com/articles/item/how-to-connect-figshare-with-your-github-account). diff --git a/content/github/customizing-your-github-workflow/about-github-marketplace.md b/content/github/customizing-your-github-workflow/about-github-marketplace.md deleted file mode 100644 index 9cfd63182d21..000000000000 --- a/content/github/customizing-your-github-workflow/about-github-marketplace.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: About GitHub Marketplace -intro: '{% data variables.product.prodname_marketplace %} contains tools that add functionality and improve your workflow.' -redirect_from: - - /articles/about-github-marketplace -versions: - free-pro-team: '*' ---- - -You can discover, browse, and install free and paid tools, including [{% data variables.product.prodname_github_app %}s, {% data variables.product.prodname_oauth_app %}s](/apps/differences-between-apps/), and {% data variables.product.prodname_actions %}, in [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace). - -If you purchase a paid tool, you'll pay for your tool subscription with the same billing information you use to pay for your {% data variables.product.product_name %} subscription, and receive one bill on your regular billing date. For more information, see "[About billing for {% data variables.product.prodname_marketplace %}](/articles/about-billing-for-github-marketplace)." - -You may also have the option to select a free 14-day trial on select tools. You can cancel at any time during your trial and you won't be charged, but you will automatically lose access to the tool. Your paid subscription will start at the end of the 14-day trial. For more information, see "[About billing for {% data variables.product.prodname_marketplace %}](/articles/about-billing-for-github-marketplace)." - -{% data variables.product.prodname_github_app %}s and {% data variables.product.prodname_oauth_app %}s can be verified or unverified. Verified apps meet specific requirements set by {% data variables.product.prodname_dotcom %} and go through a security review before they are listed on {% data variables.product.prodname_marketplace %}. For more information, see "[Requirements for listing an app on GitHub Marketplace](/marketplace/getting-started/requirements-for-listing-an-app-on-github-marketplace/)." - -### {% data variables.product.prodname_actions %} on {% data variables.product.prodname_marketplace %} - -You can discover, browse, and install {% data variables.product.prodname_actions %} created by others on {% data variables.product.prodname_marketplace %}, see "[Searching {% data variables.product.prodname_marketplace %}](/github/searching-for-information-on-github/searching-github-marketplace)." - -Anyone can list an action on {% data variables.product.prodname_marketplace %}. Unlike some apps, {% data variables.product.prodname_actions %} listed on {% data variables.product.prodname_marketplace %} are never verified by {% data variables.product.prodname_dotcom %}. - -### Building and listing a tool on {% data variables.product.prodname_marketplace %} - -For more information on creating your own tool to list on {% data variables.product.prodname_marketplace %}, see "[Apps](/apps)" and "[{% data variables.product.prodname_actions %}](/actions)." - -### Further reading - -- "[Purchasing and installing apps in {% data variables.product.prodname_marketplace %}](/articles/purchasing-and-installing-apps-in-github-marketplace)" -- "[Managing billing for {% data variables.product.prodname_marketplace %} apps](/articles/managing-billing-for-github-marketplace-apps)" -- "[{% data variables.product.prodname_marketplace %} support](/articles/github-marketplace-support)" diff --git a/content/github/customizing-your-github-workflow/about-integrations.md b/content/github/customizing-your-github-workflow/about-integrations.md deleted file mode 100644 index a3111184967e..000000000000 --- a/content/github/customizing-your-github-workflow/about-integrations.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: About integrations -intro: 'Integrations are tools and services that connect with {% data variables.product.product_name %} to complement and extend your workflow.' -redirect_from: - - /articles/about-integrations -versions: - free-pro-team: '*' ---- - -You can install integrations in your personal account or organizations you own. You can also install {% data variables.product.prodname_github_app %}s from a third-party in a specific repository where you have admin permissions or which is owned by your organization. - -### Differences between {% data variables.product.prodname_github_app %}s and {% data variables.product.prodname_oauth_app %}s - -Integrations can be {% data variables.product.prodname_github_app %}s, {% data variables.product.prodname_oauth_app %}s, or anything that utilizes {% data variables.product.product_name %} APIs or webhooks. - -{% data variables.product.prodname_github_app %}s offer granular permissions and request access to only what the app needs. {% data variables.product.prodname_github_app %}s also offer specific user-level permissions that each user must authorize individually when an app is installed or when the integrator changes the permissions requested by the app. - -For more information, see: -- "[Differences between {% data variables.product.prodname_github_app %}s and {% data variables.product.prodname_oauth_app %}s](/apps/differences-between-apps/)" -- "[About apps](/apps/about-apps/)" -- "[User-level permissions](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#user-level-permissions)" -- "[Authorizing {% data variables.product.prodname_oauth_app %}s](/articles/authorizing-oauth-apps/)" -- "[Reviewing your authorized integrations](/articles/reviewing-your-authorized-integrations/)" - -You can install a preconfigured {% data variables.product.prodname_github_app %}, if the integrators or app creators have created their app with the {% data variables.product.prodname_github_app %} manifest flow. For information about how to run your {% data variables.product.prodname_github_app %} with automated configuration, contact the integrator or app creator. - -You can create a {% data variables.product.prodname_github_app %} with simplified configuration if you build your app with Probot. For more information, see the [Probot docs](https://probot.github.io/docs/) site. - -### Discovering integrations in {% data variables.product.prodname_marketplace %} - -You can find an integration to install or publish your own integration in {% data variables.product.prodname_marketplace %}. - -[{% data variables.product.prodname_marketplace %}](https://github.com/marketplace) contains {% data variables.product.prodname_github_app %}s and {% data variables.product.prodname_oauth_app %}s. For more information on finding an integration or creating your own integration, see "[About {% data variables.product.prodname_marketplace %}](/articles/about-github-marketplace)." - -### Integrations purchased directly from integrators - -You can also purchase some integrations directly from integrators. As an organization member, if you find a {% data variables.product.prodname_github_app %} that you'd like to use, you can request that an organization approve and install the app for the organization. - -If you have admin permissions for all organization-owned repositories the app is installed on, you can install {% data variables.product.prodname_github_app %}s with repository-level permissions without having to ask an organization owner to approve the app. When an integrator changes an app's permissions, if the permissions are for a repository only, organization owners and people with admin permissions to a repository with that app installed can review and accept the new permissions. - diff --git a/content/github/customizing-your-github-workflow/exploring-integrations.md b/content/github/customizing-your-github-workflow/exploring-integrations.md deleted file mode 100644 index bb1846b543ad..000000000000 --- a/content/github/customizing-your-github-workflow/exploring-integrations.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Exploring integrations -intro: 'You can customize and extend your {% data variables.product.product_name %} workflow with tools and services built by the {% data variables.product.product_name %} community.' -mapTopic: true -redirect_from: - - /articles/exploring-integrations -versions: - free-pro-team: '*' ---- - diff --git a/content/github/customizing-your-github-workflow/github-extensions-and-integrations.md b/content/github/customizing-your-github-workflow/github-extensions-and-integrations.md deleted file mode 100644 index 9d49e1b75b5e..000000000000 --- a/content/github/customizing-your-github-workflow/github-extensions-and-integrations.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: GitHub extensions and integrations -intro: 'Use {% data variables.product.product_name %} extensions to work seamlessly in {% data variables.product.product_name %} repositories within third-party applications.' -redirect_from: - - /articles/about-github-extensions-for-third-party-applications/ - - /articles/github-extensions-and-integrations -versions: - free-pro-team: '*' ---- - -### Editor tools - -You can connect to {% data variables.product.product_name %} repositories within third-party editor tools, such as Atom, Unity, and Visual Studio. - -#### {% data variables.product.product_name %} for Atom - -With the {% data variables.product.product_name %} for Atom extension, you can commit, push, pull, resolve merge conflicts, and more from the Atom editor. For more information, see the official [{% data variables.product.product_name %} for Atom site](https://github.atom.io/). - -#### {% data variables.product.product_name %} for Unity - -With the {% data variables.product.product_name %} for Unity editor extension, you can develop on Unity, the open source game development platform, and see your work on {% data variables.product.product_name %}. For more information, see the official Unity editor extension [site](https://unity.github.com/) or the [documentation](https://github.com/github-for-unity/Unity/tree/master/docs). - -#### {% data variables.product.product_name %} for Visual Studio - -With the {% data variables.product.product_name %} for Visual Studio extension, you can work in {% data variables.product.product_name %} repositories without leaving Visual Studio. For more information, see the official Visual Studio extension [site](https://visualstudio.github.com/) or [documentation](https://github.com/github/VisualStudio/tree/master/docs). - -#### {% data variables.product.prodname_dotcom %} for Visual Studio Code - -With the {% data variables.product.prodname_dotcom %} for Visual Studio Code extension, you can review and manage {% data variables.product.product_name %} pull requests in Visual Studio Code. For more information, see the official Visual Studio Code extension [site](https://vscode.github.com/) or [documentation](https://github.com/Microsoft/vscode-pull-request-github). - -### Project management tools - -You can integrate your {% data variables.product.product_name %} personal account or organization with third-party project management tools, such as Jira or Slack. - -#### Jira Cloud and {% data variables.product.product_name %}.com integration - -You can integrate Jira Cloud with your personal or organization account to scan commits and pull requests, creating relevant metadata and hyperlinks in any mentioned Jira issues. For more information, visit the [Jira integration app](https://github.com/marketplace/jira-software-github) in the marketplace. - -#### Slack and {% data variables.product.product_name %} integration - -You can integrate Slack with your personal or organization account to subscribe for notifications, close or open issues, and provide rich references to issues and pull requests without leaving Slack. For more information, visit the [Slack integration app](https://github.com/marketplace/slack-github) in the marketplace. diff --git a/content/github/customizing-your-github-workflow/index.md b/content/github/customizing-your-github-workflow/index.md deleted file mode 100644 index 93cdd673a4c1..000000000000 --- a/content/github/customizing-your-github-workflow/index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Customizing your GitHub workflow -redirect_from: - - /categories/customizing-your-github-workflow -versions: - free-pro-team: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /exploring-integrations %} - {% link_in_list /about-integrations %} - {% link_in_list /about-github-marketplace %} - {% link_in_list /github-extensions-and-integrations %} -{% topic_link_in_list /purchasing-and-installing-apps-in-github-marketplace %} - {% link_in_list /installing-an-app-in-your-personal-account %} - {% link_in_list /installing-an-app-in-your-organization %} diff --git a/content/github/customizing-your-github-workflow/installing-an-app-in-your-organization.md b/content/github/customizing-your-github-workflow/installing-an-app-in-your-organization.md deleted file mode 100644 index cb3c0cede982..000000000000 --- a/content/github/customizing-your-github-workflow/installing-an-app-in-your-organization.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Installing an app in your organization -intro: 'You can install apps from {% data variables.product.prodname_marketplace %} to use in your organization.' -redirect_from: - - /articles/installing-an-app-in-your-organization -versions: - free-pro-team: '*' ---- - -{% data reusables.marketplace.marketplace-apps-only %} - -{% data reusables.marketplace.marketplace-org-perms %} - -If you choose a paid plan, you'll pay for your app subscription on your organization's current billing date using your organization's existing payment method. - -{% data reusables.marketplace.free-trials %} - -### Installing a {% data variables.product.prodname_github_app %} in your organization - -{% data reusables.marketplace.visit-marketplace %} -{% data reusables.marketplace.browse-to-app %} -{% data reusables.marketplace.choose-plan %} -{% data reusables.marketplace.install-buy %} -{% data reusables.marketplace.confirm-install-account-org %} -{% data reusables.marketplace.add-payment-method-org %} -{% data reusables.marketplace.complete-order-begin-installation %} -8. If the app requires access to repositories, decide whether to give the app access to all of your repositories or to certain repositories, then select **All repositories** or **Only select repositories**. - ![Radio buttons with options to install an app on all of your repositories or certain repositories](/assets/images/help/marketplace/marketplace-choose-repo-install-option.png) -{% data reusables.marketplace.select-installation-repos %} -{% data reusables.marketplace.review-app-perms-install %} - -### Installing an {% data variables.product.prodname_oauth_app %} in your organization - -{% data reusables.saml.saml-session-oauth %} - -{% data reusables.marketplace.visit-marketplace %} -{% data reusables.marketplace.browse-to-app %} -{% data reusables.marketplace.choose-plan %} -{% data reusables.marketplace.install-buy %} -{% data reusables.marketplace.confirm-install-account-org %} -{% data reusables.marketplace.add-payment-method-org %} -{% data reusables.marketplace.complete-order-begin-installation %} -8. Review the information about the app's access to your personal account, organizations, and data, then click **Authorize application**. - -### Further reading - -- "[Updating your organization's payment method](/articles/updating-your-organization-s-payment-method)" -- "[Installing an app in your personal account](/articles/installing-an-app-in-your-personal-account)" diff --git a/content/github/customizing-your-github-workflow/installing-an-app-in-your-personal-account.md b/content/github/customizing-your-github-workflow/installing-an-app-in-your-personal-account.md deleted file mode 100644 index b7463a621318..000000000000 --- a/content/github/customizing-your-github-workflow/installing-an-app-in-your-personal-account.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Installing an app in your personal account -intro: 'You can install apps from {% data variables.product.prodname_marketplace %} to use in your personal account.' -redirect_from: - - /articles/installing-an-app-in-your-personal-account -versions: - free-pro-team: '*' ---- - -{% data reusables.marketplace.marketplace-apps-only %} - -If you choose a paid plan, you'll pay for your app subscription on your personal account's current billing date using your existing payment method. - -{% data reusables.marketplace.free-trials %} - -### Installing a {% data variables.product.prodname_github_app %} in your personal account - -{% data reusables.marketplace.visit-marketplace %} -{% data reusables.marketplace.browse-to-app %} -{% data reusables.marketplace.choose-plan %} -{% data reusables.marketplace.install-buy %} -{% data reusables.marketplace.confirm-install-account-personal %} -{% data reusables.marketplace.add-payment-method-personal %} -{% data reusables.marketplace.complete-order-begin-installation %} -8. Decide whether to give the app access to all of your repositories, or to certain repositories, then select **All repositories** or **Only select repositories**. - ![Radio buttons with options to install an app on all of your repositories or certain repositories](/assets/images/help/marketplace/marketplace-choose-repo-install-option.png) -{% data reusables.marketplace.select-installation-repos %} -{% data reusables.marketplace.review-app-perms-install %} - -### Installing an {% data variables.product.prodname_oauth_app %} in your personal account - -{% data reusables.saml.saml-session-oauth %} - -{% data reusables.marketplace.visit-marketplace %} -{% data reusables.marketplace.browse-to-app %} -{% data reusables.marketplace.choose-plan %} -{% data reusables.marketplace.install-buy %} -{% data reusables.marketplace.confirm-install-account-personal %} -{% data reusables.marketplace.add-payment-method-personal %} -{% data reusables.marketplace.complete-order-begin-installation %} -8. Review the information about the app's access to your personal account and data, then click **Authorize application**. - -### Further reading - -- "[Updating your personal account's payment method](/articles/updating-your-personal-account-s-payment-method)" -- "[Installing an app in your organization](/articles/installing-an-app-in-your-organization)" diff --git a/content/github/customizing-your-github-workflow/purchasing-and-installing-apps-in-github-marketplace.md b/content/github/customizing-your-github-workflow/purchasing-and-installing-apps-in-github-marketplace.md deleted file mode 100644 index 0c41e31762d2..000000000000 --- a/content/github/customizing-your-github-workflow/purchasing-and-installing-apps-in-github-marketplace.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Purchasing and installing apps in GitHub Marketplace -intro: '{% data variables.product.prodname_marketplace %} includes apps with free and paid pricing plans. When you find a paid app you''d like to use for your personal account or organization, you can purchase and install the app using your existing billing information.' -mapTopic: true -redirect_from: - - /articles/purchasing-and-installing-apps-in-github-marketplace -versions: - free-pro-team: '*' ---- - diff --git a/content/github/developing-online-with-codespaces/about-billing-for-codespaces.md b/content/github/developing-online-with-codespaces/about-billing-for-codespaces.md deleted file mode 100644 index 22648b22421f..000000000000 --- a/content/github/developing-online-with-codespaces/about-billing-for-codespaces.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: About billing for Codespaces -intro: 'When {% data variables.product.prodname_codespaces %} becomes generally available, you will be billed for storage and compute usage.' -product: '{% data reusables.gated-features.codespaces %}' -versions: - free-pro-team: '*' ---- - -{% data reusables.codespaces.release-stage %} - -{% data reusables.codespaces.about-billing-for-codespaces %} - -Compute costs are incurred only when a codespace is active. When you're using a codespace, the codespace is active. After 30 minutes of inactivity, a codespace becomes suspended automatically. - -Compute usage is billed per hour, at a rate that depends on your codespace's instance type. During the beta, {% data variables.product.prodname_codespaces %} offers a single, Linux instance type. At general availability, we'll support three Linux instance types. - -| Instance Type (Linux) | Per-hour rate | -| --------------------------------------- | ------------- | -| Basic (2 cores, 4GB RAM, 32 GB SSD) | $0.085 | -| Standard (4 cores, 8 GB RAM, 32 GB SSD) | $0.169 | -| Premium (8 cores, 16 GB RAM, 32 GB SSD) | $0.339 | - -Compute pricing may vary for additional instance types and operating systems supported in the future. - -Each codespace also incurs monthly storage costs until you delete the codespace. Storage costs for all instance types are $0.10/GB-month. - -We'll share more information about any compute and storage usage included in each plan at general availability. diff --git a/content/github/developing-online-with-codespaces/about-codespaces.md b/content/github/developing-online-with-codespaces/about-codespaces.md deleted file mode 100644 index 6c0e0d29f123..000000000000 --- a/content/github/developing-online-with-codespaces/about-codespaces.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: About Codespaces -intro: '{% data variables.product.prodname_codespaces %} is an online development environment, hosted by {% data variables.product.prodname_dotcom %} and powered by {% data variables.product.prodname_vscode %}, that allows you to develop entirely in the cloud.' -product: '{% data reusables.gated-features.codespaces %}' -redirect_from: - - /github/developing-online-with-github-codespaces/about-github-codespaces -versions: - free-pro-team: '*' ---- - -{% note %} - -**Note:** {% data variables.product.prodname_codespaces %} is currently in limited public beta and subject to change. During the beta period, {% data variables.product.prodname_dotcom %} does not make any guarantees about the availability of {% data variables.product.prodname_codespaces %}. For more information about joining the beta, see "[Joining the beta](/github/developing-online-with-codespaces/about-codespaces#joining-the-beta)." - -{% endnote %} - -### About {% data variables.product.prodname_codespaces %} - -{% data variables.product.prodname_codespaces %} is a cloud development environment available in your browser. A codespace includes everything you need to develop for a specific repository, including a text editor with syntax highlighting and autocomplete, a terminal, debugging tools, and Git commands, all within {% data variables.product.prodname_dotcom %}. You can also install {% data variables.product.prodname_vscode %} extensions in your codespace to add more functionality. - -{% data variables.product.prodname_codespaces %} makes it easier for developers to onboard to a new company or start contributing to an open-source project. Project maintainers can configure a repository so that, when you create a codespace for the repository, the project's dependencies are included automatically. You can start coding faster by reducing time spent configuring your environment. - -{% data variables.product.prodname_codespaces %} allows you to develop in the cloud instead of locally. Developers can contribute from anywhere, on any machine, including tablets or Chromebooks, and there is no need to maintain local copies of intellectual property. - -![An open codespace](/assets/images/help/codespaces/codespace-overview.png) - -### Using {% data variables.product.prodname_codespaces %} - -Each developer can create one or more codespace for any public repository, or for any private repository owned by their user account. {% data reusables.codespaces.unsupported-repos %} {% data reusables.codespaces.codespaces-are-personal %} - -{% data reusables.codespaces.codespaces-are-per-branch %} {% data reusables.codespaces.concurrent-codespace-limit %} For more information, see "[Deleting a codespace](/github/developing-online-with-codespaces/deleting-a-codespace)." - -{% data reusables.codespaces.use-visual-studio-features %} - -{% data reusables.codespaces.connect-to-codespace-from-vscode %} - -{% data reusables.codespaces.about-configuration %} For more information, see "[Configuring {% data variables.product.prodname_codespaces %} for your project](/github/developing-online-with-codespaces/configuring-codespaces-for-your-project)." - -{% data reusables.codespaces.about-personalization %} For more information, see "[Personalizing {% data variables.product.prodname_codespaces %} for your account](/github/developing-online-with-codespaces/personalizing-codespaces-for-your-account)." - -{% data reusables.codespaces.you-can-see-all-your-codespaces %} - -{% data reusables.codespaces.beta-functionality-limited %} - -### About billing for {% data variables.product.prodname_codespaces %} - -{% data reusables.codespaces.about-billing-for-codespaces %} For more information, see "[About billing for {% data variables.product.prodname_codespaces %}](/github/developing-online-with-codespaces/about-billing-for-codespaces)." - -### Joining the beta - -A limited number of people will be invited to join the beta. To join the waitlist, see [Sign up for Codespaces beta](https://github.com/features/codespaces/signup). - -### Contacting us about {% data variables.product.prodname_codespaces %} - -If you encounter problems using {% data variables.product.prodname_codespaces %}, see "[Troubleshooting your codespace](/github/developing-online-with-codespaces/troubleshooting-your-codespace)." - -If you still need help or have feedback about {% data variables.product.prodname_codespaces %}, use the [Community Forum](https://github.community/c/codespaces-beta/45). diff --git a/content/github/developing-online-with-codespaces/configuring-codespaces-for-your-project.md b/content/github/developing-online-with-codespaces/configuring-codespaces-for-your-project.md deleted file mode 100644 index 9b692c800fb6..000000000000 --- a/content/github/developing-online-with-codespaces/configuring-codespaces-for-your-project.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Configuring Codespaces for your project -intro: You can set up a default configuration for every new codespace for your repository to ensure that contributors have all the tools and settings they need in their online development environment. -product: '{% data reusables.gated-features.codespaces %}' -permissions: People with write permissions to a repository can create or edit the default codespace configuration. -redirect_from: - - /github/developing-online-with-github-codespaces/configuring-github-codespaces-for-your-project -versions: - free-pro-team: '*' ---- - -{% data reusables.codespaces.release-stage %} - -### About default codespace configurations - -{% data reusables.codespaces.about-configuration %} - -If you don't define a configuration in your repository, {% data variables.product.prodname_dotcom %} creates a codespace with a base Linux image. The base Linux image includes tools for Node.js, JavaScript, TypeScript, Python, C++, Java, C#, .NET Core, PHP, and PowerShell. For more information about the base Linux image, see the [`microsoft/vscode-dev-containers`](https://github.com/microsoft/vscode-dev-containers/tree/master/containers/codespaces-linux) repository. - -{% data reusables.codespaces.about-personalization %} {% data reusables.codespaces.codespace-config-order %} For more information, see "[Personalizing {% data variables.product.prodname_codespaces %} for your account](/github/developing-online-with-codespaces/personalizing-codespaces-for-your-account)." - -You can create a default codespace configuration using a pre-built container configuration for your project type, or you can create a custom configuration specific to your project's needs. - -{% data variables.product.prodname_codespaces %} uses settings contained in a configuration file named `devcontainer.json`. {% data reusables.codespaces.devcontainer-location %} - -You can use your `devcontainer.json` to set default settings for the entire codespace environment, including the {% data variables.product.prodname_vscode %} editor, but you can also set editor-specific settings in a file named `.vscode/settings.json`. - -Changes to a repository's codespace configuration apply only to every new codespace and do not affect any existing codespace. - -### Using a pre-built container configuration - -You can use any pre-built container configuration for {% data variables.product.prodname_vscode %} that is available in the [`vscode-dev-containers`](https://github.com/microsoft/vscode-dev-containers) repository. Pre-built container definitions include a common configuration for a particular project type, and can help you quickly get started with a configuration that already has the appropriate container options, {% data variables.product.prodname_vscode %} settings, and {% data variables.product.prodname_vscode %} extensions that should be installed. - -1. Clone or download the [`vscode-dev-containers`](https://github.com/microsoft/vscode-dev-containers) repository. -1. In the `vscode-dev-containers` repository, navigate to the [`containers`](https://github.com/microsoft/vscode-dev-containers/tree/master/containers) folder, then choose a container configuration for your project's needs. We'll use the [Node.js & JavaScript](https://aka.ms/vscode-dev-containers/definitions/node) container configuration as an example. -1. From the [`Node.js & JavaScript`](https://aka.ms/vscode-dev-containers/definitions/node) folder, copy the `.devcontainer` folder to the root of your project's repository. -1. Commit and push the new configuration to your project's repository on {% data variables.product.prodname_dotcom %}. - -Each new codespace created from a branch which contains the `.devcontainer` folder will be configured according to the folder's contents. For more information, see "[Creating a codespace](/github/developing-online-with-codespaces/creating-a-codespace)." - -### Creating a custom codespace configuration - -If none of the pre-built configurations meet your needs, you can create a custom configuration by adding a `devcontainer.json` file. {% data reusables.codespaces.devcontainer-location %} - -In the file, you can use supported configuration keys to specify aspects of the codespace's environment, like which {% data variables.product.prodname_vscode %} extensions will be installed. - -{% data reusables.codespaces.vscode-settings-order %} - -You can define default editor settings for {% data variables.product.prodname_vscode %} in two places. - -* Editor settings defined in `.vscode/settings.json` are applied as _Workspace_-scoped settings in the codespace. -* Editor settings defined in the `settings` key in `devcontainer.json` are applied as _Remote [Codespaces]_-scoped settings in the codespace. - -### Supported codespace configuration keys - -You can use configuration keys supported by {% data variables.product.prodname_codespaces %} in `devcontainer.json`. - -#### General settings - -- `name` -- `settings` -- `extensions` -- `forwardPorts` -- `devPort` -- `postCreateCommand` - -#### Docker, Dockerfile, or image settings - -- `image` -- `dockerFile` -- `context` -- `containerEnv` -- `remoteEnv` -- `containerUser` -- `remoteUser` -- `updateRemoteUserUID` -- `mounts` -- `workspaceMount` -- `workspaceFolder` -- `runArgs` -- `overrideCommand` -- `shutdownAction` -- `dockerComposeFile` - -For more information about the available settings for `devcontainer.json`, see [devcontainer.json reference](https://aka.ms/vscode-remote/devcontainer.json) in the {% data variables.product.prodname_vscode %} documentation. diff --git a/content/github/developing-online-with-codespaces/creating-a-codespace.md b/content/github/developing-online-with-codespaces/creating-a-codespace.md deleted file mode 100644 index ff22cc9ec47b..000000000000 --- a/content/github/developing-online-with-codespaces/creating-a-codespace.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Creating a codespace -intro: You can create a codespace for a branch in a repository to develop online. -product: '{% data reusables.gated-features.codespaces %}' -permissions: 'Anyone can create a codespace for any public repository, or for any repository owned by their user account.' -redirect_from: - - /github/developing-online-with-github-codespaces/creating-a-codespace -versions: - free-pro-team: '*' ---- - -{% data reusables.codespaces.release-stage %} - -### About codespace creation - -{% data reusables.codespaces.codespaces-are-personal %} - -{% data reusables.codespaces.codespaces-are-per-branch %} {% data reusables.codespaces.concurrent-codespace-limit %} For more information, see "[Deleting a codespace](/github/developing-online-with-codespaces/deleting-a-codespace)." - -{% data reusables.codespaces.unsupported-repos %} - -You cannot create a codespace in an empty repository. If your repository is empty, create a file in the repository before creating a codespace. For more information, see "[Adding a file to a repository](/github/managing-files-in-a-repository/adding-a-file-to-a-repository)" and "[Adding a file to a repository using the command line](/github/managing-files-in-a-repository/adding-a-file-to-a-repository-using-the-command-line)." - -The environment of the codespace you create will be based on the repository's configuration. For more information, see "[Configuring {% data variables.product.prodname_codespaces %} for your project](/github/developing-online-with-codespaces/configuring-codespaces-for-your-project)." - -{% data reusables.codespaces.about-personalization %} For more information, see "[Personalizing {% data variables.product.prodname_codespaces %} for your account](/github/developing-online-with-codespaces/personalizing-codespaces-for-your-account)." - -{% data reusables.codespaces.use-visual-studio-features %} - -{% data reusables.codespaces.you-can-see-all-your-codespaces %} - -### Creating a codespace - -{% data reusables.repositories.navigate-to-repo %} -2. Under the repository name, use the "Branch" drop-down menu, and select the branch you want to create a codespace for. - ![Branch drop-down menu](/assets/images/help/codespaces/branch-drop-down.png) -3. Under the repository name, use the {% octicon "download" aria-label="The download icon" %} **Code** drop-down menu, and select **Open with Codespaces**. - ![Open with Codespaces button](/assets/images/help/codespaces/open-with-codespaces-button.png) -4. If you already have a codespace for the branch, click {% octicon "plus" aria-label="The plus icon" %} **New codespace**. - ![New codespace button](/assets/images/help/codespaces/new-codespace-button.png) diff --git a/content/github/developing-online-with-codespaces/deleting-a-codespace.md b/content/github/developing-online-with-codespaces/deleting-a-codespace.md deleted file mode 100644 index db9fe05a45e3..000000000000 --- a/content/github/developing-online-with-codespaces/deleting-a-codespace.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Deleting a codespace -intro: You can delete a codespace you no longer need. -product: '{% data reusables.gated-features.codespaces %}' -permissions: Anyone can delete a codespace owned by their user account. -redirect_from: - - /github/developing-online-with-github-codespaces/deleting-a-codespace -versions: - free-pro-team: '*' ---- - -{% data reusables.codespaces.release-stage %} - -{% data reusables.codespaces.concurrent-codespace-limit %} - -{% data reusables.codespaces.navigate-to-codespaces %} -2. To the right of the codespace you want to delete, click **Delete**. - ![Delete button](/assets/images/help/codespaces/delete-codespace.png) diff --git a/content/github/developing-online-with-codespaces/developing-in-a-codespace.md b/content/github/developing-online-with-codespaces/developing-in-a-codespace.md deleted file mode 100644 index a9df2f093fa8..000000000000 --- a/content/github/developing-online-with-codespaces/developing-in-a-codespace.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Developing in a codespace -intro: 'You can open a codespace on {% data variables.product.product_name %}, then develop using {% data variables.product.prodname_vscode %}''s features.' -product: '{% data reusables.gated-features.codespaces %}' -permissions: Anyone can develop in a codespace owned by their user account. -redirect_from: - - /github/developing-online-with-github-codespaces/developing-in-a-codespace -versions: - free-pro-team: '*' ---- - -{% data reusables.codespaces.release-stage %} - -{% data reusables.codespaces.use-visual-studio-features %} - -{% data reusables.codespaces.use-chrome %} For more information, see "[Troubleshooting your codespace](/github/developing-online-with-codespaces/troubleshooting-your-codespace)." - -### Connecting to a codespace from {% data variables.product.prodname_vscode %} -{% data reusables.codespaces.connect-to-codespace-from-vscode %} - -### Navigating to your codespace -{% data reusables.codespaces.navigate-to-codespaces %} -2. Click the name of the codespace you want to develop in. - ![Name of codespace](/assets/images/help/codespaces/click-name-codespace.png) - -### Forwarding ports - -Port forwarding gives you access to TCP ports running within your codespace. For example, if you're running a web application on port 3000, you can access the application from your browser to test and debug it. - -When an application running inside a codespace outputs a port to the console, {% data variables.product.prodname_codespaces %} detects the localhost URL pattern and automatically forwards those ports. You can click on the URL in the terminal to open it in a browser. For example, if an application outputs `http://127.0.0.1:3000` or `http://localhost:3000` to the console, the log would automatically convert the output to a clickable URL for port 3000. - -![Automatic Port Forwarding](/assets/images/help/codespaces/automatic-port-forwarding.png) - -Alternatively, you can also use any of the following ways to forward a port. - -* You can forward a port on demand by triggering the command palette (`shift command P` / `shift control P`) and typing "Codespaces: Forward Port". You can then enter the number of the port you want to forward. - - ![Command Palette Port Forwarding](/assets/images/help/codespaces/command-palette-port-forwarding.png) - -* You can automatically configure forwarded ports in a `.devcontainer.json` file using the `forwardPorts` property. - -* You can add or remove forwarded ports within the Remote Explorer extension. From the Remote Explorer you can copy and paste the URLs for forwarded ports, allowing you to access them through your browser. - - ![Remote Explorer Port Forwarding](/assets/images/help/codespaces/remote-explorer-port-forwarding.png) diff --git a/content/github/developing-online-with-codespaces/index.md b/content/github/developing-online-with-codespaces/index.md deleted file mode 100644 index d53f3e92fbc8..000000000000 --- a/content/github/developing-online-with-codespaces/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: 'Developing online with {% data variables.product.prodname_codespaces %}' -shortTitle: Codespaces -intro: 'You can develop entirely in the cloud using {% data variables.product.prodname_codespaces %}, an integrated development environment (IDE) on {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.codespaces %}' -redirect_from: - - /github/developing-online-with-github-codespaces -versions: - free-pro-team: '*' ---- - -{% data reusables.codespaces.release-stage %} - -### Table of Contents - -{% link_in_list /about-codespaces %} -{% link_in_list /about-billing-for-codespaces %} -{% link_in_list /configuring-codespaces-for-your-project %} -{% link_in_list /creating-a-codespace %} -{% link_in_list /developing-in-a-codespace %} -{% link_in_list /personalizing-codespaces-for-your-account %} -{% link_in_list /deleting-a-codespace %} -{% link_in_list /troubleshooting-your-codespace %} -{% link_in_list /using-codespaces-in-visual-studio-code %} -{% link_in_list /using-codespaces-in-visual-studio %} diff --git a/content/github/developing-online-with-codespaces/personalizing-codespaces-for-your-account.md b/content/github/developing-online-with-codespaces/personalizing-codespaces-for-your-account.md deleted file mode 100644 index 155e958d021a..000000000000 --- a/content/github/developing-online-with-codespaces/personalizing-codespaces-for-your-account.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Personalizing Codespaces for your account -intro: '{% data variables.product.prodname_codespaces %} uses your `dotfiles` repository on {% data variables.product.product_name %} to personalize every new codespace that you create.' -product: '{% data reusables.gated-features.codespaces %}' -permissions: 'Anyone can create a `dotfiles` repository to personalize {% data variables.product.prodname_codespaces %} for their user account.' -redirect_from: - - /github/developing-online-with-github-codespaces/personalizing-github-codespaces-for-your-account -versions: - free-pro-team: '*' ---- - -{% data reusables.codespaces.release-stage %} - -Dotfiles are files and folders on Unix-like systems starting with `.` that control the configuration of applications and shells on your system. You can store and manage your dotfiles in a repository on {% data variables.product.prodname_dotcom %}. For advice and tutorials about what to include in your `dotfiles` repository, see [GitHub does dotfiles](https://dotfiles.github.io/). - -If your user account on {% data variables.product.prodname_dotcom %} owns a public repository named `dotfiles`, {% data variables.product.prodname_dotcom %} automatically uses this repository to personalize your codespace environment. Private `dotfiles` repositories are not currently supported. - -Your `dotfiles` repository might include your shell aliases and preferences, any tools you want to install, or any other codespace personalization you want to make. - -Codespace personalization using your `dotfiles` repository applies to any codespace you create. Project maintainers can also define a default configuration that applies to every codespace for a repository, created by anyone. {% data reusables.codespaces.codespace-config-order %} For more information, see "[Configuring {% data variables.product.prodname_codespaces %} for your project](/github/developing-online-with-codespaces/configuring-codespaces-for-your-project)." - -When you create a new codespace, {% data variables.product.prodname_dotcom %} clones your `dotfiles` repository to the codespace environment, and looks for one of the following files to set up the environment. - -* _install.sh_ -* _install_ -* _bootstrap.sh_ -* _bootstrap_ -* _setup.sh_ -* _setup_ - -If none of these files are found, then any files or folders in `dotfiles` starting with `.` are symlinked to the codespace's `~` or `$HOME` directory. - -Any changes to your `dotfiles` repository will apply only to each new codespace, and do not affect any existing codespace. - -For more information, see [Personalizing](https://docs.microsoft.com/en-us/visualstudio/online/reference/personalizing) in the {% data variables.product.prodname_vscode %} documentation. - -{% note %} - -**Note:** Currently, {% data variables.product.prodname_codespaces %} does not support personalizing the _User_ settings for the {% data variables.product.prodname_vscode %} editor with your `dotfiles` repository. You can set default _Workspace_ and _Remote [Codespaces]_ settings for a specific project in the project's repository. For more information, see "[Configuring {% data variables.product.prodname_codespaces %} for your project](/github/developing-online-with-codespaces/configuring-codespaces-for-your-project#creating-a-custom-codespace-configuration)." - -{% endnote %} - - -### Further reading - -* "[Creating a new repository](/github/creating-cloning-and-archiving-repositories/creating-a-new-repository)" diff --git a/content/github/developing-online-with-codespaces/troubleshooting-your-codespace.md b/content/github/developing-online-with-codespaces/troubleshooting-your-codespace.md deleted file mode 100644 index 2daf7c260763..000000000000 --- a/content/github/developing-online-with-codespaces/troubleshooting-your-codespace.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Troubleshooting your codespace -intro: You can troubleshoot problems with a codespace by checking for known issues in the `microsoft/vscode` repository. -product: '{% data reusables.gated-features.codespaces %}' -redirect_from: - - /github/developing-online-with-github-codespaces/troubleshooting-your-codespace -versions: - free-pro-team: '*' ---- - -{% data reusables.codespaces.release-stage %} - -{% data reusables.codespaces.beta-functionality-limited %} - -{% data reusables.codespaces.unsupported-repos %} - -If you encounter issues while using a browser that is not Chromium-based, try switching to a Chromium-based browser, or check for known issues with your browser in the `microsoft/vscode` repository by searching for issues labeled with the name of your browser, such as[`firefox`](https://github.com/microsoft/vscode/issues?q=is%3Aissue+is%3Aopen+label%3Afirefox) or [`safari`](https://github.com/Microsoft/vscode/issues?q=is%3Aopen+is%3Aissue+label%3Asafari). - -If you encounter issues while using a Chromium-based browser, you can check if you're experiencing another known issue with {% data variables.product.prodname_vscode %} in the [`microsoft/vscode`](https://github.com/microsoft/vscode/issues) repository. - -If you still need help, you can contact us. For more information, see "[About {% data variables.product.prodname_codespaces %}](/github/developing-online-with-codespaces/about-codespaces#contacting-us-about-codespaces)." diff --git a/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio-code.md b/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio-code.md deleted file mode 100644 index 93dc802d2bdb..000000000000 --- a/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio-code.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Using Codespaces in Visual Studio Code -intro: 'You can develop in your codespace directly in {% data variables.product.prodname_vscode %} by connecting the {% data variables.product.prodname_vs_codespaces %} extension with your account on {% data variables.product.product_name %}.' -product: '{% data reusables.gated-features.codespaces %}' -redirect_from: - - /github/developing-online-with-codespaces/connecting-to-your-codespace-from-visual-studio-code -versions: - free-pro-team: '*' ---- - -{% data reusables.codespaces.release-stage %} - -### Prerequisites - -Before you can develop in a codespace directly in {% data variables.product.prodname_vscode %}, you must configure the {% data variables.product.prodname_vs_codespaces %} extension to connect to your {% data variables.product.product_name %} account. - -1. Use the {% data variables.product.prodname_vs %} Marketplace to install the [{% data variables.product.prodname_vs_codespaces %}](https://marketplace.visualstudio.com/items?itemName=ms-vsonline.vsonline) extension. For more information, see [Extension Marketplace](https://code.visualstudio.com/docs/editor/extension-gallery) in the {% data variables.product.prodname_vscode %} documentation. -2. In {% data variables.product.prodname_vscode %}, in the left sidebar, click the Extensions icon. - ![The Extensions icon in {% data variables.product.prodname_vscode %}](/assets/images/help/codespaces/click-extensions-icon-vscode.png) -3. Below {% data variables.product.prodname_vs_codespaces %}, click the Manage icon, then click **Extension Settings**. - ![The Extension Settings option](/assets/images/help/codespaces/select-extension-settings.png) -4. Use the Codespaces: Account Provider drop-down menu, and click **{% data variables.product.prodname_dotcom %}**. - ![Setting the Account Provider to {% data variables.product.prodname_dotcom %}](/assets/images/help/codespaces/select-account-provider-vscode.png) -{% data reusables.codespaces.click-remote-explorer-icon-vscode %} -6. If {% data variables.product.prodname_codespaces %} is not already selected in the header, click **{% data variables.product.prodname_codespaces %}**. - ![The {% data variables.product.prodname_codespaces %} header](/assets/images/help/codespaces/codespaces-header-vscode.png) -7. Click **Sign in to view {% data variables.product.prodname_codespaces %}...**. - ![Signing in to view {% data variables.product.prodname_codespaces %}](/assets/images/help/codespaces/sign-in-to-view-codespaces-vscode.png) -8. To authorize {% data variables.product.prodname_vscode %} to access your account on {% data variables.product.product_name %}, click **Allow**. -9. Sign in to {% data variables.product.product_name %} to approve the extension. - -### Creating a codespace in {% data variables.product.prodname_vscode %} - -After you connect your {% data variables.product.product_name %} account to the {% data variables.product.prodname_vs_codespaces %} extension, you can develop in a codespace that you created on {% data variables.product.product_name %} or in {% data variables.product.prodname_vscode %}. - -{% data reusables.codespaces.click-remote-explorer-icon-vscode %} -2. Click the Add icon, then click **Create New Codespace**. -![The Create new Codespace option in {% data variables.product.prodname_codespaces %}](/assets/images/help/codespaces/create-codespace-vscode.png) -3. Type, then click the repository's name you want to develop in. -![Searching for repository to create a new {% data variables.product.prodname_codespaces %}](/assets/images/help/codespaces/choose-repository-vscode.png) -4. Click the branch you want to develop in. -![Searching for a branch to create a new {% data variables.product.prodname_codespaces %}](/assets/images/help/codespaces/choose-branch-vscode.png) - -### Opening a codespace in {% data variables.product.prodname_vscode %} - -{% data reusables.codespaces.click-remote-explorer-icon-vscode %} -2. Under Codespaces, click the codespace you want to develop in. -3. Click the Connect to Codespace icon. - ![The Connect to Codespace icon in {% data variables.product.prodname_vscode %}](/assets/images/help/codespaces/click-connect-to-codespace-icon-vscode.png) - -### Deleting a codespace in {% data variables.product.prodname_vscode %} - -1. Under Codespaces, right-click the codespace you want to delete. -2. In the drop-down menu, click **Delete Codespace**. -![Deleting a codespace in {% data variables.product.prodname_dotcom %}](/assets/images/help/codespaces/delete-codespace-vscode.png) diff --git a/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio.md b/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio.md deleted file mode 100644 index 9474a8fc6357..000000000000 --- a/content/github/developing-online-with-codespaces/using-codespaces-in-visual-studio.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Using Codespaces in Visual Studio -intro: 'You can develop in your codespace directly in {% data variables.product.prodname_vs %} by connecting with your account on {% data variables.product.product_name %}.' -product: '{% data reusables.gated-features.codespaces %}' -versions: - free-pro-team: '*' ---- - -{% note %} - -**Note:** {% data variables.product.prodname_codespaces %} is currently in limited public beta and subject to change. During the beta period, {% data variables.product.prodname_dotcom %} does not make any guarantees about the availability of {% data variables.product.prodname_codespaces %}. [Sign up for the limited public beta](https://github.com/features/codespaces/signup-vs). For more information about joining the beta, see "[About {% data variables.product.prodname_codespaces %}](/github/developing-online-with-codespaces/about-codespaces#joining-the-beta)." - -{% endnote %} - -### About Codespaces in {% data variables.product.prodname_vs %} - -You can create a codespace in {% data variables.product.prodname_vs %} to develop applications in a Windows environment. When you use a codespace in {% data variables.product.prodname_vs %}, you can browse source code, build solutions, and commit changes to your repository. - -You must create a codespace in {% data variables.product.prodname_vs %} to use it with the application. Codespaces created outside of {% data variables.product.prodname_vs %} can not currently be used with {% data variables.product.prodname_vs %}. - -### Prerequisites - -Before you configure a codespace in {% data variables.product.prodname_vs %}, you must download the latest version of [{% data variables.product.prodname_vs %} Preview](https://aka.ms/vspreview). - -#### Enabling the connection between {% data variables.product.prodname_vs %} and {% data variables.product.prodname_github_codespaces %} - -Connecting to {% data variables.product.prodname_github_codespaces %} with the {% data variables.product.prodname_vs %} Preview is not enabled by default, so you will first need to enable the Preview Features option. - -1. In {% data variables.product.prodname_vs %} Preview, use the Tools drop-down menu, then click **Options**. -2. Under **Environment**, select **Preview Features** and check the **Connect to {% data variables.product.prodname_github_codespaces %}** preview feature. - ![Check the Connect to {% data variables.product.prodname_github_codespaces %} preview feature](/assets/images/help/codespaces/connect-to-github-codespaces-preview-feature.png) -3. You will need to restart {% data variables.product.prodname_vs %} for the feature to be available. - -### Creating a codespace in {% data variables.product.prodname_vs %} - -1. When you launch {% data variables.product.prodname_vs %}, the Start Window will show a **Connect to a codespace** button under "Get started". - ![Visual Studio Start window with Connect to a codespace](/assets/images/help/codespaces/visual-studio-start-window.png) -2. Click **Connect to a codespace**. -3. Click **Sign in to {% data variables.product.prodname_dotcom %}** and follow the prompts, or click **Create one!** to create a new {% data variables.product.prodname_dotcom %} account and sign into the account. - ![Visual Studio sign in to {% data variables.product.prodname_dotcom %}](/assets/images/help/codespaces/visual-studio-sign-in-to-github.png) -4. Under "Codespace details", type the repository's URL you want {% data variables.product.prodname_github_codespaces %} to clone into your codespace. -5. Optionally, use the Instance type and Suspend after drop-down menus to configure more codespace details. - ![Visual Studio codespace details](/assets/images/help/codespaces/visual-studio-codespace-details.png) -6. Click **Create and Connect**. {% data variables.product.prodname_github_codespaces %} will begin preparing the codespace and open {% data variables.product.prodname_vs %} after the codespace is ready. The codespace name will appear in the remote indicator in the menu. - ![Visual Studio connected to eShopOnWeb repository codespace](/assets/images/help/codespaces/visual-studio-eshoponweb-codespace.png) - -### Opening a codespace in {% data variables.product.prodname_vs %} - -1. Use the File drop-down menu, and click **Connect to a Codespace**. - ![Visual Studio File Connect to a codespace menu item](/assets/images/help/codespaces/visual-studio-file-connect-to-codespace.png) -2. Under "{% data variables.product.prodname_github_codespaces %}", click the codespace you want to connect to, then click **Connect**. - ![Visual Studio displaying available codespaces and details](/assets/images/help/codespaces/visual-studio-connect-codespace.png) - -### Configuring a codespace for {% data variables.product.prodname_vs %} - -The default codespace environment created by {% data variables.product.prodname_vs %} includes popular frameworks and tools such as .NET Core, Microsoft SQL Server, Python, and the Windows SDK. {% data variables.product.prodname_github_codespaces %} created with {% data variables.product.prodname_vs %} can be customized through a subset of `devcontainers.json` properties and a new tool called devinit, included with {% data variables.product.prodname_vs %}. - -#### devinit - -The [devinit](https://docs.microsoft.com/visualstudio/devinit/getting-started-with-devinit) command-line tool lets you install additional frameworks and tools into your Windows development codespaces, as well as run PowerShell scripts or modify environment variables. devinit supports a configuration file called [devinit.json](https://docs.microsoft.com/visualstudio/devinit/devinit-json), which can be added to your project for creating customized and repeatable development environments. For more information about Windows codespace configuration and devinit, see [Customize a codespace](https://docs.microsoft.com/visualstudio/ide/codespaces/customize-codespaces) in the {% data variables.product.prodname_vs %} documentation. diff --git a/content/github/extending-github/about-webhooks.md b/content/github/extending-github/about-webhooks.md deleted file mode 100644 index 51dd07f0f6d2..000000000000 --- a/content/github/extending-github/about-webhooks.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: About webhooks -redirect_from: - - /post-receive-hooks/ - - /articles/post-receive-hooks/ - - /articles/creating-webhooks/ - - /articles/about-webhooks -intro: Webhooks provide a way for notifications to be delivered to an external web server whenever certain actions occur on a repository or organization. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tip:** {% data reusables.organizations.owners-and-admins-can %} manage webhooks for an organization. {% data reusables.organizations.new-org-permissions-more-info %} - -{% endtip %} - -Webhooks can be triggered whenever a variety of actions are performed on a repository or an organization. For example, you can configure a webhook to execute whenever: - -* A repository is pushed to -* A pull request is opened -* A {% data variables.product.prodname_pages %} site is built -* A new member is added to a team - -Using the {% data variables.product.product_name %} API, you can make these webhooks update an external issue tracker, trigger CI builds, update a backup mirror, or even deploy to your production server. - -To set up a new webhook, you'll need access to an external server and familiarity with the technical procedures involved. For help on building a webhook, including a full list of actions you can associate with, see "[Webhooks](/webhooks)." diff --git a/content/github/extending-github/getting-started-with-the-api.md b/content/github/extending-github/getting-started-with-the-api.md deleted file mode 100644 index c2c7b0d9a09b..000000000000 --- a/content/github/extending-github/getting-started-with-the-api.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Getting started with the API -redirect_from: - - /articles/getting-started-with-the-api -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -To automate common tasks, back up your data, or create integrations that extend {% data variables.product.product_name %}, you can use the {% data variables.product.product_name %} API. - -For more information about the API, see the [GitHub REST API](/rest) and [GitHub GraphQL API](/graphql). You can also stay current with API-related news by following the [{% data variables.product.prodname_dotcom %} Developer blog](https://developer.github.com/changes/). - -### Further reading - -- "[Backing up a repository](/articles/backing-up-a-repository)"{% if currentVersion == "free-pro-team@latest" %} -- "[About integrations](/articles/about-integrations)"{% endif %} diff --git a/content/github/extending-github/git-automation-with-oauth-tokens.md b/content/github/extending-github/git-automation-with-oauth-tokens.md deleted file mode 100644 index bdd15c3b9fc8..000000000000 --- a/content/github/extending-github/git-automation-with-oauth-tokens.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Git automation with OAuth tokens -redirect_from: - - /articles/git-over-https-using-oauth-token/ - - /articles/git-over-http-using-oauth-token/ - - /articles/git-automation-with-oauth-tokens -intro: 'You can use OAuth tokens to interact with {% data variables.product.product_name %} via automated scripts.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Step 1: Get an OAuth token - -Create a personal access token on your application settings page. For more information, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." - -{% tip %} - -{% if currentVersion == "free-pro-team@latest" %} -**Tips:** -- You must verify your email address before you can create a personal access token. For more information, see "[Verifying your email address](/articles/verifying-your-email-address)." -- {% data reusables.user_settings.review_oauth_tokens_tip %} -{% else %} -**Tip:** {% data reusables.user_settings.review_oauth_tokens_tip %} -{% endif %} - -{% endtip %} - -{% if currentVersion == "free-pro-team@latest" %}{% data reusables.user_settings.removes-personal-access-tokens %}{% endif %} - -### Step 2: Clone a repository - -{% data reusables.command_line.providing-token-as-password %} - -To avoid these prompts, you can use Git password caching. For information, see "[Caching your GitHub credentials in Git](/github/using-git/caching-your-github-credentials-in-git)." - -{% warning %} - -**Warning**: Tokens have read/write access and should be treated like passwords. If you enter your token into the clone URL when cloning or adding a remote, Git writes it to your _.git/config_ file in plain text, which is a security risk. - -{% endwarning %} - -### Further reading - -- "[Authorizing OAuth Apps](/v3/oauth/)" diff --git a/content/github/extending-github/index.md b/content/github/extending-github/index.md deleted file mode 100644 index 3531b949408b..000000000000 --- a/content/github/extending-github/index.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Extending GitHub -redirect_from: - - /categories/86/articles/ - - /categories/automation/ - - /categories/extending-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% link_in_list /getting-started-with-the-api %} -{% link_in_list /git-automation-with-oauth-tokens %} -{% link_in_list /about-webhooks %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md deleted file mode 100644 index ff27712b4928..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: About code scanning -intro: 'You can use {% data variables.product.prodname_code_scanning %} to find security vulnerabilities and errors in the code for your project on {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/managing-security-vulnerabilities/about-automated-code-scanning -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning %} - -### About {% data variables.product.prodname_code_scanning %} - -{% data reusables.code-scanning.about-code-scanning %} - -You can use {% data variables.product.prodname_code_scanning %} to find, triage, and prioritize fixes for existing problems in your code. {% data variables.product.prodname_code_scanning_capc %} also prevents developers from introducing new problems. You can schedule scans for specific days and times, or trigger scans when a specific event occurs in the repository, such as a push. - -If {% data variables.product.prodname_code_scanning %} finds a potential vulnerability or error in your code, {% data variables.product.prodname_dotcom %} displays an alert in the repository. After you fix the code that triggered the alert, {% data variables.product.prodname_dotcom %} closes the alert. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository)." - -To monitor results from {% data variables.product.prodname_code_scanning %} across your repositories or your organization, you can use the {% data variables.product.prodname_code_scanning %} API. -For more information about API endpoints, see "[{% data variables.product.prodname_code_scanning_capc %}](/v3/code-scanning)." - -To get started with {% data variables.product.prodname_code_scanning %}, see "[Enabling {% data variables.product.prodname_code_scanning %} for a repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning-for-a-repository)." - -### About {% data variables.product.prodname_codeql %} - -You can use {% data variables.product.prodname_code_scanning %} with {% data variables.product.prodname_codeql %}, a semantic code analysis engine. {% data variables.product.prodname_codeql %} treats code as data, allowing you to find potential vulnerabilities in your code with greater confidence than traditional static analyzers. - -{% data variables.product.prodname_ql %} is the query language that powers {% data variables.product.prodname_codeql %}. {% data variables.product.prodname_ql %} is an object-oriented logic programming language. {% data variables.product.company_short %}, language experts, and security researchers create the queries used for {% data variables.product.prodname_code_scanning %}, and the queries are open source. The community maintains and updates the queries to improve analysis and reduce false positives. For more information, see [{% data variables.product.prodname_codeql %}](https://securitylab.github.com/tools/codeql) on the GitHub Security Lab website. - -{% data variables.product.prodname_code_scanning_capc %} with {% data variables.product.prodname_codeql %} supports both compiled and interpreted languages, and can find vulnerabilities and errors in code that's written in the supported languages. - -{% data reusables.code-scanning.supported-languages %} - -You can view and contribute to the queries for {% data variables.product.prodname_code_scanning %} in the [`github/codeql`](https://github.com/github/codeql) repository. For more information, see [{% data variables.product.prodname_codeql %} queries](https://help.semmle.com/QL/learn-ql/writing-queries/writing-queries.html) in the {% data variables.product.prodname_codeql %} documentation. - -{% if currentVersion == "free-pro-team@latest" %} - -### About billing for {% data variables.product.prodname_code_scanning %} - -{% data variables.product.prodname_code_scanning_capc %} uses {% data variables.product.prodname_actions %}, and each run of a {% data variables.product.prodname_code_scanning %} workflow consumes minutes for {% data variables.product.prodname_actions %}. For more information, see "[About billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions)." - -{% endif %} - -### About third-party code scanning tools - -{% data reusables.code-scanning.you-can-upload-third-party-analysis %} - -{% data reusables.code-scanning.interoperable-with-tools-that-output-sarif %} - -{% data reusables.code-scanning.get-started-uploading-third-party-data %} - -### Further reading - -{% if currentVersion == "free-pro-team@latest" %} -- "[About securing your repository](/github/administering-a-repository/about-securing-your-repository)"{% endif %} -- [{% data variables.product.prodname_security %}](https://securitylab.github.com/) -- [OASIS Static Analysis Results Interchange Format (SARIF) TC](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sarif) on the OASIS Committee website diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md deleted file mode 100644 index 87abca9e6d40..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: About integration with code scanning -shortTitle: About integration -intro: 'You can perform {% data variables.product.prodname_code_scanning %} externally and then display the results in {% data variables.product.prodname_dotcom %}, or set up webhooks that listen to {% data variables.product.prodname_code_scanning %} activity in your repository.' -product: '{% data reusables.gated-features.code-scanning %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning %} - -As an alternative to running {% data variables.product.prodname_code_scanning %} within {% data variables.product.prodname_dotcom %}, you can perform analysis elsewhere and then upload the results. Alerts for {% data variables.product.prodname_code_scanning %} that you run externally are displayed in the same way as those for {% data variables.product.prodname_code_scanning %} that you run within {% data variables.product.prodname_dotcom %}. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository)." - -If you use a third-party static analysis tool that can produce results as Static Analysis Results Interchange Format (SARIF) 2.1.0 data, you can upload this to {% data variables.product.prodname_dotcom %}. For more information, see "[Uploading a SARIF file to GitHub](/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github)." - -### Integrations with webhooks - -You can use {% data variables.product.prodname_code_scanning %} webhooks to build or set up integrations, such as [{% data variables.product.prodname_github_app %}s](/apps/building-github-apps/) or [{% data variables.product.prodname_oauth_app %}s](/apps/building-oauth-apps/), that subscribe to {% data variables.product.prodname_code_scanning %} events in your repository. For example, you could build an integration that creates an issue on {% data variables.product.product_location %} or sends you a Slack notification when a new {% data variables.product.prodname_code_scanning %} alert is added in your repository. For more information, see "[Creating webhooks](/developers/webhooks-and-events/creating-webhooks)" and "[Webhook events and payloads](/developers/webhooks-and-events/webhook-events-and-payloads#code_scanning_alert)." - -### Further reading - -* "[About {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning)" -* "[Using {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} with your existing CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system)" -* "[SARIF support for {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning)" diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md deleted file mode 100644 index 2f126e4f1c23..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/automatically-scanning-your-code-for-vulnerabilities-and-errors.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Automatically scanning your code for vulnerabilities and errors -shortTitle: Scanning automatically -intro: 'You can find vulnerabilities and errors in your project''s code on {% data variables.product.prodname_dotcom %}, as well as view, triage, understand, and resolve the related {% data variables.product.prodname_code_scanning %} alerts.' -mapTopic: true -product: '{% data reusables.gated-features.code-scanning %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md deleted file mode 100644 index 0cc08d5b3c84..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning.md +++ /dev/null @@ -1,292 +0,0 @@ ---- -title: Configuring code scanning -intro: 'You can configure how {% data variables.product.prodname_dotcom %} scans the code in your project for vulnerabilities and errors.' -product: '{% data reusables.gated-features.code-scanning %}' -permissions: 'People with write permissions to a repository can configure {% data variables.product.prodname_code_scanning %} for the repository.' -miniTocMaxHeadingLevel: 4 -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning-actions %} - -### About {% data variables.product.prodname_code_scanning %} configuration - -You can run {% data variables.product.prodname_code_scanning %} within {% data variables.product.product_location %}, using {% data variables.product.prodname_actions %}, or from your continuous integration (CI) system, using the {% data variables.product.prodname_codeql_runner %}. For more information about {% data variables.product.prodname_actions %}, see "[About {% data variables.product.prodname_actions %}](/actions/getting-started-with-github-actions/about-github-actions)." For more information about the {% data variables.product.prodname_codeql_runner %}, see "[Running {% data variables.product.prodname_code_scanning %} in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system)." - -This article is about running {% data variables.product.prodname_code_scanning %} within {% if currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_ghe_server %}{% else %}{% data variables.product.prodname_dotcom %}{% endif %}. - -Before you can configure {% data variables.product.prodname_code_scanning %} for a repository, you must enable {% data variables.product.prodname_code_scanning %} by adding a {% data variables.product.prodname_actions %} workflow to the repository. For more information, see "[Enabling {% data variables.product.prodname_code_scanning %} for a repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning-for-a-repository)." - -{% data reusables.code-scanning.edit-workflow %} - -{% data variables.product.prodname_codeql %} analysis is just one type of {% data variables.product.prodname_code_scanning %} you can do in {% data variables.product.prodname_dotcom %}. {% data variables.product.prodname_marketplace %}{% if currentVersion ver_gt "enterprise-server@2.21" %} on {% data variables.product.prodname_dotcom_the_website %}{% endif %} contains other {% data variables.product.prodname_code_scanning %} workflows you can use. {% if currentVersion == "free-pro-team@latest" %}You can find a selection of these on the "Get started with {% data variables.product.prodname_code_scanning %}" page, which you can access from the **{% octicon "shield" aria-label="The shield symbol" %} Security** tab.{% endif %} The specific examples given in this article relate to the {% data variables.product.prodname_codeql_workflow %} file. - -### Editing a {% data variables.product.prodname_code_scanning %} workflow - -{% data variables.product.prodname_dotcom %} saves workflow files in the _.github/workflows_ directory of your repository. You can find a workflow you have enabled by searching for its file name. For example, by default, the workflow file for {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} is called _codeql-analysis.yml_. - -1. In your repository, browse to the workflow file you want to edit. -1. In the upper right corner of the file view, to open the workflow editor, click {% octicon "pencil" aria-label="The edit icon" %}. -![Edit workflow file button](/assets/images/help/repository/code-scanning-edit-workflow-button.png) -1. After you have edited the file, click **Start commit** and complete the "Commit changes" form. You can choose to commit directly to the current branch, or create a new branch and start a pull request. -![Commit update to codeql.yml workflow](/assets/images/help/repository/code-scanning-workflow-update.png) - -For more information about editing workflow files, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -### Configuring frequency - -You can configure the {% data variables.product.prodname_codeql_workflow %} to scan code on a schedule or when specific events occur in a repository. - -Scanning code when someone pushes a change, and whenever a pull request is created, prevents developers from introducing new vulnerabilities and errors into the code. Scanning code on a schedule informs you about the latest vulnerabilities and errors that {% data variables.product.company_short %}, security researchers, and the community discover, even when developers aren't actively maintaining the repository. - -#### Scanning on push - -By default, the {% data variables.product.prodname_codeql_workflow %} uses the `on.push` event to trigger a code scan on every push to the default branch of the repository and any protected branches. For {% data variables.product.prodname_code_scanning %} to be triggered on a specified branch, the workflow must exist in that branch. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#on)." - -#### Scanning pull requests - -The default {% data variables.product.prodname_codeql_workflow %} uses the `pull_request` event to trigger a code scan on pull requests targeted against the default branch. {% if currentVersion ver_gt "enterprise-server@2.21" %}The `pull_request` event is not triggered if the pull request was opened from a private fork.{% else %}If a pull request is from a private fork, the `pull_request` event will only be triggered if you've selected the "Run workflows from fork pull requests" option in the repository settings. For more information, see "[Disabling or limiting {% data variables.product.prodname_actions %} for a repository](/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository#enabling-workflows-for-private-repository-forks)."{% endif %} - -For more information about the `pull_request` event, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestbranchestags)." - -#### Scanning on a schedule - -If you use the default {% data variables.product.prodname_codeql_workflow %}, the workflow will scan the code in your repository once a week, in addition to the scans triggered by events. To adjust this schedule, edit the `cron` value in the workflow. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onschedule)." - -{% note %} - -**Note**: {% data variables.product.prodname_dotcom %} only runs scheduled jobs that are in workflows on the default branch. Changing the schedule in a workflow on any other branch has no effect until you merge the branch into the default branch. - -{% endnote %} - -#### Example - -The following example shows a {% data variables.product.prodname_codeql_workflow %} for a particular repository that has a default branch called `main` and one protected branch called `protected`. - -``` yaml -on: - push: - branches: [main, protected] - pull_request: - branches: [main] - schedule: - - cron: '0 15 * * 0' -``` - -This workflow scans: -* Every push to the default branch and the protected branch -* Every pull request to the default branch -* The default branch at 3 P.M. every Sunday - -### Specifying an operating system - -If your code requires a specific operating system to compile, you can configure the operating system in your {% data variables.product.prodname_codeql_workflow %}. Edit the value of `jobs.analyze.runs-on` to specify the operating system for the machine that runs your {% data variables.product.prodname_code_scanning %} actions. {% if currentVersion ver_gt "enterprise-server@2.21" %}You specify the operating system by using an appropriate label as the second element in a two-element array, after `self-hosted`.{% else %} - -If you choose to use a self-hosted runner for code scanning, you can specify an operating system by using an appropriate label as the second element in a two-element array, after `self-hosted`.{% endif %} - -``` yaml -jobs: - analyze: - name: Analyze - runs-on: [self-hosted, ubuntu-latest] -``` - -{% if currentVersion == "free-pro-team@latest" %}For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners)" and "[Adding self-hosted runners](/actions/hosting-your-own-runners/adding-self-hosted-runners)."{% endif %} - -{% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} supports the latest versions of Ubuntu, Windows, and macOS. Typical values for this setting are therefore: `ubuntu-latest`, `windows-latest`, and `macos-latest`. For more information, see {% if currentVersion ver_gt "enterprise-server@2.21" %}"[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions#self-hosted-runners)" and "[Using labels with self-hosted runners](/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners){% else %}"[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on){% endif %}." - -{% if currentVersion ver_gt "enterprise-server@2.21" %}You must ensure that Git is in the PATH variable on your self-hosted runners.{% else %}If you use a self-hosted runner, you must ensure that Git is in the PATH variable.{% endif %} - -### Changing the languages that are analyzed - -{% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} automatically detects code written in the supported languages. - -{% data reusables.code-scanning.supported-languages %} - -The default {% data variables.product.prodname_codeql_workflow %} file contains a build matrix called `language` which lists the languages in your repository that are analyzed. {% data variables.product.prodname_codeql %} automatically populates this matrix when you add {% data variables.product.prodname_code_scanning %} to a repository. Using the `language` matrix optimizes {% data variables.product.prodname_codeql %} to run each analysis in parallel. We recommend that all workflows adopt this configuration due to the performance benefits of parallelizing builds. For more information about build matrices, see "[Managing complex workflows](/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix)." - -{% data reusables.code-scanning.specify-language-to-analyze %} - -If your workflow uses the `language` matrix then {% data variables.product.prodname_codeql %} is hardcoded to analyze only the languages in the matrix. To change the languages you want to analyze, edit the value of the matrix variable. You can remove a language to prevent it being analyzed or you can add a language that was not present in the repository when {% data variables.product.prodname_code_scanning %} was enabled. For example, if the repository initially only contained JavaScript when {% data variables.product.prodname_code_scanning %} was enabled, and you later added Python code, you will need to add `python` to the matrix. - -```yaml -jobs: - analyze: - name: Analyze - ... - strategy: - fail-fast: false - matrix: - language: ['javascript', 'python'] -``` - -If your workflow does not contain a matrix called `language`, then {% data variables.product.prodname_codeql %} is configured to run analysis sequentially. If you don't specify languages in the workflow, {% data variables.product.prodname_codeql %} automatically detects, and attempts to analyze, any supported languages in the repository. If you want to choose which languages to analyze, without using a matrix, you can use the `languages` parameter under the `init` action. - -```yaml -- uses: github/codeql-action/init@v1 - with: - languages: cpp, csharp, python -``` -{% if currentVersion == "free-pro-team@latest" %} -### Analyzing Python dependencies - -For GitHub-hosted runners that use Linux only, the {% data variables.product.prodname_codeql_workflow %} will try to auto-install Python dependencies to give more results for the CodeQL analysis. You can control this behavior by specifying the `setup-python-dependencies` parameter for the action called by the "Initialize CodeQL" step. By default, this parameter is set to `true`: - -- If the repository contains code written in Python, the "Initialize CodeQL" step installs the necessary dependencies on the GitHub-hosted runner. If the auto-install succeeds, the action also sets the environment variable `CODEQL_PYTHON` to the Python executable file that includes the dependencies. - -- If the repository doesn't have any Python dependencies, or the dependencies are specified in an unexpected way, you'll get a warning and the action will continue with the remaining jobs. The action can run successfully even when there are problems interpreting dependencies, but the results may be incomplete. - -Alternatively, you can install Python dependencies manually on any operating system. You will need to add `setup-python-dependencies` and set it to `false`, as well as set `CODEQL_PYTHON` to the Python executable that includes the dependencies, as shown in this workflow extract: - -```yaml -jobs: - CodeQL-Build: - - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.x' - - name: Install dependencies - run: | - python -m pip install --upgrade pip - if [ -f requirements.txt ]; - then pip install -r requirements.txt; - fi - # Set the `CODEQL-PYTHON` environment variable to the Python executable - # that includes the dependencies - echo "::set-env name=CODEQL_PYTHON::$(which python)" - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: python - # Override the default behavior so that the action doesn't attempt - # to auto-install Python dependencies - setup-python-dependencies: false -``` -{% endif %} - -### Running additional queries - -{% data reusables.code-scanning.run-additional-queries %} - -To add one or more queries, add a `with: queries:` entry within the `uses: github/codeql-action/init@v1` section of the workflow. - -``` yaml -- uses: github/codeql-action/init@v1 - with: - queries: COMMA-SEPARATED LIST OF PATHS -``` - -You can also specify query suites in the value of `queries`. Query suites are collections of queries, usually grouped by purpose or language. - -{% data reusables.code-scanning.codeql-query-suites %} - -If you are also using a configuration file for custom settings, any additional queries specified in your workflow are used instead of any specified in the configuration file. If you want to run the combined set of additional queries specified here and in the configuration file, prefix the value of `queries` in the workflow with the `+` symbol. For more information, see "[Using a custom configuration file](#using-a-custom-configuration-file)." - -In the following example, the `+` symbol ensures that the specified additional queries are used together with any queries specified in the referenced configuration file. - -``` yaml -- uses: github/codeql-action/init@v1 - with: - config-file: ./.github/codeql/codeql-config.yml - queries: +security-and-quality,octo-org/python-qlpack/show_ifs.ql@main -``` - -### Using a custom configuration file - -As an alternative to specifying which queries to run in the workflow file, you can do this in a separate configuration file. You can also use a configuration file to disable the default queries and to specify which directories to scan during analysis. - -In the workflow file, use the `config-file` parameter of the `init` action to specify the path to the configuration file you want to use. This example loads the configuration file _./.github/codeql/codeql-config.yml_. - -``` yaml -- uses: github/codeql-action/init@v1 - with: - config-file: ./.github/codeql/codeql-config.yml -``` - -The configuration file can be located within the local repository, or in a public, remote repository. For remote repositories, you can use the _owner/repository/file.yml@branch_ syntax. The settings in the file are written in YAML format. - -#### Specifying additional queries - -You specify additional queries in a `queries` array. Each element of the array contains a `uses` parameter with a value that identifies a single query file, a directory containing query files, or a query suite definition file. - -``` yaml -queries: - - uses: ./my-basic-queries/example-query.ql - - uses: ./my-advanced-queries - - uses: ./codeql-qlpacks/complex-python-qlpack/rootAndBar.qls -``` - -Optionally, you can give each array element a name, as shown in the example configuration files below. - -For more information about additional queries, see "[Running additional queries](#running-additional-queries)" above. - -#### Disabling the default queries - -If you only want to run custom queries, you can disable the default security queries by using `disable-default-queries: true`. - -#### Specifying directories to scan - -For the interpreted languages that {% data variables.product.prodname_codeql %} supports (Python and JavaScript/TypeScript), you can restrict {% data variables.product.prodname_code_scanning %} to files in specific directories by adding a `paths` array to the configuration file. You can exclude the files in specific directories from scans by adding a `paths-ignore` array. - -``` yaml -paths: - - src -paths-ignore: - - node_modules - - '**/*.test.js' -``` - -{% note %} - -**Note**: - -* The `paths` and `paths-ignore` keywords, used in the context of the {% data variables.product.prodname_code_scanning %} configuration file, should not be confused with the same keywords when used for `on..paths` in a workflow. When they are used to modify `on.` in a workflow, they determine whether the actions will be run when someone modifies code in the specified directories. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths)." -* `**` characters can only be at the start or end of a line, or surrounded by slashes, and you can't mix `**` and other characters. For example, `foo/**`, `**/foo`, and `foo/**/bar` are all allowed syntax, but `**foo` isn't. However you can use single stars along with other characters, as shown in the example. You'll need to quote anything that contains a `*` character. - -{% endnote %} - -For C/C++, C#, and Java, if you want to limit {% data variables.product.prodname_code_scanning %} to specific directories in your project, you must specify appropriate build steps in the workflow. The commands you need to use to exclude a directory from the build will depend on your build system. For more information, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." - -You can quickly analyze small portions of a monorepo when you modify code in specific directories. You'll need to both exclude directories in your build steps and use the `paths-ignore` and `paths` keywords for [`on.`](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths) in your workflow. - -#### Example configuration files - -{% data reusables.code-scanning.example-configuration-files %} - -### Configuring {% data variables.product.prodname_code_scanning %} for compiled languages - -{% data reusables.code-scanning.autobuild-compiled-languages %} {% data reusables.code-scanning.analyze-go %} - -{% data reusables.code-scanning.autobuild-add-build-steps %} For more information about how to configure {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} for compiled languages, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages)." - -### Accessing private repositories - -If your workflow for {% data variables.product.prodname_code_scanning %} accesses a private repository, other than the repository that contains the workflow, you'll need to configure Git to authenticate with a personal access token. Define the secret in the runner environment by using `jobs..steps.env` in your workflow before any {% data variables.product.prodname_codeql %} actions. For more information, see "[Creating a personal access token for the command line](/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)" and "[Creating and storing encrypted secrets](/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets)." - -For example, the following configuration has Git replace the full URLs to the `github/foo`, `github/bar`, and `github/baz` repositories on {% data variables.product.prodname_dotcom_the_website %} with URLs that include the personal access token that you store in the `ACCESS_TOKEN` environment variable. - -{% raw %} -```yaml -steps: -- name: Configure access to private repositories - env: - TOKEN: ${{ secrets.ACCESS_TOKEN }} - run: | - git config --global url."https://${TOKEN}@github.com/github/foo".insteadOf "https://github.com/github/foo" - git config --global url."https://${TOKEN}@github.com/github/bar".insteadOf "https://github.com/github/bar" - git config --global url."https://${TOKEN}@github.com/github/baz".insteadOf "https://github.com/github/baz" -``` -{% endraw %} - -### Uploading {% data variables.product.prodname_code_scanning %} data to {% data variables.product.prodname_dotcom %} - -{% data variables.product.prodname_dotcom %} can display code analysis data generated externally by a third-party tool. You can upload code analysis data with the `upload-sarif` action. For more information, see "[Uploading a SARIF file to GitHub](/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github)." diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md deleted file mode 100644 index 492b672a0332..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system.md +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: Configuring CodeQL code scanning in your CI system -shortTitle: Configuring in your CI -intro: 'You can configure how the {% data variables.product.prodname_codeql_runner %} scans the code in your project and uploads the results to {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.code-scanning %}' -miniTocMaxHeadingLevel: 4 -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning-in-your-ci-system -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta-codeql-runner %} -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning %} - -### About configuring {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system - -To integrate {% data variables.product.prodname_code_scanning %} into your CI system, you can use the {% data variables.product.prodname_codeql_runner %}. For more information, see "[Running {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system)." - -In general, you invoke the {% data variables.product.prodname_codeql_runner %} as follows. - -``` -$ /path/to-runner/codeql-runner-OS -``` - -`/path/to-runner/` depends on where you've downloaded the {% data variables.product.prodname_codeql_runner %} on your CI system. `codeql-runner-OS` depends on the operating system you use. -There are three versions of the {% data variables.product.prodname_codeql_runner %}, `codeql-runner-linux`, `codeql-runner-macos`, and `codeql-runner-win`, for Linux, macOS, and Windows systems respectively. - -To customize the way the {% data variables.product.prodname_codeql_runner %} scans your code, you can use flags, such as `--languages` and `--queries`, or you can specify custom settings in a separate configuration file. - -### Overriding automatic language detection - -The {% data variables.product.prodname_codeql_runner %} automatically detects and scans code written in the supported languages. - -{% data reusables.code-scanning.supported-languages %} - -{% data reusables.code-scanning.specify-language-to-analyze %} - -To override automatic language detection, run the `init` command with the `--languages` flag, followed by a comma-separated list of language keywords. The keywords for the supported languages are `cpp`, `csharp`, `go`, `java`, `javascript`, and `python`. - -``` -$ /path/to-runner/codeql-runner-linux init --languages cpp,java -``` - -### Running additional queries - -{% data reusables.code-scanning.run-additional-queries %} - -{% data reusables.code-scanning.codeql-query-suites %} - -To add one or more queries, pass a comma-separated list of paths to the `--queries` flag of the `init` command. You can also specify additional queries in a configuration file. - -If you also are using a configuration file for custom settings, and you are also specifying additional queries with the `--queries` flag, the {% data variables.product.prodname_codeql_runner %} uses the additional queries specified with the `--queries` flag instead of any in the configuration file. -If you want to run the combined set of additional queries specified with the flag and in the configuration file, prefix the value passed to `--queries` with the `+` symbol. -For more information, see "[Using a custom configuration file](#using-a-custom-configuration-file)." - -In the following example, the `+` symbol ensures that the {% data variables.product.prodname_codeql_runner %} uses the additional queries together with any queries specified in the referenced configuration file. - -``` -$ /path/to-runner/codeql-runner-linux init --config-file .github/codeql/codeql-config.yml - --queries +security-and-quality,octo-org/python-qlpack/show_ifs.ql@main -``` - -### Using a custom configuration file - -Instead of passing additional information to the {% data variables.product.prodname_codeql_runner %} commands, you can specify custom settings in a separate configuration file. - -The configuration file is a YAML file. It uses syntax similar to the workflow syntax for {% data variables.product.prodname_actions %}, as illustrated in the examples below. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions)." - -Use the `--config-file` flag of the `init` command to specify the configuration file. The value of `--config-file` is the path to the configuration file that you want to use. This example loads the configuration file _.github/codeql/codeql-config.yml_. - -``` -$ /path/to-runner/codeql-runner-linux init --config-file .github/codeql/codeql-config.yml -``` - -#### Example configuration files - -{% data reusables.code-scanning.example-configuration-files %} - -### Configuring {% data variables.product.prodname_code_scanning %} for compiled languages - -For the compiled languages C/C++, C#, and Java, {% data variables.product.prodname_codeql %} builds the code before analyzing it. {% data reusables.code-scanning.analyze-go %} - -For many common build systems, the {% data variables.product.prodname_codeql_runner %} can build the code automatically. To attempt to build the code automatically, run `autobuild` between the `init` and `analyze` steps. Note that if your repository requires a specific version of a build tool, you may need to install the build tool manually first. - -The `autobuild` process only ever attempts to build _one_ compiled language for a repository. The language automatically selected for analysis is the language with the most files. If you want to choose a language explicitly, use the `--language` flag of the `autobuild` command. - -``` -$ /path/to-runner/codeql-runner-linux autobuild --language csharp -``` - -If the `autobuild` command can't build your code, you can run the build steps yourself, between the `init` and `analyze` steps. For more information, see "[Running {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system#compiled-language-example)." - -### Uploading {% data variables.product.prodname_code_scanning %} data to {% data variables.product.prodname_dotcom %} - -By default, the {% data variables.product.prodname_codeql_runner %} uploads results from {% data variables.product.prodname_code_scanning %} when you run the `analyze` command. You can also upload SARIF files separately, by using the `upload` command. - -Once you've uploaded the data, {% data variables.product.prodname_dotcom %} displays the alerts in your repository. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#viewing-an-alert)." - -### {% data variables.product.prodname_codeql_runner %} command reference - -The {% data variables.product.prodname_codeql_runner %} supports the following commands and flags. - -#### `init` - -Initializes the {% data variables.product.prodname_codeql_runner %} and creates a {% data variables.product.prodname_codeql %} database for each language to be analyzed. - -| Flag | Required | Input value | -| ---- |:--------:| ----------- | -| `--repository` | ✓ | Name of the repository to initialize. | -| `--github-url` | ✓ | URL of the {% data variables.product.prodname_dotcom %} instance where your repository is hosted. | -| `--github-auth` | ✓ | A {% data variables.product.prodname_github_apps %} token or personal access token. | -| `--languages` | | Comma-separated list of languages to analyze. By default, the {% data variables.product.prodname_codeql_runner %} detects and analyzes all supported languages in the repository. | -| `--queries` | | Comma-separated list of additional queries to run, in addition to the default suite of security queries. | -| `--config-file` | | Path to custom configuration file. | -| `--codeql-path` | | Path to a copy of the {% data variables.product.prodname_codeql %} CLI executable to use. By default, the {% data variables.product.prodname_codeql_runner %} downloads a copy. | -| `--temp-dir` | | Directory where temporary files are stored. The default is _./codeql-runner_. | -| `--tools-dir` | | Directory where {% data variables.product.prodname_codeql %} tools and other files are stored between runs. The default is a subdirectory of the home directory. | -| `--checkout-path` | | The path to the checkout of your repository. The default is the current working directory. | -| `--debug` | | None. Prints more verbose output. | -| `-h`, `--help` | | None. Displays help for the command. | - -#### `autobuild` - -Attempts to build the code for the compiled languages C/C++, C#, and Java. For those languages, {% data variables.product.prodname_codeql %} builds the code before analyzing it. Run `autobuild` between the `init` and `analyze` steps. - -| Flag | Required | Input value | -| ---- |:--------:| ----------- | -| `--language` | | The language to build. By default, the {% data variables.product.prodname_codeql_runner %} builds the compiled language with the most files. | -| `--temp-dir` | | Directory where temporary files are stored. The default is _./codeql-runner_. | -| `--debug` | | None. Prints more verbose output. | -| `-h`, `--help` | | None. Displays help for the command. | - -#### `analyze` - -Analyzes the code in the {% data variables.product.prodname_codeql %} databases and uploads results to {% data variables.product.product_location %}. - -| Flag | Required | Input value | -| ---- |:--------:| ----------- | -| `--repository` | ✓ | Name of the repository to analyze. | -| `--commit` | ✓ | SHA of the commit to analyze. In Git and in Azure DevOps, this corresponds to the value of `git rev-parse HEAD`. In Jenkins, this corresponds to `$GIT_COMMIT`. | -| `--ref` | ✓ | Name of the reference to analyze, for example `refs/heads/main`. In Git and in Jenkins, this corresponds to the value of `git symbolic-ref HEAD`. In Azure DevOps, this corresponds to `$(Build.SourceBranch)`. | -| `--github-url` | ✓ | URL of the {% data variables.product.prodname_dotcom %} instance where your repository is hosted. | -| `--github-auth` | ✓ | A {% data variables.product.prodname_github_apps %} token or personal access token. | -| `--checkout-path` | | The path to the checkout of your repository. The default is the current working directory. | -| `--no-upload` | | None. Stops the {% data variables.product.prodname_codeql_runner %} from uploading the results to {% data variables.product.product_location %}. | -| `--output-dir` | | Directory where the output SARIF files are stored. The default is in the directory of temporary files. | -| `--temp-dir` | | Directory where temporary files are stored. The default is _./codeql-runner_. | -| `--debug` | | None. Prints more verbose output. | -| `-h`, `--help` | | None. Displays help for the command. | - -#### `upload` - -Uploads SARIF files to {% data variables.product.product_location %}. - -| Flag | Required | Input value | -| ---- |:--------:| ----------- | -| `--sarif-file` | ✓ | SARIF file to upload, or a directory containing multiple SARIF files. | -| `--repository` | ✓ | Name of the repository that was analyzed. | -| `--commit` | ✓ | SHA of the commit that was analyzed. In Git and in Azure DevOps, this corresponds to the value of `git rev-parse HEAD`. In Jenkins, this corresponds to `$GIT_COMMIT`. | -| `--ref` | ✓ | Name of the reference that was analyzed, for example `refs/heads/main`. In Git and in Jenkins, this corresponds to the value of `git symbolic-ref HEAD`. In Azure DevOps, this corresponds to `$(Build.SourceBranch)`. | -| `--github-url` | ✓ | URL of the {% data variables.product.prodname_dotcom %} instance where your repository is hosted. | -| `--github-auth` | ✓ | A {% data variables.product.prodname_github_apps %} token or personal access token. | -| `--checkout-path` | | The path to the checkout of your repository. The default is the current working directory. | -| `--debug` | | None. Prints more verbose output. | -| `-h`, `--help` | | None. Displays help for the command. | diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md deleted file mode 100644 index ee17b9a2abb0..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Configuring the CodeQL workflow for compiled languages -shortTitle: Configuring for compiled languages -intro: 'You can configure how {% data variables.product.prodname_dotcom %} uses the {% data variables.product.prodname_codeql_workflow %} to scan code written in compiled languages for vulnerabilities and errors.' -product: '{% data reusables.gated-features.code-scanning %}' -permissions: 'If you have write permissions to a repository, you can configure {% data variables.product.prodname_code_scanning %} for that repository.' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning-for-compiled-languages - - /github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-action-for-compiled-languages -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning-actions %} - -### About the {% data variables.product.prodname_codeql_workflow %} and compiled languages - -You enable {% data variables.product.prodname_dotcom %} to run {% data variables.product.prodname_code_scanning %} for your repository by adding a {% data variables.product.prodname_actions %} workflow to the repository. For {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %}, you add the {% data variables.product.prodname_codeql_workflow %}. For more information, see "[Enabling {% data variables.product.prodname_code_scanning %} for a repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning-for-a-repository)." - -{% data reusables.code-scanning.edit-workflow %} -For general information about configuring {% data variables.product.prodname_code_scanning %} and editing workflow files, see "[Configuring {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning)" and "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -### About autobuild for {% data variables.product.prodname_codeql %} - -Code scanning works by running queries against one or more databases. Each database contains a representation of all of the code in a single language in your repository. For the compiled languages C/C++, C#, and Java, the process of populating this database involves building the code and extracting data. {% data reusables.code-scanning.analyze-go %} - -{% data reusables.code-scanning.autobuild-compiled-languages %} - -If your workflow uses a `language` matrix, `autobuild` attempts to build each of the compiled languages listed in the matrix. Without a matrix `autobuild` attempts to build the supported compiled language that has the most source files in the repository. With the exception of Go, analysis of other compiled languages in your repository will fail unless you supply explicit build commands. - -{% note %} - -**Note**: If you use self-hosted runners for {% data variables.product.prodname_actions %}, you may need to install additional software to use the `autobuild` process. Additionally, if your repository requires a specific version of a build tool, you may need to install it manually. For more information, see "[Specifications for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/reference/specifications-for-github-hosted-runners/#supported-software)". - -{% endnote %} - -#### C/C++ - -| Supported system type | System name | -|----|----| -| Operating system | Windows, macOS, and Linux | -| Build system | Windows: MSbuild and build scripts
Linux and macOS: Autoconf, Make, CMake, qmake, Meson, Waf, SCons, Linux Kbuild, and build scripts | - -The behavior of the `autobuild` step varies according to the operating system that the extraction runs on. On Windows, the `autobuild` step attempts to autodetect a suitable build method for C/C++ using the following approach: - -1. Invoke `MSBuild.exe` on the solution (`.sln`) or project (`.vcxproj`) file closest to the root. -If `autobuild` detects multiple solution or project files at the same (shortest) depth from the top level directory, it will attempt to build all of them. -2. Invoke a script that looks like a build script—_build.bat_, _build.cmd_, _and build.exe_ (in that order). - -On Linux and macOS, the `autobuild` step reviews the files present in the repository to determine the build system used: - -1. Look for a build system in the root directory. -2. If none are found, search subdirectories for a unique directory with a build system for C/C++. -3. Run an appropriate command to configure the system. - -#### C# - -| Supported system type | System name | -|----|----| -| Operating system | Windows and Linux | -| Build system | .NET and MSbuild, as well as build scripts | - -The `autobuild` process attempts to autodetect a suitable build method for C# using the following approach: - -1. Invoke `dotnet build` on the solution (`.sln`) or project (`.csproj`) file closest to the root. -2. Invoke `MSbuild` (Linux) or `MSBuild.exe` (Windows) on the solution or project file closest to the root. -If `autobuild` detects multiple solution or project files at the same (shortest) depth from the top level directory, it will attempt to build all of them. -3. Invoke a script that looks like a build script—_build_ and _build.sh_ (in that order, for Linux) or _build.bat_, _build.cmd_, _and build.exe_ (in that order, for Windows). - -#### Java - -| Supported system type | System name | -|----|----| -| Operating system | Windows, macOS, and Linux (no restriction) | -| Build system | Gradle, Maven and Ant | - -The `autobuild` process tries to determine the build system for Java codebases by applying this strategy: - -1. Search for a build file in the root directory. Check for Gradle then Maven then Ant build files. -2. Run the first build file found. If both Gradle and Maven files are present, the Gradle file is used. -3. Otherwise, search for build files in direct subdirectories of the root directory. If only one subdirectory contains build files, run the first file identified in that subdirectory (using the same preference as for 1). If more than one subdirectory contains build files, report an error. - -### Adding build steps for a compiled language - -{% data reusables.code-scanning.autobuild-add-build-steps %} For information on how to edit the workflow file, see "[Configuring {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#editing-a-code-scanning-workflow)." - -After removing the `autobuild` step, uncomment the `run` step and add build commands that are suitable for your repository. The workflow `run` step runs command-line programs using the operating system's shell. You can modify these commands and add more commands to customize the build process. - -``` yaml -- run: | - make bootstrap - make release -``` - -For more information about the `run` keyword, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun)." - -If your repository contains multiple compiled languages, you can specify language-specific build commands. For example, if your repository contains C/C++, C# and Java, and `autobuild` correctly builds C/C++ and C# but fails to build Java, you could use the following configuration in your workflow, after the `init` step. This specifies build steps for Java while still using `autobuild` for C/C++ and C#: - -```yaml -- if: matrix.language == 'cpp' || matrix.language == 'csharp' - name: Autobuild - uses: github/codeql-action/autobuild@v1 - -- if: matrix.language == 'java' - name: Build Java - run: | - make bootstrap - make release -``` - -For more information about the `if` conditional, see "[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsif)." - -For more tips and tricks about why `autobuild` won't build your code, see "[Troubleshooting the {% data variables.product.prodname_codeql %} workflow](/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow)." - -If you added manual build steps for compiled languages and {% data variables.product.prodname_code_scanning %} is still not working on your repository, contact {% data variables.contact.contact_support %}. diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning-for-a-repository.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning-for-a-repository.md deleted file mode 100644 index d44cd2e445b5..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning-for-a-repository.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Enabling code scanning for a repository -shortTitle: Enabling code scanning -intro: 'You can enable {% data variables.product.prodname_code_scanning %} for your project''s repository.' -product: '{% data reusables.gated-features.code-scanning %}' -permissions: 'If you have write permissions to a repository, you can enable {% data variables.product.prodname_code_scanning %} for that repository.' -redirect_from: - - /github/managing-security-vulnerabilities/configuring-automated-code-scanning - - /github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning-actions %} - -### Options for enabling {% data variables.product.prodname_code_scanning %} - -You decide how you generate {% data variables.product.prodname_code_scanning %} alerts, and which tools you use, at a repository level. {% data variables.product.product_name %} provides fully integrated support for {% data variables.product.prodname_codeql %} analysis, and also supports analysis using third-party tools. For more information, see "[About {% data variables.product.prodname_codeql %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning#about-codeql)." - -{% data reusables.code-scanning.enabling-options %} - -### Enabling {% data variables.product.prodname_code_scanning %} using actions - -{% if currentVersion == "free-pro-team@latest" %}Using actions to run {% data variables.product.prodname_code_scanning %} will use minutes. For more information, see "[About billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions)."{% endif %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -3. To the right of "{% data variables.product.prodname_code_scanning_capc %}", click **Set up {% data variables.product.prodname_code_scanning %}**. - !["Set up {% data variables.product.prodname_code_scanning %}" button to the right of "{% data variables.product.prodname_code_scanning_capc %}" in the Security Overview](/assets/images/help/security/overview-set-up-code-scanning.png) -4. Under "Get started with {% data variables.product.prodname_code_scanning %}", click **Set up this workflow** on the {% data variables.product.prodname_codeql_workflow %} or on a third-party workflow. - !["Set up this workflow" button under "Get started with {% data variables.product.prodname_code_scanning %}" heading](/assets/images/help/repository/code-scanning-set-up-this-workflow.png) -5. To customize how {% data variables.product.prodname_code_scanning %} scans your code, edit the workflow. - - Generally you can commit the {% data variables.product.prodname_codeql_workflow %} without making any changes to it. However, many of the third-party workflows require additional configuration, so read the comments in the workflow before committing. - - For more information, see "[Configuring {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning)." -6. Use the **Start commit** drop-down, and type a commit message. - ![Start commit](/assets/images/help/repository/start-commit-commit-new-file.png) -7. Choose whether you'd like to commit directly to the default branch, or create a new branch and start a pull request. - ![Choose where to commit](/assets/images/help/repository/start-commit-choose-where-to-commit.png) -8. Click **Commit new file** or **Propose new file**. - -In the default {% data variables.product.prodname_codeql_workflow %}, {% data variables.product.prodname_code_scanning %} is configured to analyze your code each time you either push a change to the default branch or any protected branches, or raise a pull request against the default branch. As a result, {% data variables.product.prodname_code_scanning %} will now commence. - -### Viewing the logging output from {% data variables.product.prodname_code_scanning %} - -After enabling {% data variables.product.prodname_code_scanning %} for your repository, you can watch the output of the actions as they run. - -{% data reusables.repositories.actions-tab %} - - You'll see a list that includes an entry for running the {% data variables.product.prodname_code_scanning %} workflow. - - ![Actions list showing {% data variables.product.prodname_code_scanning %} workflow](/assets/images/help/repository/code-scanning-actions-list.png) - -1. Click the entry for the {% data variables.product.prodname_code_scanning %} workflow. - -1. Click the job name on the left. For example, **Analyze (LANGUAGE)**. - - ![Log output from the {% data variables.product.prodname_code_scanning %} workflow](/assets/images/help/repository/code-scanning-logging-analyze-action.png) - -1. Review the logging output from the actions in this workflow as they run. - -1. Once all jobs are complete, you can view the details of any {% data variables.product.prodname_code_scanning %} alerts that were identified. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#viewing-an-alert)." - -{% note %} - -**Note:** If you raised a pull request to add the {% data variables.product.prodname_code_scanning %} workflow to the repository, alerts from that pull request aren't displayed directly on the {% data variables.product.prodname_code_scanning_capc %} page until the pull request is merged. If any alerts were found you can view these, before the pull request is merged, by clicking the **_n_ alerts found** link in the banner on the {% data variables.product.prodname_code_scanning_capc %} page. - - ![Click the "n alerts found" link](/assets/images/help/repository/code-scanning-alerts-found-link.png) - -{% endnote %} - -### Understanding the pull request checks - -Each {% data variables.product.prodname_code_scanning %} workflow you enable to run on pull requests always has at least two entries listed in the checks section of a pull request. There is one entry for each of the analysis jobs in the workflow, and a final one for the results of the analysis. - -The names of the {% data variables.product.prodname_code_scanning %} analysis checks take the form: "TOOL NAME / JOB NAME (TRIGGER)." For example, for {% data variables.product.prodname_codeql %}, analysis of C++ code has the entry "{% data variables.product.prodname_codeql %} / Analyze (cpp) (pull_request)." You can click **Details** on a {% data variables.product.prodname_code_scanning %} analysis entry to see logging data. This allows you to debug a problem if the analysis job failed. For example, for {% data variables.product.prodname_code_scanning %} analysis of compiled languages, this can happen if the action can't build the code. - - ![{% data variables.product.prodname_code_scanning %} pull request checks](/assets/images/help/repository/code-scanning-pr-checks.png) - -When the {% data variables.product.prodname_code_scanning %} jobs complete, {% data variables.product.prodname_dotcom %} works out whether any alerts were added by the pull request and adds the "{% data variables.product.prodname_code_scanning_capc %} results / TOOL NAME" entry to the list of checks. After {% data variables.product.prodname_code_scanning %} has been performed at least once, you can click **Details** to view the results of the analysis. If you used a pull request to add {% data variables.product.prodname_code_scanning %} to the repository, you will initially see a "Missing analysis" message when you click **Details** on the "{% data variables.product.prodname_code_scanning_capc %} results / TOOL NAME" check. - - ![Missing analysis for commit message](/assets/images/help/repository/code-scanning-missing-analysis.png) - -#### Reasons for the "missing analysis" message - -After {% data variables.product.prodname_code_scanning %} has analyzed the code in a pull request, it needs to compare the analysis of the topic branch (the branch you used to create the pull request) with the analysis of the base branch (the branch into which you want to merge the pull request). This allows {% data variables.product.prodname_code_scanning %} to compute which alerts are newly introduced by the pull request, which alerts were already present in the base branch, and whether any existing alerts are fixed by the changes in the pull request. Initially, if you use a pull request to add {% data variables.product.prodname_code_scanning %} to a repository, the base branch has not yet been analyzed, so it's not possible to compute these details. In this case, when you click through from the results check on the pull request you will see the "Missing analysis for base commit SHA-HASH" message. - -There are other situations where there may be no analysis for the latest commit to the base branch for a pull request. These include: - -* The pull request has been raised against a branch other than the default branch, and this branch hasn't been analyzed. - - To check whether a branch has been scanned, go to the {% data variables.product.prodname_code_scanning_capc %} page, click the **Branch** drop-down and select the relevant branch. - - ![Choose a branch from the Branch drop-down menu](/assets/images/help/repository/code-scanning-branch-dropdown.png) - - The solution in this situation is to add the name of the base branch to the `on:push` and `on:pull_request` specification in the {% data variables.product.prodname_code_scanning %} workflow on that branch and then make a change that updates the open pull request that you want to scan. - -* The latest commit on the base branch for the pull request is currently being analyzed and analysis is not yet available. - - Wait a few minutes and then push a change to the pull request to retrigger {% data variables.product.prodname_code_scanning %}. - -* An error occurred while analyzing the latest commit on the base branch and analysis for that commit isn't available. - - Merge a trivial change into the base branch to trigger {% data variables.product.prodname_code_scanning %} on this latest commit, then push a change to the pull request to retrigger {% data variables.product.prodname_code_scanning %}. - -### Next steps - -After enabling {% data variables.product.prodname_code_scanning %}, and allowing its actions to complete, you can: - -- View all of the {% data variables.product.prodname_code_scanning %} alerts generated for this repository. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository)." -- View any alerts generated for a pull request submitted after you enabled {% data variables.product.prodname_code_scanning %}. For more information, see "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests)." -- Set up notifications for completed runs. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#github-actions-notification-options)." -- Investigate any problems that occur with the initial setup of {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %}. For more information, see "[Troubleshooting the {% data variables.product.prodname_codeql %} workflow](/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow)." -- Customize how {% data variables.product.prodname_code_scanning %} scans the code in your repository. For more information, see "[Configuring {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning)." diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md deleted file mode 100644 index f5742510b70a..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Finding security vulnerabilities and errors in your code -shortTitle: Finding vulnerabilities and coding errors -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/managing-security-vulnerabilities/finding-security-vulnerabilities-in-your-projects-code -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -### Table of Contents - -{% topic_link_in_list /automatically-scanning-your-code-for-vulnerabilities-and-errors %} - {% link_in_list /about-code-scanning %} - {% link_in_list /triaging-code-scanning-alerts-in-pull-requests %} - {% link_in_list /enabling-code-scanning-for-a-repository %} - {% link_in_list /managing-code-scanning-alerts-for-your-repository %} - {% link_in_list /configuring-code-scanning %} - {% link_in_list /configuring-the-codeql-workflow-for-compiled-languages %} - {% link_in_list /troubleshooting-the-codeql-workflow %} - {% link_in_list /running-codeql-code-scanning-in-a-container %} -{% topic_link_in_list /integrating-with-code-scanning %} - {% link_in_list /about-integration-with-code-scanning %} - {% link_in_list /uploading-a-sarif-file-to-github %} - {% link_in_list /sarif-support-for-code-scanning %} -{% topic_link_in_list /using-codeql-code-scanning-with-your-existing-ci-system %} - {% link_in_list /running-codeql-code-scanning-in-your-ci-system %} - {% link_in_list /configuring-codeql-code-scanning-in-your-ci-system %} - {% link_in_list /troubleshooting-codeql-code-scanning-in-your-ci-system %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md deleted file mode 100644 index 01a082e5015f..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Integrating with code scanning -shortTitle: Integration -intro: 'You can integrate third-party code analysis tools with {% data variables.product.prodname_dotcom %} {% data variables.product.prodname_code_scanning %} by uploading data as SARIF files.' -mapTopic: true -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/managing-results-from-code-scanning -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository.md deleted file mode 100644 index 4dd31e54ebf4..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Managing code scanning alerts for your repository -shortTitle: Managing alerts -intro: 'You can view, fix, {% if currentVersion == "enterprise-server@2.22" %}or close{% else %}dismiss, or delete{% endif %} alerts for potential vulnerabilities or errors in your project''s code.' -product: '{% data reusables.gated-features.code-scanning %}' -permissions: 'If you have write permission to a repository you can manage {% data variables.product.prodname_code_scanning %} alerts for that repository.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' -redirect_from: - - /github/managing-security-vulnerabilities/managing-alerts-from-automated-code-scanning - - /github/finding-security-vulnerabilities-and-errors-in-your-code/managing-alerts-from-code-scanning ---- - -{% data reusables.code-scanning.beta %} - -### About alerts from {% data variables.product.prodname_code_scanning %} - -You can set up {% data variables.product.prodname_code_scanning %} to check the code in a repository using the default {% data variables.product.prodname_codeql %} analysis, a third-party analysis, or multiple types of analysis. When the analysis is complete, the resulting alerts are displayed alongside each other in the security view of the repository. Results from third-party tools or from custom queries may not include all of the properties that you see for alerts detected by {% data variables.product.company_short %}'s default {% data variables.product.prodname_codeql %} analysis. For more information, see "[Enabling {% data variables.product.prodname_code_scanning %} for a repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning-for-a-repository)." - -By default, {% data variables.product.prodname_code_scanning %} analyzes your code periodically on the default branch and during pull requests. For information about managing alerts on a pull request, see "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests)." - -### About alerts details - -Each alert highlights a problem with the code and the name of the tool that identified it. You can see the line of code that triggered the alert, as well as properties of the alert, such as the severity and the nature of the problem. Alerts also tell you when the issue was first introduced. For alerts identified by {% data variables.product.prodname_codeql %} analysis, you will also see information on how to fix the problem. - -![Example alert from {% data variables.product.prodname_code_scanning %}](/assets/images/help/repository/code-scanning-alert.png) - -If you enable {% data variables.product.prodname_code_scanning %} using {% data variables.product.prodname_codeql %}, this can also detect data-flow problems in your code. Data-flow analysis finds potential security issues in code, such as: using data insecurely, passing dangerous arguments to functions, and leaking sensitive information. - -When {% data variables.product.prodname_code_scanning %} reports data-flow alerts, {% data variables.product.prodname_dotcom %} shows you how data moves through the code. {% data variables.product.prodname_code_scanning_capc %} allows you to identify the areas of your code that leak sensitive information, and that could be the entry point for attacks by malicious users. - -### Viewing an alert - -Anyone with read permission for a repository can see {% data variables.product.prodname_code_scanning %} alerts on pull requests. However, you need write permission to view a summary of alerts for repository on the **Security** tab. By default, alerts are shown for the default branch. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-code-scanning-alerts %} -1. Under "{% data variables.product.prodname_code_scanning_capc %}," click the alert you'd like to explore. - ![Summary of alerts](/assets/images/help/repository/code-scanning-click-alert.png) -1. Optionally, if the alert highlights a problem with data flow, click **Show paths** to display the path from the data source to the sink where it's used. - ![The "Show paths" link on an alert](/assets/images/help/repository/code-scanning-show-paths.png) -1. Alerts from {% data variables.product.prodname_codeql %} analysis include a description of the problem. Click **Show more** for guidance on how to fix your code. - ![Details for an alert](/assets/images/help/repository/code-scanning-alert-details.png) - -### Fixing an alert - -Anyone with write permission for a repository can fix an alert by committing a correction to the code. If the repository has {% data variables.product.prodname_code_scanning %} scheduled to run on pull requests, it's best to raise a pull request with your correction. This will trigger {% data variables.product.prodname_code_scanning %} analysis of the changes and test that your fix doesn't introduce any new problems. For more information, see "[Configuring {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning)" and "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests)." - -If you have write permission for a repository, you can view fixed alerts by viewing the summary of alerts and clicking **Closed**. For more information, see "[Viewing an alert](#viewing-an-alert)." The "Closed" list shows fixed alerts and alerts that users have {% if currentVersion == "enterprise-server@2.22" %}closed{% else %}dismissed{% endif %}. - -Alerts may be fixed in one branch but not in another. You can use the "Branch" drop-down menu, on the summary of alerts, to check whether an alert is fixed in a particular branch. - -![Filtering alerts by branch](/assets/images/help/repository/code-scanning-branch-filter.png) - -{% if currentVersion == "enterprise-server@2.22" %} - -### Closing an alert - -Closing an alert is a way to resolve an alert that you don't think needs to be fixed. {% data reusables.code-scanning.close-alert-examples %} - -{% else %} - -### Dismissing or deleting alerts - -There are two ways of closing an alert. You can fix the problem in the code, or you can dismiss the alert. Alternatively, if you have admin permissions for the repository, you can delete alerts. Deleting alerts is useful in situations where you have enabled a {% data variables.product.prodname_code_scanning %} tool and then decided to remove it, or where you have enabled {% data variables.product.prodname_codeql %} analysis with a larger set of queries than you want to continue using, and you've then removed some queries from the tool. In both cases, deleting alerts allows you to clean up your {% data variables.product.prodname_code_scanning %} results. You can delete alerts from the summary list within the **Security** tab. - -Dismissing an alert is a way of closing an alert that you don't think needs to be fixed. {% data reusables.code-scanning.close-alert-examples %} You can dismiss alerts from {% data variables.product.prodname_code_scanning %} annotations in code, or from the summary list within the **Security** tab. - -When you dismiss an alert: - -- It's dismissed in all branches. -- The alert is removed from the number of current alerts for your project. -- The alert is moved to the "Closed" list in the summary of alerts, from where you can reopen it, if required. -- The reason why you closed the alert is recorded. -- Next time {% data variables.product.prodname_code_scanning %} runs, the same code won't generate an alert. - -When you delete an alert: - -- It's deleted in all branches. -- The alert is removed from the number of current alerts for your project. -- It is _not_ added to the "Closed" list in the summary of alerts. -- If the code that generated the alert stays the same, and the same {% data variables.product.prodname_code_scanning %} tool runs again without any configuration changes, the alert will be shown again in your analysis results. - -To dismiss or delete alerts: - -{% endif %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-code-scanning-alerts %} -{% if currentVersion == "enterprise-server@2.22" %} -{% data reusables.code-scanning.click-alert-in-list %} -1. Select the **Close** drop-down menu and click a reason for closing the alert. - ![Choosing reason for closing the alert via the Close drop-down](/assets/images/help/repository/code-scanning-alert-close-drop-down.png) - -{% data reusables.code-scanning.false-positive-fix-codeql %} - -{% else %} - -1. If you have admin permissions for the repository, and you want to delete alerts for this {% data variables.product.prodname_code_scanning %} tool, select some or all of the check boxes and click **Delete**. - - ![Deleting alerts](/assets/images/help/repository/code-scanning-delete-alerts.png) - - Optionally, you can use the filters to display a subset of alerts and then delete all matching alerts at once. For example, if you have removed a query from {% data variables.product.prodname_codeql %} analysis, you can use the "Rule" filter to list just the alerts for that query and then select and delete all of those alerts. - - ![Filter alerts by rule](/assets/images/help/repository/code-scanning-filter-by-rule.png) - -1. If you want to dismiss an alert, it's important to explore the alert first, so that you can choose the correct dismissal reason. Click the alert you'd like to explore. - - ![Open an alert from the summary list](/assets/images/help/repository/code-scanning-click-alert.png) - -1. Review the alert, then click **Dismiss** and choose a reason for closing the alert. - ![Choosing a reason for dismissing an alert](/assets/images/help/repository/code-scanning-alert-close-drop-down.png) - - {% data reusables.code-scanning.choose-alert-dismissal-reason %} - - {% data reusables.code-scanning.false-positive-fix-codeql %} - -#### Dismissing multiple alerts at once - -If a project has multiple alerts that you want to dismiss for the same reason, you can bulk dismiss them from the summary of alerts. Typically, you'll want to filter the list and then dismiss all of the matching alerts. For example, you might want to dismiss all of the current alerts in the project that have been tagged for a particular Common Weakness Enumeration (CWE) vulnerability. - -{% endif %} - -### Further reading - -- "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests)" -- "[Enabling {% data variables.product.prodname_code_scanning %} for a repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning-for-a-repository)" -- "[About integration with {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/about-integration-with-code-scanning)" diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md deleted file mode 100644 index d32e59c2c270..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Running CodeQL code scanning in a container -shortTitle: '{% data variables.product.prodname_code_scanning_capc %} in a container' -intro: 'You can run {% data variables.product.prodname_code_scanning %} in a container by ensuring that all processes run in the same container.' -product: '{% data reusables.gated-features.code-scanning %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta %} - -### About {% data variables.product.prodname_code_scanning %} with a containerized build - -If you're setting up {% data variables.product.prodname_code_scanning %} for a compiled language, and you're building the code in a containerized environment, the analysis may fail with the error message "No source code was seen during the build." This indicates that {% data variables.product.prodname_codeql %} was unable to monitor your code as it was compiled. - -You must run {% data variables.product.prodname_codeql %} in the same container in which you build your code. This applies whether you are using the {% data variables.product.prodname_codeql_runner %}, or {% data variables.product.prodname_actions %}. If you're using the {% data variables.product.prodname_codeql_runner %}, run it in the container where your code builds. For more information about the {% data variables.product.prodname_codeql_runner %}, see "[Running {% data variables.product.prodname_codeql %} in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-code-scanning-in-your-ci-system)." If you're using {% data variables.product.prodname_actions %}, configure your workflow to run all the actions in the same container. For more information, see "[Example workflow](#example-workflow)." - -### Dependencies - -You may have difficulty running {% data variables.product.prodname_code_scanning %} if the container you're using is missing certain dependencies (for example, Git must be installed and added to the PATH variable). If you encounter dependency issues, review the list of software typically included on {% data variables.product.prodname_dotcom %}'s virtual environments. For more information, see the version-specific `readme` files in these locations: - -* Linux: https://github.com/actions/virtual-environments/tree/main/images/linux -* MacOS: https://github.com/actions/virtual-environments/tree/main/images/macos -* Windows: https://github.com/actions/virtual-environments/tree/main/images/win - -### Example workflow - -This sample workflow uses {% data variables.product.prodname_actions %} to run {% data variables.product.prodname_codeql %} analysis in a containerized environment. The value of `container.image` identifies the container to use. In this example the image is named `codeql-container`, with a tag of `f0f91db`. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontainer)." - -``` yaml -name: "{% data variables.product.prodname_codeql %}" - -on: - push: - branches: [main] - pull_request: - branches: [main] - schedule: - - cron: '0 0 * * 0' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - language: [java] - - # Specify the container in which actions will run - container: - image: codeql-container:f0f91db - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - name: Initialize {% data variables.product.prodname_codeql %} - uses: github/codeql-action/init@v1 - with: - languages: {% raw %}${{ matrix.language }}{% endraw %} - - name: Build - run: | - ./configure - make - - name: Perform {% data variables.product.prodname_codeql %} Analysis - uses: github/codeql-action/analyze@v1 -``` diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md deleted file mode 100644 index 30b3bdd81f77..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system.md +++ /dev/null @@ -1,162 +0,0 @@ ---- -title: Running CodeQL code scanning in your CI system -shortTitle: Running in your CI -intro: 'You can use the {% data variables.product.prodname_codeql_runner %} to perform {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in a third-party continuous integration system.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/running-code-scanning-in-your-ci-system -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - - -{% data reusables.code-scanning.beta-codeql-runner %} -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning %} - -### Using {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} with your existing CI system - -If you use a continuous integration or continuous delivery/deployment (CI/CD) system other than {% data variables.product.prodname_actions %}, you can use your existing system to run {% data variables.product.prodname_dotcom %}'s {% data variables.product.prodname_codeql %} analysis and upload the results to {% data variables.product.prodname_dotcom %}. To do this, use the {% data variables.product.prodname_codeql_runner %}. - -### About the {% data variables.product.prodname_codeql_runner %} - -{% data reusables.code-scanning.about-code-scanning %} For information, see "[About {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning)." - -You can use the {% data variables.product.prodname_codeql_runner %} to run {% data variables.product.prodname_code_scanning %} on code that you're processing in a third-party continuous integration (CI) system. Alternatively, you can use {% data variables.product.prodname_actions %} to run {% data variables.product.prodname_code_scanning %} on {% data variables.product.product_location %}. For information, see "[Enabling {% data variables.product.prodname_code_scanning %} for a repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning-for-a-repository)." - -The {% data variables.product.prodname_codeql_runner %} is a command-line tool that runs {% data variables.product.prodname_codeql %} analysis on a checkout of a {% data variables.product.prodname_dotcom %} repository. You add the runner to your third-party system, then call the runner to analyze code and upload the results to {% data variables.product.product_location %}. These results are displayed as {% data variables.product.prodname_code_scanning %} alerts in the repository. - -{% data reusables.code-scanning.codeql-runner-license %} - -### Downloading the {% data variables.product.prodname_codeql_runner %} - -You can download the {% data variables.product.prodname_codeql_runner %} from https://github.com/github/codeql-action/releases. On some operating systems, you may need to change permissions for the downloaded file before you can run it. - -On Linux: - -```shell -chmod +x codeql-runner-linux -``` - -On MacOS: - -```shell -chmod +x codeql-runner-macos -sudo xattr -d com.apple.quarantine codeql-runner-macos -``` - -On Windows, the `codeql-runner-win.exe` file usually requires no change to permissions. - -### Adding the {% data variables.product.prodname_codeql_runner %} to your CI system - -Once you have downloaded the {% data variables.product.prodname_codeql_runner %} and verified that it can be executed, you should make the runner available to each CI server that you intend to use for {% data variables.product.prodname_code_scanning %}. It is important to notice that each CI server that you intend to use for {% data variables.product.prodname_code_scanning %} needs to have the {% data variables.product.prodname_codeql_runner %}. You might configure each server to copy the runner from a central, internal location, or you could use the REST API to get the runner direct from GitHub, for example: - -```shell -wget https://github.com/github/codeql-action/releases/download/codeql-bundle-20200826/codeql-runner-linux -chmod +x codeql-runner-linux -``` - -In addition to this, each CI server also needs: - -- A {% data variables.product.prodname_github_apps %} or personal access token for the {% data variables.product.prodname_codeql_runner %} to use. For private repositories the token must have the `repo` scope. For public the token needs only the `public_repo` and `repo:security_events` scopes. For information, see "[Building {% data variables.product.prodname_github_apps %}](/developers/apps/building-github-apps)" and "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." -- Access to the {% data variables.product.prodname_codeql %} bundle associated with this release of the {% data variables.product.prodname_codeql_runner %}. This package contains the {% data variables.product.prodname_codeql %} CLI, queries, and libraries needed for {% data variables.product.prodname_codeql %} analysis. For information, see "[{% data variables.product.prodname_codeql %} CLI](https://help.semmle.com/codeql/codeql-cli.html)." - -The options for providing access to the {% data variables.product.prodname_codeql %} bundle are: - -1. Allow the CI servers access to {% data variables.product.prodname_dotcom_the_website %} so that the {% data variables.product.prodname_codeql_runner %} can download the bundle automatically. -1. Manually download/extract the bundle, store it with other central resources, and use the `--codeql-path` flag to specify the location of the bundle in calls to initialize the {% data variables.product.prodname_codeql_runner %}. -{% if enterpriseServerVersions contains currentVersion %} -1. You can mirror the `github/codeql-action` repository on {% data variables.product.product_location %}. Unless you specify the `--codeql-path` flag, the runner automatically checks for the bundle in this location and on {% data variables.product.prodname_dotcom_the_website %}.{% endif %} - -### Calling the {% data variables.product.prodname_codeql_runner %} - -You should call the {% data variables.product.prodname_codeql_runner %} from the checkout location of the repository you want to analyze. The two main commands are: - -1. `init` required to initialize the runner and create a {% data variables.product.prodname_codeql %} database for each language to be analyzed. These databases are populated and analyzed by subsequent commands. -1. `analyze` required to populate the {% data variables.product.prodname_codeql %} databases, analyze them, and upload results to {% data variables.product.product_location %}. - -For both commands, you must specify the URL of {% data variables.product.product_location %}, the repository *OWNER/NAME*, and the GitHub Apps or personal access token to use for authentication. You also need to specify the location of the CodeQL bundle unless the CI server has access to download it directly from the `github/codeql-action` repository on {% data variables.product.prodname_dotcom_the_website %}{% if enterpriseServerVersions contains currentVersion %} or mirrored on {% data variables.product.product_location %}{% endif %}. - -You can configure where the {% data variables.product.prodname_codeql_runner %} stores the CodeQL bundle for future analysis on a server using the `--tools-dir` flag and where it stores temporary files during analysis using `--temp-dir`. - -To view the command-line reference for the runner, use the `-h` flag. For example, to list all commands run: `codeql-runner-OS -h`, or to list all the flags available for the `init` command run: `codeql-runner-OS init -h` (where `OS` varies according to the executable that you are using). For more information, see "[Configuring {% data variables.product.prodname_code_scanning %} in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system#codeql-runner-command-reference)." - -#### Basic example - -This example runs {% data variables.product.prodname_codeql %} analysis on a Linux CI server for the `octo-org/example-repo` repository hosted on `{% data variables.command_line.git_url_example %}`. The process is very simple because the repository contains only languages that can be analyzed by {% data variables.product.prodname_codeql %} directly, without being built (that is, Go, JavaScript, Python, and TypeScript). - -1. Check out the repository to analyze. -1. Move into the directory where the repository is checked out. -1. Initialize the {% data variables.product.prodname_codeql_runner %} and create {% data variables.product.prodname_codeql %} databases for the languages detected. - - ```shell - $ /path/to-runner/codeql-runner-linux init --repository octo-org/example-repo - --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN - > Cleaning temp directory /srv/checkout/example-repo/codeql-runner - > ... - > Created CodeQL database at /srv/checkout/example-repo/codeql-runner/codeql_databases/javascript. - ``` - -1. Populate the {% data variables.product.prodname_codeql_runner %} databases, analyze them, and upload the results to {% data variables.product.product_name %}. - - ```shell - $ /path/to-runner/codeql-runner-linux analyze --repository octo-org/example-repo - --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN - --commit 5b6a3078b31dc346e5ce7b86837d6abbe7a18bbd --ref refs/heads/main - > Finalizing database creation - > ... - > POST /repos/octo-org/example-repo/code-scanning/sarifs - 202 in 786ms - > Successfully uploaded results - ``` - -The server has access to download the {% data variables.product.prodname_codeql %} bundle directly from the `github/codeql-action` repository on {% data variables.product.prodname_dotcom_the_website %}{% if enterpriseServerVersions contains currentVersion %} or mirrored on {% data variables.product.product_location %}{% endif %}, so there is no need to use the `--codeql-path` flag. When the analysis is complete, the {% data variables.product.prodname_codeql_runner %} uploads the results to the {% data variables.product.prodname_code_scanning %} view. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository)." - -#### Compiled language example - -This example is similar to the previous example, however this time the repository has code in C/C++, C#, or Java. To create a {% data variables.product.prodname_codeql %} database for these languages, the CLI needs to monitor the build. At the end of the initialization process, the runner reports the command you need to set up the environment before building the code. You need to run this command, before calling the normal CI build process, and then running the `analyze` command. - -1. Check out the repository to analyze. -1. Move into the directory where the repository is checked out. -1. Initialize the {% data variables.product.prodname_codeql_runner %} and create {% data variables.product.prodname_codeql %} databases for the languages detected. - - ```shell - $ /path/to-runner/codeql-runner-linux init --repository octo-org/example-repo-2 - --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN - > Cleaning temp directory /srv/checkout/example-repo-2/codeql-runner - > ... - > CodeQL environment output to "/srv/checkout/example-repo-2/codeql-runner/codeql-env.json" - and "/srv/checkout/example-repo-2/codeql-runner/codeql-env.sh". - Please export these variables to future processes so the build can be traced, for example by running " - . /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh". - ``` - -1. Run the script generated by the `init` action to set up the environment to monitor the build. - - ```shell - $ . /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh - ``` - -1. Build the code. -1. Populate the {% data variables.product.prodname_codeql %} databases, analyze them, and upload the results to GitHub. - - ```shell - $ /path/to-runner/codeql-runner-linux analyze --repository octo-org/example-repo-2 - --github-url {% data variables.command_line.git_url_example %} --github-auth TOKEN - --commit ae7b655ef30b50fb726ae7b3daa79571a39d194d --ref refs/heads/main - > Finalizing database creation - > ... - > POST /repos/octo-org/example-repo-2/code-scanning/sarifs - 202 in 573ms - > Successfully uploaded results - ``` - -{% note %} - -**Note:** If you use a containerized build, you need to run the {% data variables.product.prodname_codeql_runner %} in the container where your build task takes place. - -{% endnote %} - -### Further reading - -- "[Configuring {% data variables.product.prodname_code_scanning %} in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system)" -- "[Troubleshooting {% data variables.product.prodname_code_scanning %} in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system)" diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md deleted file mode 100644 index b43bd29294a5..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning.md +++ /dev/null @@ -1,425 +0,0 @@ ---- -title: SARIF support for code scanning -shortTitle: SARIF support -intro: 'To display results from a third-party static analysis tool in your repository on {% data variables.product.prodname_dotcom %}, you''ll need your results stored in a SARIF file that supports a specific subset of the SARIF 2.1.0 JSON schema for {% data variables.product.prodname_code_scanning %}. If you use the default {% data variables.product.prodname_codeql %} static analysis engine, then your results will display in your repository on {% data variables.product.prodname_dotcom %} automatically.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/about-sarif-support-for-code-scanning -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta %} - -### About SARIF support - -SARIF (Static Analysis Results Interchange Format) is an [OASIS Standard](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) that defines an output file format. The SARIF standard is used to streamline how static analysis tools share their results. {% data variables.product.prodname_code_scanning_capc %} supports a subset of the SARIF 2.1.0 JSON schema. - -To upload a SARIF file from a third-party static code analysis engine, you'll need to ensure that uploaded files use the SARIF 2.1.0 version. {% data variables.product.prodname_dotcom %} will parse the SARIF file and show alerts using the results in your repository as a part of the {% data variables.product.prodname_code_scanning %} experience. For more information, see "[Uploading a SARIF file to {% data variables.product.prodname_dotcom %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github)." For more information about the SARIF 2.1.0 JSON schema, see [`sarif-schema-2.1.0.json`](https://github.com/oasis-tcs/sarif-spec/blob/master/Schemata/sarif-schema-2.1.0.json). - -If you're using {% data variables.product.prodname_actions %} with the {% data variables.product.prodname_codeql_workflow %} or using the {% data variables.product.prodname_codeql_runner %}, then the {% data variables.product.prodname_code_scanning %} results will automatically use the supported subset of SARIF 2.1.0. For more information, see "[Enabling {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning)" or "[Running {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system)." - -{% data variables.product.prodname_dotcom %} uses properties in the SARIF file to display alerts. For example, the `shortDescription` and `fullDescription` appear at the top of a {% data variables.product.prodname_code_scanning %} alert. The `location` allows {% data variables.product.prodname_dotcom %} to show annotations in your code file. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository)." - -If you're new to SARIF and want to learn more, see Microsoft's [`SARIF tutorials`](https://github.com/microsoft/sarif-tutorials) repository. - -### Preventing duplicate alerts using fingerprints - -Each time the results of a new code scan are uploaded, the results are processed and alerts are added to the repository. To prevent duplicate alerts for the same problem, {% data variables.product.prodname_code_scanning %} uses fingerprints to match results across various runs so they only appear once in the latest run for the selected branch. This makes it possible to match alerts to the right line of code when files are edited. - -{% data variables.product.prodname_dotcom %} uses the `partialFingerprints` property in the OASIS standard to detect when two results are logically identical. For more information, see the "[partialFingerprints property](https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html#_Toc16012611)" entry in the OASIS documentation. - -SARIF files created by the {% data variables.product.prodname_codeql_workflow %} or using the {% data variables.product.prodname_codeql_runner %} include fingerprint data. If you upload a SARIF file using the `upload-sarif` action and this data is missing, {% data variables.product.prodname_dotcom %} attempts to populate the `partialFingerprints` field from the source files. For more information about uploading results, see "[Uploading a SARIF file to {% data variables.product.prodname_dotcom %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github#uploading-a-code-scanning-analysis-with-github-actions)." - -If you upload a SARIF file without fingerprint data using the `/code-scanning/sarifs` API endpoint, the {% data variables.product.prodname_code_scanning %} alerts will be processed and displayed, but users may see duplicate alerts. To avoid seeing duplicate alerts, you should calculate fingerprint data and populate the `partialFingerprints` property before you upload the SARIF file. You may find the script that the `upload-sarif` action uses a helpful starting point: https://github.com/github/codeql-action/blob/main/src/fingerprints.ts. For more information about the API, see "[Upload a SARIF file](/rest/reference/code-scanning#upload-a-sarif-file)." - -### Validating your SARIF file - - - -You can check a SARIF file is compatible with {% data variables.product.prodname_code_scanning %} by testing it against the {% data variables.product.prodname_dotcom %} ingestion rules. For more information, visit the [Microsoft SARIF validator](https://sarifweb.azurewebsites.net/). - -### Supported SARIF output file properties - -If you use a code analysis engine other than {% data variables.product.prodname_codeql %}, you can review the supported SARIF properties to optimize how your analysis results will appear on {% data variables.product.prodname_dotcom %}. - -Any valid SARIF 2.1.0 output file can be uploaded, however, {% data variables.product.prodname_code_scanning %} will only use the following supported properties. - -#### `sarifLog` object - -| Name | Description | -|----|----| -| `$schema` | **Required.** The URI of the SARIF JSON schema for version 2.1.0. For example, `https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json`. | -| `version` | **Required.** {% data variables.product.prodname_code_scanning_capc %} only supports SARIF version `2.1.0`. -| `runs[]` | **Required.** A SARIF file contains an array of one or more runs. Each run represents a single run of an analysis tool. For more information about a `run`, see the [`run` object](#run-object). - -#### `run` object - -{% data variables.product.prodname_code_scanning_capc %} uses the `run` object to filter results by tool and provide information about the source of a result. The `run` object contains the `tool.driver` tool component object, which contains information about the tool that generated the results. Each `run` can only have results for one analysis tool. - -| Name | Description | -|----|----| -| `tool.driver.name` | **Required.** The name of the analysis tool. {% data variables.product.prodname_code_scanning_capc %} displays the name on {% data variables.product.prodname_dotcom %} to allow you to filter results by tool. | -| `tool.driver.version` | **Optional.** The version of the analysis tool. {% data variables.product.prodname_code_scanning_capc %} uses the version number to track when results may have changed due to a tool version change rather than a change in the code being analyzed. If the SARIF file includes the `semanticVersion` field, `version` is not used by {% data variables.product.prodname_code_scanning %}. | -| `tool.driver.semanticVersion` | **Optional.** The version of the analysis tool, specified by the Semantic Versioning 2.0 format. {% data variables.product.prodname_code_scanning_capc %} uses the version number to track when results may have changed due to a tool version change rather than a change in the code being analyzed. If the SARIF file includes the `semanticVersion` field, `version` is not used by {% data variables.product.prodname_code_scanning %}. For more information, see "[Semantic Versioning 2.0.0](https://semver.org/)" in the Semantic Versioning documentation. | -| `tool.driver.rules[]` | **Required.** An array of `reportingDescriptor` objects that represent rules. The analysis tool uses rules to find problems in the code being analyzed. For more information, see the [`reportingDescriptor` object](#reportingdescriptor-object). | -| `results[]` | **Required.** The results of the analysis tool. {% data variables.product.prodname_code_scanning_capc %} displays the results on {% data variables.product.prodname_dotcom %}. For more information, see the [`result` object](#result-object). - -#### `reportingDescriptor` object - -| Name | Description | -|----|----| -| `id` | **Required.** A unique identifier for the rule. The `id` is referenced from other parts of the SARIF file and may be used by {% data variables.product.prodname_code_scanning %} to display URLs on {% data variables.product.prodname_dotcom %}. | -| `name` | **Optional.** The name of the rule. {% data variables.product.prodname_code_scanning_capc %} displays the name to allow results to be filtered by rule on {% data variables.product.prodname_dotcom %}. | -| `shortDescription.text` | **Required.** A concise description of the rule. {% data variables.product.prodname_code_scanning_capc %} displays the short description on {% data variables.product.prodname_dotcom %} next to the associated results. -| `fullDescription.text` | **Required.** A description of the rule. {% data variables.product.prodname_code_scanning_capc %} displays the full description on {% data variables.product.prodname_dotcom %} next to the associated results. The max number of characters is limited to 1000. -| `defaultConfiguration.level` | **Optional.** Default severity level of the rule. {% data variables.product.prodname_code_scanning_capc %} uses severity levels to help you understand how critical the result is for a given rule. This value can be overridden by the `level` attribute in the `result` object. For more information, see the [`result` object](#result-object). Default: `warning`. -| `help.text` | **Required.** Documentation for the rule using text format. {% data variables.product.prodname_code_scanning_capc %} displays this help documentation next to the associated results. -| `help.markdown` | **Recommended.** Documentation for the rule using Markdown format. {% data variables.product.prodname_code_scanning_capc %} displays this help documentation next to the associated results. When `help.markdown` is available, it is displayed instead of `help.text`. -| `properties.tags[]` | **Optional.** An array of strings. {% data variables.product.prodname_code_scanning_capc %} uses `tags` to allow you to filter results on {% data variables.product.prodname_dotcom %}. For example, it is possible to filter to all results that have the tag `security`. -| `properties.precision` | **Recommended.** A string that indicates how often the results indicated by this rule are true. For example, if a rule has a known high false-positive rate, the precision should be `low`. {% data variables.product.prodname_code_scanning_capc %} orders results by precision on {% data variables.product.prodname_dotcom %} so that the results with the highest `level`, and highest `precision` are shown first. Can be one of: `very-high`, `high`, `medium`, or `low`. - -#### `result` object - -| Name | Description | -|----|----| -| `ruleId`| **Optional.** The unique identifier of the rule (`reportingDescriptor.id`). For more information, see the [`reportingDescriptor` object](#reportingdescriptor-object). {% data variables.product.prodname_code_scanning_capc %} uses the rule identifier to filter results by rule on {% data variables.product.prodname_dotcom %}. -| `ruleIndex`| **Optional.** The index of the associated rule (`reportingDescriptor` object) in the tool component `rules` array. For more information, see the [`run` object](#run-object). -| `rule`| **Optional.** A reference used to locate the rule (reporting descriptor) for this result. For more information, see the [`reportingDescriptor` object](#reportingdescriptor-object). -| `level`| **Optional.** The severity of the result. This level overrides the default severity defined by the rule. {% data variables.product.prodname_code_scanning_capc %} uses the level to filter results by severity on {% data variables.product.prodname_dotcom %}. -| `message.text`| **Required.** A message that describes the result. {% data variables.product.prodname_code_scanning_capc %} displays the message text as the title of the result. Only the first sentence of the message will be displayed when visible space is limited. -| `locations[]`| **Required.** The set of locations where the result was detected. Only one location should be included unless the problem can only be corrected by making a change at every specified location. **Note:** At least one location is required for {% data variables.product.prodname_code_scanning %} to display a result. {% data variables.product.prodname_code_scanning_capc %} will use this property to decide which file to annotate with the result. Only the first value of this array is used. All other values are ignored. -| `partialFingerprints`| **Required.** A set of strings used to track the unique identity of the result. {% data variables.product.prodname_code_scanning_capc %} uses `partialFingerprints` to accurately identify which results are the same across commits and branches. {% data variables.product.prodname_code_scanning_capc %} will attempt to use `partialFingerprints` if they exist. If you are uploading third-party SARIF files with the `upload-action`, the action will create `partialFingerprints` for you when they are not included in the SARIF file. For more information, see "[Preventing duplicate alerts using fingerprints](#preventing-duplicate-alerts-using-fingerprints)." **Note:** {% data variables.product.prodname_code_scanning_capc %} only uses the `primaryLocationLineHash`. -| `codeFlows[].threadFlows[].locations[]`| **Optional.** An array of `location` objects for a `threadFlow` object, which describes the progress of a program through a thread of execution. A `codeFlow` object describes a pattern of code execution used to detect a result. If code flows are provided, {% data variables.product.prodname_code_scanning %} will expand code flows on {% data variables.product.prodname_dotcom %} for the relevant result. For more information, see the [`location` object](#location-object). -| `relatedLocations[]`| A set of locations relevant to this result. {% data variables.product.prodname_code_scanning_capc %} will link to related locations when they are embedded in the result message. For more information, see the [`location` object](#location-object). -| `suppressions[].state`| **Optional.** When the `state` is set to `accepted`, {% data variables.product.prodname_code_scanning %} will update the state of the result to `Closed` on {% data variables.product.prodname_dotcom %}. - -#### `location` object - -A location within a programming artifact, such as a file in the repository or a file that was generated during a build. - -| Name | Description | -|----|----| -| `location.id` | **Optional.** A unique identifier that distinguishes this location from all other locations within a single result object. -| `location.physicalLocation` | **Required.** Identifies the artifact and region. For more information, see the [`physicalLocation`](#physicallocation-object). -| `location.message.text` | **Optional.** A message relevant to the location. - -#### `physicalLocation` object - -| Name | Description | -|----|----| -| `artifactLocation.uri`| **Required.** A URI indicating the location of an artifact, usually a file either in the repository or generated during a build. If the URI is relative, it should be relative to the root of the {% data variables.product.prodname_dotcom %} repository being analyzed. For example, main.js or src/script.js are relative to the root of the repository. If the URI is absolute, {% data variables.product.prodname_code_scanning %} can use the URI to checkout the artifact and match up files in the repository. For example, `https://github.com/github/example/blob/00/src/promiseUtils.js`. -| `region.startLine` | **Required.** The line number of the first character in the region. -| `region.startColumn` | **Required.** The column number of the first character in the region. -| `region.endLine` | **Required.** The line number of the last character in the region. -| `region.endColumn` | **Required.** The column number of the character following the end of the region. - -### SARIF output file examples - -These example SARIF output files show supported properties and example values. - -#### Example with minimum required properties - -This SARIF output file has example values to show the minimum required properties for {% data variables.product.prodname_code_scanning %} results to work as expected. If you remove any properties or don't include values, this data will not be displayed correctly or sync on {% data variables.product.prodname_dotcom %}. - - -```json -{ - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "version": "2.1.0", - "runs": [ - { - "tool": { - "driver": { - "name": "Tool Name", - "rules": [ - { - "id": "R01" - } - ] - } - }, - "results": [ - { - "ruleId": "R01", - "message": { - "text": "Result text. This result does not have a rule associated." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "fileURI" - }, - "region": { - "startLine": 2, - "startColumn": 7, - "endColumn": 10 - } - } - } - ], - "partialFingerprints": { - "primaryLocationLineHash": "39fa2ee980eb94b0:1" - } - } - ] - } - ] -} -``` - -#### Example showing all supported SARIF properties - -This SARIF output file has example values to show all supported SARIF properties for {% data variables.product.prodname_code_scanning %}. - -```json -{ - "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", - "version": "2.1.0", - "runs": [ - { - "tool": { - "driver": { - "name": "Tool Name", - "semanticVersion": "2.0.0", - "rules": [ - { - "id": "3f292041e51d22005ce48f39df3585d44ce1b0ad", - "name": "js/unused-local-variable", - "shortDescription": { - "text": "Unused variable, import, function or class" - }, - "fullDescription": { - "text": "Unused variables, imports, functions or classes may be a symptom of a bug and should be examined carefully." - }, - "defaultConfiguration": { - "level": "note" - }, - "properties": { - "tags": [ - "maintainability" - ], - "precision": "very-high" - } - }, - { - "id": "d5b664aefd5ca4b21b52fdc1d744d7d6ab6886d0", - "name": "js/inconsistent-use-of-new", - "shortDescription": { - "text": "Inconsistent use of 'new'" - }, - "fullDescription": { - "text": "If a function is intended to be a constructor, it should always be invoked with 'new'. Otherwise, it should always be invoked as a normal function, that is, without 'new'." - }, - "properties": { - "tags": [ - "reliability", - "correctness", - "language-features" - ], - "precision": "very-high" - } - }, - { - "id": "R01" - } - ] - } - }, - "results": [ - { - "ruleId": "3f292041e51d22005ce48f39df3585d44ce1b0ad", - "ruleIndex": 0, - "message": { - "text": "Unused variable foo." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "main.js", - "uriBaseId": "%SRCROOT%" - }, - "region": { - "startLine": 2, - "startColumn": 7, - "endColumn": 10 - } - } - } - ], - "partialFingerprints": { - "primaryLocationLineHash": "39fa2ee980eb94b0:1", - "primaryLocationStartColumnFingerprint": "4" - } - }, - { - "ruleId": "d5b664aefd5ca4b21b52fdc1d744d7d6ab6886d0", - "ruleIndex": 1, - "message": { - "text": "Function resolvingPromise is sometimes invoked as a constructor (for example [here](1)), and sometimes as a normal function (for example [here](2))." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/promises.js", - "uriBaseId": "%SRCROOT%" - }, - "region": { - "startLine": 2 - } - } - } - ], - "partialFingerprints": { - "primaryLocationLineHash": "5061c3315a741b7d:1", - "primaryLocationStartColumnFingerprint": "7" - }, - "relatedLocations": [ - { - "id": 1, - "physicalLocation": { - "artifactLocation": { - "uri": "src/ParseObject.js", - "uriBaseId": "%SRCROOT%" - }, - "region": { - "startLine": 2281, - "startColumn": 33, - "endColumn": 55 - } - }, - "message": { - "text": "here" - } - }, - { - "id": 2, - "physicalLocation": { - "artifactLocation": { - "uri": "src/LiveQueryClient.js", - "uriBaseId": "%SRCROOT%" - }, - "region": { - "startLine": 166 - } - }, - "message": { - "text": "here" - } - } - ] - }, - { - "ruleId": "R01", - "message": { - "text": "Specifying both [ruleIndex](1) and [ruleID](2) might lead to inconsistencies." - }, - "level": "error", - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "full.sarif", - "uriBaseId": "%SRCROOT%" - }, - "region": { - "startLine": 54, - "startColumn": 10, - "endLine": 55, - "endColumn": 25 - } - } - } - ], - "relatedLocations": [ - { - "id": 1, - "physicalLocation": { - "artifactLocation": { - "uri": "full.sarif" - }, - "region": { - "startLine": 81, - "startColumn": 10, - "endColumn": 18 - } - }, - "message": { - "text": "here" - } - }, - { - "id": 2, - "physicalLocation": { - "artifactLocation": { - "uri": "full.sarif" - }, - "region": { - "startLine": 82, - "startColumn": 10, - "endColumn": 21 - } - }, - "message": { - "text": "here" - } - } - ], - "codeFlows": [ - { - "threadFlows": [ - { - "locations": [ - { - "location": { - "physicalLocation": { - "region": { - "startLine": 11, - "endLine": 29, - "startColumn": 10, - "endColumn": 18 - }, - "artifactLocation": { - "uriBaseId": "%SRCROOT%", - "uri": "full.sarif" - } - }, - "message": { - "text": "Rule has index 0" - } - } - }, - { - "location": { - "physicalLocation": { - "region": { - "endColumn": 47, - "startColumn": 12, - "startLine": 12 - }, - "artifactLocation": { - "uriBaseId": "%SRCROOT%", - "uri": "full.sarif" - } - } - } - } - ] - } - ] - } - ], - "partialFingerprints": { - "primaryLocationLineHash": "ABC:2" - } - } - ], - "columnKind": "utf16CodeUnits" - } - ] -} -``` diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md deleted file mode 100644 index 0013b8b96bb9..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/triaging-code-scanning-alerts-in-pull-requests.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Triaging code scanning alerts in pull requests -shortTitle: Triaging alerts in pull requests -intro: 'When {% data variables.product.prodname_code_scanning %} identifies a problem in a pull request, you can review the highlighted code and resolve the alert.' -product: '{% data reusables.gated-features.code-scanning %}' -permissions: 'If you have write permission to a repository, you can resolve {% data variables.product.prodname_code_scanning %} alerts for that repository.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta %} - -### About {% data variables.product.prodname_code_scanning %} results on pull requests - -In repositories where {% data variables.product.prodname_code_scanning %} is configured as a pull request check, {% data variables.product.prodname_code_scanning %} checks the code in the pull request. By default, this is limited to pull requests that target the default branch, but you can change this configuration within {% data variables.product.prodname_actions %} or in a third-party CI/CD system. If merging the changes would introduce new {% data variables.product.prodname_code_scanning %} alerts to the target branch, these are reported as check results in the pull request. The alerts are also shown as annotations in the **Files changed** tab of the pull request. If you have write permission for the repository, you can see any existing {% data variables.product.prodname_code_scanning %} alerts on the **Security** tab. For information about repository alerts, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository)." - -If {% data variables.product.prodname_code_scanning %} has any results with a severity of `error`, the check fails and the error is reported in the check results. If all the results found by {% data variables.product.prodname_code_scanning %} have lower severities, the alerts are treated as warnings or notices and the check succeeds. If your pull request targets a protected branch that has been enabled for {% data variables.product.prodname_code_scanning %}, and the repository owner has configured required status checks, then you must either fix or {% if currentVersion == "enterprise-server@2.22" %}close{% else %}dismiss{% endif %} all error alerts before the pull request can be merged. For more information, see "[About required status checks](/github/administering-a-repository/about-required-status-checks)." - -![Failed {% data variables.product.prodname_code_scanning %} check on a pull request](/assets/images/help/repository/code-scanning-check-failure.png) - -### About {% data variables.product.prodname_code_scanning %} as a pull request check - -There are many options for configuring {% data variables.product.prodname_code_scanning %} as a pull request check, so the exact setup of each repository will vary and some will have more than one check. The check that contains the results of {% data variables.product.prodname_code_scanning %} is: **Code scanning results**. - -If the repository uses the {% data variables.product.prodname_codeql_workflow %} a **{% data variables.product.prodname_codeql %} / Analyze (LANGUAGE)** check is run for each language before the results check runs. The analysis check may fail if there are configuration problems, or if the pull request breaks the build for a language that the analysis needs to compile (for example, C/C++, C#, or Java). As with other pull request checks, you can see full details of the check failure on the **Checks** tab. For more information about configuring and troubleshooting, see "[Configuring {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning)" or "[Troubleshooting {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-code-scanning)." - -### Triaging an alert on your pull request - -When you look at the **Files changed** tab for a pull request, you see annotations for any lines of code that triggered the alert. - -![Alert annotation within a pull request diff](/assets/images/help/repository/code-scanning-pr-annotation.png) - -Some annotations contain links with extra context for the alert. In the example above, from {% data variables.product.prodname_codeql %} analysis, you can click **user-provided value** to see where the untrusted data enters the data flow (this is referred to as the source). In this case you can view the full path from the source to the code that uses the data (the sink) by clicking **Show paths**. This makes it easy to check whether the data is untrusted or if the analysis failed to recognize a data sanitization step between the source and the sink. For information about analyzing data flow using {% data variables.product.prodname_codeql %}, see "[About data flow analysis](https://help.semmle.com/QL/learn-ql/intro-to-data-flow.html)." - -For more information about an alert, click **Show more details** on the annotation. This allows you to see all of the context and metadata provided by the tool in an alert view. In the example below, you can see tags showing the severity, type, and relevant common weakness enumerations (CWEs) for the problem. The view also shows which commit introduced the problem. - -In the detailed view for an alert, some {% data variables.product.prodname_code_scanning %} tools, like {% data variables.product.prodname_codeql %} analysis, also include a description of the problem and a **Show more** link for guidance on how to fix your code. - -![Alert description and link to show more information](/assets/images/help/repository/code-scanning-pr-alert.png) - -### {% if currentVersion == "enterprise-server@2.22" %}Resolving{% else %}Fixing{% endif %} an alert on your pull request - -Anyone with write permission for a repository can fix a {% data variables.product.prodname_code_scanning %} alert that's identified on a pull request. If you commit changes to the pull request this triggers a new run of the pull request checks. If your changes fix the problem, the alert is closed and the annotation removed. - -{% if currentVersion == "enterprise-server@2.22" %} - -If you don't think that an alert needs to be fixed, you can close the alert manually. {% data reusables.code-scanning.close-alert-examples %} The **Close** button is available in annotations and in the alerts view if you have write permission for the repository. - -{% data reusables.code-scanning.false-positive-fix-codeql %} - -{% else %} - -### Dismissing an alert on your pull request - -An alternative way of closing an alert is to dismiss it. You can dismiss an alert if you don't think it needs to be fixed. {% data reusables.code-scanning.close-alert-examples %} If you have write permission for the repository, the **Dismiss** button is available in code annotations and in the alerts summary. When you click **Dismiss** you will be prompted to choose a reason for closing the alert. - -![Choosing a reason for dismissing an alert](/assets/images/help/repository/code-scanning-alert-close-drop-down.png) - -{% data reusables.code-scanning.choose-alert-dismissal-reason %} - -{% data reusables.code-scanning.false-positive-fix-codeql %} - -For more information about dismissing alerts, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository#dismissing-or-deleting-alerts)." - -{% endif %} \ No newline at end of file diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md deleted file mode 100644 index 9ea1c457d6f5..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-codeql-code-scanning-in-your-ci-system.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Troubleshooting CodeQL code scanning in your CI system -shortTitle: Troubleshooting in your CI -intro: 'If you''re having problems with the {% data variables.product.prodname_codeql_runner %}, you can troubleshoot by using these tips.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-code-scanning-in-your-ci-system -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta-codeql-runner %} -{% data reusables.code-scanning.beta %} - -### The `init` command takes too long - -Before the {% data variables.product.prodname_codeql_runner %} can build and analyze code, it needs access to the {% data variables.product.prodname_codeql %} bundle, which contains the {% data variables.product.prodname_codeql %} CLI and the {% data variables.product.prodname_codeql %} libraries. - -When you use the {% data variables.product.prodname_codeql_runner %} for the first time on your machine, the `init` command downloads the {% data variables.product.prodname_codeql %} bundle to your machine. This download can take a few minutes. -The {% data variables.product.prodname_codeql %} bundle is cached between runs, so if you use the {% data variables.product.prodname_codeql_runner %} again on the same machine, it won't download the {% data variables.product.prodname_codeql %} bundle again. - -To avoid this automatic download, you can manually download the {% data variables.product.prodname_codeql %} bundle to your machine and specify the path using the `--codeql-path` flag of the `init` command. - -### No code found during the build - -If the `analyze` command for the {% data variables.product.prodname_codeql_runner %} fails with an error `No source code was seen during the build`, this indicates that {% data variables.product.prodname_codeql %} was unable to monitor your code. Several reasons can explain such a failure. - -1. Automatic language detection identified a supported language, but there is no analyzable code of that language in the repository. A typical example is when our language detection service finds a file associated with a particular programming language like a `.h`, or `.gyp` file, but no corresponding executable code is present in the repository. To solve the problem, you can manually define the languages you want to analyze by using the `--languages` flag of the `init` command. For more information, see "[Configuring {% data variables.product.prodname_code_scanning %} in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system)." - -1. You're analyzing a compiled language without using the `autobuild` command and you run the build steps yourself after the `init` step. For the build to work, you must set up the environment such that the {% data variables.product.prodname_codeql_runner %} can monitor the code. The `init` command generates instructions for how to export the required environment variables, so you can copy and run the script after you've run the `init` command. - - On macOS and Linux: - ```shell - $ . codeql-runner/codeql-env.sh - ``` - - On Windows, using the Command shell (`cmd`) or a batch file (`.bat`): - ```shell - > call codeql-runner\codeql-env.bat - ``` - - On Windows, using PowerShell: - ```shell - > cat codeql-runner\codeql-env.sh | Invoke-Expression - ``` - - The environment variables are also stored in the file `codeql-runner/codeql-env.json`. This file contains a single JSON object which maps environment variable keys to values. If you can't run the script generated by the `init` command, then you can use the data in JSON format instead. - - {% note %} - - **Note:** If you used the `--temp-dir` flag of the `init` command to specify a custom directory for temporary files, the path to the `codeql-env` files might be different. - - {% endnote %} - -1. The code is built in a container or on a separate machine. If you use a containerized build or if you outsource the build to another machine, make sure to run the {% data variables.product.prodname_codeql_runner %} in the container or on the machine where your build task takes place. For more information, see "[Running CodeQL code scanning in a container](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container)." diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md deleted file mode 100644 index 9dd5a07a9074..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-the-codeql-workflow.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Troubleshooting the CodeQL workflow -shortTitle: Troubleshooting CodeQL -intro: 'If you''re having problems with {% data variables.product.prodname_code_scanning %}, you can troubleshoot by using these tips for resolving issues.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/finding-security-vulnerabilities-and-errors-in-your-code/troubleshooting-code-scanning -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta %} - -### Automatic build for a compiled language fails - -If an automatic build of code for a compiled language within your project fails, try the following troubleshooting steps. - -- Remove the `autobuild` step from your {% data variables.product.prodname_code_scanning %} workflow and add specific build steps. For information about editing the workflow, see "[Configuring {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#editing-a-code-scanning-workflow)." For more information about replacing the `autobuild` step, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." - -- If your workflow doesn't explicitly specify the languages to analyze, {% data variables.product.prodname_codeql %} implicitly detects the supported languages in your code base. In this configuration, out of the compiled languages C/C++, C#, and Java, {% data variables.product.prodname_codeql %} only analyzes the language with the most source files. Edit the workflow and add a build matrix specifying the languages you want to analyze. The default CodeQL analysis workflow uses such a matrix. - - The following extracts from a workflow show how you can use a matrix within the job strategy to specify languages, and then reference each language within the "Initialize {% data variables.product.prodname_codeql %}" step: - - ```yaml - jobs: - analyze: - ... - strategy: - fail-fast: false - matrix: - language: ['csharp', 'cpp', 'javascript'] - - ... - - - name: Initialize {% data variables.product.prodname_codeql %} - uses: github/codeql-action/init@v1 - with: - languages: {% raw %}${{ matrix.language }}{% endraw %} - ``` - - For more information about editing the workflow, see "[Configuring code scanning](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning)." - -### No code found during the build - -If your workflow fails with an error `No source code was seen during the build` or `The process '/opt/hostedtoolcache/CodeQL/0.0.0-20200630/x64/codeql/codeql' failed with exit code 32`, this indicates that {% data variables.product.prodname_codeql %} was unable to monitor your code. Several reasons can explain such a failure: - -1. Automatic language detection identified a supported language, but there is no analyzable code of that language in the repository. A typical example is when our language detection service finds a file associated with a particular programming language like a `.h`, or `.gyp` file, but no corresponding executable code is present in the repository. To solve the problem, you can manually define the languages you want to analyze by updating the list of languages in the `language` matrix. For example, the following configuration will analyze only Go, and JavaScript. - - ```yaml - strategy: - fail-fast: false - matrix: - # Override automatic language detection by changing the list below - # Supported options are: - # ['csharp', 'cpp', 'go', 'java', 'javascript', 'python'] - language: ['go', 'javascript'] - ``` -For more information, see the workflow extract in "[Automatic build for a compiled language fails](#automatic-build-for-a-compiled-language-fails)" above. -1. Your {% data variables.product.prodname_code_scanning %} workflow is analyzing a compiled language (C, C++, C#, or Java), but the code was not compiled. By default, the {% data variables.product.prodname_codeql %} analysis workflow contains an `autobuild` step, however, this step represents a best effort process, and may not succeed in building your code, depending on your specific build environment. Compilation may also fail if you have removed the `autobuild` step and did not include build steps manually. For more information about specifying build steps, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." -1. Your workflow is analyzing a compiled language (C, C++, C#, or Java), but portions of your build are cached to improve performance (most likely to occur with build systems like Gradle or Bazel). Since {% data variables.product.prodname_codeql %} observes the activity of the compiler to understand the data flows in a repository, {% data variables.product.prodname_codeql %} requires a complete build to take place in order to perform analysis. -1. Your workflow is analyzing a compiled language (C, C++, C#, or Java), but compilation does not occur between the `init` and `analyze` steps in the workflow. {% data variables.product.prodname_codeql %} requires that your build happens in between these two steps in order to observe the activity of the compiler and perform analysis. -1. Your compiled code (in C, C++, C#, or Java) was compiled successfully, but {% data variables.product.prodname_codeql %} was unable to detect the compiler invocations. The most common causes are: - - * Running your build process in a separate container to {% data variables.product.prodname_codeql %}. For more information, see "[Running CodeQL code scanning in a container](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-a-container)." - * Building using a distributed build system external to GitHub Actions, using a daemon process. - * {% data variables.product.prodname_codeql %} isn't aware of the specific compiler you are using. - - For C# projects using either `dotnet build` or `msbuild` which target .NET Core 2, you should specify `/p:UseSharedCompilation=false` in your workflow's `run` step, when you build your code. The `UseSharedCompilation` flag isn't necessary for .NET Core 3.0 and later. - - For example, the following configuration for C# will pass the flag during the first build step. - - ``` yaml - - run: | - dotnet build /p:UseSharedCompilation=false - ``` - - If you encounter another problem with your specific compiler or configuration, contact {% data variables.contact.contact_support %}. - -For more information about specifying build steps, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." - -### Portions of my repository were not analyzed using `autobuild` - -The {% data variables.product.prodname_codeql %} `autobuild` feature uses heuristics to build the code in a repository, however, sometimes this approach results in incomplete analysis of a repository. For example, when multiple `build.sh` commands exist in a single repository, the analysis may not complete since the `autobuild` step will only execute one of the commands. The solution is to replace the `autobuild` step with build steps which build all of the source code which you wish to analyze. For more information, see "[Configuring the {% data variables.product.prodname_codeql %} workflow for compiled languages](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-the-codeql-workflow-for-compiled-languages#adding-build-steps-for-a-compiled-language)." - -### Error: "Server error" - -If the run of a workflow for {% data variables.product.prodname_code_scanning %} fails due to a server error, try running the workflow again. If the problem persists, contact {% data variables.contact.contact_support %}. - -### Error: "Out of disk" or "Out of memory" - -On very large projects, {% data variables.product.prodname_codeql %} may run out of disk or memory on the runner. -{% if currentVersion == "free-pro-team@latest" %}If you encounter this issue on a hosted {% data variables.product.prodname_actions %} runner, contact {% data variables.contact.contact_support %} so that we can investigate the problem. -{% else %}If you encounter this issue, try increasing the memory on the runner.{% endif %} - -### The build takes too long - -If your build with {% data variables.product.prodname_codeql %} analysis takes too long to run, there are several approaches you can try to reduce the build time. - -#### Increase the memory or cores - -If you use self-hosted runners to run {% data variables.product.prodname_codeql %} analysis, you can increase the memory or the number of cores on those runners. - -#### Use matrix builds to parallelize the analysis - -The default {% data variables.product.prodname_codeql_workflow %} uses a build matrix of languages, which causes the analysis of each language to run in parallel. If you have specified the languages you want to analyze directly in the "Initialize CodeQL" step, analysis of each language will happen sequentially. To speed up analysis of multiple languages, modify your workflow to use a matrix. For more information, see the workflow extract in "[Automatic build for a compiled language fails](#automatic-build-for-a-compiled-language-fails)" above. - -#### Reduce the amount of code being analyzed in a single workflow - -Analysis time is typically proportional to the amount of code being analyzed. You can reduce the analysis time by reducing the amount of code being analyzed at once, for example, by excluding test code, or breaking analysis into multiple workflows that analyze only a subset of your code at a time. - -For compiled languages like Java, C, C++, and C#, {% data variables.product.prodname_codeql %} analyzes all of the code which was built during the workflow run. To limit the amount of code being analyzed, build only the code which you wish to analyze by specifying your own build steps in a `run` block. You can combine specifying your own build steps with using the `paths` or `paths-ignore` filters on the `pull_request` and `push` events to ensure that your workflow only runs when specific code is changed. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths)." - -For interpreted languages like Go, JavaScript, Python, and TypeScript, that {% data variables.product.prodname_codeql %} analyzes without a specific build, you can specify additional configuration options to limit the amount of code to analyze. For more information, see "[Specifying directories to scan](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#specifying-directories-to-scan)." - -If you split your analysis into multiple workflows as described above, we still recommend that you have at least one workflow which runs on a `schedule` which analyzes all of the code in your repository. Because {% data variables.product.prodname_codeql %} analyzes data flows between components, some complex security behaviors may only be detected on a complete build. - -#### Run only during a `schedule` event - -If your analysis is still too slow to be run during `push` or `pull_request` events, then you may want to only trigger analysis on the `schedule` event. For more information, see "[Events](/actions/learn-github-actions/introduction-to-github-actions#events)." - -{% if currentVersion == "free-pro-team@latest" %} -### Results differ between analysis platforms - -If you are analyzing code written in Python, you may see different results depending on whether you run the {% data variables.product.prodname_codeql_workflow %} on Linux, macOS, or Windows. - -On GitHub-hosted runners that use Linux, the {% data variables.product.prodname_codeql_workflow %} tries to install and analyze Python dependencies, which could lead to more results. To disable the auto-install, add `setup-python-dependencies: false` to the "Initialize CodeQL" step of the workflow. For more information about configuring the analysis of Python dependencies, see "[Analyzing Python dependencies](/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#analyzing-python-dependencies)." - -{% endif %} diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md deleted file mode 100644 index 4b900eaf08fe..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: Uploading a SARIF file to GitHub -shortTitle: Uploading a SARIF file -intro: '{% data reusables.code-scanning.you-can-upload-third-party-analysis %}' -permissions: 'People with write permissions to a repository can upload {% data variables.product.prodname_code_scanning %} data generated outside {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.code-scanning %}' -redirect_from: - - /github/managing-security-vulnerabilities/uploading-a-code-scanning-analysis-to-github -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta %} -{% data reusables.code-scanning.enterprise-enable-code-scanning %} - -### About SARIF file uploads for {% data variables.product.prodname_code_scanning %} - -{% data variables.product.prodname_dotcom %} creates {% data variables.product.prodname_code_scanning %} alerts in a repository using information from Static Analysis Results Interchange Format (SARIF) files. SARIF files can be uploaded to a repository using the API or {% data variables.product.prodname_actions %}. For more information, see "[Managing {% data variables.product.prodname_code_scanning %} alerts for your repository](/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository)." - -You can generate SARIF files using many static analysis security testing tools, including {% data variables.product.prodname_codeql %}. The results must use SARIF version 2.1.0. For more information, see "[About SARIF support for {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/about-sarif-support-for-code-scanning)." - -You can upload the results using {% data variables.product.prodname_actions %}{% if currentVersion == "enterprise-server@2.22" %} (available if your organization is taking part in the beta program){% endif %}, the {% data variables.product.prodname_code_scanning %} API, or the {% data variables.product.prodname_codeql_runner %}. The best upload method will depend on how you generate the SARIF file, for example, if you use: - -- {% data variables.product.prodname_actions %} to run the {% data variables.product.prodname_codeql %} action, there is no further action required. The {% data variables.product.prodname_codeql %} action uploads the SARIF file automatically when it completes analysis. -- {% data variables.product.prodname_actions %} to run a SARIF-compatible analysis tool, you could update the workflow to include a final step that uploads the results (see below). -- The {% data variables.product.prodname_codeql_runner %}, to run {% data variables.product.prodname_code_scanning %} in your CI system, by default the runner automatically uploads results to {% data variables.product.prodname_dotcom %} on completion. If you block the automatic upload, when you are ready to upload results you can use the `upload` command (for more information, see "[Running {% data variables.product.prodname_code_scanning %} in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system)"). -- A tool that generates results as an artifact outside of your repository, you can use the {% data variables.product.prodname_code_scanning %} API to upload the file (for more information, see "[Upload a SARIF file](/rest/reference/code-scanning#upload-a-sarif-file)"). - -### Uploading a {% data variables.product.prodname_code_scanning %} analysis with {% data variables.product.prodname_actions %} - -To use {% data variables.product.prodname_actions %} to upload a third-party SARIF file to a repository, you'll need a workflow. For more information, see "[Learn {% data variables.product.prodname_actions %}](/actions/getting-started-with-github-actions/about-github-actions)" and "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -Your workflow will need to use the `upload-sarif` action, which is part of the `github/codeql-action` repository. It has input parameters that you can use to configure the upload. The main input parameter you'll use is `sarif-file`, which configures the file or directory of SARIF files to be uploaded. The directory or file path is relative to the root of the repository. For more information see the [`upload-sarif` action](https://github.com/github/codeql-action/tree/HEAD/upload-sarif). - -The `upload-sarif` action can be configured to run when the `push` and `scheduled` event occur. For more information about {% data variables.product.prodname_actions %} events, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." - -If your SARIF file doesn't include `partialFingerprints`, the `upload-sarif` action will calculate the `partialFingerprints` field for you and attempt to prevent duplicate alerts. {% data variables.product.prodname_dotcom %} can only create `partialFingerprints` when the repository contains both the SARIF file and the source code used in the static analysis. For more information about preventing duplicate alerts, see "[About SARIF support for code scanning](/github/finding-security-vulnerabilities-and-errors-in-your-code/about-sarif-support-for-code-scanning#preventing-duplicate-alerts-using-fingerprints)." - -#### Example workflow for SARIF files generated outside of a repository - -You can create a new workflow that uploads SARIF files after you commit them to your repository. This is useful when the SARIF file is generated as an artifact outside of your repository. - -This example workflow runs anytime commits are pushed to the repository. The action uses the `partialFingerprints` property to determine if changes have occurred. In addition to running when commits are pushed, the workflow is scheduled to run once per week. For more information, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." - -This workflow uploads the `results.sarif` file located in the root of the repository. For more information about creating a workflow file, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." - -Alternatively, you could modify this workflow to upload a directory of SARIF files. For example, you could place all SARIF files in a directory in the root of your repository called `sarif-output` and set the action's input parameter `sarif_file` to `sarif-output`. - -```yaml -name: "Upload SARIF" - -# Run workflow each time code is pushed to your repository and on a schedule. -# The scheduled workflow runs every at 00:00 on Sunday UTC time. -on: - push: - schedule: - - cron: '0 0 * * 0' - -jobs: - build: - runs-on: ubuntu-latest - steps: - # This step checks out a copy of your repository. - - name: Checkout repository - uses: actions/checkout@v2 - - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@v1 - with: - # Path to SARIF file relative to the root of the repository - sarif_file: results.sarif -``` - -#### Example workflow that runs the ESLint analysis tool - -If you generate your third-party SARIF file as part of a continuous integration (CI) workflow, you can add the `upload-sarif` action as a step after running your CI tests. If you don't already have a CI workflow, you can create one using a {% data variables.product.prodname_actions %} template. For more information, see the "[{% data variables.product.prodname_actions %} quickstart](/actions/quickstart)." - -This example workflow runs anytime commits are pushed to the repository. The action uses the `partialFingerprints` property to determine if changes have occurred. In addition to running when commits are pushed, the workflow is scheduled to run once per week. For more information, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." - -The workflow shows an example of running the ESLint static analysis tool as a step in a workflow. The `Run ESLint` step runs the ESLint tool and outputs the `results.sarif` file. The workflow then uploads the `results.sarif` file to {% data variables.product.prodname_dotcom %} using the `upload-sarif` action. For more information about creating a workflow file, see "[Introduction to GitHub Actions](/actions/learn-github-actions/introduction-to-github-actions)." - -```yml -name: "ESLint analysis" - -# Run workflow each time code is pushed to your repository and on a schedule. -# The scheduled workflow runs every at 00:00 on Sunday UTC time. -on: - push: - schedule: - - cron: '0 0 * * 0' - -jobs: - build: - steps: - - uses: actions/checkout@v2 - - name: Run npm install - run: npm install - # Runs the ESlint code analysis - - name: Run ESLint - # eslint exits 1 if it finds anything to report - run: node_modules/.bin/eslint build docs lib script spec-main -f node_modules/@microsoft/eslint-formatter-sarif/sarif.js -o results.sarif || true - # Uploads results.sarif to GitHub repository using the upload-sarif action - - uses: github/codeql-action/upload-sarif@v1 - with: - # Path to SARIF file relative to the root of the repository - sarif_file: results.sarif -``` - -### Further reading - -- "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions)" -- "[Viewing your workflow history](/actions/managing-workflow-runs/viewing-workflow-run-history)" -- "[Running {% data variables.product.prodname_code_scanning %} in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system)" -- "[Upload a SARIF file](/rest/reference/code-scanning#upload-a-sarif-file)" diff --git a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md b/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md deleted file mode 100644 index af71f4047d5b..000000000000 --- a/content/github/finding-security-vulnerabilities-and-errors-in-your-code/using-codeql-code-scanning-with-your-existing-ci-system.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Using CodeQL code scanning with your existing CI system -shortTitle: CodeQL CI system support -intro: 'The {% data variables.product.prodname_codeql_runner %} allows you to use your existing CI system to run {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %}.' -mapTopic: true -product: '{% data reusables.gated-features.code-scanning %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - diff --git a/content/github/finding-talent-with-github-jobs/about-github-jobs.md b/content/github/finding-talent-with-github-jobs/about-github-jobs.md deleted file mode 100644 index b828445961db..000000000000 --- a/content/github/finding-talent-with-github-jobs/about-github-jobs.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: About GitHub Jobs -redirect_from: - - /articles/how-to-write-a-great-job-post/ - - /articles/about-github-jobs -intro: 'You can post a job on {% data variables.product.prodname_jobs %} to find talent for your business.' -versions: - free-pro-team: '*' ---- - -Before you can post a job, you must create a {% data variables.product.prodname_dotcom %} account and verify your email address. For more information, see "[Signing up for a new {% data variables.product.prodname_dotcom %} account](/articles/signing-up-for-a-new-github-account)" and "[Verifying your email address](/articles/verifying-your-email-address)." - -### Best practices for writing a job post - -When you write a job post, make the job title as descriptive as possible. Try to mention the language or technologies the job requires. - -In the job description, include information about your company's culture and any benefits you offer. Describe the position in detail, including information about job responsibilities and the team the candidate will work with. List the main skills required for the job in order of importance. - -To help candidates find your job post, check **Hot Searches** on the bottom of the main page. If any of these categories apply to your open position, include them in your job description. - -![Hot Searches section of {% data variables.product.prodname_dotcom %}](/assets/images/help/jobs/hot-searches.png) - -{% tip %} - -**Tip:** {% data variables.product.prodname_dotcom %} does not track views of your job post or click-throughs. If you want to track click-throughs, you can add tracking parameters to the URL you include in the **How to Apply** field. For more information, see Google's "[URL parameters](https://support.google.com/google-ads/answer/6277564?hl=en)." - -{% endtip %} - -### Formatting your job post - -You can use markdown to format your job post. For more information, see "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax)." - -### Further reading - -- [How {% data variables.product.prodname_jobs %} works](https://jobs.github.com/faq) on {% data variables.product.prodname_jobs %} diff --git a/content/github/finding-talent-with-github-jobs/index.md b/content/github/finding-talent-with-github-jobs/index.md deleted file mode 100644 index 2ac9ca9b92c6..000000000000 --- a/content/github/finding-talent-with-github-jobs/index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Finding talent with GitHub Jobs -redirect_from: - - /categories/72/articles/ - - /categories/jobs/ - - /categories/finding-talent-with-github-jobs -versions: - free-pro-team: '*' ---- - - -### Table of Contents - -{% link_in_list /about-github-jobs %} diff --git a/content/github/getting-started-with-github/access-permissions-on-github.md b/content/github/getting-started-with-github/access-permissions-on-github.md deleted file mode 100644 index 614cda294151..000000000000 --- a/content/github/getting-started-with-github/access-permissions-on-github.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Access permissions on GitHub -redirect_from: - - /articles/needs-to-be-written-what-can-the-different-types-of-org-team-permissions-do/ - - /articles/what-are-the-different-types-of-team-permissions/ - - /articles/what-are-the-different-access-permissions/ - - /articles/access-permissions-on-github -intro: 'While you can grant read/write access to collaborators on a personal repository, members of an organization can have more granular access permissions for the organization''s repositories.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Personal user accounts - -A repository owned by a user account has two permission levels: the *repository owner* and *collaborators*. For more information, see "[Permission levels for a user account repository](/articles/permission-levels-for-a-user-account-repository)." - -### Organization accounts - -Organization members can have *owner*{% if currentVersion == "free-pro-team@latest" %}, *billing manager*,{% endif %} or *member* roles. Owners have complete administrative access to your organization{% if currentVersion == "free-pro-team@latest" %}, while billing managers can manage billing settings{% endif %}. Member is the default role for everyone else. You can manage access permissions for multiple members at a time with teams. For more information, see: -- "[Permission levels for an organization](/articles/permission-levels-for-an-organization)" -- "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)" -- "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)" -- "[About teams](/articles/about-teams)" - -{% if currentVersion == "free-pro-team@latest" %} - -### Enterprise accounts - -*Enterprise owners* have ultimate power over the enterprise account and can take every action in the enterprise account. *Billing managers* can manage your enterprise account's billing settings. Members and outside collaborators of organizations owned by your enterprise account are automatically members of the enterprise account, although they have no access to the enterprise account itself or its settings. For more information, see "[Roles for an enterprise account](/articles/roles-for-an-enterprise-account)." - -{% data reusables.gated-features.enterprise-accounts %} - -{% endif %} - -### Further reading - -- "[Types of {% data variables.product.prodname_dotcom %} accounts](/articles/types-of-github-accounts)" diff --git a/content/github/getting-started-with-github/be-social.md b/content/github/getting-started-with-github/be-social.md deleted file mode 100644 index 4ec38ef2713e..000000000000 --- a/content/github/getting-started-with-github/be-social.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Be social -redirect_from: - - /be-social/ - - /articles/be-social -intro: 'You can interact with people, repositories, and organizations on {% data variables.product.prodname_dotcom %}. See what others are working on and who they''re connecting with from your personal dashboard.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -To learn about accessing your personal dashboard, see "[About your personal dashboard](/articles/about-your-personal-dashboard)." - -### Following people - -When you follow someone on {% data variables.product.product_location %}, you'll get notifications on your personal dashboard about their activity. For more information, see "[About your personal dashboard](/articles/about-your-personal-dashboard)." - -Click **Follow** on a person's profile page to follow them. - -![Follow user button](/assets/images/help/profile/follow-user-button.png) - -### Watching a repository - -You can watch a repository to receive notifications for new pull requests and issues. When the owner updates the repository, you'll see the changes in your personal dashboard. For more information see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}"[Viewing your subscriptions](/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions){% else %}"[Watching and unwatching repositories](/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories){% endif %}." - -Click **Watch** at the top of a repository to watch it. - -![Watch repository button](/assets/images/help/repository/repo-actions-watch.png) - -### Joining the conversation - -{% data reusables.support.ask-and-answer-forum %} - -### Doing even more - -#### Creating pull requests - - You may want to contribute to another person's project, whether to add features or to fix bugs. After making changes, let the original author know by sending a pull request. For more information, see "[About pull requests](/articles/about-pull-requests)." - - ![Pull request button](/assets/images/help/repository/repo-actions-pullrequest.png) - -#### Using issues - -When collaborating on a repository, use issues to track ideas, enhancements, tasks, or bugs. For more information, see '[About issues](/articles/about-issues/)." - -![Issues button](/assets/images/help/repository/repo-tabs-issues.png) - -#### Participating in organizations - -Organizations are shared accounts where businesses and open-source projects can collaborate across many projects at once. Owners and administrators can establish teams with special permissions, have a public organization profile, and keep track of activity within the organization. For more information, see "[About organizations](/articles/about-organizations/)." - -![Switch account context dropdown](/assets/images/help/overview/dashboard-contextswitcher.png) - -#### Exploring other projects on {% data variables.product.prodname_dotcom %} - -Discover interesting projects using {% data variables.explore.explore_github %}, [Explore repositories](https://github.com/explore), and the {% data variables.explore.trending_page %}. Star interesting projects and come back to them later. Visit your {% data variables.explore.your_stars_page %} to see all your starred projects. For more information, see "[About your personal dashboard](/articles/about-your-personal-dashboard/)." - -### Celebrate - -You're now connected to the {% data variables.product.product_name %} community. What do you want to do next? - -![Star a project](/assets/images/help/stars/star-a-project.png) - -- [Set up Git](/articles/set-up-git) -- [Create a repository](/articles/create-a-repo) -- [Fork a repository](/articles/fork-a-repo) -- **Be social** -- {% data reusables.support.connect-in-the-forum-bootcamp %} diff --git a/content/github/getting-started-with-github/create-a-repo.md b/content/github/getting-started-with-github/create-a-repo.md deleted file mode 100644 index 086e99f8d784..000000000000 --- a/content/github/getting-started-with-github/create-a-repo.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Create a repo -redirect_from: - - /create-a-repo/ - - /articles/create-a-repo -intro: 'To put your project up on {% data variables.product.product_location %}, you''ll need to create a repository for it to live in.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can store a variety of projects in {% data variables.product.product_name %} repositories, including open source projects. With [open source projects](http://opensource.org/about), you can share code to make better, more reliable software. - -{% note %} - -**Note:** You can create public repositories for an open source project. When creating your public repository, make sure to include a [license file](http://choosealicense.com/) that determines how you want your project to be shared with others. {% data reusables.open-source.open-source-guide-repositories %} {% data reusables.open-source.open-source-learning-lab %} - -{% endnote %} - -{% data reusables.repositories.create_new %} -2. Type a short, memorable name for your repository. For example, "hello-world". - ![Field for entering a repository name](/assets/images/help/repository/create-repository-name.png) -3. Optionally, add a description of your repository. For example, "My first repository on {% data variables.product.product_name %}." - ![Field for entering a repository description](/assets/images/help/repository/create-repository-desc.png) -{% data reusables.repositories.choose-repo-visibility %} -{% data reusables.repositories.initialize-with-readme %} -{% data reusables.repositories.create-repo %} - -Congratulations! You've successfully created your first repository, and initialized it with a *README* file. - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -{% tip %} - -**Tip**: You can also create repositories using the {% data variables.product.prodname_cli %}. For more information, see "[`gh repo create`](https://cli.github.com/manual/gh_repo_create)" in the {% data variables.product.prodname_cli %} documentation. - -{% endtip %} -{% endif %} - -### Commit your first change - -A *[commit](/articles/github-glossary#commit)* is like a snapshot of all the files in your project at a particular point in time. - -When you created your new repository, you initialized it with a *README* file. *README* files are a great place to describe your project in more detail, or add some documentation such as how to install or use your project. The contents of your *README* file are automatically shown on the front page of your repository. - -Let's commit a change to the *README* file. - -1. In your repository's list of files, click ***README.md***. - ![Readme file in file list](/assets/images/help/repository/create-commit-open-readme.png) -2. Above the file's content, click {% octicon "pencil" aria-label="The edit icon" %}. -3. On the **Edit file** tab, type some information about yourself. - ![New content in file](/assets/images/help/repository/edit-readme-light.png) -{% data reusables.files.preview_change %} -5. Review the changes you made to the file. You'll see the new content in green. - ![File preview view](/assets/images/help/repository/create-commit-review.png) -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_file_change %} - -### Celebrate - -Congratulations! You have now created a repository, including a *README* file, and created your first commit on {% data variables.product.product_location %}. What do you want to do next? - -- "[Set up Git](/articles/set-up-git)" -- **Create a repository** -- "[Fork a repository](/articles/fork-a-repo)" -- "[Be social](/articles/be-social)" -- {% data reusables.support.connect-in-the-forum-bootcamp %} diff --git a/content/github/getting-started-with-github/exploring-early-access-releases-with-feature-preview.md b/content/github/getting-started-with-github/exploring-early-access-releases-with-feature-preview.md deleted file mode 100644 index eecc80f816ed..000000000000 --- a/content/github/getting-started-with-github/exploring-early-access-releases-with-feature-preview.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Exploring early access releases with feature preview -intro: You can use feature preview to see products or features that are available in beta and to enable or disable each feature for your user account. -redirect_from: - - /articles/exploring-early-access-releases-with-feature-preview -versions: - free-pro-team: '*' ---- - -### {% data variables.product.prodname_dotcom %}'s release cycle - -{% data variables.product.product_name %}'s products and features can go through multiple release phases. - -| Phase | Description | -|-------|-------------| -| Alpha | The product or feature is under heavy development and often has changing requirements and scope. The feature is available for demonstration and test purposes but may not be documented. Alpha releases are not necessarily feature complete, no service level agreements (SLAs) are provided, and there are no technical support obligations. | -| Beta | The product or feature is ready for broader distribution. Beta releases can be public or private, are documented, but do not have any SLAs or technical support obligations. | -| General availability (GA) | The product or feature is fully tested and open publicly to all users. GA releases are ready for production use, and associated SLA and technical support obligations apply. | - -### Exploring beta releases with feature preview - -You can see a list of features that are available in beta and a brief description for each feature. Each feature includes a link to give feedback. - -1. In the upper-right corner of any page, click your profile photo, then click **Feature preview**. - ![Feature preview button](/assets/images/help/settings/feature-preview-button.png) -2. Optionally, to the right of a feature, click **Enable** or **Disable**. - ![Enable button in feature preview](/assets/images/help/settings/enable-feature-button.png) diff --git a/content/github/getting-started-with-github/exploring-projects-on-github.md b/content/github/getting-started-with-github/exploring-projects-on-github.md deleted file mode 100644 index 0b272a1e6114..000000000000 --- a/content/github/getting-started-with-github/exploring-projects-on-github.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Exploring projects on GitHub -intro: '' -mapTopic: true -redirect_from: - - /categories/stars/ - - /categories/87/articles/ - - /categories/exploring-projects-on-github/ - - /articles/exploring-projects-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/getting-started-with-github/faq-about-changes-to-githubs-plans.md b/content/github/getting-started-with-github/faq-about-changes-to-githubs-plans.md deleted file mode 100644 index 6d85fbd4f0d8..000000000000 --- a/content/github/getting-started-with-github/faq-about-changes-to-githubs-plans.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: FAQ about changes to GitHub’s plans -intro: 'As of April 14, 2020, GitHub announced that all of the core GitHub features are now free for everyone.' -versions: - free-pro-team: '*' ---- - -### What plans and pricing changes did GitHub announce on April 14? - -GitHub announced the following plans and pricing changes: - -- GitHub Free for organizations is immediately available and includes private repositories for unlimited users -- All organizations previously using Team for Open Source now have GitHub Free -- GitHub Free for individual developers now includes unlimited collaborators -- Organizations and individuals using GitHub Free will receive GitHub Community Support -- GitHub Pro will now include 2GB of Packages storage and 10GB of data transfer -- GitHub Pro now has a reduced monthly price of $4 -- GitHub Team now has a reduced monthly price of $4 per user -- GitHub Team no longer has a required five-seat minimum -- GitHub Team includes 3,000 Actions minutes per month for private repositories - -### How can I upgrade my plan? - -To upgrade your user account's plan, see "[Upgrading your personal account's subscription](/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-your-github-subscription#upgrading-your-personal-accounts-subscription)." To upgrade your organization's plan, see "[Upgrading your organization's subscription](/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-your-github-subscription#upgrading-your-organizations-subscription)." - -### How can I downgrade my plan? - -To downgrade your user account's plan, see "[Downgrading your user account's subscription](/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-your-github-subscription#downgrading-your-user-accounts-subscription)." To downgrade your organization's plan, see "[Downgrading your organization's subscription](/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-your-github-subscription#downgrading-your-organizations-subscription)." - -### If I downgrade from GitHub Team or a Legacy plan to GitHub Free, what features will I lose? -- Required reviewers in private repositories -- Protected branches in private repositories -- Code owners in private repositories -- GitHub Pages in private repositories -- Wikis in private repositories -- Multiple assignees for issues and pull requests in private repositories -- Multiple pull request reviewers in private repositories -- Draft pull requests in private repositories -- Autolinked references in private repositories -- Standard support - -### How can I create a GitHub Free or GitHub Team organization? - -If you have a GitHub account, create a new organization on our [team plan page](https://github.com/organizations/plan). If you don’t have a GitHub account, you can [create one on our homepage](https://github.com/) and you’ll be prompted to create an organization during the sign-up process. - -### How can I compare which features are in each plan? - -You can see pricing and a full list of features for each product at <{% data variables.product.pricing_url %}>. - -### How long will GitHub Free allow unlimited collaborators? - -Forever! This change is permanent. - -### I already paid for the yearly Pro or Team plan, do I get a refund for the price difference? - -Customers who are currently paying annually for Pro and Team plans and signed up before April 14 will receive a refund for a prorated amount through the end of their annual billing term. For example, if you are two months into your subscription that is billed annually, you will receive a refund for the price difference for the remaining ten months. These refunds will be processed in approximately 30 days. Once your refund is processed, a notification will be sent to the billing email. - -### What is the difference between GitHub Free for individual developers and GitHub Free for organizations? - -For details on the differences for each GitHub Free product, see "[{% data variables.product.prodname_dotcom %}'s products](/articles/github-s-products)." - -### How can I get more Actions minutes if I need more than allocated in the GitHub Team plan? - -Most small teams use fewer than 3,000 Actions minutes/month, but some teams might use more. If your team needs additional minutes for private repositories, you can increase your spending limit for GitHub Actions. Actions minutes and Packages storage are still free for your public repositories. For more information, see "[Managing your spending limit for GitHub Actions](/github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-actions)." - -### How do the seat limit changes affect me? - -Now that {% data variables.product.prodname_team %} has no minimum seat requirement, if you are using fewer than five seats in your organization, you can remove paid seats to reduce your bill. For more information, see "[Downgrading your {% data variables.product.prodname_dotcom %} subscription](/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-your-github-subscription#removing-paid-seats-from-your-organization)." - -### Is anything changing for teams on the GitHub Team for Open Source plan? - -If your organization account currently uses the GitHub Team for Open Source plan, you’ve been automatically moved to GitHub Free, which includes private repositories with unlimited collaborators, 2,000 Actions minutes for private repositories, and GitHub Community Support. Actions minutes and Packages storage are still free for your public repositories. - -### What is GitHub Community Support? - -GitHub Community Support includes support through our [Community Forum](https://github.community/), where you can browse solutions from the GitHub community, ask new questions, and share ideas. GitHub Community Support is staffed by Support Engineers on the GitHub Team, who moderate the Community Forum along with our most active community members. If you need to report spam, report abuse, or have issues with account access, you can send a message to our Support Team on https://support.github.com/. - -### How does this change affect education benefits? - -Students and teachers will continue to receive all of the benefits they get today. GitHub will continue to offer GitHub Pro as part of its [Student Developer Pack](https://education.github.com/pack) benefits to all students. Additionally, teachers will continue to have access to GitHub Team as part of the [Teacher Toolbox](https://education.github.com/toolbox). - -### How does this affect me if I currently pay by invoice? - -If you’re currently an invoice customer, email your sales representative for additional details. If you’re not sure who your sales representative is, contact your billing manager or account owner. - -### How will this impact users and organizations in regions where U.S. government sanctions are applied? - -Due to U.S. trade controls law restrictions, GitHub is unable to provide private repository services and paid services to accounts in U.S. sanctioned regions. GitHub has preserved, however, access to free public repository services. Please read about [GitHub and Trade Controls](/github/site-policy/github-and-trade-controls) for more information. - -GitHub will continue advocating with U.S. regulators for the greatest possible access to free code collaboration services to developers in sanctioned regions, including free private repositories. We believe that offering those free services supports U.S. foreign policy of encouraging the free flow of information and free speech in those regions. diff --git a/content/github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github.md b/content/github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github.md deleted file mode 100644 index a609dda17d90..000000000000 --- a/content/github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Finding ways to contribute to open source on GitHub -intro: 'You can find ways to contribute to open source projects on {% data variables.product.product_name %} that are relevant to you.' -redirect_from: - - /articles/where-can-i-find-open-source-projects-to-work-on/ - - /articles/finding-interesting-projects-on-github/ - - /articles/about-official-github-mirrors/ - - /articles/about-github-mirrors/ - - /articles/finding-open-source-projects-on-github - - /github/getting-started-with-github/finding-open-source-projects-on-github -versions: - free-pro-team: '*' ---- - -### Discovering relevant projects - -If there's a particular topic that interests you, visit `github.com/topics/`. For example, if you are interested in machine learning, you can find relevant projects and good first issues by visiting https://github.com/topics/machine-learning. You can browse popular topics by visiting [Topics](https://github.com/topics). You can also search for repositories that match a topic you're interested in. For more information, see "[Searching for repositories](/articles/searching-for-repositories#search-by-topic)." - -If you've been active on {% data variables.product.product_name %}, you can find personalized recommendations for projects and good first issues based on your past contributions, stars, and other activities in [Explore](https://github.com/explore). You can also sign up for the Explore newsletter to receive emails about opportunities to contribute to {% data variables.product.product_name %} based on your interests. To sign up, see [Explore email newsletter](https://github.com/explore/subscribe). - -Keep up with recent activity from repositories you watch and people you follow in the "All activity" section of your personal dashboard. For more information, see "[About your personal dashboard](/articles/about-your-personal-dashboard)." - -{% data reusables.support.ask-and-answer-forum %} - -### Finding good first issues - -If you already know what project you want to work on, you can find beginner-friendly issues in that repository by visiting `github.com///contribute`. For an example, you can find ways to make your first contribution to `electron/electron` at https://github.com/electron/electron/contribute. - -### Open source projects with mirrors on {% data variables.product.prodname_dotcom %} - -Some open-source projects provide mirrors on {% data variables.product.prodname_dotcom_the_website %} in addition to their official repositories, which are hosted elsewhere. - -Here are a few prominent repositories that are mirrored on {% data variables.product.prodname_dotcom_the_website %}: - -- [android](https://github.com/android) -- [The Apache Software Foundation](https://github.com/apache) -- [The Chromium Project](https://github.com/chromium) -- [The Eclipse Foundation](https://github.com/eclipse) -- [The FreeBSD Project](https://github.com/freebsd) -- [The Glasgow Haskell Compiler](https://github.com/ghc) -- [GNOME](https://github.com/GNOME) -- [The Linux kernel source tree](https://github.com/torvalds/linux) -- [Qt](https://github.com/qt) - -To set up your own mirror, you can configure [a post-receive hook](https://git-scm.com/book/en/Customizing-Git-Git-Hooks) on your official project repository to automatically push commits to a mirror repository on {% data variables.product.product_name %}. - -You can search repositories based on whether they're a mirror. To learn more, see "[Searching for repositories](/articles/searching-for-repositories/#search-based-on-whether-a-repository-is-a-mirror)." - -### Further reading - -- "[Classifying your repository with topics](/articles/classifying-your-repository-with-topics)" -- "[About your organization dashboard](/articles/about-your-organization-dashboard)" diff --git a/content/github/getting-started-with-github/following-people.md b/content/github/getting-started-with-github/following-people.md deleted file mode 100644 index a1c615b7cb2e..000000000000 --- a/content/github/getting-started-with-github/following-people.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Following people -intro: 'You can follow people on {% data variables.product.product_name %} to receive notifications about their activity{% if currentVersion == "free-pro-team@latest" %} and discover projects in their communities{% endif %}.' -redirect_from: - - /articles/following-people -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When you follow people, you'll see their public activity in the activity view of your news feed.{% if currentVersion == "free-pro-team@latest" %} If someone you follow stars a public repository, {% data variables.product.product_name %} may recommend the repository to you in the discovery view of your news feed.{% endif %} To follow someone, visit their profile page and click **Follow** under their profile image. - -![Follow user button](/assets/images/help/profile/follow-user-button.png) - -To stop following someone, visit their profile page and click **Unfollow** under their profile image. - -{% if currentVersion == "free-pro-team@latest" %} -### Further reading - -- "[Saving repositories with stars](/articles/saving-repositories-with-stars/)" -- "[Finding ways to contribute to open source on {% data variables.product.prodname_dotcom %}](/github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github)" -{% endif %} diff --git a/content/github/getting-started-with-github/fork-a-repo.md b/content/github/getting-started-with-github/fork-a-repo.md deleted file mode 100644 index 6078dec82df8..000000000000 --- a/content/github/getting-started-with-github/fork-a-repo.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Fork a repo -redirect_from: - - /fork-a-repo/ - - /forking/ - - /articles/fork-a-repo -intro: A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Most commonly, forks are used to either propose changes to someone else's project or to use someone else's project as a starting point for your own idea. - -#### Propose changes to someone else's project - -For example, you can use forks to propose changes related to fixing a bug. Rather than logging an issue for a bug you've found, you can: - -- Fork the repository. -- Make the fix. -- Submit a pull request to the project owner. - -#### Use someone else's project as a starting point for your own idea. - -Open source software is based on the idea that by sharing code, we can make better, more reliable software. For more information, see the "[About the Open Source Initiative](http://opensource.org/about)" on the Open Source Initiative. - -When creating your public repository from a fork of someone's project, make sure to include a license file that determines how you want your project to be shared with others. For more information, see "[Choose an open source license](http://choosealicense.com/)" at choosealicense. - -{% data reusables.open-source.open-source-guide-repositories %} {% data reusables.open-source.open-source-learning-lab %} - -{% note %} - -**Note**: {% data reusables.repositories.desktop-fork %} - -{% endnote %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -{% tip %} - -**Tip**: You can also fork a repository using the {% data variables.product.prodname_cli %}. For more information, see "[`gh repo fork`](https://cli.github.com/manual/gh_repo_fork)" in the {% data variables.product.prodname_cli %} documentation. - -{% endtip %} -{% endif %} - -### Fork an example repository - -Forking a repository is a simple two-step process. We've created a repository for you to practice with. - -1. On {% data variables.product.product_location %}, navigate to the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. -2. In the top-right corner of the page, click **Fork**. -![Fork button](/assets/images/help/repository/fork_button.jpg) - -### Keep your fork synced - -You might fork a project to propose changes to the upstream, or original, repository. In this case, it's good practice to regularly sync your fork with the upstream repository. To do this, you'll need to use Git on the command line. You can practice setting the upstream repository using the same [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository you just forked. - -#### Step 1: Set up Git - -If you haven't yet, you should first [set up Git](/articles/set-up-git). Don't forget to [set up authentication to {% data variables.product.product_location %} from Git](/articles/set-up-git#next-steps-authenticating-with-github-from-git) as well. - -#### Step 2: Create a local clone of your fork - -Right now, you have a fork of the Spoon-Knife repository, but you don't have the files in that repository on your computer. Let's create a clone of your fork locally on your computer. - -1. On {% data variables.product.product_name %}, navigate to **your fork** of the Spoon-Knife repository. -{% data reusables.repositories.copy-clone-url %} -{% data reusables.command_line.open_the_multi_os_terminal %} -{% data reusables.command_line.change-current-directory-clone %} -4. Type `git clone`, and then paste the URL you copied earlier. It will look like this, with your {% data variables.product.product_name %} username instead of `YOUR-USERNAME`: - ```shell - $ git clone https://{% data variables.command_line.codeblock %}/YOUR-USERNAME/Spoon-Knife - ``` - -5. Press **Enter**. Your local clone will be created. - ```shell - $ git clone https://{% data variables.command_line.codeblock %}/YOUR-USERNAME/Spoon-Knife - > Cloning into `Spoon-Knife`... - > remote: Counting objects: 10, done. - > remote: Compressing objects: 100% (8/8), done. - > remove: Total 10 (delta 1), reused 10 (delta 1) - > Unpacking objects: 100% (10/10), done. - ``` - -Now, you have a local copy of your fork of the Spoon-Knife repository. - -#### Step 3: Configure Git to sync your fork with the original Spoon-Knife repository - -When you fork a project in order to propose changes to the original repository, you can configure Git to pull changes from the original, or upstream, repository into the local clone of your fork. - -1. On {% data variables.product.product_name %}, navigate to the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. -{% data reusables.repositories.copy-clone-url %} -{% data reusables.command_line.open_the_multi_os_terminal %} -4. Change directories to the location of the fork you cloned in [Step 2: Create a local clone of your fork](#step-2-create-a-local-clone-of-your-fork). - - To go to your home directory, type just `cd` with no other text. - - To list the files and folders in your current directory, type `ls`. - - To go into one of your listed directories, type `cd your_listed_directory`. - - To go up one directory, type `cd ..`. -5. Type `git remote -v` and press **Enter**. You'll see the current configured remote repository for your fork. - ```shell - $ git remote -v - > origin https://{% data variables.command_line.codeblock %}/YOUR_USERNAME/YOUR_FORK.git (fetch) - > origin https://{% data variables.command_line.codeblock %}/YOUR_USERNAME/YOUR_FORK.git (push) - ``` - -6. Type `git remote add upstream`, and then paste the URL you copied in Step 2 and press **Enter**. It will look like this: - ```shell - $ git remote add upstream https://{% data variables.command_line.codeblock %}/octocat/Spoon-Knife.git - ``` - -7. To verify the new upstream repository you've specified for your fork, type `git remote -v` again. You should see the URL for your fork as `origin`, and the URL for the original repository as `upstream`. - ```shell - $ git remote -v - > origin https://{% data variables.command_line.codeblock %}/YOUR_USERNAME/YOUR_FORK.git (fetch) - > origin https://{% data variables.command_line.codeblock %}/YOUR_USERNAME/YOUR_FORK.git (push) - > upstream https://{% data variables.command_line.codeblock %}/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch) - > upstream https://{% data variables.command_line.codeblock %}/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push) - ``` - -Now, you can keep your fork synced with the upstream repository with a few Git commands. For more information, see "[Syncing a fork](/articles/syncing-a-fork)." - -#### Next steps - -You can make any changes to a fork, including: - -- **Creating branches:** [*Branches*](/articles/creating-and-deleting-branches-within-your-repository/) allow you to build new features or test out ideas without putting your main project at risk. -- **Opening pull requests:** If you are hoping to contribute back to the original repository, you can send a request to the original author to pull your fork into their repository by submitting a [pull request](/articles/about-pull-requests). - -### Find another repository to fork - -Fork a repository to start contributing to a project. {% data reusables.repositories.you-can-fork %} - -{% if currentVersion == "free-pro-team@latest" %}You can browse [Explore](https://github.com/explore) to find projects and start contributing to open source repositories. For more information, see "[Finding ways to contribute to open source on {% data variables.product.prodname_dotcom %}](/github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github)." - -{% endif %} - -### Celebrate - -You have now forked a repository, practiced cloning your fork, and configured an upstream repository. What do you want to do next? - -- "[Set up Git](/articles/set-up-git)" -- "[Create a repository](/articles/create-a-repo)" -- "[Be social](/articles/be-social)" -- {% data reusables.support.connect-in-the-forum-bootcamp %} diff --git a/content/github/getting-started-with-github/git-and-github-learning-resources.md b/content/github/getting-started-with-github/git-and-github-learning-resources.md deleted file mode 100644 index cadc22c5b34f..000000000000 --- a/content/github/getting-started-with-github/git-and-github-learning-resources.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Git and GitHub learning resources -redirect_from: - - /articles/good-resources-for-learning-git-and-github/ - - /articles/what-are-other-good-resources-for-learning-git-and-github/ - - /articles/git-and-github-learning-resources -intro: 'There are a lot of helpful Git and {% data variables.product.product_name %} resources on the web. This is a short list of our favorites!' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Using Git - -Familiarize yourself with Git by visiting the [official Git project site](https://git-scm.com) and reading the [ProGit ebook](http://git-scm.com/book). You can review the [Git command list](https://git-scm.com/docs) or [Git command lookup reference](http://gitref.org) while using the [Try Git](https://try.github.com) simulator. - -### Using {% data variables.product.product_name %} - -{% if currentVersion == "free-pro-team@latest" %} - -{% data variables.product.prodname_learning %} offers free interactive courses that are built into {% data variables.product.prodname_dotcom %} with instant automated feedback and help. Learn to open your first pull request, make your first open source contribution, create a {% data variables.product.prodname_pages %} site, and more. For more information about course offerings, see [{% data variables.product.prodname_learning %}]({% data variables.product.prodname_learning_link %}). - -{% endif %} - -Become better acquainted with {% data variables.product.product_name %} through our [bootcamp](/categories/bootcamp/) articles. See our [{% data variables.product.prodname_dotcom %} flow](https://guides.github.com/introduction/flow) for a process introduction. Refer to our [overview guides](https://guides.github.com) to walk through basic concepts. - -{% data reusables.support.ask-and-answer-forum %} - -#### Branches, forks, and pull requests - -Learn about [Git branching](http://learngitbranching.js.org/) using an interactive tool. Read about [forks](/articles/about-forks) and [pull requests](/articles/using-pull-requests) as well as [how we use pull requests](https://github.com/blog/1124-how-we-use-pull-requests-to-build-github) at {% data variables.product.prodname_dotcom %}. - -Access quick references about the [command line](https://hub.github.com) as well as {% data variables.product.prodname_dotcom %} [checklists, cheat sheets, and more](https://services.github.com/on-demand/resources). - -#### Tune in - -Our {% data variables.product.prodname_dotcom %} [YouTube Training and Guides channel](https://youtube.com/githubguides) offers tutorials about [pull requests](https://www.youtube.com/watch?v=d5wpJ5VimSU&list=PLg7s6cbtAD15G8lNyoaYDuKZSKyJrgwB-&index=19), [forking](https://www.youtube.com/watch?v=5oJHRbqEofs), [rebase](https://www.youtube.com/watch?v=SxzjZtJwOgo&list=PLg7s6cbtAD15G8lNyoaYDuKZSKyJrgwB-&index=22), and [reset](https://www.youtube.com/watch?v=BKPjPMVB81g) functions. Each topic is covered in 5 minutes or less. - -### Training - -#### Free classes - -{% data variables.product.product_name %} offers a series of interactive, [on-demand training courses](https://services.github.com/on-demand/) including {% data variables.product.prodname_dotcom %} 101: [Introduction](https://services.github.com/on-demand/intro-to-github/), {% data variables.product.prodname_dotcom %} 102: [GitHub Desktop](https://services.github.com/on-demand/github-desktop), and {% data variables.product.prodname_dotcom %} 103: [Command Line](https://services.github.com/on-demand/github-cli). - -#### {% data variables.product.prodname_dotcom %}'s web-based educational programs - -{% data variables.product.prodname_dotcom %} offers live [trainings](https://services.github.com/#upcoming-events) with a hands-on, project-based approach for those who love the command line and those who don't. - -#### Training for your company - -{% data variables.product.prodname_dotcom %} offers [in-person classes](https://services.github.com/#offerings) taught by our highly-experienced educators. [Contact us](https://services.github.com/#contact) to ask your training-related questions. - -### Extras - -An interactive [online Git course](http://www.codeschool.com/courses/git-real) from [Code School](http://codeschool.com) has seven levels with dozens of exercises in a fun game format. Feel free to adapt our [.gitignore templates](https://github.com/github/gitignore) to meet your needs. - -Extend your {% data variables.product.prodname_dotcom %} reach through {% if currentVersion == "free-pro-team@latest" %}[integrations](/articles/about-integrations){% else %}integrations{% endif %}, or by installing [{% data variables.product.prodname_desktop %}](https://desktop.github.com) and the robust [Atom](https://atom.io) text editor. - -Learn how to launch and grow your open source project with the [Open Source Guides](https://opensource.guide/). diff --git a/content/github/getting-started-with-github/git-cheatsheet.md b/content/github/getting-started-with-github/git-cheatsheet.md deleted file mode 100644 index 003ca4688b9b..000000000000 --- a/content/github/getting-started-with-github/git-cheatsheet.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Git cheatsheet -redirect_from: - - /articles/git-cheatsheet -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -Learning all available Git commands at once can be a daunting task. Keep one of our [Git Cheat Sheets](https://services.github.com/on-demand/resources/cheatsheets/) nearby for reference. The Using Git Cheat Sheet is available in several languages. For more information, see the [resources page on the GitHub Services website](https://services.github.com/on-demand/resources/). - -In addition, take a look at our [Git and GitHub learning resources](/articles/git-and-github-learning-resources/) page that links to guides, videos and more. diff --git a/content/github/getting-started-with-github/github-cli.md b/content/github/getting-started-with-github/github-cli.md deleted file mode 100644 index a436208618e1..000000000000 --- a/content/github/getting-started-with-github/github-cli.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: GitHub CLI -intro: 'The {% data variables.product.prodname_cli %} is a command-line tool for using {% data variables.product.product_name %} features on your computer.' -versions: - free-pro-team: '*' - enterprise-server: '>2.19' ---- - -### About {% data variables.product.prodname_cli %} - -{% data variables.product.prodname_cli %} is an open source tool for using {% data variables.product.product_name %} from your computer's command line. When you're working from the command line, you can use the {% data variables.product.prodname_cli %} to save time and avoid switching context. - -You can use the following {% data variables.product.prodname_dotcom %} features with the {% data variables.product.prodname_cli %}. - -- View, create, clone, and fork repositories -- Create, close, and list issues and pull requests -- Review, diff, and merge pull requests -- Create, edit, list, and view gists - -For more information about what you can do with {% data variables.product.prodname_cli %}, see the [{% data variables.product.prodname_cli %} manual](https://cli.github.com/manual). - -### Installing {% data variables.product.prodname_cli %} - -View installation instructions {% data variables.product.prodname_cli %} for macOS, Windows, and Linux on the [{% data variables.product.prodname_cli %} page](https://cli.github.com). - -### Sharing feedback - -If you have feedback or feature requests, you can open an issue in the [`cli/cli` repository](https://github.com/cli/cli). diff --git a/content/github/getting-started-with-github/github-desktop.md b/content/github/getting-started-with-github/github-desktop.md deleted file mode 100644 index 30e8b10acf6e..000000000000 --- a/content/github/getting-started-with-github/github-desktop.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: GitHub Desktop -intro: '{% data variables.product.prodname_desktop %} extends and simplifies your Git and {% data variables.product.prodname_dotcom %} workflow using a visual interface.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About {% data variables.product.prodname_desktop %} - -{% data reusables.desktop.about-github-desktop %} - -For more information about {% data variables.product.prodname_desktop %}, see "[Installing and configuring {% data variables.product.prodname_desktop %}](/desktop/installing-and-configuring-github-desktop)" in the {% data variables.product.prodname_desktop %} documentation. - -### Sharing feedback - -If you have feedback or feature requests, you can open an issue in the [`desktop/desktop` repository](https://github.com/desktop/desktop). diff --git a/content/github/getting-started-with-github/github-for-mobile.md b/content/github/getting-started-with-github/github-for-mobile.md deleted file mode 100644 index a3735d167840..000000000000 --- a/content/github/getting-started-with-github/github-for-mobile.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: GitHub for mobile -intro: 'Triage, collaborate, and manage your work on {% data variables.product.company_short %} from your mobile device.' -versions: - free-pro-team: '*' ---- - -### About {% data variables.product.prodname_mobile %} - -{% data variables.product.prodname_mobile %} is currently available for {% data variables.product.prodname_dotcom_the_website %} users as an Android and iOS app. - -{% data variables.product.prodname_mobile %} gives you a way to do high-impact work on {% data variables.product.prodname_dotcom %} quickly and from anywhere. {% data variables.product.prodname_mobile %} is a safe and secure way to access your {% data variables.product.prodname_dotcom %} data through a trusted, first-party client application. - -With {% data variables.product.prodname_mobile %} you can: -- Manage, triage, and clear notifications -- Read, review, and collaborate on issues and pull requests -- Search for, browse, and interact with users, repositories, and organizations -- Receive a push notification when someone mentions your username - -For more information about notifications for {% data variables.product.prodname_mobile %}, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#enabling-push-notifications-with-github-for-mobile)." - -### Installing {% data variables.product.prodname_mobile %} - -To install {% data variables.product.prodname_mobile %} for Android or iOS, see [{% data variables.product.prodname_mobile %}](https://github.com/mobile). - -### Supported languages for {% data variables.product.prodname_mobile %} - -{% data variables.product.prodname_mobile %} is available in the following languages. - -- Japanese -- Brazilian Portuguese -- Spanish - -If you configure the language on your device to a supported language, {% data variables.product.prodname_mobile %} will default to the language. You can change the language for {% data variables.product.prodname_mobile %} in {% data variables.product.prodname_mobile %}'s **Settings** menu. - -### Managing Universal Links for {% data variables.product.prodname_mobile %} on iOS - -{% data variables.product.prodname_mobile %} automatically enables Universal Links for iOS. When you tap any {% data variables.product.product_name %} link, the destination URL will open in {% data variables.product.prodname_mobile %} instead of Safari. For more information, see [Universal Links](https://developer.apple.com/ios/universal-links/) on the Apple Developer site. - -To disable Universal Links, long-press any {% data variables.product.prodname_dotcom %} link, then tap **Open**. Every time you tap a {% data variables.product.prodname_dotcom %} link in the future, the destination URL will open in Safari instead of {% data variables.product.prodname_mobile %}. - -To re-enable Universal Links, long-press any {% data variables.product.prodname_dotcom %} link, then tap **Open in {% data variables.product.prodname_dotcom %}**. - -### Sharing feedback - -If you find a bug in {% data variables.product.prodname_mobile %}, you can email us at mobilefeedback@github.com. - -You can submit feature requests or other feedback for {% data variables.product.prodname_mobile %} [on GitHub Discussions](https://github.com/github/feedback/discussions?discussions_q=category%3A%22Mobile+Feedback%22). - -### Opting out of beta releases for iOS - -If you're testing a beta release of {% data variables.product.prodname_mobile %} for iOS using TestFlight, you can leave the beta at any time. - -1. On your iOS device, open the TestFlight app. -2. Under "Apps", tap **{% data variables.product.prodname_dotcom %}**. -3. At the bottom of the page, tap **Stop Testing**. diff --git a/content/github/getting-started-with-github/github-glossary.md b/content/github/getting-started-with-github/github-glossary.md deleted file mode 100644 index 64003c73607e..000000000000 --- a/content/github/getting-started-with-github/github-glossary.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: GitHub glossary -intro: 'Below are a list of some Git and {% data variables.product.prodname_dotcom %} specific terms we use across our sites and documentation.' -redirect_from: - - /articles/github-glossary -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% for term in site.data.glossaries.external %} - ### {{term.term}} - {{term.description}} - --- -{% endfor %} - ---- - -### Further reading - -- [The Official Git Glossary](https://www.kernel.org/pub/software/scm/git/docs/gitglossary.html) -- [Git Reference](http://gitref.org/) -- [Git SCM](https://git-scm.com/doc) diff --git a/content/github/getting-started-with-github/githubs-products.md b/content/github/getting-started-with-github/githubs-products.md deleted file mode 100644 index 22f2395c5732..000000000000 --- a/content/github/getting-started-with-github/githubs-products.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: GitHub's products -redirect_from: - - /articles/github-s-products - - /articles/githubs-products -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data variables.product.prodname_dotcom %} offers free and paid products. You can see pricing and a full list of features for each product at <{% data variables.product.pricing_url %}>. {% data reusables.products.product-roadmap %} - -### {% data variables.product.prodname_free_user %} for user accounts - -With {% data variables.product.prodname_free_team %} for user accounts, you can work with unlimited collaborators on unlimited public repositories with a full feature set, and on unlimited private repositories with a limited feature set. - -With {% data variables.product.prodname_free_user %}, your user account includes: -- {% data variables.product.prodname_gcf %} -- {% data variables.product.prodname_dependabot_alerts %} -- Two-factor authentication enforcement -- 2,000 {% data variables.product.prodname_actions %} minutes -- 500MB {% data variables.product.prodname_registry %} storage - -### {% data variables.product.prodname_pro %} - -In addition to the features available with {% data variables.product.prodname_free_user %} for user accounts, {% data variables.product.prodname_pro %} includes: -- {% data variables.contact.github_support %} via email -- 3,000 {% data variables.product.prodname_actions %} minutes -- 2GB {% data variables.product.prodname_registry %} storage -- Advanced tools and insights in private repositories: - - Required pull request reviewers - - Multiple pull request reviewers - - Auto-linked references - - {% data variables.product.prodname_pages %} - - Wikis - - Protected branches - - Code owners - - Repository insights graphs: Pulse, contributors, traffic, commits, code frequency, network, and forks - -### {% data variables.product.prodname_free_team %} for organizations - -With {% data variables.product.prodname_free_team %} for organizations, you can work with unlimited collaborators on unlimited public repositories with a full feature set, or unlimited private repositories with a limited feature set. - -In addition to the features available with {% data variables.product.prodname_free_user %} for user accounts, {% data variables.product.prodname_free_team %} for organizations includes: -- {% data variables.product.prodname_gcf %} -- Team discussions -- Team access controls for managing groups -- 2,000 {% data variables.product.prodname_actions %} minutes -- 500MB {% data variables.product.prodname_registry %} storage - -### {% data variables.product.prodname_team %} - -In addition to the features available with {% data variables.product.prodname_free_team %} for organizations, {% data variables.product.prodname_team %} includes: -- {% data variables.contact.github_support %} via email -- 3,000 {% data variables.product.prodname_actions %} minutes -- 2GB {% data variables.product.prodname_registry %} storage -- Advanced tools and insights in private repositories: - - Required pull request reviewers - - Multiple pull request reviewers - - {% data variables.product.prodname_pages %} - - Wikis - - Protected branches - - Code owners - - Repository insights graphs: Pulse, contributors, traffic, commits, code frequency, network, and forks - - Draft pull requests - - Team pull request reviewers - - Scheduled reminders - -{% data reusables.github-actions.actions-billing %} - -### {% data variables.product.prodname_enterprise %} - -{% data variables.product.prodname_enterprise %} includes two deployment options: cloud-hosted and self-hosted. - -In addition to the features available with {% data variables.product.prodname_team %}, {% data variables.product.prodname_enterprise %} includes: -- {% data variables.contact.enterprise_support %} -- Additional security, compliance, and deployment controls -- Authentication with SAML single sign-on -- Access provisioning with SAML or SCIM -- {% data variables.product.prodname_github_connect %} - -{% data variables.product.prodname_ghe_cloud %} also includes: -- {% data variables.contact.enterprise_support %}. For more information, see "{% data variables.product.prodname_ghe_cloud %} support" and "{% data variables.product.prodname_ghe_cloud %} Addendum." -- 50,000 {% data variables.product.prodname_actions %} minutes -- 50GB {% data variables.product.prodname_registry %} storage -- A service level agreement for 99.9% monthly uptime -- The option to centrally manage policy and billing for multiple {% data variables.product.prodname_dotcom_the_website %} organizations with an enterprise account. For more information, see "About enterprise accounts." - -You can set up a trial to evaluate {% data variables.product.prodname_ghe_cloud %}. For more information, see "[Setting up a trial of {% data variables.product.prodname_ghe_cloud %}](/articles/setting-up-a-trial-of-github-enterprise-cloud)." - -For more information about hosting your own instance of [{% data variables.product.prodname_ghe_server %}](https://enterprise.github.com), contact {% data variables.contact.contact_enterprise_sales %}. {% data reusables.enterprise_installation.request-a-trial %} - -### {% data variables.product.prodname_ghe_one %} - -{% data variables.product.prodname_ghe_one %} includes [{% data variables.product.prodname_enterprise %}](#github-enterprise), plus: - -- {% data variables.contact.github_support %} {% data variables.product.premium_plus_support_plan %} -- {% data variables.product.prodname_insights %} -- {% data variables.product.prodname_advanced_security %}{% if currentVersion == "free-pro-team@latest" %}. For more information, see "[About {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning)" and "[About {% data variables.product.prodname_secret_scanning %}](/github/administering-a-repository/about-secret-scanning) (beta)."{% endif %}{% if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.21" %}. For more information, see "[About {% data variables.product.prodname_code_scanning %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) (beta)."{% endif %} -- [{% data variables.product.prodname_learning %} for organizations](https://lab.github.com/organizations) - -For more information about signing up for {% data variables.product.prodname_ghe_one %}, contact [{% data variables.product.product_name %}'s Sales team](https://enterprise.github.com/contact). diff --git a/content/github/getting-started-with-github/index.md b/content/github/getting-started-with-github/index.md deleted file mode 100644 index 9a08419bdd32..000000000000 --- a/content/github/getting-started-with-github/index.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Getting started with GitHub -shortTitle: Getting started -intro: 'Learn about {% data variables.product.prodname_dotcom %}''s products, sign up for an account, and explore the {% data variables.product.prodname_dotcom %} community.' -redirect_from: - - /categories/54/articles/ - - /categories/bootcamp/ - - /categories/32/articles/ - - /categories/2/articles/ - - /categories/organizations/ - - /categories/about-github/ - - /categories/53/articles/ - - /categories/setup/ - - /categories/getting-started-with-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /quickstart %} - {% link_in_list /set-up-git %} - {% link_in_list /create-a-repo %} - {% link_in_list /fork-a-repo %} - {% link_in_list /be-social %} -{% topic_link_in_list /learning-about-github %} - - {% link_in_list /githubs-products %} - {% link_in_list /exploring-early-access-releases-with-feature-preview %} - - {% link_in_list /types-of-github-accounts %} - - {% link_in_list /faq-about-changes-to-githubs-plans %} - {% link_in_list /github-cli %} - {% link_in_list /github-desktop %} - {% link_in_list /github-for-mobile %} - - {% link_in_list /access-permissions-on-github %} - {% link_in_list /github-glossary %} - {% link_in_list /git-cheatsheet %} - {% link_in_list /git-and-github-learning-resources %} -{% topic_link_in_list /signing-up-for-github %} - - {% link_in_list /signing-up-for-a-new-github-account %} - {% link_in_list /verifying-your-email-address %} - - {% link_in_list /setting-up-a-trial-of-github-enterprise-cloud %} - {% link_in_list /setting-up-a-trial-of-github-enterprise-server %} -{% topic_link_in_list /exploring-projects-on-github %} - - {% link_in_list /finding-ways-to-contribute-to-open-source-on-github %} - - {% link_in_list /saving-repositories-with-stars %} - {% link_in_list /following-people %} -{% topic_link_in_list /using-github %} - {% link_in_list /supported-browsers %} - - {% link_in_list /troubleshooting-connectivity-problems %} - - {% link_in_list /keyboard-shortcuts %} diff --git a/content/github/getting-started-with-github/keyboard-shortcuts.md b/content/github/getting-started-with-github/keyboard-shortcuts.md deleted file mode 100644 index 28fe3ea08a01..000000000000 --- a/content/github/getting-started-with-github/keyboard-shortcuts.md +++ /dev/null @@ -1,193 +0,0 @@ ---- -title: Keyboard shortcuts -intro: 'Nearly every page on {% data variables.product.product_name %} has a keyboard shortcut to perform actions faster.' -redirect_from: - - /articles/using-keyboard-shortcuts/ - - /categories/75/articles/ - - /categories/keyboard-shortcuts/ - - /articles/keyboard-shortcuts -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### About keyboard shortcuts - -Typing ? in {% data variables.product.product_name %} brings up a dialog box that lists the keyboard shortcuts available for that page. You can use these keyboard shortcuts to perform actions across the site without using your mouse to navigate. - -Below is a list of some of the available keyboard shortcuts. - -### Site wide shortcuts - -| Keyboard shortcut | Description -|-----------|------------ -|s or / | Focus the search bar. For more information, see "[About searching on {% data variables.product.company_short %}](/articles/about-searching-on-github)." -|g n | Go to your notifications. For more information, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}"[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications){% else %}"[About notifications](/github/receiving-notifications-about-activity-on-github/about-notifications){% endif %}." -|esc | When focused on a user, issue, or pull request hovercard, closes the hovercard and refocuses on the element the hovercard is in - -### Repositories - -| Keyboard shortcut | Description -|-----------|------------ -|g c | Go to the **Code** tab -|g i | Go to the **Issues** tab. For more information, see "[About issues](/articles/about-issues)." -|g p | Go to the **Pull requests** tab. For more information, see "[About pull requests](/articles/about-pull-requests)."{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -|g a | Go to the **Actions** tab. For more information, see "[About Actions](/actions/getting-started-with-github-actions/about-github-actions)."{% endif %} -|g b | Go to the **Projects** tab. For more information, see "[About project boards](/articles/about-project-boards)." -|g w | Go to the **Wiki** tab. For more information, see "[About wikis](/articles/about-wikis)." - -### Source code editing - -| Keyboard shortcut | Description -|-----------|------------ -|e | Open source code file in the **Edit file** tab -|control f or command f | Start searching in file editor -|control g or command g | Find next -|shift control g or shift command g | Find previous -|shift control f or command option f | Replace -|shift control r or shift command option f | Replace all -|alt g | Jump to line -|control z or command z | Undo -|control y or command y | Redo -|cmd + shift + p | Toggles between the **Edit file** and **Preview changes** tabs - -For more keyboard shortcuts, see the [CodeMirror documentation](https://codemirror.net/doc/manual.html#commands). - -### Source code browsing - -| Keyboard shortcut | Description -|-----------|------------ -|t | Activates the file finder -|l | Jump to a line in your code -|w | Switch to a new branch or tag -|y | Expand a URL to its canonical form. For more information, see "[Getting permanent links to files](/articles/getting-permanent-links-to-files)." -|i | Show or hide comments on diffs. For more information, see "[Commenting on the diff of a pull request](/articles/commenting-on-the-diff-of-a-pull-request)." -|b | Open blame view. For more information, see "[Tracing changes in a file](/articles/tracing-changes-in-a-file)." - -### Comments - -| Keyboard shortcut | Description -|-----------|------------ -| control b or command b | Inserts Markdown formatting for bolding text -| control i or command i | Inserts Markdown formatting for italicizing text -| control k or command k | Inserts Markdown formatting for creating a link -| control shift p or command shift p| Toggles between the **Write** and **Preview** comment tabs -| control enter | Submits a comment -| control . and then control [saved reply number] | Opens saved replies menu and then autofills comment field with a saved reply. For more information, see "[About saved replies](/articles/about-saved-replies)."{% if currentVersion == "free-pro-team@latest" %} -|control g or command g | Insert a suggestion. For more information, see "[Reviewing proposed changes in a pull request](/articles/reviewing-proposed-changes-in-a-pull-request)." |{% endif %} -| r | Quote the selected text in your reply. For more information, see "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax#quoting-text)." | - -### Issue and pull request lists - -| Keyboard shortcut | Description -|-----------|------------ -|c | Create an issue -| control / or command / | Focus your cursor on the issues or pull requests search bar. For more information, see "[Using search to filter issues and pull requests](/articles/using-search-to-filter-issues-and-pull-requests)."|| -|u | Filter by author -|l | Filter by or edit labels. For more information, see "[Filtering issues and pull requests by labels](/articles/filtering-issues-and-pull-requests-by-labels)." -| alt and click | While filtering by labels, exclude labels. For more information, see "[Filtering issues and pull requests by labels](/articles/filtering-issues-and-pull-requests-by-labels)." -|m | Filter by or edit milestones. For more information, see "[Filtering issues and pull requests by milestone](/articles/filtering-issues-and-pull-requests-by-milestone)." -|a | Filter by or edit assignee. For more information, see "[Filtering issues and pull requests by assignees](/articles/filtering-issues-and-pull-requests-by-assignees)." -|o or enter | Open issue - -### Issues and pull requests -| Keyboard shortcut | Description -|-----------|------------ -|q | Request a reviewer. For more information, see "[Requesting a pull request review](/articles/requesting-a-pull-request-review/)." -|m | Set a milestone. For more information, see "[Associating milestones with issues and pull requests](/articles/associating-milestones-with-issues-and-pull-requests/)." -|l | Apply a label. For more information, see "[Applying labels to issues and pull requests](/articles/applying-labels-to-issues-and-pull-requests/)." -|a | 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/)." -|cmd + shift + p or control + shift + p | Toggles between the **Write** and **Preview** tabs - -### Changes in pull requests - -| Keyboard shortcut | Description -|-----------|------------ -|c | Open the list of commits in the pull request -|t | Open the list of changed files in the pull request -|j | Move selection down in the list -|k | Move selection up in the list -| cmd + shift + enter | Add a single comment on a pull request diff | -| alt and click | Toggle between collapsing and expanding all outdated review comments in a pull request by holding down `alt` and clicking **Show outdated** or **Hide outdated**.|{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -| Click, then shift and click | Comment on multiple lines of a pull request by clicking a line number, holding shift, then clicking another line number. For more information, see "[Commenting on a pull request](/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)."|{% endif %} - -### Project boards - -#### Moving a column - -| Keyboard shortcut | Description -|-----------|------------ -|enter or space | Start moving the focused column -|escape | Cancel the move in progress -|enter | Complete the move in progress -| or h | Move column to the left -|command ← or command h or control ← or control h | Move column to the leftmost position -| or l | Move column to the right -|command → or command l or control → or control l | Move column to the rightmost position - -#### Moving a card - -| Keyboard shortcut | Description -|-----------|------------ -|enter or space | Start moving the focused card -|escape | Cancel the move in progress -|enter | Complete the move in progress -| or j | Move card down -|command ↓ or command j or control ↓ or control j | Move card to the bottom of the column -| or k | Move card up -|command ↑ or command k or control ↑ or control k | Move card to the top of the column -| or h | Move card to the bottom of the column on the left -|shift ← or shift h | Move card to the top of the column on the left -|command ← or command h or control ← or control h | Move card to the bottom of the leftmost column -|command shift ← or command shift h or control shift ← or control shift h | Move card to the top of the leftmost column -| | Move card to the bottom of the column on the right -|shift → or shift l | Move card to the top of the column on the right -|command → or command l or control → or control l | Move card to the bottom of the rightmost column -|command shift → or command shift l or control shift → or control shift l | Move card to the bottom of the rightmost column - -#### Previewing a card - -| Keyboard shortcut | Description -|-----------|------------ -|esc | Close the card preview pane - -{% if currentVersion == "free-pro-team@latest" %} -### {% data variables.product.prodname_actions %} - -| Keyboard shortcut | Description -|-----------|------------ -|command space or control space | In the workflow editor, get suggestions for your workflow file. - -{% endif %} - -### Notifications - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -| Keyboard shortcut | Description -|-----------|------------ -|e | Mark as done -| shift u| Mark as unread -| shift i| Mark as read -| shift m | Unsubscribe - -{% else %} - -| Keyboard shortcut | Description -|-----------|------------ -|e or I or y | Mark as read -|shift m | Mute thread -{% endif %} - -### Network graph - -| Keyboard shortcut | Description -|-----------|------------ -| or h | Scroll left -| or l | Scroll right -| or k | Scroll up -| or j | Scroll down -|shift ← or shift h | Scroll all the way left -|shift → or shift l | Scroll all the way right -|shift ↑ or shift k | Scroll all the way up -|shift ↓ or shift j | Scroll all the way down diff --git a/content/github/getting-started-with-github/learning-about-github.md b/content/github/getting-started-with-github/learning-about-github.md deleted file mode 100644 index 735caea92fa2..000000000000 --- a/content/github/getting-started-with-github/learning-about-github.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Learning about GitHub -intro: '' -mapTopic: true -redirect_from: - - /articles/learning-about-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/getting-started-with-github/quickstart.md b/content/github/getting-started-with-github/quickstart.md deleted file mode 100644 index 1684bfd1fac3..000000000000 --- a/content/github/getting-started-with-github/quickstart.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Quickstart -intro: 'Quickly get started with common tasks on {% data variables.product.prodname_dotcom %}.' -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/getting-started-with-github/saving-repositories-with-stars.md b/content/github/getting-started-with-github/saving-repositories-with-stars.md deleted file mode 100644 index 0951e3c9b715..000000000000 --- a/content/github/getting-started-with-github/saving-repositories-with-stars.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Saving repositories with stars -intro: 'You can star repositories{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.16" %} and topics{% endif %} to keep track of projects you find interesting{% if currentVersion == "free-pro-team@latest" %} and discover related content in your news feed{% endif %}.' -redirect_from: - - /articles/stars/ - - /articles/about-stars/ - - /articles/browsing-friends-stars/ - - /articles/managing-your-stars/ - - /articles/saving-repositories-with-stars -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can search, sort, and filter your starred repositories and topics on your {% data variables.explore.your_stars_page %}.' - -### About stars - -Starring makes it easy to find a repository or topic again later. You can see all the repositories and topics you have starred by going to your {% data variables.explore.your_stars_page %}. - -{% if currentVersion == "free-pro-team@latest" %} -You can star repositories and topics to discover similar projects on {% data variables.product.product_name %}. When you star repositories or topics, {% data variables.product.product_name %} may recommend related content in the discovery view of your news feed. For more information, see "[Finding ways to contribute to open source on {% data variables.product.prodname_dotcom %}](/github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github)." -{% endif %} - -Starring a repository also shows appreciation to the repository maintainer for their work. Many of {% data variables.product.prodname_dotcom %}'s repository rankings depend on the number of stars a repository has. In addition, [Explore](https://github.com/explore) shows popular repositories based on the number of stars they have. - -### Searching stars - -![Searching through stars](/assets/images/help/stars/stars_search_bar.png) - -You can use the search bar to quickly find repositories and topics you've starred. The search bar only searches based on the name of a repository or topic, and not on any other qualifiers (such as the size of the repository or when it was last updated). - -### Sorting and filtering stars - -![Sorting stars](/assets/images/help/stars/stars_sort_menu.png) - -In the upper-right corner of your stars page, you can sort your starred repositories and topics by recently starred, recently active, and most stars. - -On the right side of the page, you can filter your list of starred repositories based on their language. - -![Filter stars by language](/assets/images/help/stars/stars_filter_language.png) - -### Browsing your friends' stars - - In the lower-right corner of the page, you can also browse your friends' stars. You can use this to find new repositories and topics to star. - -![Viewing your friends' stars](/assets/images/help/stars/stars_jump_to_a_friend.png) - -### Further reading - -- "[Classifying your repository with topics](/articles/classifying-your-repository-with-topics)" diff --git a/content/github/getting-started-with-github/set-up-git.md b/content/github/getting-started-with-github/set-up-git.md deleted file mode 100644 index 7964ca6bf18e..000000000000 --- a/content/github/getting-started-with-github/set-up-git.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Set up Git -redirect_from: - - /git-installation-redirect/ - - /linux-git-installation/ - - /linux-set-up-git/ - - /mac-git-installation/ - - /mac-set-up-git/ - - /set-up-git-redirect/ - - /win-git-installation/ - - /win-set-up-git/ - - /articles/set-up-git -intro: 'At the heart of {% data variables.product.product_name %} is an open source version control system (VCS) called Git. Git is responsible for everything {% data variables.product.product_name %}-related that happens locally on your computer.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -To use Git on the command line, you'll need to download, install, and configure Git on your computer. {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} You can also install {% data variables.product.prodname_cli %} to use {% data variables.product.product_name %} from the command line. For more information on {% data variables.product.prodname_cli %}, see the [{% data variables.product.prodname_cli %}](https://cli.github.com/manual/) documentation.{% endif %} - -If you want to work with Git locally, but don't want to use the command line, you can instead download and install the [{% data variables.product.prodname_desktop %}]({% data variables.product.desktop_link %}) client. For more information, see "[Installing and configuring {% data variables.product.prodname_desktop %}](/desktop/installing-and-configuring-github-desktop/)." - -If you don't need to work with files locally, {% data variables.product.product_name %} lets you complete many Git-related actions directly in the browser, including: - -- [Creating a repository](/articles/create-a-repo) -- [Forking a repository](/articles/fork-a-repo) -- [Managing files](/articles/managing-files-on-github/) -- [Being social](/articles/be-social) - -### Setting up Git - -1. [Download and install the latest version of Git](https://git-scm.com/downloads). -2. [Set your username in Git](/articles/setting-your-username-in-git). -3. [Set your commit email address in Git](/articles/setting-your-commit-email-address). - -### Next steps: Authenticating with {% data variables.product.prodname_dotcom %} from Git - -When you connect to a {% data variables.product.product_name %} repository from Git, you'll need to authenticate with {% data variables.product.product_name %} using either HTTPS or SSH. - -#### Connecting over HTTPS (recommended) - -If you [clone with HTTPS](/articles/which-remote-url-should-i-use/#cloning-with-https-urls), you can [cache your {% data variables.product.prodname_dotcom %} credentials in Git](/github/using-git/caching-your-github-credentials-in-git) using a credential helper. - -#### Connecting over SSH - -If you [clone with SSH](/articles/which-remote-url-should-i-use#cloning-with-ssh-urls), you must [generate SSH keys](/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) on each computer you use to push or pull from {% data variables.product.product_name %}. - -### Celebrate - -Congratulations, you now have Git and {% data variables.product.product_name %} all set up! What do you want to do next? - -- **Set up Git** -- "[Create a repository](/articles/create-a-repo)" -- "[Fork a repository](/articles/fork-a-repo)" -- "[Be social](/articles/be-social)" -- {% data reusables.support.connect-in-the-forum-bootcamp %} diff --git a/content/github/getting-started-with-github/setting-up-a-trial-of-github-enterprise-cloud.md b/content/github/getting-started-with-github/setting-up-a-trial-of-github-enterprise-cloud.md deleted file mode 100644 index 46ae74fe246d..000000000000 --- a/content/github/getting-started-with-github/setting-up-a-trial-of-github-enterprise-cloud.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Setting up a trial of GitHub Enterprise Cloud -intro: 'You can try {% data variables.product.prodname_ghe_cloud %} for free.' -redirect_from: - - /articles/setting-up-a-trial-of-github-enterprise-cloud -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About trials of {% data variables.product.prodname_ghe_cloud %} - -You can set up a 14-day trial to evaluate {% data variables.product.prodname_ghe_cloud %} on a new organization account. You do not need to provide a payment method during the trial unless you add {% data variables.product.prodname_marketplace %} apps to your organization that require a payment method. For more information, see "About billing for {% data variables.product.prodname_marketplace %}." - -Your trial includes 50 seats. If you need more seats to evaluate {% data variables.product.prodname_ghe_cloud %}, contact {% data variables.contact.contact_enterprise_sales %}. At the end of the trial, you can choose a different number of seats. - -Trials are also available for {% data variables.product.prodname_ghe_server %}. For more information, see "[Setting up a trial of {% data variables.product.prodname_ghe_server %}](/articles/setting-up-a-trial-of-github-enterprise-server)." - -{% data reusables.products.which-product-to-use %} - -### Setting up your trial of {% data variables.product.prodname_ghe_cloud %} - -Before you can start your trial of {% data variables.product.prodname_ghe_cloud %}, you must have an existing user account or create a new user account. For more information, see "Signing up for a new {% data variables.product.prodname_dotcom %} account." - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.organizations %} -{% data reusables.organizations.new-organization %} -4. Under "Enterprise", click **Start your 14-day free trial**. - ![Button to start your trial](/assets/images/help/organizations/start-trial-button.png) -5. Type your company name. - ![Company name field](/assets/images/help/organizations/company-name-field.png) -{% data reusables.organizations.organization-name %} -7. Under "Full name", type your full name. - ![Full name field](/assets/images/help/organizations/full-name-field.png) -8. Under "Work email", type the email address you use for work. - ![Work email field](/assets/images/help/organizations/work-email-field.png) -8. Use the **Industry** drop-down menu, and select the industry your company is in. - ![Industry drop-down menu](/assets/images/help/organizations/industry-drop-down.png) -9. Use the **Number of employees** drop-down menu, and select the number of employees at your company. - ![Number of employees drop-down menu](/assets/images/help/organizations/employees-drop-down.png) -10. Review the Evaluation License Agreement, then click **Next**. - -### Exploring {% data variables.product.prodname_ghe_cloud %} - -After setting up your trial, you can explore {% data variables.product.prodname_ghe_cloud %} by following the [Enterprise Onboarding Guide](https://resources.github.com/enterprise-onboarding/). - -{% data reusables.products.product-roadmap %} - -### Finishing your trial - -You can buy {% data variables.product.prodname_enterprise %} or downgrade to {% data variables.product.prodname_team %} at any time during your trial. - -If you don't purchase {% data variables.product.prodname_enterprise %} or {% data variables.product.prodname_team %} before your trial ends, your organization will be downgraded to {% data variables.product.prodname_free_team %} and lose access to any advanced tooling and features that are only included with paid products, including {% data variables.product.prodname_pages %} sites published from those private repositories. If you don't plan to upgrade, to avoid losing access to advanced features, make the repositories public before your trial ends. For more information, see "[Setting repository visibility](/articles/setting-repository-visibility)." - -Downgrading to {% data variables.product.prodname_free_team %} for organizations also disables any SAML settings configured during the trial period. Once you purchase {% data variables.product.prodname_enterprise %} or {% data variables.product.prodname_team %}, your SAML settings will be enabled again for users in your organization to authenticate. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -5. Under "{% data variables.product.prodname_ghe_cloud %} Free Trial", click **Buy Enterprise** or **Downgrade to Team**. - ![Buy Enterprise and Downgrade to Team buttons](/assets/images/help/organizations/finish-trial-buttons.png) -6. Follow the prompts to enter your payment method, then click **Submit**. - -### Further reading - -- "[Setting up a trial of {% data variables.product.prodname_ghe_server %}](/articles/setting-up-a-trial-of-github-enterprise-server)" diff --git a/content/github/getting-started-with-github/setting-up-a-trial-of-github-enterprise-server.md b/content/github/getting-started-with-github/setting-up-a-trial-of-github-enterprise-server.md deleted file mode 100644 index dc421e3439b3..000000000000 --- a/content/github/getting-started-with-github/setting-up-a-trial-of-github-enterprise-server.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Setting up a trial of GitHub Enterprise Server -intro: 'You can try {% data variables.product.prodname_ghe_server %} for free.' -redirect_from: - - /articles/requesting-a-trial-of-github-enterprise/ - - /articles/setting-up-a-trial-of-github-enterprise-server -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About trials of {% data variables.product.prodname_ghe_server %} - -You can request a 45-day trial to evaluate {% data variables.product.prodname_ghe_server %}. Your trial will be installed as a virtual appliance, with options for on-premises or cloud deployment. For a list of supported visualization platforms, see "[Setting up a GitHub Enterprise Server instance](/enterprise/admin/installation/setting-up-a-github-enterprise-server-instance)." - -{% if currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_short %}{% else %}Security{% endif %} alerts and {% data variables.product.prodname_github_connect %} are not currently available in trials of {% data variables.product.prodname_ghe_server %}. For a demonstration of these features, contact {% data variables.contact.contact_enterprise_sales %}. For more information about these features, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" and "[Connecting {% data variables.product.prodname_ghe_server %} to {% data variables.product.prodname_dotcom_the_website %}](/enterprise/admin/installation/connecting-github-enterprise-server-to-github-enterprise-cloud)." - -Trials are also available for {% data variables.product.prodname_ghe_cloud %}. For more information, see "[Setting up a trial of {% data variables.product.prodname_ghe_cloud %}](/articles/setting-up-a-trial-of-github-enterprise-cloud)." - -{% data reusables.products.which-product-to-use %} - -### Setting up your trial of {% data variables.product.prodname_ghe_server %} - -{% data variables.product.prodname_ghe_server %} is installed as a virtual appliance. Determine the best person in your organization to set up a virtual machine, and ask that person to submit a [trial request](https://enterprise.github.com/trial). You can begin your trial immediately after submitting a request. - -To set up an account for the {% data variables.product.prodname_enterprise %} Web portal, click the link in the email you received after submitting your trial request, and follow the prompts. Then, download your license file. For more information, see "[Managing your {% data variables.product.prodname_enterprise %} license](/enterprise/admin/installation/managing-your-github-enterprise-license)." - -To install {% data variables.product.prodname_ghe_server %}, download the necessary components and upload your license file. For more information, see the instructions for your chosen visualization platform in "[Setting up a {% data variables.product.prodname_ghe_server %} instance](/enterprise/admin/installation/setting-up-a-github-enterprise-server-instance)." - -### Next steps - -To get the most out of your trial, follow these steps: - -1. [Create an organization](/enterprise/admin/user-management/creating-organizations). -2. To learn the basics of using {% data variables.product.prodname_dotcom %}, see: - - [Quick start guide to {% data variables.product.prodname_dotcom %}](https://resources.github.com/webcasts/Quick-start-guide-to-GitHub/) webcast - - [Understanding the {% data variables.product.prodname_dotcom %} flow](https://guides.github.com/introduction/flow/) in {% data variables.product.prodname_dotcom %} Guides - - [Hello World](https://guides.github.com/activities/hello-world/) in {% data variables.product.prodname_dotcom %} Guides -3. To configure your instance to meet your organization's needs, see "[Configuring the {% data variables.product.prodname_ghe_server %} appliance](/enterprise/admin/installation/configuring-the-github-enterprise-server-appliance)." -4. To integrate {% data variables.product.prodname_ghe_server %} with your identity provider, see "[Using SAML](/enterprise/admin/user-management/using-saml)" and "[Using LDAP](/enterprise/admin/authentication/using-ldap)." -5. Invite an unlimited number of people to join your trial. - - Add users to your {% data variables.product.prodname_ghe_server %} instance using built-in authentication or your configured identity provider. For more information, see "[Using built in authentication](/enterprise/admin/user-management/using-built-in-authentication)." - - To invite people to become account administrators, visit the [{% data variables.product.prodname_enterprise %} Web portal](https://enterprise.github.com/login). - - {% note %} - - **Note:** People you invite to become account administrators will receive an email with a link to accept your invitation. - - {% endnote %} - -{% data reusables.products.product-roadmap %} - -### Finishing your trial - -You can upgrade to full licenses in the [{% data variables.product.prodname_enterprise %} Web portal](https://enterprise.github.com/login) at any time during the trial period. - -If you haven't upgraded by the last day of your trial, you'll receive an email notifying you that your trial had ended. If you need more time to evaluate {% data variables.product.prodname_enterprise %}, contact {% data variables.contact.contact_enterprise_sales %} to request an extension. - -### Further reading - -- "[Setting up a trial of {% data variables.product.prodname_ghe_cloud %}](/articles/setting-up-a-trial-of-github-enterprise-cloud)" diff --git a/content/github/getting-started-with-github/signing-up-for-a-new-github-account.md b/content/github/getting-started-with-github/signing-up-for-a-new-github-account.md deleted file mode 100644 index 72ab840bcd05..000000000000 --- a/content/github/getting-started-with-github/signing-up-for-a-new-github-account.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Signing up for a new GitHub account -intro: '{% data variables.product.product_name %} offers user accounts for individuals and organizations for teams of people working together.' -redirect_from: - - /articles/signing-up-for-a-new-github-account -versions: - free-pro-team: '*' ---- - -For more information about account types and products, see "[Types of {% data variables.product.prodname_dotcom %} accounts](/articles/types-of-github-accounts)" and "[{% data variables.product.product_name %}'s products](/articles/github-s-products)." - -1. Go to {% data variables.product.product_name %}'s [Pricing]({% data variables.product.pricing_url %}) page. -2. Read the information about the different products and subscriptions that {% data variables.product.product_name %} offers, then click the upgrade button under the subscription you'd like to choose. -3. Follow the prompts to create your personal account or organization. - -### Next steps - -- "[Verify your email address](/articles/verifying-your-email-address)" -- "[Configure two-factor authentication](/articles/configuring-two-factor-authentication)" -- "[Add a bio to your profile](/articles/adding-a-bio-to-your-profile)" -- "[Create an organization](/articles/creating-a-new-organization-from-scratch)" -- [ {% data variables.product.prodname_roadmap %} ]( {% data variables.product.prodname_roadmap_link %} ) in the `github/roadmap` repository diff --git a/content/github/getting-started-with-github/signing-up-for-github.md b/content/github/getting-started-with-github/signing-up-for-github.md deleted file mode 100644 index 2456e174326f..000000000000 --- a/content/github/getting-started-with-github/signing-up-for-github.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Signing up for GitHub -intro: '' -mapTopic: true -redirect_from: - - /articles/signing-up-for-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/getting-started-with-github/supported-browsers.md b/content/github/getting-started-with-github/supported-browsers.md deleted file mode 100644 index 4432a1f0f3f6..000000000000 --- a/content/github/getting-started-with-github/supported-browsers.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Supported browsers -redirect_from: - - /articles/why-doesn-t-graphs-work-with-ie-8/ - - /articles/why-don-t-graphs-work-with-ie8/ - - /articles/supported-browsers -intro: 'We design {% data variables.product.product_name %} to support the latest web browsers. We support the current versions of [Chrome](https://www.google.com/chrome/), [Firefox](http://www.mozilla.org/firefox/), [Safari](http://www.apple.com/safari/), and [Microsoft Edge](https://www.microsoft.com/en-us/windows/microsoft-edge).' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Firefox Extended Support Release - -We do our best to support Firefox's latest [Extended Support Release](https://www.mozilla.org/en-US/firefox/organizations/) (ESR). Older versions of Firefox may disable some features on {% data variables.product.product_name %} and require the latest version of Firefox. - -### Beta and developer builds - -You may encounter unexpected bugs in beta and developer builds of our supported browsers. If you encounter a bug on {% data variables.product.product_name %} in one of these unreleased builds, please verify that it also exists in the stable version of the same browser. If the bug only exists in the unstable version, consider reporting the bug to the browser developer. diff --git a/content/github/getting-started-with-github/troubleshooting-connectivity-problems.md b/content/github/getting-started-with-github/troubleshooting-connectivity-problems.md deleted file mode 100644 index 4249a68c657b..000000000000 --- a/content/github/getting-started-with-github/troubleshooting-connectivity-problems.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Troubleshooting connectivity problems -intro: 'If you''re having trouble connecting to {% data variables.product.prodname_dotcom %}, you can troubleshoot your connection, then use the {% data variables.product.prodname_debug %} tool to diagnose problems.' -redirect_from: - - /articles/troubleshooting-connectivity-problems -versions: - free-pro-team: '*' ---- - - -Most often, connection problems occur because a firewall, proxy server, corporate network, or other network is configured in a way that blocks {% data variables.product.prodname_dotcom %}. - -### Allowing {% data variables.product.prodname_dotcom %}'s IP addresses - -Make sure your network is configured to allow {% data variables.product.prodname_dotcom %}'s IP addresses. For more information, see "[About {% data variables.product.prodname_dotcom %}'s IP addresses](/articles/about-github-s-ip-addresses)." - -### Using a company or organization's network - -If you're having connectivity problems on your company or organization's network, check with your network administrator to find out if the network has rules in place to block certain traffic. If there are rules in place, ask your network administrator to allow traffic to {% data variables.product.prodname_dotcom %}. - -### Troubleshooting the captcha - -If you're unable to verify with the captcha: -- Ensure javascript is enabled on your browser. -- Ensure your browser is supported. If your browser isn't supported, upgrade your browser or install a supported browser. For a list of supported browsers, see "[Supported browsers](/articles/supported-browsers)." -- Ensure your network configuration is not blocking https://octocaptcha.com/ or https://arkoselabs.com/. If you're behind a corporate firewall, contact your IT administrator to allow those domains. To verify access to these domains, visit https://octocaptcha.com/test and ensure the text "Connection successfully made!" is displayed, then visit https://client-demo.arkoselabs.com/github and ensure you are able to load the captcha. -- Ensure your browser does not have plug-ins or extensions that may be interfering with GitHub. If so, temporarily disable the plug-ins or extensions during captcha verification. - -### Switching cloning methods - -Switching from cloning via SSH to cloning via HTTPS, or vice versa may improve connectivity. For more information, see "[Cloning a repository from {% data variables.product.prodname_dotcom %}](/articles/cloning-a-repository-from-github)." - -If you're encountering timeouts with SSH, see "[Error: Bad file number](/articles/error-bad-file-number)." - -### Troubleshooting slow downloads and intermittent slow connections - -{% data variables.product.prodname_dotcom %} does not throttle bandwidth per user. - -If you're experiencing slow connections at certain times of day but not others, the slow speeds are most likely due to network congestion. Because {% data variables.product.prodname_dotcom %} cannot resolve network congestion, you should escalate the problem to your internet service provider. - -### Troubleshooting with {% data variables.product.prodname_debug %} - -If you've followed all of the troubleshooting suggestions above and are still having connection problems, you can follow the instructions on the {% data variables.product.prodname_debug %} site to run tests and send a report to {% data variables.product.prodname_dotcom %} Support. For more information, see [{% data variables.product.prodname_debug %}](https://github-debug.com/). diff --git a/content/github/getting-started-with-github/types-of-github-accounts.md b/content/github/getting-started-with-github/types-of-github-accounts.md deleted file mode 100644 index e439bfa65adb..000000000000 --- a/content/github/getting-started-with-github/types-of-github-accounts.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Types of GitHub accounts -intro: 'Your user account is your identity on {% data variables.product.product_location %}. Your user account can be a member of any number of organizations.{% if currentVersion == "free-pro-team@latest" %} Organizations can belong to enterprise accounts.{% endif %}' -redirect_from: - - /manage-multiple-clients/ - - /managing-clients/ - - /articles/what-s-the-difference-between-user-and-organization-accounts/ - - /articles/differences-between-user-and-organization-accounts/ - - /articles/types-of-github-accounts -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% if currentVersion == "free-pro-team@latest" %} -For a full list of features for each {% data variables.product.product_name %} product, see "[{% data variables.product.prodname_dotcom %}'s products](/github/getting-started-with-github/githubs-products)." -{% endif %} - -### Personal user accounts - -Every person who uses {% data variables.product.product_location %} has their own user account, which includes: - -{% if currentVersion == "free-pro-team@latest" %} - -- Unlimited public and private repositories with {% data variables.product.prodname_free_user %} -- Unlimited collaborators with {% data variables.product.prodname_free_user %} -- Additional features for private repositories with {% data variables.product.prodname_pro %} -- Ability to [invite repository collaborators](/articles/inviting-collaborators-to-a-personal-repository) - -{% else %} - -- Unlimited repositories and [collaborators](/articles/permission-levels-for-a-user-account-repository) -- Ability to [add unlimited repository collaborators](/articles/inviting-collaborators-to-a-personal-repository) - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} - -{% tip %} - -**Tips**: - -- You can use one account for multiple purposes, such as for personal use and business use. We do not recommend creating more than one account. For more information, see "[Merging multiple user accounts](/articles/merging-multiple-user-accounts)." -- User accounts are intended for humans, but you can give one to a robot, such as a continuous integration bot, if necessary. - -{% endtip %} - -{% else %} - -{% tip %} - -**Tip**: User accounts are intended for humans, but you can give one to a robot, such as a continuous integration bot, if necessary. - -{% endtip %} - -{% endif %} - -### Organization accounts - -Organizations are shared accounts where groups of people can collaborate across many projects at once. Owners and administrators can manage member access to the organization's data and projects with sophisticated security and administrative features. - -{% data reusables.organizations.organizations_include %} - -{% if currentVersion == "free-pro-team@latest" %} - -### Enterprise accounts - -With enterprise accounts, you can centrally manage policy and billing for multiple {% data variables.product.prodname_dotcom_the_website %} organizations. {% data reusables.gated-features.enterprise-accounts %} - -{% endif %} - -### Further reading - -{% if currentVersion == "free-pro-team@latest" %}- "[Signing up for a new {% data variables.product.prodname_dotcom %} account](/articles/signing-up-for-a-new-github-account)" -- "[{% data variables.product.prodname_dotcom %}'s products](/articles/githubs-products)"{% endif %} -- "[Creating a new organization account](/articles/creating-a-new-organization-account)" diff --git a/content/github/getting-started-with-github/using-github.md b/content/github/getting-started-with-github/using-github.md deleted file mode 100644 index 204cc817de81..000000000000 --- a/content/github/getting-started-with-github/using-github.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Using GitHub -intro: '' -mapTopic: true -redirect_from: - - /articles/using-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/getting-started-with-github/verifying-your-email-address.md b/content/github/getting-started-with-github/verifying-your-email-address.md deleted file mode 100644 index f4a31c5d3591..000000000000 --- a/content/github/getting-started-with-github/verifying-your-email-address.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Verifying your email address -intro: 'Verifying your primary email address ensures strengthened security, allows {% data variables.product.prodname_dotcom %} staff to better assist you if you forget your password, and gives you access to more features on {% data variables.product.prodname_dotcom %}.' -redirect_from: - - /articles/troubleshooting-email-verification/ - - /articles/setting-up-email-verification/ - - /articles/verifying-your-email-address -versions: - free-pro-team: '*' ---- - -### About email verification - -You can verify your email address after signing up for a new account, or when you add a new email address. If an email address is undeliverable or bouncing, it will be unverified. - -If you do not verify your email address, you will not be able to: - - Create or fork repositories - - Create issues or pull requests - - Comment on issues, pull requests, or commits - - Authorize {% data variables.product.prodname_oauth_app %} applications - - Generate personal access tokens - - Receive email notifications - - Star repositories - - Create or update project boards, including adding cards - - Create or update gists - - Create or use {% data variables.product.prodname_actions %} - - Sponsor developers with {% data variables.product.prodname_sponsors %} - -{% warning %} - -**Warnings**: - -- {% data reusables.user_settings.no-verification-disposable-emails %} -- {% data reusables.user_settings.verify-org-approved-email-domain %} - -{% endwarning %} - -### Verifying your email address - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.emails %} -1. Under your email address, click **Resend verification email**. - ![Resend verification email link](/assets/images/help/settings/email-verify-button.png) -4. {% data variables.product.prodname_dotcom %} will send you an email with a link in it. After you click that link, you'll be taken to your {% data variables.product.prodname_dotcom %} dashboard and see a confirmation banner. - ![Banner confirming that your email was verified](/assets/images/help/settings/email-verification-confirmation-banner.png) - -### Troubleshooting email verification - -#### Unable to send verification email - -{% data reusables.user_settings.no-verification-disposable-emails %} - -#### Error page after clicking verification link - -The verification link expires after 24 hours. If you don't verify your email within 24 hours, you can request another email verification link. For more information, see "[Verifying your email address](/articles/verifying-your-email-address)." - -If you click on the link in the confirmation email within 24 hours and you are directed to an error page, you should ensure that you're signed into the correct {% data variables.product.prodname_dotcom %} account. - -1. {% data variables.product.signout_link %} of your personal {% data variables.product.prodname_dotcom %} account. -2. Quit and restart your browser. -3. {% data variables.product.signin_link %} to your personal {% data variables.product.prodname_dotcom %} account. -4. Click on the verification link in the email we sent you. - -### Further reading - -- "[Changing your primary email address](/articles/changing-your-primary-email-address)" diff --git a/content/github/importing-your-projects-to-github/about-github-importer.md b/content/github/importing-your-projects-to-github/about-github-importer.md deleted file mode 100644 index 9297506d150d..000000000000 --- a/content/github/importing-your-projects-to-github/about-github-importer.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: About GitHub Importer -intro: 'If you have source code in Subversion, Mercurial, Team Foundation Server, or another Git repository, you can move it to GitHub using GitHub Importer.' -redirect_from: - - /articles/about-github-importer -versions: - free-pro-team: '*' ---- - -GitHub Importer is a tool that quickly imports source code repositories, including commits and revision history, to GitHub for you. - -![Importing a repository gif](/assets/images/help/importer/github-importer.gif) - -During an import, depending on the version control system you're importing from, you can authenticate with your remote repository, update commit author attribution, and import repositories with large files (or remove large files if you don't want to use Git Large File Storage). - -| Import action | Subversion | Mercurial | Team Foundation Server | Git | -|:--------------|:----------:|:---------:|:----------------------:|:---:| -| Authenticate with remote repository | **X** | **X** | **X** | **X** | -| [Update commit author attribution](/articles/updating-commit-author-attribution-with-github-importer) | **X** | **X** | **X** | | -| Move large files to [Git Large File Storage](/articles/about-git-large-file-storage) | **X** | **X** | **X** | | -| Remove large files from your repository | **X** | **X** | **X** | | - -### Further reading - -- "[Importing a repository with GitHub Importer](/articles/importing-a-repository-with-github-importer)" -- "[Updating commit author attribution with GitHub Importer](/articles/updating-commit-author-attribution-with-github-importer)" -- "[Importing a Git repository using the command line](/articles/importing-a-git-repository-using-the-command-line)" -- "[Source code migration tools](/articles/source-code-migration-tools)" diff --git a/content/github/importing-your-projects-to-github/adding-an-existing-project-to-github-using-the-command-line.md b/content/github/importing-your-projects-to-github/adding-an-existing-project-to-github-using-the-command-line.md deleted file mode 100644 index 2fb8281f1859..000000000000 --- a/content/github/importing-your-projects-to-github/adding-an-existing-project-to-github-using-the-command-line.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Adding an existing project to GitHub using the command line -intro: 'Putting your existing work on {% data variables.product.product_name %} can let you share and collaborate in lots of great ways.' -redirect_from: - - /articles/add-an-existing-project-to-github/ - - /articles/adding-an-existing-project-to-github-using-the-command-line -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% data reusables.repositories.migrating-from-codeplex %} - -{% tip %} - -**Tip:** If you're most comfortable with a point-and-click user interface, try adding your project with {% data variables.product.prodname_desktop %}. For more information, see "[Adding a repository from your local computer to GitHub Desktop](/desktop/guides/contributing-to-projects/adding-a-repository-from-your-local-computer-to-github-desktop)" in the *{% data variables.product.prodname_desktop %} Help*. - -{% endtip %} - -{% data reusables.repositories.sensitive-info-warning %} - -{% mac %} - -1. [Create a new repository](/articles/creating-a-new-repository) on {% data variables.product.product_location %}. To avoid errors, do not initialize the new repository with *README*, license, or `gitignore` files. You can add these files after your project has been pushed to {% data variables.product.product_name %}. - ![Create New Repository drop-down](/assets/images/help/repository/repo-create.png) -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Change the current working directory to your local project. -4. Initialize the local directory as a Git repository. - ```shell - $ git init -b main - ``` -5. Add the files in your new local repository. This stages them for the first commit. - ```shell - $ git add . - # Adds the files in the local repository and stages them for commit. {% data reusables.git.unstage-codeblock %} - ``` -6. Commit the files that you've staged in your local repository. - ```shell - $ git commit -m "First commit" - # Commits the tracked changes and prepares them to be pushed to a remote repository. {% data reusables.git.reset-head-to-previous-commit-codeblock %} - ``` -7. At the top of your {% data variables.product.product_name %} repository's Quick Setup page, click {% octicon "clippy" aria-label="The copy to clipboard icon" %} to copy the remote repository URL. - ![Copy remote repository URL field](/assets/images/help/repository/copy-remote-repository-url-quick-setup.png) -8. In Terminal, [add the URL for the remote repository](/articles/adding-a-remote) where your local repository will be pushed. - ```shell - $ git remote add origin remote repository URL - # Sets the new remote - $ git remote -v - # Verifies the new remote URL - ``` -9. [Push the changes](/articles/pushing-commits-to-a-remote-repository/) in your local repository to {% data variables.product.product_location %}. - ```shell - $ git push -u origin main - # Pushes the changes in your local repository up to the remote repository you specified as the origin - ``` - -{% endmac %} - -{% windows %} - -1. [Create a new repository](/articles/creating-a-new-repository) on {% data variables.product.product_location %}. To avoid errors, do not initialize the new repository with *README*, license, or `gitignore` files. You can add these files after your project has been pushed to {% data variables.product.product_name %}. - ![Create New Repository drop-down](/assets/images/help/repository/repo-create.png) -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Change the current working directory to your local project. -4. Initialize the local directory as a Git repository. - ```shell - $ git init -b main - ``` -5. Add the files in your new local repository. This stages them for the first commit. - ```shell - $ git add . - # Adds the files in the local repository and stages them for commit. {% data reusables.git.unstage-codeblock %} - ``` -6. Commit the files that you've staged in your local repository. - ```shell - $ git commit -m "First commit" - # Commits the tracked changes and prepares them to be pushed to a remote repository. {% data reusables.git.reset-head-to-previous-commit-codeblock %} - ``` -7. At the top of your {% data variables.product.product_name %} repository's Quick Setup page, click {% octicon "clippy" aria-label="The copy to clipboard icon" %} to copy the remote repository URL. - ![Copy remote repository URL field](/assets/images/help/repository/copy-remote-repository-url-quick-setup.png) -8. In the Command prompt, [add the URL for the remote repository](/articles/adding-a-remote) where your local repository will be pushed. - ```shell - $ git remote add origin remote repository URL - # Sets the new remote - $ git remote -v - # Verifies the new remote URL - ``` -9. [Push the changes](/articles/pushing-commits-to-a-remote-repository/) in your local repository to {% data variables.product.product_location %}. - ```shell - $ git push origin main - # Pushes the changes in your local repository up to the remote repository you specified as the origin - ``` - -{% endwindows %} - -{% linux %} - -1. [Create a new repository](/articles/creating-a-new-repository) on {% data variables.product.product_location %}. To avoid errors, do not initialize the new repository with *README*, license, or `gitignore` files. You can add these files after your project has been pushed to {% data variables.product.product_name %}. - ![Create New Repository drop-down](/assets/images/help/repository/repo-create.png) -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Change the current working directory to your local project. -4. Initialize the local directory as a Git repository. - ```shell - $ git init -b main - ``` -5. Add the files in your new local repository. This stages them for the first commit. - ```shell - $ git add . - # Adds the files in the local repository and stages them for commit. {% data reusables.git.unstage-codeblock %} - ``` -6. Commit the files that you've staged in your local repository. - ```shell - $ git commit -m "First commit" - # Commits the tracked changes and prepares them to be pushed to a remote repository. {% data reusables.git.reset-head-to-previous-commit-codeblock %} - ``` -7. At the top of your {% data variables.product.product_name %} repository's Quick Setup page, click {% octicon "clippy" aria-label="The copy to clipboard icon" %} to copy the remote repository URL. - ![Copy remote repository URL field](/assets/images/help/repository/copy-remote-repository-url-quick-setup.png) -8. In Terminal, [add the URL for the remote repository](/articles/adding-a-remote) where your local repository will be pushed. - ```shell - $ git remote add origin remote repository URL - # Sets the new remote - $ git remote -v - # Verifies the new remote URL - ``` -9. [Push the changes](/articles/pushing-commits-to-a-remote-repository/) in your local repository to {% data variables.product.product_location %}. - ```shell - $ git push origin main - # Pushes the changes in your local repository up to the remote repository you specified as the origin - ``` - -{% endlinux %} - -### Further reading - -- "[Adding a file to a repository using the command line](/articles/adding-a-file-to-a-repository-using-the-command-line)" diff --git a/content/github/importing-your-projects-to-github/importing-a-git-repository-using-the-command-line.md b/content/github/importing-your-projects-to-github/importing-a-git-repository-using-the-command-line.md deleted file mode 100644 index 59d97501f62c..000000000000 --- a/content/github/importing-your-projects-to-github/importing-a-git-repository-using-the-command-line.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Importing a Git repository using the command line -intro: '{% if currentVersion == "free-pro-team@latest" %}If [GitHub Importer](/articles/importing-a-repository-with-github-importer) is not suitable for your purposes, such as if your existing code is hosted on a private network, then we recommend importing using the command line.{% else %}Importing Git projects using the command line is suitable when your existing code is hosted on a private network.{% endif %}' -redirect_from: - - /articles/importing-a-git-repository-using-the-command-line -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -Before you start, make sure you know: - -- Your {% data variables.product.product_name %} username -- The clone URL for the external repository, such as `https://external-host.com/user/repo.git` or `git://external-host.com/user/repo.git` (perhaps with a `user@` in front of the `external-host.com` domain name) - -{% tip %} - -For purposes of demonstration, we'll use: - -- An external account named **extuser** -- An external Git host named `https://external-host.com` -- A {% data variables.product.product_name %} personal user account named **ghuser** -- A {% data variables.product.product_name %} repository named **repo.git** - -{% endtip %} - -1. [Create a new repository on {% data variables.product.product_name %}](/articles/creating-a-new-repository). You'll import your external Git repository to this new repository. -2. On the command line, make a "bare" clone of the repository using the external clone URL. This creates a full copy of the data, but without a working directory for editing files, and ensures a clean, fresh export of all the old data. - ```shell - $ git clone --bare https://external-host.com/extuser/repo.git - # Makes a bare clone of the external repository in a local directory - ``` -3. Push the locally cloned repository to {% data variables.product.product_name %} using the "mirror" option, which ensures that all references, such as branches and tags, are copied to the imported repository. - ```shell - $ cd repo.git - $ git push --mirror https://{% data variables.command_line.codeblock %}/ghuser/repo.git - # Pushes the mirror to the new {% data variables.product.product_name %} repository - ``` -4. Remove the temporary local repository. - ```shell - $ cd .. - $ rm -rf repo.git - ``` diff --git a/content/github/importing-your-projects-to-github/importing-a-repository-with-github-importer.md b/content/github/importing-your-projects-to-github/importing-a-repository-with-github-importer.md deleted file mode 100644 index 080e9c4fccd3..000000000000 --- a/content/github/importing-your-projects-to-github/importing-a-repository-with-github-importer.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Importing a repository with GitHub Importer -intro: 'If you have a project hosted on another version control system, you can automatically import it to GitHub using the GitHub Importer tool.' -redirect_from: - - /articles/importing-from-other-version-control-systems-to-github/ - - /articles/importing-a-repository-with-github-importer -versions: - free-pro-team: '*' ---- - -{% tip %} - -**Tip:** GitHub Importer is not suitable for all imports. For example, if your existing code is hosted on a private network, our tool won't be able to access it. In these cases, we recommend [importing using the command line](/articles/importing-a-git-repository-using-the-command-line) for Git repositories or an external [source code migration tool](/articles/source-code-migration-tools) for projects imported from other version control systems. - -{% endtip %} - -If you'd like to match the commits in your repository to the authors' GitHub user accounts during the import, make sure every contributor to your repository has a GitHub account before you begin the import. - -{% data reusables.repositories.migrating-from-codeplex %} - -{% data reusables.repositories.repo-size-limit %} - -1. In the upper-right corner of any page, click {% octicon "plus" aria-label="Plus symbol" %}, and then click **Import repository**. -![Import repository option in new repository menu](/assets/images/help/importer/import-repository.png) -2. Under "Your old repository's clone URL", type the URL of the project you want to import. -![Text field for URL of imported repository](/assets/images/help/importer/import-url.png) -3. Choose your user account or an organization to own the repository, then type a name for the repository on GitHub. -![Repository owner menu and repository name field](/assets/images/help/importer/import-repo-owner-name.png) -4. Specify whether the new repository should be *public* or *private*. For more information, see "[Setting repository visibility](/articles/setting-repository-visibility)." -![Public or private repository radio buttons](/assets/images/help/importer/import-public-or-private.png) -5. Review the information you entered, then click **Begin import**. -![Begin import button](/assets/images/help/importer/begin-import-button.png) -6. If your old project was protected by a password, type your login information for that project, then click **Submit**. -![Password form and Submit button for password-protected project](/assets/images/help/importer/submit-old-credentials-importer.png) -7. If there are multiple projects hosted at your old project's clone URL, choose the project you'd like to import, then click **Submit**. -![List of projects to import and Submit button](/assets/images/help/importer/choose-project-importer.png) -8. If your project contains files larger than 100 MB, choose whether to import the large files using [Git Large File Storage](/articles/versioning-large-files), then click **Continue**. -![Git Large File Storage menu and Continue button](/assets/images/help/importer/select-gitlfs-importer.png) - -You'll receive an email when the repository has been completely imported. - -### Further reading - -- "[Updating commit author attribution with GitHub Importer](/articles/updating-commit-author-attribution-with-github-importer)" diff --git a/content/github/importing-your-projects-to-github/importing-source-code-to-github.md b/content/github/importing-your-projects-to-github/importing-source-code-to-github.md deleted file mode 100644 index 3af8b5d9a687..000000000000 --- a/content/github/importing-your-projects-to-github/importing-source-code-to-github.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Importing source code to GitHub -intro: 'You can import repositories to GitHub using {% if currentVersion == "free-pro-team@latest" %}GitHub Importer, the command line,{% else %}the command line{% endif %} or external migration tools.' -redirect_from: - - /articles/importing-an-external-git-repository/ - - /articles/importing-from-bitbucket/ - - /articles/importing-an-external-git-repo/ - - /articles/importing-your-project-to-github/ - - /articles/importing-source-code-to-github -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/importing-your-projects-to-github/index.md b/content/github/importing-your-projects-to-github/index.md deleted file mode 100644 index 59215646f20e..000000000000 --- a/content/github/importing-your-projects-to-github/index.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Importing your projects to GitHub -shortTitle: Importing your projects -redirect_from: - - /categories/67/articles/ - - /categories/importing/ - - /categories/importing-your-projects-to-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /importing-source-code-to-github %} - - {% link_in_list /about-github-importer %} - {% link_in_list /importing-a-repository-with-github-importer %} - {% link_in_list /updating-commit-author-attribution-with-github-importer %} - - {% link_in_list /importing-a-git-repository-using-the-command-line %} - {% link_in_list /adding-an-existing-project-to-github-using-the-command-line %} - {% link_in_list /source-code-migration-tools %} -{% topic_link_in_list /working-with-subversion-on-github %} - {% link_in_list /what-are-the-differences-between-subversion-and-git %} - {% link_in_list /support-for-subversion-clients %} - {% link_in_list /subversion-properties-supported-by-github %} diff --git a/content/github/importing-your-projects-to-github/source-code-migration-tools.md b/content/github/importing-your-projects-to-github/source-code-migration-tools.md deleted file mode 100644 index c51158a24908..000000000000 --- a/content/github/importing-your-projects-to-github/source-code-migration-tools.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Source code migration tools -intro: You can use external tools to move your projects to GitHub. -redirect_from: - - /articles/importing-from-subversion/ - - /articles/source-code-migration-tools -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% if currentVersion == "free-pro-team@latest" %} - -We recommend using [GitHub Importer](/articles/about-github-importer) to import projects from Subversion, Mercurial, Team Foundation Server, or another Git repository. You can also use these external tools to convert your project to Git. - -{% endif %} - -### Importing from Subversion - -In a typical Subversion environment, multiple projects are stored in a single root repository. On GitHub, each of these projects will usually map to a separate Git repository for a user account or organization. We suggest importing each part of your Subversion repository to a separate GitHub repository if: - -* Collaborators need to check out or commit to that part of the project separately from the other parts -* You want different parts to have their own access permissions - -We recommend these tools for converting Subversion repositories to Git: - -- [`git-svn`](https://git-scm.com/docs/git-svn) -- [svn2git](https://github.com/nirvdrum/svn2git) - -### Importing from Mercurial - -We recommend [hg-fast-export](https://github.com/frej/fast-export) for converting Mercurial repositories to Git. - -### Importing from Team Foundation Server - -We recommend these tools for moving changes between Team Foundation Server and Git: - -- [git-tfs](https://github.com/git-tfs/git-tfs) -- [Git-TF](https://gittf.codeplex.com/) - -{% tip %} - -**Tip:** After you've successfully converted your project to Git, you can [push it to {% data variables.product.prodname_dotcom %}](/articles/pushing-commits-to-a-remote-repository/). - -{% endtip %} - -{% if currentVersion == "free-pro-team@latest" %} - -### Further reading - -- "[About GitHub Importer](/articles/about-github-importer)" -- "[Importing a repository with GitHub Importer](/articles/importing-a-repository-with-github-importer)" -- [{% data variables.product.prodname_learning %}]({% data variables.product.prodname_learning_link %}) - -{% endif %} diff --git a/content/github/importing-your-projects-to-github/subversion-properties-supported-by-github.md b/content/github/importing-your-projects-to-github/subversion-properties-supported-by-github.md deleted file mode 100644 index a7c84d6fbabd..000000000000 --- a/content/github/importing-your-projects-to-github/subversion-properties-supported-by-github.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Subversion properties supported by GitHub -intro: 'There are several Subversion workflows and properties that are similar to existing functionality on {% data variables.product.product_name %}.' -redirect_from: - - /articles/subversion-properties-supported-by-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Executable files (svn:executable) - -We convert `svn:executable` properties by updating the file mode directly before adding it to the Git repository. - -### MIME types (svn:mime-type) - -{% data variables.product.product_name %} internally tracks the mime-type properties of files and the commits that added them. - -### Ignoring unversioned items (svn:ignore) - -If you've set files and directories to be ignored in Subversion, {% data variables.product.product_name %} will track them internally. Files ignored by subversion clients are completely distinct from entries in a *.gitignore* file. - -### Currently unsupported properties - -{% data variables.product.product_name %} doesn't currently support `svn:externals`, `svn:global-ignores`, or any properties not listed above, including custom properties. diff --git a/content/github/importing-your-projects-to-github/support-for-subversion-clients.md b/content/github/importing-your-projects-to-github/support-for-subversion-clients.md deleted file mode 100644 index d791ab033e59..000000000000 --- a/content/github/importing-your-projects-to-github/support-for-subversion-clients.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Support for Subversion clients -intro: GitHub repositories can be accessed from both Git and Subversion (SVN) clients. This article covers using a Subversion client on GitHub and some common problems that you might run into. -redirect_from: - - /articles/support-for-subversion-clients -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -GitHub supports Subversion clients via the HTTPS protocol. We use a Subversion bridge to communicate svn commands to GitHub. - -### Supported Subversion features on GitHub - -#### Checkout - -The first thing you'll want to do is a Subversion checkout. Since Git clones keep the working directory (where you edit files) separate from the repository data, there is only one branch in the working directory at a time. - -Subversion checkouts are different: they mix the repository data in the working directories, so there is a working directory for each branch and tag you've checked out. For repositories with many branches and tags, checking out everything can be a bandwidth burden, so you should start with a partial checkout. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.copy-clone-url %} - -3. Make an empty checkout of the repository: - ```shell - $ svn co --depth empty https://github.com/user/repo - > Checked out revision 1. - $ cd repo - ``` - -4. Get the `trunk` branch. The Subversion bridge maps trunk to the Git HEAD branch. - ```shell - $ svn up trunk - > A trunk - > A trunk/README.md - > A trunk/gizmo.rb - > Updated to revision 1. - ``` - -5. Get an empty checkout of the `branches` directory. This is where all of the non-`HEAD` branches live, and where you'll be making feature branches. - ```shell - $ svn up --depth empty branches - Updated to revision 1. - ``` - -#### Creating branches - -You can also create branches using the Subversion bridge to GitHub. - -From your svn client, make sure the default branch is current by updating `trunk`: -```shell -$ svn up trunk -> At revision 1. -``` - -Next, you can use `svn copy` to create a new branch: -```shell -$ svn copy trunk branches/more_awesome -> A branches/more_awesome -$ svn commit -m 'Added more_awesome topic branch' -> Adding branches/more_awesome - -> Committed revision 2. -``` - -You can confirm that the new branch exists in the repository's branch dropdown: - -![branch-snapshot](/assets/images/help/branch/svnflow-branch-snapshot.png) - -You can also confirm the new branch via the command line: - -```shell -$ git fetch -> From https://github.com/user/repo/ -> * [new branch] more_awesome -> origin/more_awesome -``` - -#### Making commits to Subversion - -After you've added some features and fixed some bugs, you'll want to commit those -changes to GitHub. This works just like the Subversion you're used to. Edit your files, and use `svn commit` to record your changes: - -```shell -$ svn status -> M gizmo.rb -$ svn commit -m 'Guard against known problems' -> Sending more_awesome/gizmo.rb -> Transmitting file data . -> Committed revision 3. -$ svn status -> ? test -$ svn add test -> A test -> A test/gizmo_test.rb -$ svn commit -m 'Test coverage for problems' -> Adding more_awesome/test -> Adding more_awesome/test/gizmo_test.rb -> Transmitting file data . -> Committed revision 4. -``` - -#### Switching between branches - -To switch between branches, you'll probably want to start with a checkout of `trunk`: - -```shell -$ svn co --depth empty https://github.com/user/repo/trunk -``` - -Then, you can switch to another branch: - -```shell -$ svn switch https://github.com/user/repo/branches/more_awesome -``` - -### Finding the Git commit SHA for a Subversion commit - -GitHub's Subversion server exposes the Git commit sha for each Subversion commit. - -To see the commit SHA, you should ask for the `git-commit` unversioned remote property. - -```shell -$ svn propget git-commit --revprop -r HEAD https://github.com/user/repo -05fcc584ed53d7b0c92e116cb7e64d198b13c4e3 -``` - -With this commit SHA, you can, for example, look up the corresponding Git commit on GitHub. - -### Further reading - -* "[Subversion properties supported by GitHub](/articles/subversion-properties-supported-by-github)" diff --git a/content/github/importing-your-projects-to-github/updating-commit-author-attribution-with-github-importer.md b/content/github/importing-your-projects-to-github/updating-commit-author-attribution-with-github-importer.md deleted file mode 100644 index 12b56e625393..000000000000 --- a/content/github/importing-your-projects-to-github/updating-commit-author-attribution-with-github-importer.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Updating commit author attribution with GitHub Importer -intro: 'During an import, you can match commits in your repository with the GitHub account of the commit author.' -redirect_from: - - /articles/updating-commit-author-attribution-with-github-importer -versions: - free-pro-team: '*' ---- - -GitHub Importer looks for GitHub users whose email addresses match the authors of the commits in the repository you're importing. You can then connect a commit to its author using their email address or the author's GitHub username. - -### Updating commit authors - -1. After you've imported your repository, on the import status page, click **Match authors**. -![Match authors button](/assets/images/help/importer/match-authors-button.png) -2. Next to the author whose information you'd like to update, click **Connect**. -![List of commit authors](/assets/images/help/importer/connect-commit-author.png) -3. Type the email address or GitHub username of the author, then press **Enter**. - -### Attributing commits to a GitHub user with a public email address - -If the author of a commit in your imported repository has a GitHub account associated with the email address they used to author the commits, and they haven't [set their commit email address as private](/articles/setting-your-commit-email-address), GitHub Importer will match the email address associated with the commit to the public email address associated with their GitHub account, and attribute the commit to their GitHub account. - -### Attributing commits to a GitHub user without a public email address - -If the author of a commit in your imported repository has neither set a public email address on their GitHub profile, nor [set their commit email address as private](/articles/setting-your-commit-email-address), GitHub Importer may not be able to match the email address associated with the commit with their GitHub account. - -The commit author can resolve this by setting their email address as private. Their commits will then be attributed to `@users.noreply.github.com`, and the imported commits will be associated with their GitHub account. - -### Attributing commits using an email address - -If the author's email address is not associated with their GitHub account, they can [add the address to their account](/articles/adding-an-email-address-to-your-github-account) after the import, and the commits will be correctly attributed. - -If the author does not have a GitHub account, GitHub Importer will attribute their commits to the email address associated with the commits. - -### Further reading - -- "[About GitHub Importer](/articles/about-github-importer)" -- "[Importing a repository with GitHub Importer](/articles/importing-a-repository-with-github-importer)" -- "[Adding an email address to your account](/articles/adding-an-email-address-to-your-github-account/)" -- "[Setting your commit email address](/articles/setting-your-commit-email-address)" diff --git a/content/github/importing-your-projects-to-github/what-are-the-differences-between-subversion-and-git.md b/content/github/importing-your-projects-to-github/what-are-the-differences-between-subversion-and-git.md deleted file mode 100644 index d679071d4813..000000000000 --- a/content/github/importing-your-projects-to-github/what-are-the-differences-between-subversion-and-git.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: What are the differences between Subversion and Git? -intro: 'Subversion (SVN) repositories are similar to Git repositories, but there are several differences when it comes to the architecture of your projects.' -redirect_from: - - /articles/what-are-the-differences-between-svn-and-git/ - - /articles/what-are-the-differences-between-subversion-and-git -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Directory structure - -Each *reference*, or labeled snapshot of a commit, in a project is organized within specific subdirectories, such as `trunk`, `branches`, and `tags`. For example, an SVN project with two features under development might look like this: - - sample_project/trunk/README.md - sample_project/trunk/lib/widget.rb - sample_project/branches/new_feature/README.md - sample_project/branches/new_feature/lib/widget.rb - sample_project/branches/another_new_feature/README.md - sample_project/branches/another_new_feature/lib/widget.rb - -An SVN workflow looks like this: - -* The `trunk` directory represents the latest stable release of a project. -* Active feature work is developed within subdirectories under `branches`. -* When a feature is finished, the feature directory is merged into `trunk` and removed. - -Git projects are also stored within a single directory. However, Git obscures the details of its references by storing them in a special *.git* directory. For example, a Git project with two features under development might look like this: - - sample_project/.git - sample_project/README.md - sample_project/lib/widget.rb - -A Git workflow looks like this: - -* A Git repository stores the full history of all of its branches and tags within the *.git* directory. -* The latest stable release is contained within the default branch. -* Active feature work is developed in separate branches. -* When a feature is finished, the feature branch is merged into the default branch and deleted. - -Unlike SVN, with Git the directory structure remains the same, but the contents of the files change based on your branch. - -### Including subprojects - -A *subproject* is a project that's developed and managed somewhere outside of your main project. You typically import a subproject to add some functionality to your project without needing to maintain the code yourself. Whenever the subproject is updated, you can synchronize it with your project to ensure that everything is up-to-date. - -In SVN, a subproject is called an *SVN external*. In Git, it's called a *Git submodule*. Although conceptually similar, Git submodules are not kept up-to-date automatically; you must explicitly ask for a new version to be brought into your project. - -For more information, see “[Git Tools Submodules](https://git-scm.com/book/en/Git-Tools-Submodules)" in the Git documentation. - -### Preserving history - -SVN is configured to assume that the history of a project never changes. Git allows you to modify previous commits and changes using tools like [`git rebase`](/articles/about-git-rebase). - -{% tip %} - -[GitHub supports Subversion clients](/articles/support-for-subversion-clients), which may produce some unexpected results if you're using both Git and SVN on the same project. If you've manipulated Git's commit history, those same commits will always remain within SVN's history. If you accidentally committed some sensitive data, we have [an article that will help you remove it from Git's history](/articles/removing-sensitive-data-from-a-repository). - -{% endtip %} - -### Further reading - -- "[Subversion properties supported by GitHub](/articles/subversion-properties-supported-by-github)" -- ["Branching and Merging" from the _Git SCM_ book](https://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging) -- "[Importing source code to GitHub](/articles/importing-source-code-to-github)" -- "[Source code migration tools](/articles/source-code-migration-tools)" diff --git a/content/github/importing-your-projects-to-github/working-with-subversion-on-github.md b/content/github/importing-your-projects-to-github/working-with-subversion-on-github.md deleted file mode 100644 index bb2a40c23a69..000000000000 --- a/content/github/importing-your-projects-to-github/working-with-subversion-on-github.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Working with Subversion on GitHub -intro: You can use Subversion clients and some Subversion workflows and properties with GitHub. -mapTopic: true -redirect_from: - - /articles/working-with-subversion-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/index.md b/content/github/index.md deleted file mode 100644 index 5eb9f6603864..000000000000 --- a/content/github/index.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: GitHub.com -redirect_from: - - /articles/ - - /common-issues-and-questions/ - - /troubleshooting-common-issues/ -intro: 'Documentation, guides, and help topics for software developers, designers, and project managers. Covers using Git, pull requests, issues, wikis, gists, and everything you need to make the most of GitHub for development.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% link_in_list /getting-started-with-github %} - -{% link_in_list /setting-up-and-managing-your-github-user-account %} - -{% link_in_list /setting-up-and-managing-your-github-profile %} - -{% link_in_list /authenticating-to-github %} - - - -{% link_in_list /managing-subscriptions-and-notifications-on-github %} - - - - -{% link_in_list /receiving-notifications-about-activity-on-github %} - - -{% link_in_list /setting-up-and-managing-organizations-and-teams %} - - -{% link_in_list /setting-up-and-managing-your-enterprise-account %} - - - -{% link_in_list /setting-up-and-managing-billing-and-payments-on-github %} - - -{% link_in_list /writing-on-github %} - -{% link_in_list /creating-cloning-and-archiving-repositories %} - -{% link_in_list /using-git %} - -{% link_in_list /committing-changes-to-your-project %} - -{% link_in_list /collaborating-with-issues-and-pull-requests %} - -{% link_in_list /managing-your-work-on-github %} - - -{% link_in_list /developing-online-with-codespaces %} - - -{% link_in_list /building-a-strong-community %} - -{% link_in_list /searching-for-information-on-github %} - -{% link_in_list /importing-your-projects-to-github %} - -{% link_in_list /administering-a-repository %} - -{% link_in_list /visualizing-repository-data-with-graphs %} - - -{% link_in_list /managing-security-vulnerabilities %} - - -{% link_in_list /finding-security-vulnerabilities-and-errors-in-your-code %} - -{% link_in_list /managing-files-in-a-repository %} - -{% link_in_list /managing-large-files %} - - -{% link_in_list /customizing-your-github-workflow %} - - -{% link_in_list /extending-github %} - -{% link_in_list /working-with-github-pages %} - - -{% link_in_list /supporting-the-open-source-community-with-github-sponsors %} - - - -{% link_in_list /teaching-and-learning-with-github-education %} - - - -{% link_in_list /finding-talent-with-github-jobs %} - - - -{% link_in_list /working-with-github-support %} - - - -{% link_in_list /understanding-how-github-uses-and-protects-your-data %} - - - -{% link_in_list /site-policy %} - diff --git a/content/github/managing-files-in-a-repository/3d-file-viewer.md b/content/github/managing-files-in-a-repository/3d-file-viewer.md deleted file mode 100644 index 5f7bee340c4b..000000000000 --- a/content/github/managing-files-in-a-repository/3d-file-viewer.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: 3D File Viewer -redirect_from: - - /articles/stl-file-viewer/ - - /articles/3d-file-viewer -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% data variables.product.product_name %} can host and render 3D files with the *.stl* extension. - -When looking directly at an STL file on {% data variables.product.product_name %} you can: - -* Click and drag to spin the model. -* Right click and drag to translate the view. -* Scroll to zoom in and out. -* Click the different view modes to change the view. - -### Diffs - -When looking at a commit or set of changes which includes an STL file, you'll be able to see a before and after diff of the file. - -By default, you'll get a view where everything unchanged is in wireframe. Additions are colored in green, and removed parts are colored in red. - -![wireframe](/assets/images/help/repository/stl_wireframe.png) - -You can also select the **Revision Slider** option, which lets you use a slider at the top of the file to transition between the current and previous revisions. - -### Fixing slow performance - -If you see this icon in the corner of the viewer, then the WebGL technology is not available on your browser: - -![WebGL pop error](/assets/images/help/repository/render_webgl_error.png) - -WebGL is necessary to take advantage of your computer's hardware to its fullest. We recommend you try browsers like [Chrome](https://www.google.com/intl/en/chrome/browser/) or [Firefox](https://www.mozilla.org/en-US/firefox/new/), which ship with WebGL enabled. - -### Error: "Unable to display" - -If your model is invalid, GitHub may not be able to display the file. In addition, files that are larger than 10 MB are too big for GitHub to display. - -### Embedding your model elsewhere - -To display your 3D file elsewhere on the internet, modify this template and place it on any HTML page that supports JavaScript: - -```html - -``` - -For example, if your model's URL is [github.com/skalnik/secret-bear-clip/blob/master/stl/clip.stl](https://github.com/skalnik/secret-bear-clip/blob/master/stl/clip.stl), your embed code would be: - -```html - -``` - -By default, the embedded renderer is 420 pixels wide by 620 pixels high, but you can customize the output by passing height and width variables as parameters at the end of the URL, such as `?height=300&width=500`. - -{% tip %} - -**Note**: `ref` can be a branch or the hash to an individual commit (like `2391ae`). - -{% endtip %} diff --git a/content/github/managing-files-in-a-repository/adding-a-file-to-a-repository-using-the-command-line.md b/content/github/managing-files-in-a-repository/adding-a-file-to-a-repository-using-the-command-line.md deleted file mode 100644 index a8d5fe1770bb..000000000000 --- a/content/github/managing-files-in-a-repository/adding-a-file-to-a-repository-using-the-command-line.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Adding a file to a repository using the command line -intro: 'You can upload an existing file to a {% data variables.product.product_name %} repository using the command line.' -redirect_from: - - /articles/adding-a-file-to-a-repository-from-the-command-line/ - - /articles/adding-a-file-to-a-repository-using-the-command-line -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tip:** You can also [add an existing file to a repository from the {% data variables.product.product_name %} website](/articles/adding-a-file-to-a-repository). - -{% endtip %} - -{% data reusables.command_line.manipulating_file_prereqs %} - -{% data reusables.repositories.sensitive-info-warning %} - -1. On your computer, move the file you'd like to upload to {% data variables.product.product_name %} into the local directory that was created when you cloned the repository. -{% data reusables.command_line.open_the_multi_os_terminal %} -{% data reusables.command_line.switching_directories_procedural %} -{% data reusables.git.stage_for_commit %} - ```shell - $ git add . - # Adds the file to your local repository and stages it for commit. {% data reusables.git.unstage-codeblock %} - ``` -{% data reusables.git.commit-file %} - ```shell - $ git commit -m "Add existing file" - # Commits the tracked changes and prepares them to be pushed to a remote repository. {% data reusables.git.reset-head-to-previous-commit-codeblock %} - ``` -{% data reusables.git.git-push %} - -### Further reading - -- "[Creating new files](/articles/creating-new-files)" -- "[Adding an existing project to GitHub using the command line](/articles/adding-an-existing-project-to-github-using-the-command-line)" diff --git a/content/github/managing-files-in-a-repository/adding-a-file-to-a-repository.md b/content/github/managing-files-in-a-repository/adding-a-file-to-a-repository.md deleted file mode 100644 index 3dc35b4b227d..000000000000 --- a/content/github/managing-files-in-a-repository/adding-a-file-to-a-repository.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Adding a file to a repository -intro: 'You can upload and commit an existing file to a {% data variables.product.product_name %} repository. Drag and drop a file to any directory in the file tree, or upload files from the repository''s main page.' -redirect_from: - - /articles/adding-a-file-to-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Files that you add to a repository via a browser are limited to {% data variables.large_files.max_github_browser_size %} per file. You can add larger files, up to {% data variables.large_files.max_github_size %} each, via the command line. For more information, see "[Adding a file to a repository using the command line](/articles/adding-a-file-to-a-repository-using-the-command-line)." - -{% tip %} - -**Tips:** -- You can upload multiple files to {% data variables.product.product_name %} at the same time. -- {% data reusables.repositories.protected-branches-block-web-edits-uploads %} - -{% endtip %} - -{% data reusables.repositories.navigate-to-repo %} -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} -2. Under your repository name, click **Upload files**. - ![Upload files button](/assets/images/help/repository/upload-files-button.png) -{% else %} -2. Above the list of files, using the **Add file** drop-down, click **Upload files**. - !["Upload files" in the "Add file" dropdown](/assets/images/help/repository/upload-files-button.png) -{% endif %} -3. Drag and drop the file or folder you'd like to upload to your repository onto the file tree. -![Drag and drop area](/assets/images/help/repository/upload-files-drag-and-drop.png) -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} -6. Click **Commit changes**. -![Commit changes button](/assets/images/help/repository/commit-changes-button.png) diff --git a/content/github/managing-files-in-a-repository/creating-new-files.md b/content/github/managing-files-in-a-repository/creating-new-files.md deleted file mode 100644 index b06ca4cb0b5e..000000000000 --- a/content/github/managing-files-in-a-repository/creating-new-files.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Creating new files -intro: 'You can create new files directly on {% data variables.product.product_name %} in any repository you have write access to.' -redirect_from: - - /articles/creating-new-files -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When creating a file on {% data variables.product.product_name %}, consider the following: - -- If you try to create a new file in a repository that you don’t have access to, we will fork the project to your user account and help you send [a pull request](/articles/about-pull-requests) to the original repository after you commit your change. -- File names created via the web interface can only contain alphanumeric characters and hyphens (`-`). To use other characters, [create and commit the files locally, then push them to the repository on {% data variables.product.product_name %}](/articles/adding-a-file-to-a-repository-using-the-command-line). - -{% data reusables.repositories.sensitive-info-warning %} - -{% data reusables.repositories.navigate-to-repo %} -2. In your repository, browse to the folder where you want to create a file. -{% data reusables.files.add-file %} -4. In the file name field, type the name and extension for the file. To create subdirectories, type the `/` directory separator. -![New file name](/assets/images/help/repository/new-file-name.png) -5. On the **Edit new file** tab, add content to the file. -![Content in new file](/assets/images/help/repository/new-file-content.png) -6. To review the new content, click **Preview**. -![New file preview button](/assets/images/help/repository/new-file-preview.png) -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose-commit-email %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_new_file %} - -### Further reading - -- "[Adding a file to a repository](/articles/adding-a-file-to-a-repository)" -- "[Adding a file to a repository using the command line](/articles/adding-a-file-to-a-repository-using-the-command-line)" diff --git a/content/github/managing-files-in-a-repository/deleting-files.md b/content/github/managing-files-in-a-repository/deleting-files.md deleted file mode 100644 index 0ea1952c1add..000000000000 --- a/content/github/managing-files-in-a-repository/deleting-files.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Deleting files -intro: 'You can delete any file within your repositories on {% data variables.product.product_name %}.' -redirect_from: - - /articles/deleting-files -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tip**: If you try to delete a file in a repository that you don’t have access to, we'll fork the project to your user account and help you send [a pull request](/articles/about-pull-requests) to the original repository after you commit your change. - -{% endtip %} - -1. Browse to the file in your repository that you want to delete. -2. At the top of the file, click {% octicon "trashcan" aria-label="The trashcan icon" %}. -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose-commit-email %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_file_change %} - -{% danger %} - -**Attention**: Since Git is a version control system, it always has your back if you need to recover the file later. If you really, *really* need to **completely** remove a file from a repository for some reason, such as a sensitive file that was accidentally committed, you should follow the steps in [our article about removing sensitive data](/articles/removing-sensitive-data-from-a-repository). - -{% enddanger %} diff --git a/content/github/managing-files-in-a-repository/editing-files-in-another-users-repository.md b/content/github/managing-files-in-a-repository/editing-files-in-another-users-repository.md deleted file mode 100644 index 3075ff02ff9f..000000000000 --- a/content/github/managing-files-in-a-repository/editing-files-in-another-users-repository.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Editing files in another user's repository -intro: 'When you edit a file in another user''s repository, we''ll automatically [fork the repository](/articles/fork-a-repo) and [open a pull request](/articles/creating-a-pull-request) for you.' -redirect_from: - - /articles/editing-files-in-another-users-repository/ - - /articles/editing-files-in-another-user-s-repository - - /articles/editing-files-in-another-users-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -1. In another user's repository, browse to the folder that contains the file you want to edit. Click the name of the file you want to edit. -2. Above the file content, click {% octicon "pencil" aria-label="The edit icon" %}. At this point, GitHub forks the repository for you. -3. Make any changes you need to the file. -![New content in file](/assets/images/help/repository/edit-readme-light.png) -{% data reusables.files.preview_change %} -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose-commit-email %} -6. Click **Propose file change**. -![Commit Changes button](/assets/images/help/repository/propose_file_change_button.png) -7. Type a title and description for your pull request. -![Pull Request description page](/assets/images/help/pull_requests/pullrequest-description.png) -8. Click **Create pull request**. -![Pull Request button](/assets/images/help/pull_requests/pullrequest-send.png) - -### Further reading - -* "[Editing files in your repository](/articles/editing-files-in-your-repository)" diff --git a/content/github/managing-files-in-a-repository/editing-files-in-your-repository.md b/content/github/managing-files-in-a-repository/editing-files-in-your-repository.md deleted file mode 100644 index 4c1abd9ad4ab..000000000000 --- a/content/github/managing-files-in-a-repository/editing-files-in-your-repository.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Editing files in your repository -intro: 'You can edit files directly on {% data variables.product.product_name %} in any of your repositories using the file editor.' -redirect_from: - - /articles/editing-files/ - - /articles/editing-files-in-your-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tip**: {% data reusables.repositories.protected-branches-block-web-edits-uploads %} - -{% endtip %} - -{% note %} - -**Note:** {% data variables.product.product_name %}'s file editor uses [CodeMirror](https://codemirror.net/). - -{% endnote %} - -1. In your repository, browse to the file you want to edit. -{% data reusables.repositories.edit-file %} -3. On the **Edit file** tab, make any changes you need to the file. -![New content in file](/assets/images/help/repository/edit-readme-light.png) -{% data reusables.files.preview_change %} -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose-commit-email %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_file_change %} - -### Further reading - -* "[Editing files in another user's repository](/articles/editing-files-in-another-user-s-repository)" diff --git a/content/github/managing-files-in-a-repository/getting-permanent-links-to-files.md b/content/github/managing-files-in-a-repository/getting-permanent-links-to-files.md deleted file mode 100644 index 46d734b674cd..000000000000 --- a/content/github/managing-files-in-a-repository/getting-permanent-links-to-files.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Getting permanent links to files -intro: 'When viewing a file on {% data variables.product.product_location %}, you can press the "y" key to update the URL to a permalink to the exact version of the file you see.' -redirect_from: - - /articles/getting-a-permanent-link-to-a-file/ - - /articles/how-do-i-get-a-permanent-link-from-file-view-to-permanent-blob-url/ - - /articles/getting-permanent-links-to-files -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tip**: Press "?" on any page in {% data variables.product.product_name %} to see all available keyboard shortcuts. - -{% endtip %} - -### File views show the latest version on a branch - -When viewing a file on {% data variables.product.product_location %}, you usually see the version at the current head of a branch. For example: - -* [https://github.com/github/codeql/blob/**main**/README.md](https://github.com/github/codeql/blob/main/README.md) - -refers to GitHub's `codeql` repository, and shows the `main` branch's current version of the `README.md` file. - -The version of a file at the head of branch can change as new commits are made, so if you were to copy the normal URL, the file contents might not be the same when someone looks at it later. - -### Press y to permalink to a file in a specific commit - -For a permanent link to the specific version of a file that you see, instead of using a branch name in the URL (i.e. the `main` part in the example above), put a commit id. This will permanently link to the exact version of the file in that commit. For example: - -* [https://github.com/github/codeql/blob/**b212af08a6cffbb434f3c8a2795a579e092792fd**/README.md](https://github.com/github/codeql/blob/b212af08a6cffbb434f3c8a2795a579e092792fd/README.md) - -replaces `main` with a specific commit id and the file content will not change. - -Looking up the commit SHA by hand is inconvenient, however, so as a shortcut you can type y to automatically update the URL to the permalink version. Then you can copy the URL knowing that anyone you share it with will see exactly what you saw. - -{% tip %} - -**Tip**: You can put any identifier that can be resolved to a commit in the URL, including branch names, specific commit SHAs, or tags! - -{% endtip %} - -### Creating a permanent link to a code snippet - -You can create a permanent link to a specific line or range of lines of code in a specific version of a file or pull request. For more information, see "[Creating a permanent link to a code snippet](/articles/creating-a-permanent-link-to-a-code-snippet/)." - -### Further reading - -- "[Archiving a GitHub repository](/articles/archiving-a-github-repository)" diff --git a/content/github/managing-files-in-a-repository/index.md b/content/github/managing-files-in-a-repository/index.md deleted file mode 100644 index 84f709d11b02..000000000000 --- a/content/github/managing-files-in-a-repository/index.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Managing files in a repository -redirect_from: - - /categories/81/articles/ - - /categories/manipulating-files/ - - /categories/managing-files-in-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /managing-files-on-github %} - - {% link_in_list /navigating-code-on-github %} - - {% link_in_list /creating-new-files %} - {% link_in_list /adding-a-file-to-a-repository %} - {% link_in_list /moving-a-file-to-a-new-location %} - {% link_in_list /editing-files-in-your-repository %} - {% link_in_list /editing-files-in-another-users-repository %} - {% link_in_list /tracking-changes-in-a-file %} - {% link_in_list /deleting-files %} - {% link_in_list /renaming-a-file %} - {% link_in_list /getting-permanent-links-to-files %} -{% topic_link_in_list /managing-files-using-the-command-line %} - {% link_in_list /adding-a-file-to-a-repository-using-the-command-line %} - {% link_in_list /renaming-a-file-using-the-command-line %} - {% link_in_list /moving-a-file-to-a-new-location-using-the-command-line %} -{% topic_link_in_list /working-with-non-code-files %} - {% link_in_list /rendering-and-diffing-images %} - {% link_in_list /3d-file-viewer %} - {% link_in_list /rendering-csv-and-tsv-data %} - {% link_in_list /rendering-pdf-documents %} - {% link_in_list /rendering-differences-in-prose-documents %} - {% link_in_list /mapping-geojson-files-on-github %} - {% link_in_list /working-with-jupyter-notebook-files-on-github %} diff --git a/content/github/managing-files-in-a-repository/managing-files-on-github.md b/content/github/managing-files-in-a-repository/managing-files-on-github.md deleted file mode 100644 index d65f8cfca977..000000000000 --- a/content/github/managing-files-in-a-repository/managing-files-on-github.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing files on GitHub -intro: 'On {% data variables.product.product_name %}, you can create, edit, move, and delete files in a repository.' -mapTopic: true -redirect_from: - - /articles/managing-files-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/managing-files-in-a-repository/managing-files-using-the-command-line.md b/content/github/managing-files-in-a-repository/managing-files-using-the-command-line.md deleted file mode 100644 index 68ff00ddf1b6..000000000000 --- a/content/github/managing-files-in-a-repository/managing-files-using-the-command-line.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing files using the command line -intro: 'Using the command line, you can add, rename, and move files in a repository.' -mapTopic: true -redirect_from: - - /articles/managing-files-using-the-command-line -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/managing-files-in-a-repository/mapping-geojson-files-on-github.md b/content/github/managing-files-in-a-repository/mapping-geojson-files-on-github.md deleted file mode 100644 index 7327210c49ee..000000000000 --- a/content/github/managing-files-in-a-repository/mapping-geojson-files-on-github.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Mapping geoJSON files on GitHub -redirect_from: - - /articles/mapping-geojson-files-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% data variables.product.product_name %} supports rendering geoJSON and topoJSON map files within {% data variables.product.product_name %} repositories. Simply commit the file as you would normally using a `.geojson` or `.topojson` extension. Files with a `.json` extension are also supported, but only if `type` is set to `FeatureCollection`, `GeometryCollection`, or `topology`. Then, navigate to the path of the geoJSON file on GitHub.com. - -When you click the paper icon on the right, you'll also see the changes made to that file as part of a commit. - -![Source Render toggle screenshot](/assets/images/help/repository/source-render-toggle-geojson.png) - -### Geometry Types - -Maps on {% data variables.product.product_name %} use [Leaflet.js](http://leafletjs.com) and support all the geometry types outlined in [the geoJSON spec](http://www.geojson.org/geojson-spec.html) (Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, and GeometryCollection). TopoJSON files should be type "Topology" and adhere to the [topoJSON spec](https://github.com/mbostock/topojson/wiki/Specification). - -### Styling features - -You can customize the way features are displayed, such as specifying a particular color or adding a descriptive icon, by passing additional metadata within the geoJSON object's properties. The options are: - -* `marker-size` - `small`, `medium`, or `large` -* `marker-color` - valid RGB hex color -* `marker-symbol` - an icon ID from [the Maki project](http://mapbox.com/maki/) or a single alphanumeric character (a-z or 0-9). -* `stroke` - color of a polygon edge or line (RGB) -* `stroke-opacity` - opacity of a polygon edge or line (0.0 - 1.0) -* `stroke-width` - width of a polygon edge or line -* `fill` - the color of the interior of a polygon (GRB) -* `fill-opacity` - the opacity of the interior of a polygon (0.0-1.0) - -See [version 1.1.0 of the open simplestyle spec](https://github.com/mapbox/simplestyle-spec/tree/master/1.1.0) for more information. - -### Embedding your map elsewhere - -Want to make your geoJSON map available someplace other than {% data variables.product.product_name %}? Simply modify this template, and place it in any HTML page that supports javascript (e.g., [{% data variables.product.prodname_pages %}](http://pages.github.com)): - -```html - -``` - -For example, if your map's URL is [github.com/benbalter/dc-wifi-social/blob/master/bars.geojson](https://github.com/benbalter/dc-wifi-social/blob/master/bars.geojson), your embed code would be: - -```html - -``` - -By default, the embedded map 420px x 620px, but you can customize the output by passing height and width variables as parameters at the end, such as `?height=300&width=500`. - -{% tip %} - -**Note**: `ref` can be a branch or the hash to an individual commit (like `2391ae`). - -{% endtip %} - -### Clustering - -If your map contains a large number of markers (roughly over 750), GitHub will automatically cluster nearby markers at higher zoom levels. Simply click the cluster or zoom in to see individual markers. - -### Something's up with the underlying map - -The underlying map data (street names, roads, etc.) are driven by [OpenStreetMap](http://www.openstreetmap.org/), a collaborative project to create a free editable map of the world. If you notice something's not quite right, since it's open source, simply [sign up](https://www.openstreetmap.org/user/new) and submit a fix. - -### Troubleshooting - -If you're having trouble rendering geoJSON files, ensure you have a valid geoJSON file by running it through a [geoJSON linter](http://geojsonlint.com/). If your points aren't appearing where you'd expect (e.g., in the middle of the ocean), it's likely that the data is in a projection which is currently unsupported. Currently, {% data variables.product.product_name %} only supports the `urn:ogc:def:crs:OGC:1.3:CRS84` projection. - -Additionally, if your `.geojson` file is especially large (over 10 MB), it is not possible to render within the browser. If that's the case, you'll generally see a message that looks something like this: - -![Large file](/assets/images/help/repository/view_raw.png) - -It may still be possible to render the data by converting the `.geojson` file to [TopoJSON](https://github.com/mbostock/topojson), a compression format that, in some cases, can reduce filesize by up to 80%. Of course, you can always break the file into smaller chunks (such as by state or by year), and store the data as multiple files within the repository. - -### Additional Resources - -* [Leaflet.js geojson documentation](http://leafletjs.com/examples/geojson.html) -* [MapBox marker-styling documentation](http://www.mapbox.com/developers/simplestyle/) -* [TopoJSON Wiki](https://github.com/mbostock/topojson/wiki) diff --git a/content/github/managing-files-in-a-repository/moving-a-file-to-a-new-location-using-the-command-line.md b/content/github/managing-files-in-a-repository/moving-a-file-to-a-new-location-using-the-command-line.md deleted file mode 100644 index f2796b3bfb70..000000000000 --- a/content/github/managing-files-in-a-repository/moving-a-file-to-a-new-location-using-the-command-line.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Moving a file to a new location using the command line -intro: You can use the command line to move files within a repository by removing the file from the old location and then adding it in the new location. -redirect_from: - - /articles/moving-a-file-to-a-new-location-using-the-command-line -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Many files can be [moved directly on {% data variables.product.product_name %}](/articles/moving-a-file-to-a-new-location), but some files, such as images, require that you move them from the command line. - -{% data reusables.command_line.manipulating_file_prereqs %} - -1. On your computer, move the file to a new location within the directory that was created locally on your computer when you cloned the repository. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Use `git status` to check the old and new file locations. - ```shell - $ git status - > # On branch your-branch - > # Changes not staged for commit: - > # (use "git add/rm ..." to update what will be committed) - > # (use "git checkout -- ..." to discard changes in working directory) - > # - > # deleted: /old-folder/image.png - > # - > # Untracked files: - > # (use "git add ..." to include in what will be committed) - > # - > # /new-folder/image.png - > # - > # no changes added to commit (use "git add" and/or "git commit -a") - ``` -{% data reusables.git.stage_for_commit %} This will delete, or `git rm`, the file from the old location and add, or `git add`, the file to the new location. - ```shell - $ git add . - # Adds the file to your local repository and stages it for commit. - # {% data reusables.git.unstage-codeblock %} - ``` -5. Use `git status` to check the changes staged for commit. - ```shell - $ git status - > # On branch your-branch - > # Changes to be committed: - > # (use "git reset HEAD ..." to unstage) - > # - > # renamed: /old-folder/image.png -> /new-folder/image.png - # Displays the changes staged for commit - ``` -{% data reusables.git.commit-file %} - ```shell - $ git commit -m "Move file to new directory" - # Commits the tracked changes and prepares them to be pushed to a remote repository. - # {% data reusables.git.reset-head-to-previous-commit-codeblock %} - ``` -{% data reusables.git.git-push %} - -### Further reading - -- "[Renaming a file using the command line](/articles/renaming-a-file-using-the-command-line)" -- "[Adding a file to a repository using the command line](/articles/adding-a-file-to-a-repository-using-the-command-line)" diff --git a/content/github/managing-files-in-a-repository/moving-a-file-to-a-new-location.md b/content/github/managing-files-in-a-repository/moving-a-file-to-a-new-location.md deleted file mode 100644 index b78e58dd1f6c..000000000000 --- a/content/github/managing-files-in-a-repository/moving-a-file-to-a-new-location.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Moving a file to a new location -intro: 'When editing a file, you can choose to move it anywhere within your repository, even if the directory doesn''t exist.' -redirect_from: - - /articles/moving-a-file-to-a-new-location -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -In addition to changing the file location, you can also [update the contents of your file](/articles/editing-files-in-your-repository), or [give it a new name](/articles/renaming-a-file) in the same commit. - -{% tip %} - -**Tips**: - -- If you try to move a file in a repository that you don’t have access to, we'll fork the project to your user account and help you send [a pull request](/articles/about-pull-requests) to the original repository after you commit your change. -- Some files, such as images, require that you move them from the command line. For more information, see "[Moving a file to a new location using the command line](/articles/moving-a-file-to-a-new-location-using-the-command-line)". -- {% data reusables.repositories.protected-branches-block-web-edits-uploads %} - -{% endtip %} - -1. In your repository, browse to the file you want to move. -2. In the upper right corner of the file view, click {% octicon "pencil" aria-label="The edit icon" %} to open the file editor. -![Edit file icon](/assets/images/help/repository/move-file-edit-file-icon.png) -3. In the filename field, change the name of the file using these guidelines: - ![Editing a file name](/assets/images/help/repository/moving_files.gif) - - To move the file **into a subfolder**, type the name of the folder you want, followed by `/`. Your new folder name becomes a new item in the navigation breadcrumbs. - - To move the file into a directory **above the file's current location**, place your cursor at the beginning of the filename field, then either type `../` to jump up one full directory level, or type the `backspace` key to edit the parent folder's name. -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_file_change %} diff --git a/content/github/managing-files-in-a-repository/navigating-code-on-github.md b/content/github/managing-files-in-a-repository/navigating-code-on-github.md deleted file mode 100644 index d32b1b5bacc3..000000000000 --- a/content/github/managing-files-in-a-repository/navigating-code-on-github.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Navigating code on GitHub -intro: 'You can understand the relationships within and across repositories by navigating code directly in {% data variables.product.product_name %}.' -redirect_from: - - /articles/navigating-code-on-github -versions: - free-pro-team: '*' ---- - -### About navigating code on {% data variables.product.prodname_dotcom %} - -Navigating code functions use the open source library [`semantic`](https://github.com/github/semantic). The following languages are supported: -- C# -- CodeQL -- Go -- Java -- JavaScript -- PHP -- Python -- Ruby -- TypeScript - -{% note %} - -**Note**: Code navigation works for active branches. If the feature is enabled for you but you don't see links to the definitions of functions and methods, push to the branch and try again. - -{% endnote %} - -### Jumping to the definition of a function or method - -You can jump to a function or method's definition within the same repository by clicking the function or method call in a file. - -![Jump-to-definition tab](/assets/images/help/repository/jump-to-definition-tab.png) - -### Finding all references of a function or method - -You can find all references for a function or method within the same repository by clicking the function or method call in a file, then clicking the **References** tab. - -![Find all references tab](/assets/images/help/repository/find-all-references-tab.png) - -### Further reading -- "[Searching code](/github/searching-for-information-on-github/searching-code)" diff --git a/content/github/managing-files-in-a-repository/renaming-a-file-using-the-command-line.md b/content/github/managing-files-in-a-repository/renaming-a-file-using-the-command-line.md deleted file mode 100644 index 196e8f64f177..000000000000 --- a/content/github/managing-files-in-a-repository/renaming-a-file-using-the-command-line.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Renaming a file using the command line -intro: You can use the command line to rename any file in your repository. -redirect_from: - - /articles/renaming-a-file-using-the-command-line -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Many files can be [renamed directly on {% data variables.product.product_name %}](/articles/renaming-a-file), but some files, such as images, require that you rename them from the command line. - -{% data reusables.command_line.manipulating_file_prereqs %} - -{% data reusables.command_line.open_the_multi_os_terminal %} -{% data reusables.command_line.switching_directories_procedural %} -3. Rename the file, specifying the old file name and the new name you'd like to give the file. This will stage your change for commit. - ```shell - $ git mv old_filename new_filename - ``` -4. Use `git status` to check the old and new file names. - ```shell - $ git status - > # On branch your-branch - > # Changes to be committed: - > # (use "git reset HEAD ..." to unstage) - > # - > # renamed: old_filename -> new_filename - > # - ``` -{% data reusables.git.commit-file %} - ```shell - $ git commit -m "Rename file" - # Commits the tracked changes and prepares them to be pushed to a remote repository. - # {% data reusables.git.reset-head-to-previous-commit-codeblock %} - ``` -{% data reusables.git.git-push %} - -### Further reading -- "[Moving a file to a new location using the command line](/articles/moving-a-file-to-a-new-location-using-the-command-line)" -- "[Adding a file to a repository using the command line](/articles/adding-a-file-to-a-repository-using-the-command-line)" diff --git a/content/github/managing-files-in-a-repository/renaming-a-file.md b/content/github/managing-files-in-a-repository/renaming-a-file.md deleted file mode 100644 index c5d9adfd902c..000000000000 --- a/content/github/managing-files-in-a-repository/renaming-a-file.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Renaming a file -intro: 'You can rename any file in your repositories directly in {% data variables.product.product_name %}. Renaming a file also gives you the opportunity to [move the file to a new location](/articles/moving-a-file-to-a-new-location).' -redirect_from: - - /articles/renaming-a-file -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tips**: - -- If you try to rename a file in a repository that you don’t have access to, we will fork the project to your user account and help you send [a pull request](/articles/about-pull-requests) to the original repository after you commit your change. -- File names created via the web interface can only contain alphanumeric characters and hyphens (`-`). To use other characters, create and commit the files locally and then push them to the repository. -- Some files, such as images, require that you rename them from the command line. For more information, see "[Renaming a file using the command line](/articles/renaming-a-file-using-the-command-line)." - -{% endtip %} - -1. In your repository, browse to the file you want to rename. -2. In the upper right corner of the file view, click {% octicon "pencil" aria-label="The edit icon" %} to open the file editor. -![Edit file icon](/assets/images/help/repository/edit-file-icon.png) -3. In the filename field, change the name of the file to the new filename you want. You can also update the contents of your file at the same time. -![Editing a file name](/assets/images/help/repository/changing-file-name.png) -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_file_change %} diff --git a/content/github/managing-files-in-a-repository/rendering-and-diffing-images.md b/content/github/managing-files-in-a-repository/rendering-and-diffing-images.md deleted file mode 100644 index 291b82b701c8..000000000000 --- a/content/github/managing-files-in-a-repository/rendering-and-diffing-images.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Rendering and diffing images -intro: '{% data variables.product.product_name %} can display several common image formats, including PNG, JPG, GIF, PSD, and SVG. In addition to simply displaying them, there are several ways to compare differences between versions of those image formats.' -redirect_from: - - /articles/rendering-and-diffing-images -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% note %} - -**Note:** If you are using the Firefox browser, SVGs on {% data variables.product.prodname_dotcom %} may not render. - -{% endnote %} - -### Viewing images - -You can directly browse and view images in your {% data variables.product.product_name %} repository: - -![inline image](/assets/images/help/images/view.png) - -SVGs don't currently support inline scripting or animation. - -### Viewing differences - -You can visually compare images in three different modes: [2-up](#2-up), [swipe](#swipe), and [onion skin](#onion-skin). - -#### 2-up - -**2-up** is the default mode; it gives you a quick glimpse of both images. In addition, if the image has changed size between versions, the actual dimension change is displayed. This should make it very apparent when things are resized, such as when assets are upgraded to higher resolutions. - -![2-up](/assets/images/help/repository/images-2up-view.png) - -#### Swipe - -**Swipe** lets you view portions of your image side by side. Not sure if colors shifted between different versions? Drag the swipe slider over the area in question and compare the pixels for yourself. - -![Swipe](/assets/images/help/repository/images-swipe-view.png) - -#### Onion skin - -**Onion Skin** really comes in handy when elements move around by small, hard to notice amounts. Did an icon shift two pixels to the left? Drag the opacity slider back a bit and notice if things move around. - -![Onion skin](/assets/images/help/repository/images-onion-view.gif) diff --git a/content/github/managing-files-in-a-repository/rendering-csv-and-tsv-data.md b/content/github/managing-files-in-a-repository/rendering-csv-and-tsv-data.md deleted file mode 100644 index 6b0cd29be94c..000000000000 --- a/content/github/managing-files-in-a-repository/rendering-csv-and-tsv-data.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Rendering CSV and TSV data -redirect_from: - - /articles/rendering-csv-and-tsv-data -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -GitHub supports rendering tabular data in the form of *.csv* (comma-separated) and .*tsv* (tab-separated) files. - -![Rendered CSV sample](/assets/images/help/repository/rendered_csv.png) - -When viewed, any _.csv_ or _.tsv_ file committed to a {% data variables.product.product_name %} repository automatically renders as an interactive table, complete with headers and row numbering. By default, we'll always assume the first row is your header row. - -You can link to a particular row by clicking the row number, or select multiple rows by holding down the shift key. Just copy the URL and send it to a friend. - -### Searching data - -If you want to find a certain value in your dataset, you can start typing in the search bar directly above the file. The rows will filter automagically: - -![Searching for values](/assets/images/help/repository/searching_csvs.gif) - -### Handling errors - -Occasionally, you may discover that your CSV or TSV file isn't rendering. In those instances, an error box appears at the bottom of your raw text, suggesting what the error may be. - -![CSV render error message](/assets/images/help/repository/csv_render_error.png) - -Common errors include: - -* Mismatched column counts. You must have the same number of separators in each row, even if the cell is blank -* Exceeding the file size. Our rendering only works for files up to 512KB. Anything bigger than that slows down the browser. diff --git a/content/github/managing-files-in-a-repository/rendering-differences-in-prose-documents.md b/content/github/managing-files-in-a-repository/rendering-differences-in-prose-documents.md deleted file mode 100644 index d164e05f84e7..000000000000 --- a/content/github/managing-files-in-a-repository/rendering-differences-in-prose-documents.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Rendering differences in prose documents -redirect_from: - - /articles/rendering-differences-in-prose-documents -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -Commits and pull requests that include prose documents have the ability to represent those documents with *source* and *rendered* views. - -The source view shows the raw text that has been typed, while the rendered -view shows how that text would look once it's rendered on {% data variables.product.product_name %}. For example, -this might be the difference between showing `**bold**` in Markdown, and **bold** in the rendered view. - -Prose rendering is supported for rendered documents supported by [github/markup](https://github.com/github/markup): - -* Markdown -* AsciiDoc -* Textile -* ReStructuredText -* Rdoc -* Org -* Creole -* MediaWiki -* Pod - -![Paper icon to view rendered prose document](/assets/images/help/repository/rendered_prose_diff.png) - -You can click {% octicon "file" aria-label="The paper icon" %} to see the changes made to the document as part of a commit. - -![Rendered Prose changes](/assets/images/help/repository/rendered_prose_changes.png) - -### Visualizing attribute changes - -We provide a tooltip -describing changes to attributes that, unlike words, would not otherwise be visible in the rendered document. For example, if a link URL changes from one website to -another, we'd show a tooltip like this: - -![Rendered Prose attribute changes](/assets/images/help/repository/prose_diff_attributes.png) - -### Commenting on changes - -[Commit comments](/articles/commenting-on-differences-between-files) can only -be added to files within the *source* view, on a line-by-line basis. - -### Linking to headers - -As with [other rendered prose documents](/articles/about-readmes), -hovering over a header in your document creates a link icon. You can link readers -of your rendered prose diff to specific sections. - -### Viewing complex diffs - -Some pull requests involve a large number of changes with large, complex documents. When the changes take too long to analyze, {% data variables.product.product_name %} can't always produce a rendered view of the changes. If this happens, you'll see an error message when you click the rendered button. - -![Message when view can't be rendered](/assets/images/help/repository/prose_diff_rendering.png) - -You can still use the source view to analyze and comment on changes. - -### Viewing HTML elements - -We don't directly support rendered views of commits to HTML documents. Some formats, such as Markdown, let you embed arbitrary HTML in a document. When these documents are shown on {% data variables.product.product_name %}, some of that embedded HTML can be shown in a preview, while some (like an embedded YouTube video) cannot. - -In general, rendered views of changes to a document containing embedded HTML will show changes to the elements that are supported in {% data variables.product.product_name %}'s view of the document. Changes to documents containing embedded HTML should always be reviewed in both the rendered and source views for completeness. diff --git a/content/github/managing-files-in-a-repository/rendering-pdf-documents.md b/content/github/managing-files-in-a-repository/rendering-pdf-documents.md deleted file mode 100644 index 2ed0c1f98fbe..000000000000 --- a/content/github/managing-files-in-a-repository/rendering-pdf-documents.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Rendering PDF documents -redirect_from: - - /articles/rendering-pdf-documents -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -GitHub supports rendering of PDF documents. - -![Rendered PDF Document](/assets/images/help/repository/rendered-pdf.png) - -Currently, links within PDFs are ignored. diff --git a/content/github/managing-files-in-a-repository/tracking-changes-in-a-file.md b/content/github/managing-files-in-a-repository/tracking-changes-in-a-file.md deleted file mode 100644 index 142558f638e1..000000000000 --- a/content/github/managing-files-in-a-repository/tracking-changes-in-a-file.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Tracking changes in a file -intro: You can trace changes to lines in a file and discover how parts of the file evolved over time. -redirect_from: - - /articles/using-git-blame-to-trace-changes-in-a-file/ - - /articles/tracing-changes-in-a-file/ - - /articles/tracking-changes-in-a-file -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -With the blame view, you can view the line-by-line revision history for an entire file, or view the revision history of a single line within a file by clicking {% octicon "versions" aria-label="The prior blame icon" %}. Each time you click {% octicon "versions" aria-label="The prior blame icon" %}, you'll see the previous revision information for that line, including who committed the change and when. - -![Git blame view](/assets/images/help/repository/git_blame.png) - -In a file or pull request, you can also use the {% octicon "kebab-horizontal" aria-label="The horizontal kebab octicon" %} menu to view Git blame for a selected line or range of lines. - -![Kebab menu with option to view Git blame for a selected line](/assets/images/help/repository/view-git-blame-specific-line.png) - -{% tip %} - -**Tip:** On the command line, you can also use `git blame` to view the revision history of lines within a file. For more information, see [Git's `git blame` documentation](https://git-scm.com/docs/git-blame). - -{% endtip %} - -{% data reusables.repositories.navigate-to-repo %} -2. Click to open the file whose line history you want to view. -3. In the upper-right corner of the file view, click **Blame** to open the blame view. -![Blame button](/assets/images/help/repository/blame-button.png) -4. To see earlier revisions of a specific line, or reblame, click {% octicon "versions" aria-label="The prior blame icon" %} until you've found the changes you're interested in viewing. -![Prior blame button](/assets/images/help/repository/prior-blame-button.png) diff --git a/content/github/managing-files-in-a-repository/working-with-jupyter-notebook-files-on-github.md b/content/github/managing-files-in-a-repository/working-with-jupyter-notebook-files-on-github.md deleted file mode 100644 index 9181f6845840..000000000000 --- a/content/github/managing-files-in-a-repository/working-with-jupyter-notebook-files-on-github.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Working with Jupyter Notebook files on GitHub -intro: 'When you add Jupyter Notebook or IPython Notebook files with a *.ipynb* extension on {% data variables.product.product_location %}, they will render as static HTML files in your repository.' -redirect_from: - - /articles/working-with-jupyter-notebook-files-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -The interactive features of the notebook, such as custom JavaScript plots, will not work in your repository on {% data variables.product.product_location %}. For an example, see [*Linking and Interactions.ipynb*](https://github.com/bokeh/bokeh-notebooks/blob/main/tutorial/06%20-%20Linking%20and%20Interactions.ipynb). - -To view your Jupyter notebook with JavaScript content rendered or to share your notebook files with others you can use [nbviewer](https://nbviewer.jupyter.org/). For an example, see [*Linking and Interactions.ipynb*](https://nbviewer.jupyter.org/github/bokeh/bokeh-notebooks/blob/main/tutorial/06%20-%20Linking%20and%20Interactions.ipynb) rendered on nbviewer. - -To view a fully interactive version of your Jupyter Notebook, you can set up a notebook server locally. For more information, see [Jupyter's official documentation](http://jupyter.readthedocs.io/en/latest/index.html). - -### Troubleshooting - -If you're having trouble rendering Jupyter Notebook files in static HTML, you can convert the file locally on the command line by using the [`nbconvert` command](https://github.com/jupyter/nbconvert): - -```shell -$ jupyter nbconvert --to html NOTEBOOK-NAME.ipynb -``` - -### Further reading - -- [Jupyter Notebook's GitHub repository](https://github.com/jupyter/jupyter_notebook) -- [Gallery of Jupyter Notebooks](https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks) diff --git a/content/github/managing-files-in-a-repository/working-with-non-code-files.md b/content/github/managing-files-in-a-repository/working-with-non-code-files.md deleted file mode 100644 index e3890a9107dc..000000000000 --- a/content/github/managing-files-in-a-repository/working-with-non-code-files.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Working with non-code files -intro: '' -mapTopic: true -redirect_from: - - /categories/89/articles/ - - /articles/working-with-non-code-files -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/managing-large-files/about-git-large-file-storage.md b/content/github/managing-large-files/about-git-large-file-storage.md deleted file mode 100644 index 07f22297de8d..000000000000 --- a/content/github/managing-large-files/about-git-large-file-storage.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: About Git Large File Storage -intro: '{% data variables.large_files.product_name_short %} lets you push files to {% data variables.product.product_name %} that are larger than the Git push limit.' -redirect_from: - - /articles/about-large-file-storage/ - - /articles/about-git-large-file-storage -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data variables.large_files.product_name_short %} handles large files by storing references to the file in the repository, but not the actual file itself. To work around Git's architecture, {% data variables.large_files.product_name_short %} creates a pointer file which acts as a reference to the actual file (which is stored somewhere else). {% data variables.product.product_name %} manages this pointer file in your repository. When you clone the repository down, {% data variables.product.product_name %} uses the pointer file as a map to go and find the large file for you. - -{% if currentVersion == "free-pro-team@latest" %} -Using {% data variables.large_files.product_name_short %}, you can store files up to: - -| Product | Maximum file size | -|------- | ------- | -| {% data variables.product.prodname_free_user %} | 2 GB | -| {% data variables.product.prodname_pro %} | 2 GB | -| {% data variables.product.prodname_team %} | 4 GB | -| {% data variables.product.prodname_ghe_cloud %} | 5 GB |{% else %} -Using {% data variables.large_files.product_name_short %}, you can store files up to {% if currentVersion ver_lt "enterprise-server@2.21" %}{% data variables.large_files.max_lfs_size %}{% else %}5 GB{% endif %} in your repository. -{% endif %} - -You can also use {% data variables.large_files.product_name_short %} with {% data variables.product.prodname_desktop %}. For more information about cloning Git LFS repositories in {% data variables.product.prodname_desktop %}, see "[Cloning a repository from GitHub to GitHub Desktop](/desktop/guides/contributing-to-projects/cloning-a-repository-from-github-to-github-desktop)." - -{% data reusables.large_files.can-include-lfs-objects-archives %} - -#### Pointer file format - -{% data variables.large_files.product_name_short %}'s pointer file looks like this: - -``` -version {% data variables.large_files.version_name %} -oid sha256:4cac19622fc3ada9c0fdeadb33f88f367b541f38b89102a3f1261ac81fd5bcb5 -size 84977953 -``` - -It tracks the `version` of {% data variables.large_files.product_name_short %} you're using, followed by a unique identifier for the file (`oid`). It also stores the `size` of the final file. - -{% note %} - -**Notes**: -- {% data variables.large_files.product_name_short %} cannot be used with {% data variables.product.prodname_pages %} sites. -- {% data variables.large_files.product_name_short %} cannot be used with template repositories. - -{% endnote %} - -### Further reading - -- "[Collaboration with {% data variables.large_files.product_name_long %}](/articles/collaboration-with-git-large-file-storage)" diff --git a/content/github/managing-large-files/about-storage-and-bandwidth-usage.md b/content/github/managing-large-files/about-storage-and-bandwidth-usage.md deleted file mode 100644 index 751cc91a0dae..000000000000 --- a/content/github/managing-large-files/about-storage-and-bandwidth-usage.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: About storage and bandwidth usage -intro: '{% data reusables.large_files.free-storage-bandwidth-amount %}' -redirect_from: - - /articles/billing-plans-for-large-file-storage/ - - /articles/billing-plans-for-git-large-file-storage/ - - /articles/about-storage-and-bandwidth-usage -versions: - free-pro-team: '*' ---- - -{% data variables.large_files.product_name_short %} is available for every repository on {% data variables.product.product_name %}, whether or not your account or organization has a paid subscription. - -### Tracking storage and bandwidth use - -When you commit and push a change to a file tracked with {% data variables.large_files.product_name_short %}, a new version of the entire file is pushed and the total file size is counted against the repository owner's storage limit. When you download a file tracked with {% data variables.large_files.product_name_short %}, the total file size is counted against the repository owner's bandwidth limit. {% data variables.large_files.product_name_short %} uploads do not count against the bandwidth limit. - -For example: -- If you push a 500 MB file to {% data variables.large_files.product_name_short %}, you'll use 500 MB of your allotted storage and none of your bandwidth. If you make a 1 byte change and push the file again, you'll use another 500 MB of storage and no bandwidth, bringing your total usage for these two pushes to 1 GB of storage and zero bandwidth. -- If you download a 500 MB file that's tracked with LFS, you'll use 500 MB of the repository owner's allotted bandwidth. If a collaborator pushes a change to the file and you pull the new version to your local repository, you'll use another 500 MB of bandwidth, bringing the total usage for these two downloads to 1 GB of bandwidth. - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -If {% data variables.large_files.product_name_long %} ({% data variables.large_files.product_name_short %}) objects are included in source code archives for your repository, downloads of those archives will count towards bandwidth usage for the repository. For more information, see "[Managing {% data variables.large_files.product_name_short %} objects in archives of your repository](/github/administering-a-repository/managing-git-lfs-objects-in-archives-of-your-repository)." -{% endif %} - -{% tip %} - -**Tips**: -- {% data reusables.large_files.owner_quota_only %} -- {% data reusables.large_files.does_not_carry %} - -{% endtip %} - -### Storage quota - -If you use more than {% data variables.large_files.initial_storage_quota %} of storage without purchasing a data pack, you can still clone repositories with large assets, but you will only retrieve the pointer files, and you will not be able to push new files back up. For more information about pointer files, see "[About {% data variables.large_files.product_name_long %}](/github/managing-large-files/about-git-large-file-storage#pointer-file-format)." - -### Bandwidth quota - -If you use more than {% data variables.large_files.initial_bandwidth_quota %} of bandwidth per month without purchasing a data pack, {% data variables.large_files.product_name_short %} support is disabled on your account until the next month. - -### Further reading - -- "[Viewing your {% data variables.large_files.product_name_long %} usage](/articles/viewing-your-git-large-file-storage-usage)" -- "[Managing billing for {% data variables.large_files.product_name_long %}](/articles/managing-billing-for-git-large-file-storage)" diff --git a/content/github/managing-large-files/collaboration-with-git-large-file-storage.md b/content/github/managing-large-files/collaboration-with-git-large-file-storage.md deleted file mode 100644 index e2ad6093dc2f..000000000000 --- a/content/github/managing-large-files/collaboration-with-git-large-file-storage.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Collaboration with Git Large File Storage -intro: 'With {% data variables.large_files.product_name_short %} enabled, you''ll be able to fetch, modify, and push large files just as you would expect with any file that Git manages. However, a user that doesn''t have {% data variables.large_files.product_name_short %} will experience a different workflow.' -redirect_from: - - /articles/collaboration-with-large-file-storage/ - - /articles/collaboration-with-git-large-file-storage -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If collaborators on your repository don't have {% data variables.large_files.product_name_short %} installed, they won't have access to the original large file. If they attempt to clone your repository, they will only fetch the pointer files, and won't have access to any of the actual data. - -{% tip %} - -**Tip:** To help users without {% data variables.large_files.product_name_short %} enabled, we recommend you set guidelines for repository contributors that describe how to work with large files. For example, you may ask contributors not to modify large files, or to upload changes to a file sharing service like [Dropbox](http://www.dropbox.com/) or Google Drive. For more information, see "[Setting guidelines for repository contributors](/github/building-a-strong-community/setting-guidelines-for-repository-contributors)." - -{% endtip %} - -### Viewing large files in pull requests - -{% data variables.product.product_name %} does not render {% data variables.large_files.product_name_short %} objects in pull requests. Only the pointer file is shown: - -![Sample PR for large files](/assets/images/help/large_files/large_files_pr.png) - -For more information about pointer files, see "[About {% data variables.large_files.product_name_long %}](/github/managing-large-files/about-git-large-file-storage#pointer-file-format)." - -To view changes made to large files, check out the pull request locally to review the diff. For more information, see "[Checking out pull requests locally](/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally)." - -{% if currentVersion == "free-pro-team@latest" %} - -### Pushing large files to forks - -Pushing large files to forks of a repository count against the parent repository's bandwidth and storage quotas, rather than the quotas of the fork owner. - -You can push {% data variables.large_files.product_name_short %} objects to public forks if the repository network already has {% data variables.large_files.product_name_short %} objects or you have write access to the root of the repository network. - -{% endif %} - -### Further reading - -- "[Duplicating a repository with Git Large File Storage objects](/articles/duplicating-a-repository/#mirroring-a-repository-that-contains-git-large-file-storage-objects)" diff --git a/content/github/managing-large-files/conditions-for-large-files.md b/content/github/managing-large-files/conditions-for-large-files.md deleted file mode 100644 index 262eaddd69e4..000000000000 --- a/content/github/managing-large-files/conditions-for-large-files.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Conditions for large files -intro: '{% data variables.product.product_name %} limits the size of files allowed in repositories, and will block a push to a repository if the files are larger than the maximum file limit.' -redirect_from: - - /articles/conditions-for-large-files -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.large_files.use_lfs_tip %} - -### Warning for files larger than {% data variables.large_files.warning_size %} - -If you attempt to add or update a file that is larger than {% data variables.large_files.warning_size %}, you will receive a warning from Git. The changes will still successfully push to your repository, but you can consider removing the commit to minimize performance impact. For more information, see "[Removing files from a repository's history](/github/managing-large-files/removing-files-from-a-repositorys-history)." - -### Blocked pushes for large files - -{% if enterpriseServerVersions contains currentVersion %}By default, {% endif %}{% data variables.product.product_name %} blocks pushes that exceed {% data variables.large_files.max_github_size %}. {% if enterpriseServerVersions contains currentVersion %}However, a site administrator can configure a different limit for your {% data variables.product.prodname_ghe_server %} instance. For more information, see "[Setting Git push limits](/enterprise/{{ currentVersion }}/admin/guides/installation/setting-git-push-limits)".{% endif %} diff --git a/content/github/managing-large-files/configuring-git-large-file-storage.md b/content/github/managing-large-files/configuring-git-large-file-storage.md deleted file mode 100644 index f40da8b1e379..000000000000 --- a/content/github/managing-large-files/configuring-git-large-file-storage.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Configuring Git Large File Storage -intro: 'Once [{% data variables.large_files.product_name_short %} is installed](/articles/installing-git-large-file-storage/), you need to associate it with a large file in your repository.' -redirect_from: - - /articles/configuring-large-file-storage/ - - /articles/configuring-git-large-file-storage -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If there are existing files in your repository that you'd like to use {% data variables.product.product_name %} with, you need to first remove them from the repository and then add them to {% data variables.large_files.product_name_short %} locally. For more information, see "[Moving a file in your repository to {% data variables.large_files.product_name_short %}](/articles/moving-a-file-in-your-repository-to-git-large-file-storage)." - -{% data reusables.large_files.resolving-upload-failures %} - -{% if enterpriseServerVersions contains currentVersion %} - -{% tip %} - -**Note:** Before trying to push a large file to {% data variables.product.product_name %}, make sure that you've enabled {% data variables.large_files.product_name_short %} on your appliance. For more information, see "[Configuring Git Large File Storage on GitHub Enterprise Server](/enterprise/{{ currentVersion }}/admin/guides/installation/configuring-git-large-file-storage-on-github-enterprise-server/)." - -{% endtip %} - -{% endif %} - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Change your current working directory to an existing repository you'd like to use with {% data variables.large_files.product_name_short %}. -3. To associate a file type in your repository with {% data variables.large_files.product_name_short %}, enter `git {% data variables.large_files.command_name %} track` followed by the name of the file extension you want to automatically upload to {% data variables.large_files.product_name_short %}. - - For example, to associate a _.psd_ file, enter the following command: - ```shell - $ git {% data variables.large_files.command_name %} track "*.psd" - > Adding path *.psd - ``` - Every file type you want to associate with {% data variables.large_files.product_name_short %} will need to be added with `git {% data variables.large_files.command_name %} track`. This command amends your repository's *.gitattributes* file and associates large files with {% data variables.large_files.product_name_short %}. - - {% tip %} - - **Tip:** We strongly suggest that you commit your local *.gitattributes* file into your repository. Relying on a global *.gitattributes* file associated with {% data variables.large_files.product_name_short %} may cause conflicts when contributing to other Git projects. - - {% endtip %} - -4. Add a file to the repository matching the extension you've associated: - ```shell - $ git add path/to/file.psd - ``` -5. Commit the file and push it to {% data variables.product.product_name %}: - ```shell - $ git commit -m "add file.psd" - $ git push - ``` - You should see some diagnostic information about your file upload: - ```shell - > Sending file.psd - > 44.74 MB / 81.04 MB 55.21 % 14s - > 64.74 MB / 81.04 MB 79.21 % 3s - ``` - -### Further reading - -- "[Collaboration with {% data variables.large_files.product_name_long %}](/articles/collaboration-with-git-large-file-storage/)"{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -- "[Managing {% data variables.large_files.product_name_short %} objects in archives of your repository](/github/administering-a-repository/managing-git-lfs-objects-in-archives-of-your-repository)"{% endif %} diff --git a/content/github/managing-large-files/distributing-large-binaries.md b/content/github/managing-large-files/distributing-large-binaries.md deleted file mode 100644 index b8c70aae9e79..000000000000 --- a/content/github/managing-large-files/distributing-large-binaries.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Distributing large binaries -intro: 'Some projects require distributing large files, such as binaries or installers, in addition to distributing source code.' -redirect_from: - - /articles/distributing-large-binaries -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If you need to distribute large files within your repository, you can create releases on {% data variables.product.product_location %}. Releases allow you to package software, release notes, and links to binary files, for other people to use. For more information, visit "[About releases](/github/administering-a-repository/about-releases)." - -{% if currentVersion == "free-pro-team@latest" %} - -We don't limit the total size of the binary files in the release or the bandwidth used to deliver them. However, each individual file must be smaller than {% data variables.large_files.max_lfs_size %}. - -{% endif %} - -{% data reusables.large_files.use_lfs_tip %} diff --git a/content/github/managing-large-files/index.md b/content/github/managing-large-files/index.md deleted file mode 100644 index f1a474f3752f..000000000000 --- a/content/github/managing-large-files/index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Managing large files -redirect_from: - - /categories/managing-large-files -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /working-with-large-files %} - {% link_in_list /conditions-for-large-files %} - {% link_in_list /removing-files-from-a-repositorys-history %} - {% link_in_list /distributing-large-binaries %} - - {% link_in_list /what-is-my-disk-quota %} - -{% topic_link_in_list /versioning-large-files %} - {% link_in_list /about-git-large-file-storage %} - {% link_in_list /installing-git-large-file-storage %} - {% link_in_list /configuring-git-large-file-storage %} - - {% link_in_list /about-storage-and-bandwidth-usage %} - - {% link_in_list /collaboration-with-git-large-file-storage %} - {% link_in_list /moving-a-file-in-your-repository-to-git-large-file-storage %} - {% link_in_list /removing-files-from-git-large-file-storage %} - {% link_in_list /resolving-git-large-file-storage-upload-failures %} diff --git a/content/github/managing-large-files/installing-git-large-file-storage.md b/content/github/managing-large-files/installing-git-large-file-storage.md deleted file mode 100644 index 1f5faeaf424d..000000000000 --- a/content/github/managing-large-files/installing-git-large-file-storage.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Installing Git Large File Storage -intro: 'In order to use {% data variables.large_files.product_name_short %}, you''ll need to download and install a new program that''s separate from Git.' -redirect_from: - - /articles/installing-large-file-storage/ - - /articles/installing-git-large-file-storage -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% mac %} - -1. Navigate to [git-lfs.github.com](https://git-lfs.github.com) and click **Download**. Alternatively, you can install {% data variables.large_files.product_name_short %} using a package manager: - - To use [Homebrew](http://brew.sh/), run `brew install git-lfs`. - - To use [MacPorts](https://www.macports.org/), run `port install git-lfs`. - - If you install {% data variables.large_files.product_name_short %} with Homebrew or MacPorts, skip to step six. - -2. On your computer, locate and unzip the downloaded file. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Change the current working directory into the folder you downloaded and unzipped. - ```shell - $ cd ~/Downloads/git-lfs-1.X.X - ``` - {% note %} - - **Note:** The file path you use after `cd` depends on your operating system, Git LFS version you downloaded, and where you saved the {% data variables.large_files.product_name_short %} download. - - {% endnote %} -4. To install the file, run this command: - ```shell - $ ./install.sh - > {% data variables.large_files.product_name_short %} initialized. - ``` - {% note %} - - **Note:** You may have to use `sudo ./install.sh` to install the file. - - {% endnote %} -5. Verify that the installation was successful: - ```shell - $ git {% data variables.large_files.command_name %} install - > {% data variables.large_files.product_name_short %} initialized. - ``` -6. If you don't see a message indicating that `git {% data variables.large_files.command_name %} install` was successful, please contact {% data variables.contact.contact_support %}. Be sure to include the name of your operating system. - -{% endmac %} - -{% windows %} - -1. Navigate to [git-lfs.github.com](https://git-lfs.github.com) and click **Download**. - - {% tip %} - - **Tip:** For more information about alternative ways to install {% data variables.large_files.product_name_short %} for Windows, see this [Getting started guide](https://github.com/github/git-lfs#getting-started). - - {% endtip %} -2. On your computer, locate the downloaded file. -3. Double click on the file called *git-lfs-windows-1.X.X.exe*, where 1.X.X is replaced with the Git LFS version you downloaded. When you open this file Windows will run a setup wizard to install {% data variables.large_files.product_name_short %}. -{% data reusables.command_line.open_the_multi_os_terminal %} -5. Verify that the installation was successful: - ```shell - $ git {% data variables.large_files.command_name %} install - > {% data variables.large_files.product_name_short %} initialized. - ``` -6. If you don't see a message indicating that `git {% data variables.large_files.command_name %} install` was successful, please contact {% data variables.contact.contact_support %}. Be sure to include the name of your operating system. - -{% endwindows %} - -{% linux %} - -1. Navigate to [git-lfs.github.com](https://git-lfs.github.com) and click **Download**. - - {% tip %} - - **Tip:** For more information about alternative ways to install {% data variables.large_files.product_name_short %} for Linux, see this [Getting started guide](https://github.com/github/git-lfs#getting-started). - - {% endtip %} -2. On your computer, locate and unzip the downloaded file. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Change the current working directory into the folder you downloaded and unzipped. - ```shell - $ cd ~/Downloads/git-lfs-1.X.X - ``` - {% note %} - - **Note:** The file path you use after `cd` depends on your operating system, Git LFS version you downloaded, and where you saved the {% data variables.large_files.product_name_short %} download. - - {% endnote %} -4. To install the file, run this command: - ```shell - $ ./install.sh - > {% data variables.large_files.product_name_short %} initialized. - ``` - {% note %} - - **Note:** You may have to use `sudo ./install.sh` to install the file. - - {% endnote %} -5. Verify that the installation was successful: - ```shell - $ git {% data variables.large_files.command_name %} install - > {% data variables.large_files.product_name_short %} initialized. - ``` -6. If you don't see a message indicating that `git {% data variables.large_files.command_name %} install` was successful, please contact {% data variables.contact.contact_support %}. Be sure to include the name of your operating system. - -{% endlinux %} - -### Further reading - -- "[Configuring {% data variables.large_files.product_name_long %}](/articles/configuring-git-large-file-storage)" diff --git a/content/github/managing-large-files/moving-a-file-in-your-repository-to-git-large-file-storage.md b/content/github/managing-large-files/moving-a-file-in-your-repository-to-git-large-file-storage.md deleted file mode 100644 index ac0d0da9d8db..000000000000 --- a/content/github/managing-large-files/moving-a-file-in-your-repository-to-git-large-file-storage.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Moving a file in your repository to Git Large File Storage -intro: 'If you''ve set up {% data variables.large_files.product_name_short %}, and you have an existing file in your repository that needs to be tracked in {% data variables.large_files.product_name_short %}, you need to first remove it from your repository.' -redirect_from: - - /articles/moving-a-file-in-your-repository-to-git-large-file-storage -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -After installing {% data variables.large_files.product_name_short %} and configuring {% data variables.large_files.product_name_short %} tracking, you can move files from Git's regular tracking to {% data variables.large_files.product_name_short %}. For more information, see "[Installing {% data variables.large_files.product_name_long %}](/github/managing-large-files/installing-git-large-file-storage)" and "[Configuring {% data variables.large_files.product_name_long %}](/github/managing-large-files/configuring-git-large-file-storage)." - -{% data reusables.large_files.resolving-upload-failures %} - -{% tip %} - -**Tip:** If you get an error that "this exceeds {% data variables.large_files.product_name_short %}'s file size limit of {% data variables.large_files.max_github_size %}" when you try to push files to Git, you can use `git lfs migrate` instead of `filter branch` or the BFG Repo Cleaner, to move the large file to {% data variables.large_files.product_name_long %}. For more information about the `git lfs migrate` command, see the [Git LFS 2.2.0](https://github.com/blog/2384-git-lfs-2-2-0-released) release announcement. - -{% endtip %} - -1. Remove the file from the repository's Git history using either the `filter-branch` command or BFG Repo-Cleaner. For detailed information on using these, see "[Removing sensitive data from a repository](/articles/removing-sensitive-data-from-a-repository)." -2. Configure tracking for your file and push it to {% data variables.large_files.product_name_short %}. For more information on this procedure, see "[Configuring {% data variables.large_files.product_name_long %}](/articles/configuring-git-large-file-storage)." - -### Further reading - -- "[About {% data variables.large_files.product_name_long %}](/articles/about-git-large-file-storage)" -- "[Collaboration with {% data variables.large_files.product_name_long %}](/articles/collaboration-with-git-large-file-storage/)" -- "[Installing {% data variables.large_files.product_name_long %}](/articles/installing-git-large-file-storage)" diff --git a/content/github/managing-large-files/removing-files-from-a-repositorys-history.md b/content/github/managing-large-files/removing-files-from-a-repositorys-history.md deleted file mode 100644 index 35ebb9600e64..000000000000 --- a/content/github/managing-large-files/removing-files-from-a-repositorys-history.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Removing files from a repository's history -intro: 'To remove a large file from your repository, you must completely remove it from your local repository and from {% data variables.product.product_location %}.' -redirect_from: - - /articles/removing-files-from-a-repository-s-history - - /articles/removing-files-from-a-repositorys-history -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% warning %} - -**Warning**: These procedures will permanently remove files from the repository on your computer and {% data variables.product.product_location %}. If the file is important, make a local backup copy in a directory outside of the repository. - -{% endwarning %} - -### Removing a file that was added in an earlier commit - -If you added a file in an earlier commit, you need to remove it from the repository's history. To remove files from the repository's history, you can use the BFG Repo-Cleaner or the `git filter-branch` command. For more information see "[Removing sensitive data from a repository](/github/authenticating-to-github/removing-sensitive-data-from-a-repository)." - -### Removing a file added in the most recent unpushed commit - -If the file was added with your most recent commit, and you have not pushed to {% data variables.product.product_location %}, you can delete the file and amend the commit: - -{% data reusables.command_line.open_the_multi_os_terminal %} -{% data reusables.command_line.switching_directories_procedural %} -3. To remove the file, enter `git rm --cached`: - ```shell - $ git rm --cached giant_file - # Stage our giant file for removal, but leave it on disk - ``` -4. Commit this change using `--amend -CHEAD`: - ```shell - $ git commit --amend -CHEAD - # Amend the previous commit with your change - # Simply making a new commit won't work, as you need - # to remove the file from the unpushed history as well - ``` -5. Push your commits to {% data variables.product.product_location %}: - ```shell - $ git push - # Push our rewritten, smaller commit - ``` diff --git a/content/github/managing-large-files/removing-files-from-git-large-file-storage.md b/content/github/managing-large-files/removing-files-from-git-large-file-storage.md deleted file mode 100644 index 9290d04394dc..000000000000 --- a/content/github/managing-large-files/removing-files-from-git-large-file-storage.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Removing files from Git Large File Storage -intro: 'If you''ve set up {% data variables.large_files.product_name_short %} for your repository, you can remove all files or a subset of files from {% data variables.large_files.product_name_short %}.' -redirect_from: - - /articles/removing-files-from-git-large-file-storage -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Removing a single file - -1. Remove the file from the repository's Git history using either the `filter-branch` command or BFG Repo-Cleaner. For detailed information on using these, see "[Removing sensitive data from a repository](/articles/removing-sensitive-data-from-a-repository)." -2. Navigate to your *.gitattributes* file. - - {% note %} - - **Note:** Your *.gitattributes* file is generally saved within your local repository. In some cases, you may have created a global *.gitattributes* file that contains all of your {% data variables.large_files.product_name_short %} associations. - - {% endnote %} -3. Find and remove the associated {% data variables.large_files.product_name_short %} tracking rule within the *.gitattributes* file. -4. Save and exit the *.gitattributes* file. - -### Removing all files within a {% data variables.large_files.product_name_short %} repository - -1. Remove the files from the repository's Git history using either the `filter-branch` command or BFG Repo-Cleaner. For detailed information on using these, see "[Removing sensitive data from a repository](/articles/removing-sensitive-data-from-a-repository)." -2. Optionally, to uninstall {% data variables.large_files.product_name_short %} in the repository, run: - ```shell - $ git lfs uninstall - ``` - For {% data variables.large_files.product_name_short %} versions below 1.1.0, run: - ```shell - $ git lfs uninit - ``` - -### {% data variables.large_files.product_name_short %} objects in your repository - -After you remove files from {% data variables.large_files.product_name_short %}, the {% data variables.large_files.product_name_short %} objects still exist on the remote storage{% if currentVersion == "free-pro-team@latest" %} and will continue to count toward your {% data variables.large_files.product_name_short %} storage quota{% endif %}. - -To remove {% data variables.large_files.product_name_short %} objects from a repository, {% if currentVersion == "free-pro-team@latest" %}delete and recreate the repository. When you delete a repository, any associated issues, stars, and forks are also deleted. For more information, see "[Deleting a repository](/github/administering-a-repository/deleting-a-repository)."{% else %}contact your {% data variables.product.prodname_enterprise %} administrator to archive the objects. Archived objects are purged after three months.{% endif %} - -{% note %} - -**Note:** If you removed a single file and have other {% data variables.large_files.product_name_short %} objects that you'd like to keep in your repository, after deleting and recreating your repository, reconfigure your {% data variables.large_files.product_name_short %}-associated files. For more information, see "[Removing a single file](#removing-a-single-file)" and "[Configuring {% data variables.large_files.product_name_long %}](/github/managing-large-files/configuring-git-large-file-storage)." - -{% endnote %} - -### Further reading - -- "[About {% data variables.large_files.product_name_long %}](/articles/about-git-large-file-storage)" -- "[Collaboration with {% data variables.large_files.product_name_long %}](/articles/collaboration-with-git-large-file-storage/)" -- "[Installing {% data variables.large_files.product_name_long %}](/articles/installing-git-large-file-storage)" diff --git a/content/github/managing-large-files/resolving-git-large-file-storage-upload-failures.md b/content/github/managing-large-files/resolving-git-large-file-storage-upload-failures.md deleted file mode 100644 index 3cbe3c445e3a..000000000000 --- a/content/github/managing-large-files/resolving-git-large-file-storage-upload-failures.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Resolving Git Large File Storage upload failures -intro: 'If your {% data variables.large_files.product_name_short %} files didn''t upload properly, you can take several steps to troubleshoot the upload error.' -redirect_from: - - /articles/resolving-git-large-file-storage-upload-failures -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The {% data variables.large_files.product_name_short %} integrity check ensures that all referenced {% data variables.large_files.product_name_short %} files in a push have been uploaded properly. If the check detects referenced files that have not been uploaded, you will receive an error message and your push will be blocked. - -To resolve the error message, you must reinstall your local {% data variables.large_files.product_name_short %} client to ensure that the referenced {% data variables.large_files.product_name_short %} files can be properly uploaded in the future. - -1. Open Terminal. -2. Reinstall {% data variables.large_files.product_name_short %}. - ```shell - $ git lfs install - ``` -3. Push all referenced {% data variables.large_files.product_name_short %} files. - ```shell - $ git lfs push --all origin - ``` diff --git a/content/github/managing-large-files/versioning-large-files.md b/content/github/managing-large-files/versioning-large-files.md deleted file mode 100644 index 5aca3fe7d421..000000000000 --- a/content/github/managing-large-files/versioning-large-files.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Versioning large files -intro: '{% data reusables.enterprise_site_admin_settings.configuring-large-file-storage-short-description %}' -mapTopic: true -redirect_from: - - /articles/versioning-large-files -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/managing-large-files/what-is-my-disk-quota.md b/content/github/managing-large-files/what-is-my-disk-quota.md deleted file mode 100644 index a23042a41e8b..000000000000 --- a/content/github/managing-large-files/what-is-my-disk-quota.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: What is my disk quota? -redirect_from: - - /articles/what-is-the-size-limit-for-a-repository/ - - /articles/what-is-my-disk-quota -intro: '{% data variables.product.product_name %} tries to provide abundant storage for all Git repositories, although there are hard limits for file and repository sizes.' -versions: - free-pro-team: '*' ---- - -{% data reusables.large_files.use_lfs_tip %} - -### File and repository size limitations - -To ensure performance and reliability for our users, we actively monitor signals of overall repository health. Repository health is a function of various interacting factors, including size, commit frequency, contents, and structure. - -We recommend repositories remain small, ideally less than 1 GB, and less than 5 GB is strongly recommended. Smaller repositories are faster to clone and easier to work with and maintain. Individual files in a repository are strictly limited to a {% data variables.large_files.max_github_size %} maximum size limit. For more information, see "[Working with large files](/github/managing-large-files/working-with-large-files)." - -If your repository excessively impacts our infrastructure, you might receive an email from {% data variables.contact.github_support %} asking you to take corrective action. We try to be flexible, especially with large projects that have many collaborators, and will work with you to find a resolution whenever possible. You can prevent your repository from impacting our infrastructure by effectively managing your repository's size and overall health. You can find advice and a tool for repository analysis in the [`github/git-sizer`](https://github.com/github/git-sizer) repository. - -{% note %} - -**Note:** If you add a file to a repository via a browser, the file can be no larger than {% data variables.large_files.max_github_browser_size %}. For more information, see "[Adding a file to a repository](/github/managing-files-in-a-repository/adding-a-file-to-a-repository)." - -{% endnote %} - -### Backups - -Git is not designed to serve as a backup tool. However, there are many solutions specifically designed for performing backups, such as [Arq](https://www.arqbackup.com/), [Carbonite](http://www.carbonite.com/), and [CrashPlan](https://www.crashplan.com/en-us/). - -### Database dumps - -Version control systems, such as Git, are not designed to handle large SQL files. To share large databases with other developers, we recommend using [Dropbox](https://www.dropbox.com/). - -Git shouldn't be used to backup your production servers. For more information, see "[Backups](/github/managing-large-files/what-is-my-disk-quota#backups)." - -### External dependencies - -External dependencies can cause Git repositories to become very large. To avoid filling a repository with external dependencies, we recommend you use a package manager. Popular package managers for common languages include [Bundler](http://bundler.io/), [Node's Package Manager](http://npmjs.org/), and [Maven](http://maven.apache.org/). These package managers support using Git repositories directly, so you don't need pre-packaged sources. - -### Packaged release versions - -We don't recommend distributing compiled code and pre-packaged releases within your repository. For more information, see "[Distributing large binaries](/github/managing-large-files/distributing-large-binaries)." - -### Changing history of an existing repository - -If you already have a repository that's quite large, you can reduce the size of a repository by removing large files from the repository's history. For more information, see "[Removing files from a repository's history](/github/managing-large-files/removing-files-from-a-repositorys-history)." diff --git a/content/github/managing-large-files/working-with-large-files.md b/content/github/managing-large-files/working-with-large-files.md deleted file mode 100644 index 58f80962498b..000000000000 --- a/content/github/managing-large-files/working-with-large-files.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Working with large files -intro: 'A Git repository contains every version of every file. But for some file types, this is not practical. Multiple revisions of large files increase the clone and fetch times for other users of a repository.' -mapTopic: true -redirect_from: - - /articles/working-with-large-files -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies.md b/content/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies.md deleted file mode 100644 index 2056d1ac514c..000000000000 --- a/content/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: About alerts for vulnerable dependencies -intro: '{% data variables.product.product_name %} sends {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} when we detect vulnerabilities affecting your repository.' -redirect_from: - - /articles/about-security-alerts-for-vulnerable-dependencies - - /github/managing-security-vulnerabilities/about-security-alerts-for-vulnerable-dependencies -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About vulnerable dependencies - -{% data reusables.repositories.a-vulnerability-is %} - -When your code depends on a package that has a security vulnerability, this vulnerable dependency can cause a range of problems for your project or the people who use it. - -### Detection of vulnerable dependencies - - {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot %} detects vulnerable dependencies and sends {% data variables.product.prodname_dependabot_short %} alerts{% else %}{% data variables.product.product_name %} detects vulnerable dependencies and sends security alerts{% endif %} when: - -{% if currentVersion == "free-pro-team@latest" %} -- A new vulnerability is added to the {% data variables.product.prodname_advisory_database %}. For more information, see "[Browsing security vulnerabilities in the {% data variables.product.prodname_advisory_database %}](/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database)." -- New vulnerability data from [WhiteSource](https://www.whitesourcesoftware.com/vulnerability-database) is processed.{% else %} -- New advisory data is synchronized to {% data variables.product.prodname_ghe_server %} each hour from {% data variables.product.prodname_dotcom_the_website %}. For more information about advisory data, see "Browsing security vulnerabilities in the {% data variables.product.prodname_advisory_database %}."{% endif %} -- The dependency graph for a repository changes. For example, when a contributor pushes a commit to change the packages or versions it depends on{% if currentVersion == "free-pro-team@latest" %}, or when the code of one of the dependencies changes{% endif %}. For more information, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)." - -For a list of the ecosystems that {% data variables.product.product_name %} can detect vulnerabilities and dependencies for, see "[Supported package ecosystems](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems)." - -{% note %} - -**Note:** It is important to keep your manifest and lock files up to date. If the dependency graph doesn't accurately reflect your current dependencies and versions, then you could miss alerts for vulnerable dependencies that you use. You may also get alerts for dependencies that you no longer use. - -{% endnote %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" % %} -### {% data variables.product.prodname_dependabot %} alerts for vulnerable dependencies -{% else %} -### Security alerts for vulnerable dependencies -{% endif %} - -{% data reusables.repositories.enable-security-alerts %} - -{% if currentVersion == "free-pro-team@latest" %}{% data variables.product.prodname_dotcom %} detects vulnerable dependencies in _public_ repositories and generates {% data variables.product.prodname_dependabot_alerts %} by default. Owners of private repositories, or people with admin access, can enable {% data variables.product.prodname_dependabot_alerts %} by enabling the dependency graph and {% data variables.product.prodname_dependabot_alerts %} for their repositories. - -You can also enable or disable {% data variables.product.prodname_dependabot_alerts %} for all repositories owned by your user account or organization. For more information, see "[Managing security and analysis settings for your user account](/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account)" or "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)." - -{% data variables.product.product_name %} starts generating the dependency graph immediately and generates alerts for any vulnerable dependencies as soon as they are identified. The graph is usually populated within minutes but this may take longer for repositories with many dependencies. For more information, see "[Managing data use settings for your private repository](/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository)." -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -When {% data variables.product.product_name %} identifies a vulnerable dependency, we generate a {% data variables.product.prodname_dependabot_short %} alert and display it on the Security tab for the repository. The alert includes a link to the affected file in the project, and information about a fixed version. {% data variables.product.product_name %} also notifies the maintainers of affected repositories about the new alert according to their notification preferences. For more information, see "[Configuring notifications for vulnerable dependencies](/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies)." -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -For repositories where {% data variables.product.prodname_dependabot_security_updates %} are enabled, the alert may also contain a link to a pull request to update the manifest or lock file to the minimum version that resolves the vulnerability. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-github-dependabot-security-updates)." -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} -When {% data variables.product.product_name %} identifies a vulnerable dependency, we send a security alert to the maintainers of affected repositories with details of the vulnerability, a link to the affected file in the project, and information about a fixed version. -{% endif %} - -{% warning %} - -**Note**: {% data variables.product.product_name %}'s security features do not claim to catch all vulnerabilities. Though we are always trying to update our vulnerability database and generate alerts with our most up-to-date information, we will not be able to catch everything or tell you about known vulnerabilities within a guaranteed time frame. These features are not substitutes for human review of each dependency for potential vulnerabilities or any other issues, and we recommend consulting with a security service or conducting a thorough vulnerability review when necessary. - -{% endwarning %} - -### Access to {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_short %}{% else %}security{% endif %} alerts - -You can see all of the alerts that affect a particular project{% if currentVersion == "free-pro-team@latest" %} on the repository's Security tab or{% endif %} in the repository's dependency graph.{% if currentVersion == "free-pro-team@latest" %} For more information, see "[Viewing and updating vulnerable dependencies in your repository](/articles/viewing-and-updating-vulnerable-dependencies-in-your-repository)."{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -By default, we notify people with admin permissions in the affected repositories about new {% data variables.product.prodname_dependabot_short %} alerts.{% endif %} {% if currentVersion == "free-pro-team@latest" %}{% data variables.product.product_name %} never publicly discloses identified vulnerabilities for any repository. You can also make {% data variables.product.prodname_dependabot_short %} alerts visible to additional people or teams working repositories that you own or have admin permissions for. For more information, see "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository#granting-access-to-github-dependabot-alerts)." -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} -We send security alerts to people with admin permissions in the affected repositories by default. {% data variables.product.product_name %} never publicly discloses identified vulnerabilities for any repository. -{% endif %} - -{% data reusables.notifications.vulnerable-dependency-notification-delivery-method-customization %}{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.21" %} For more information, see "[Choosing the delivery method for your notifications](/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications)."{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} For more information, see "[Configuring notifications for vulnerable dependencies](/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies)."{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -### Further reading - -- "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-github-dependabot-security-updates)" -- "[Viewing and updating vulnerable dependencies in your repository](/articles/viewing-and-updating-vulnerable-dependencies-in-your-repository)" -- "[Understanding how {% data variables.product.product_name %} uses and protects your data](/categories/understanding-how-github-uses-and-protects-your-data)"{% endif %} diff --git a/content/github/managing-security-vulnerabilities/about-github-dependabot-security-updates.md b/content/github/managing-security-vulnerabilities/about-github-dependabot-security-updates.md deleted file mode 100644 index 4b7addb0493c..000000000000 --- a/content/github/managing-security-vulnerabilities/about-github-dependabot-security-updates.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: About GitHub Dependabot security updates -intro: '{% data variables.product.prodname_dependabot %} can fix vulnerable dependencies for you by raising pull requests with security updates.' -shortTitle: About Dependabot security updates -versions: - free-pro-team: '*' ---- - -### About {% data variables.product.prodname_dependabot_security_updates %} - -{% data variables.product.prodname_dependabot_security_updates %} make it easier for you to fix vulnerable dependencies in your repository. If you enable this feature, when a {% data variables.product.prodname_dependabot_short %} alert is raised for a vulnerable dependency in the dependency graph of your repository, {% data variables.product.prodname_dependabot_short %} automatically tries to fix it. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" and "[Configuring {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/configuring-github-dependabot-security-updates)." - -{% data variables.product.prodname_dependabot %} checks whether it's possible to upgrade the vulnerable dependency to a fixed version without disrupting the dependency graph for the repository. Then {% data variables.product.prodname_dependabot_short %} raises a pull request to update the dependency to the minimum version that includes the patch and links the pull request to the {% data variables.product.prodname_dependabot %} alert, or reports an error on the alert. For more information, see "[Troubleshooting {% data variables.product.prodname_dependabot %} errors](/github/managing-security-vulnerabilities/troubleshooting-github-dependabot-errors)." - -{% note %} - -**Note** - -The {% data variables.product.prodname_dependabot_security_updates %} feature is available for repositories where you have enabled the dependency graph and {% data variables.product.prodname_dependabot_short %} alerts. You will see a {% data variables.product.prodname_dependabot_short %} alert for every vulnerable dependency identified in your full dependency graph. However, security updates are triggered only for dependencies that are specified in a manifest or lock file. {% data variables.product.prodname_dependabot_short %} is unable to update an indirect or transitive dependency that is not explicitly defined. For more information, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#dependencies-included)." - -{% endnote %} - -### About pull requests for security updates - -Each pull request contains everything you need to quickly and safely review and merge a proposed fix into your project. This includes information about the vulnerability like release notes, changelog entries, and commit details. Details of which vulnerability a pull request resolves are hidden from anyone who does not have access to {% data variables.product.prodname_dependabot_short %} alerts for the repository. - -When you merge a pull request that contains a security update, the corresponding {% data variables.product.prodname_dependabot_short %} alert is marked as resolved for your repository. For more information about {% data variables.product.prodname_dependabot_short %} pull requests, see "[Managing pull requests for dependency updates](/github/administering-a-repository/managing-pull-requests-for-dependency-updates)." - -{% data reusables.dependabot.automated-tests-note %} - -### About compatibility scores - -{% data variables.product.prodname_dependabot_security_updates %} may include compatibility scores to let you know whether updating a vulnerability could cause breaking changes to your project. These are calculated from CI tests in other public repositories where the same security update has been generated. An update's compatibility score is the percentage of CI runs that passed when updating between specific versions of the dependency. diff --git a/content/github/managing-security-vulnerabilities/about-github-security-advisories.md b/content/github/managing-security-vulnerabilities/about-github-security-advisories.md deleted file mode 100644 index f1c2841e3b32..000000000000 --- a/content/github/managing-security-vulnerabilities/about-github-security-advisories.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: About GitHub Security Advisories -intro: 'You can use {% data variables.product.prodname_security_advisories %} to privately discuss, fix, and publish information about security vulnerabilities in your repository.' -redirect_from: - - /articles/about-maintainer-security-advisories - - /github/managing-security-vulnerabilities/about-maintainer-security-advisories -versions: - free-pro-team: '*' ---- - -{% data reusables.repositories.security-advisory-admin-permissions %} - -{% data reusables.security-advisory.security-researcher-cannot-create-advisory %} - -### About {% data variables.product.prodname_security_advisories %} - -{% data variables.product.prodname_security_advisories %} allows repository maintainers to privately discuss and fix a security vulnerability in a project. After collaborating on a fix, repository maintainers can publish the security advisory to publicly disclose the security vulnerability to the project's community. By publishing security advisories, repository maintainers make it easier for their community to update package dependencies and research the impact of the security vulnerabilities. - -With {% data variables.product.prodname_security_advisories %}, you can: - -1. Create a draft security advisory, and use the draft to privately discuss the impact of the vulnerability on your project. -2. Privately collaborate to fix the vulnerability in a temporary private fork. -3. Publish the security advisory to alert your community of the vulnerability. - -{% data reusables.repositories.security-advisories-republishing %} - -To get started, see "[Creating a security advisory](/github/managing-security-vulnerabilities/creating-a-security-advisory)." - -You can give credit to individuals who contributed to a security advisory. For more information, see "[Editing a security advisory](/github/managing-security-vulnerabilities/editing-a-security-advisory#about-credits-for-security-advisories)." - -{% data reusables.repositories.security-guidelines %} - -{% data reusables.repositories.github-security-lab %} - -### CVE identification numbers - -{% data variables.product.prodname_security_advisories %} builds upon the foundation of the Common Vulnerabilities and Exposures (CVE) list. {% data variables.product.prodname_dotcom %} is a CVE Numbering Authority (CNA) and is authorized to assign CVE identification numbers. For more information, see "[About CVE](https://cve.mitre.org/about/index.html)" and "[CVE Numbering Authorities](https://cve.mitre.org/cve/cna.html)" on the CVE website. - -When you create a security advisory for a public repository on {% data variables.product.prodname_dotcom %}, you have the option of providing an existing CVE identification number for the security vulnerability. {% data reusables.repositories.request-security-advisory-cve-id %} - -Once you've published the security advisory and {% data variables.product.prodname_dotcom %} has assigned a CVE identification number to the vulnerability, {% data variables.product.prodname_dotcom %} publishes the CVE to the MITRE database. -For more information, see "[Publishing a security advisory](/github/managing-security-vulnerabilities/publishing-a-security-advisory#requesting-a-cve-identification-number)." - -### {% data variables.product.prodname_dependabot_alerts %} for published security advisories - -{% data reusables.repositories.github-reviews-security-advisories %} diff --git a/content/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory.md b/content/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory.md deleted file mode 100644 index c18203564881..000000000000 --- a/content/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Adding a collaborator to a security advisory -intro: You can add other users or teams to collaborate on a security advisory with you. -redirect_from: - - /articles/adding-a-collaborator-to-a-maintainer-security-advisory - - /github/managing-security-vulnerabilities/adding-a-collaborator-to-a-maintainer-security-advisory -versions: - free-pro-team: '*' ---- - -People with admin permissions to a security advisory can add collaborators to the security advisory. - -### Adding a collaborator to a security advisory - -Collaborators have write permissions to the security advisory. For more information, see "[Permission levels for security advisories](/github/managing-security-vulnerabilities/permission-levels-for-security-advisories)." - -{% note %} - -{% data reusables.repositories.security-advisory-collaborators-public-repositories %} For more information about removing a collaborator on a security advisory, see "[Removing a collaborator from a security advisory](/github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory)." - -{% endnote %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-advisories %} -4. In the "Security Advisories" list, click the security advisory you'd like to add a collaborator to. -5. On the right side of the page, under "Collaborators", type the name of the user or team you'd like to add to the security advisory. - ![Field to type user or team name](/assets/images/help/security/add-collaborator-field.png) -6. Click **Add**. - ![Add button](/assets/images/help/security/security-advisory-add-collaborator-button.png) - -### Further reading - -- "[Permission levels for security advisories](/github/managing-security-vulnerabilities/permission-levels-for-security-advisories)" -- "[Collaborating in a temporary private fork to resolve a security vulnerability](/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability)" -- "[Removing a collaborator from a security advisory](/github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory)" diff --git a/content/github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository.md b/content/github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository.md deleted file mode 100644 index 874073caaa9a..000000000000 --- a/content/github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Adding a security policy to your repository -intro: You can give instructions for how to responsibly report a security vulnerability in your project by adding a security policy to your repository. -redirect_from: - - /articles/adding-a-security-policy-to-your-repository -versions: - free-pro-team: '*' ---- - -### About security policies - -To give people instructions for responsibly reporting security vulnerabilities in your project, you can add a _SECURITY.md_ file to your repository's root, `docs`, or `.github` folder. When someone creates an issue in your repository, they will see a link to your project's security policy. - -You can create a default security policy for your organization or user account. For more information, see "[Creating a default community health file](/github/building-a-strong-community/creating-a-default-community-health-file)." - -{% tip %} - -**Tip:** To help people find your security policy, you can link to your _SECURITY.md_ file from other places in your repository, such as your README file. For more information, see "[About READMEs](/articles/about-readmes)." - -{% endtip %} - -After someone reports a security vulnerability in your project, you can use {% data variables.product.prodname_security_advisories %} to disclose, fix, and publish information about the vulnerability. For more information, see "[About {% data variables.product.prodname_security_advisories %}](/github/managing-security-vulnerabilities/about-github-security-advisories)." - -{% data reusables.repositories.github-security-lab %} - -### Adding a security policy to your repository - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -3. In the left sidebar, click **Policy**. - ![Policy tab](/assets/images/help/security/policy-tab.png) -4. Click **Start setup**. - ![Start setup button](/assets/images/help/security/start-setup-policy-button.png) -5. In the new _SECURITY.md_ file, add information about supported versions of your project and how to report a vulnerability. -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose-commit-email %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_file_change %} - -### Further reading - -- "[About securing your repository](/github/administering-a-repository/about-securing-your-repository)" -- "[Setting up your project for healthy contributions](/github/building-a-strong-community/setting-up-your-project-for-healthy-contributions)" -- [{% data variables.product.prodname_security %}]({% data variables.product.prodname_security_link %}) diff --git a/content/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database.md b/content/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database.md deleted file mode 100644 index 4b58d7b89790..000000000000 --- a/content/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Browsing security vulnerabilities in the GitHub Advisory Database -intro: 'The {% data variables.product.prodname_advisory_database %} allows you to browse or search for vulnerabilities that affect open source projects on {% data variables.product.company_short %}.' -shortTitle: Browsing the Advisory Database -versions: - free-pro-team: '*' ---- - -### About security vulnerabilities - -{% data reusables.repositories.a-vulnerability-is %} - -{% data variables.product.product_name %} will send you {% data variables.product.prodname_dependabot_alerts %} if we detect that any of the vulnerabilities from the {% data variables.product.prodname_advisory_database %} affect the packages that your repository depends on. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." - -### About the {% data variables.product.prodname_advisory_database %} - -The {% data variables.product.prodname_advisory_database %} contains a curated list of security vulnerabilities that have been mapped to packages tracked by the {% data variables.product.company_short %} dependency graph. {% data reusables.repositories.tracks-vulnerabilities %} - -Each security advisory contains information about the vulnerability, including the description, severity, affected package, package ecosystem, affected versions and patched versions, impact, and optional information such as references, workarounds, and credits. In addition, advisories from the National Vulnerability Database list contain a link to the CVE record, where you can read more details about the vulnerability, its CVSS scores, and its qualitative severity level. For more information, see the "[National Vulnerability Database](https://nvd.nist.gov/)" from the National Institute of Standards and Technology. - -The severity level is one of four possible levels defined in the [Common Vulnerability Scoring System (CVSS), Section 2.1.2](https://www.first.org/cvss/specification-document): -- Low -- Moderate -- High -- Critical - -The {% data variables.product.prodname_advisory_database %} uses CVSS version 3.0 standards and the CVSS levels described above. {% data variables.product.product_name %} doesn't publish CVSS scores. - -{% data reusables.repositories.github-security-lab %} - -### Accessing an advisory in the {% data variables.product.prodname_advisory_database %} - -1. Navigate to https://github.com/advisories. -2. Optionally, to filter the list, use any of the drop-down menus. - ![Dropdown filters](/assets/images/help/security/advisory-database-dropdown-filters.png) -3. Click on any advisory to view details. - -{% note %} - -The database is also accessible using the GraphQL API. For more information, see the "[`security_advisory` webhook event](/webhooks/event-payloads/#security_advisory)." - -{% endnote %} - -### Searching the {% data variables.product.prodname_advisory_database %} -You can search the database, and use qualifiers to narrow your search to advisories created on a certain date, in a specific ecosystem, or in a particular library. - -{% data reusables.time_date.date_format %} {% data reusables.time_date.time_format %} - -{% data reusables.search.date_gt_lt %} - -| Qualifier | Example | -| ------------- | ------------- | -| `ecosystem:ECOSYSTEM`| [**ecosystem:npm**](https://github.com/advisories?utf8=%E2%9C%93&query=ecosystem%3Anpm) will show only advisories affecting NPM packages. | -| `severity:LEVEL`| [**severity:high**](https://github.com/advisories?utf8=%E2%9C%93&query=severity%3Ahigh) will show only advisories with a high severity level. | -| `affects:LIBRARY`| [**affects:lodash**](https://github.com/advisories?utf8=%E2%9C%93&query=affects%3Alodash) will show only advisories affecting the lodash library. | -| `sort:created-asc`| [**sort:created-asc**](https://github.com/advisories?utf8=%E2%9C%93&query=sort%3Acreated-asc) will sort by the oldest advisories first. | -| `sort:created-desc`| [**sort:created-desc**](https://github.com/advisories?utf8=%E2%9C%93&query=sort%3Acreated-desc) will sort by the newest advisories first. | -| `sort:updated-asc`| [**sort:updated-asc**](https://github.com/advisories?utf8=%E2%9C%93&query=sort%3Aupdated-asc) will sort by the least recently updated first. | -| `sort:updated-desc`| [**sort:updated-desc**](https://github.com/advisories?utf8=%E2%9C%93&query=sort%3Aupdated-desc) will sort by the most recently updated first. | -| `is:withdrawn`| [**is:withdrawn**](https://github.com/advisories?utf8=%E2%9C%93&query=is%3Awithdrawn) will show only advisories that have been withdrawn. | -| `created:YYYY-MM-DD`| [**created:2019-10-31**](https://github.com/advisories?utf8=%E2%9C%93&query=created%3A2019-10-31) will show only advisories created on this date. | -| `updated:YYYY-MM-DD`| [**updated:2019-10-31**](https://github.com/advisories?utf8=%E2%9C%93&query=updated%3A2019-10-31) will show only advisories updated on this date. | - -### Further reading - -- MITRE's [definition of "vulnerability"](https://cve.mitre.org/about/terminology.html#vulnerability) diff --git a/content/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md b/content/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md deleted file mode 100644 index fb5e8e5a9568..000000000000 --- a/content/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Collaborating in a temporary private fork to resolve a security vulnerability -intro: You can create a temporary private fork to privately collaborate on fixing a security vulnerability in your repository. -redirect_from: - - /articles/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability -versions: - free-pro-team: '*' ---- - -### Prerequisites - -Before you can collaborate in a temporary private fork, you must create a draft security advisory. For more information, see "[Creating a security advisory](/github/managing-security-vulnerabilities/creating-a-security-advisory)." - -### Creating a temporary private fork - -Anyone with admin permissions to a security advisory can create a temporary private fork. - -To keep information about vulnerabilities secure, integrations, including CI, cannot access temporary private forks. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-advisories %} -4. In the "Security Advisories" list, click the security advisory you'd like to create a temporary private fork in. - ![Security advisory in list](/assets/images/help/security/security-advisory-in-list.png) -5. Click **New temporary private fork**. - ![New temporary private fork button](/assets/images/help/security/new-temporary-private-fork-button.png) - -### Adding collaborators to a temporary private fork - -Anyone with admin permissions to a security advisory can add additional collaborators to the security advisory, and collaborators on the security advisory can access the temporary private fork. For more information, see "[Adding a collaborator to a security advisory](/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory)." - -### Adding changes to a temporary private fork - -Anyone with write permissions to a security advisory can add changes to a temporary private fork. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-advisories %} -4. In the "Security Advisories" list, click the security advisory you'd like to add changes to. - ![Security advisory in list](/assets/images/help/security/security-advisory-in-list.png) -5. Add your changes on {% data variables.product.product_name %} or locally: - - To add changes on {% data variables.product.product_name %}, under "Add changes to this advisory", click **the temporary private fork**. Then, create a new branch and edit files. For more information, see "[Creating and deleting branches within your repository](/articles/creating-and-deleting-branches-within-your-repository)" and "[Editing files in your repository](/articles/editing-files-in-your-repository)." - - To add changes locally, follow the instructions under "Clone and create a new branch" and "Make your changes, then push." - ![Add changes to this advisory box](/assets/images/help/security/add-changes-to-this-advisory-box.png) - -### Creating a pull request from a temporary private fork - -Anyone with write permissions to a security advisory can create a pull request from a temporary private fork. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-advisories %} -4. In the "Security Advisories" list, click the security advisory you'd like to create a pull request in. - ![Security advisory in list](/assets/images/help/security/security-advisory-in-list.png) -5. To the right of your branch name, click **Compare & pull request**. - ![Compare & pull request button](/assets/images/help/security/security-advisory-compare-and-pr.png) -{% data reusables.repositories.pr-title-description %} -{% data reusables.repositories.create-pull-request %} - -{% data reusables.repositories.merge-all-pulls-together %} For more information, see "[Merging changes in a security advisory](#merging-changes-in-a-security-advisory)." - -### Merging changes in a security advisory - -Anyone with admin permissions to a security advisory can merge changes in a security advisory. - -{% data reusables.repositories.merge-all-pulls-together %} - -Before you can merge changes in a security advisory, every open pull request in the temporary private fork must be mergeable. There can be no merge conflicts, and branch protection requirements must be satisfied. To keep information about vulnerabilities secure, status checks do not run on pull requests in temporary private forks. For more information, see "[About protected branches](/articles/about-protected-branches)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-advisories %} -4. In the "Security Advisories" list, click the security advisory with changes you'd like to merge. - ![Security advisory in list](/assets/images/help/security/security-advisory-in-list.png) -5. To merge all open pull requests in the temporary private fork, click **Merge pull requests**. - ![Merge pull requests button](/assets/images/help/security/merge-pull-requests-button.png) - -After you merge changes in a security advisory, you can publish the security advisory to alert your community about the security vulnerability in previous versions of your project. For more information, see "[Publishing a security advisory](/github/managing-security-vulnerabilities/publishing-a-security-advisory)." - -### Further reading - -- "[Permission levels for security advisories](/github/managing-security-vulnerabilities/permission-levels-for-security-advisories)" -- "[Publishing a security advisory](/github/managing-security-vulnerabilities/publishing-a-security-advisory)" diff --git a/content/github/managing-security-vulnerabilities/configuring-github-dependabot-security-updates.md b/content/github/managing-security-vulnerabilities/configuring-github-dependabot-security-updates.md deleted file mode 100644 index 2acde31d0aa3..000000000000 --- a/content/github/managing-security-vulnerabilities/configuring-github-dependabot-security-updates.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Configuring GitHub Dependabot security updates -intro: 'You can use {% data variables.product.prodname_dependabot_security_updates %} or manual pull requests to easily update vulnerable dependencies.' -redirect_from: - - /articles/configuring-automated-security-fixes - - /github/managing-security-vulnerabilities/configuring-automated-security-fixes - - /github/managing-security-vulnerabilities/configuring-automated-security-updates -shortTitle: Configuring Dependabot security updates -versions: - free-pro-team: '*' ---- - -### About configuring {% data variables.product.prodname_dependabot_security_updates %} - -You can enable {% data variables.product.prodname_dependabot_security_updates %} for any repository that uses {% data variables.product.prodname_dependabot_short %} alerts and the dependency graph. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-github-dependabot-security-updates)." - -You can disable {% data variables.product.prodname_dependabot_security_updates %} for an individual repository or for all repositories owned by your user account or organization. For more information, see "[Managing {% data variables.product.prodname_dependabot_security_updates %} for your repositories](#managing-github-dependabot-security-updates-for-your-repositories)" below. - -{% data reusables.dependabot.dependabot-tos %} - -### Supported repositories - -{% data variables.product.prodname_dotcom %} automatically enables {% data variables.product.prodname_dependabot_security_updates %} for every repository that meets these prerequisites. - -{% note %} - -**Note**: You can manually enable {% data variables.product.prodname_dependabot_security_updates %}, even if the repository doesn't meet some of the prerequisites below. For example, you can enable {% data variables.product.prodname_dependabot_security_updates %} on a fork, or for a package manager that isn't directly supported by following the instructions in "[Managing {% data variables.product.prodname_dependabot_security_updates %} for your repositories](#managing-github-dependabot-security-updates-for-your-repositories)." - -{% endnote %} - -| Automatic enablement prerequisite | More information | -| ----------------- | ----------------------- | -| Repository is not a fork | "[About forks](/github/collaborating-with-issues-and-pull-requests/about-forks)" | -| Repository is not archived | "[Archiving repositories](/github/creating-cloning-and-archiving-repositories/archiving-repositories)" | -| Repository is public, or repository is private and you have enabled read-only analysis by {% data variables.product.prodname_dotcom %}, dependency graph, and vulnerability alerts in the repository's settings | "[Managing data use settings for your private repository](/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository)." | -| Repository contains dependency manifest file from a package ecosystem that {% data variables.product.prodname_dotcom %} supports | "[Supported package ecosystems](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems)" | -| {% data variables.product.prodname_dependabot_security_updates %} are not disabled for the repository | "[Managing {% data variables.product.prodname_dependabot_security_updates %} for your repository](#managing-github-dependabot-security-updates-for-your-repositories)" | -| Repository is not already using an integration for dependency management | "[About integrations](/github/customizing-your-github-workflow/about-integrations)" | - -If security updates are not enabled for your repository and you don't know why, first try enabling them using the instructions given in the procedural sections below. If security updates are still not working, you can [contact support](https://support.github.com/contact). - -### Managing {% data variables.product.prodname_dependabot_security_updates %} for your repositories - -You can enable or disable {% data variables.product.prodname_dependabot_security_updates %} for an individual repository. - -You can also enable or disable {% data variables.product.prodname_dependabot_security_updates %} for all repositories owned by your user account or organization. For more information, see "[Managing security and analysis settings for your user account](/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account)" or "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)." - -{% data variables.product.prodname_dependabot_security_updates %} require specific repository settings. For more information, see "[Supported repositories](#supported-repositories)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-dependabot-alerts %} -1. Above the list of alerts, use the drop-down menu and select or unselect **{% data variables.product.prodname_dependabot_short %} security updates**. - ![Drop-down menu with the option to enable {% data variables.product.prodname_dependabot_security_updates %}](/assets/images/help/repository/enable-dependabot-security-updates-drop-down.png) - -### Further reading - -- "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" -- "[Managing data use settings for your private repository](/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository)" -- "[Supported package ecosystems](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems)" diff --git a/content/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies.md b/content/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies.md deleted file mode 100644 index 8ba51b3b5b1c..000000000000 --- a/content/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Configuring notifications for vulnerable dependencies -shortTitle: Configuring notifications -intro: 'Optimize how you receive notifications about {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_short %}{% else %}security{% endif %} alerts.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - -### About notifications for vulnerable dependencies - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}When {% data variables.product.prodname_dependabot %} detects vulnerable dependencies in your repositories, we generate a {% data variables.product.prodname_dependabot_short %} alert and display it on the Security tab for the repository. {% data variables.product.product_name %} notifies the maintainers of affected repositories about the new alert according to their notification preferences.{% else %}When {% data variables.product.product_name %} detects vulnerable dependencies in your repositories, it sends security alerts.{% endif %}{% if currentVersion == "free-pro-team@latest" %} {% data variables.product.prodname_dependabot_short %} is enabled by default on all public repositories. For {% data variables.product.prodname_dependabot_alerts %}, by default, you will receive {% data variables.product.prodname_dependabot_alerts %} by email, grouped by the specific vulnerability. -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %}If you're an organization owner, you can enable or disable {% data variables.product.prodname_dependabot_short %} alerts for all repositories in your organization with one click. You can also set whether the detection of vulnerable dependencies will be enabled or disabled for newly-created repositories. For more information, see "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-features-for-new-repositories)." -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion == "enterprise-server@2.21" %} -Your site administrator needs to enable security alerts for vulnerable dependencies for {% data variables.product.product_location_enterprise %} before you can use the feature. For more information, see "[Enabling alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)."{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.20" %} -By default, if your site administrator has configured email for notifications on your instance, you will receive {% if currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} by email.{% endif %} - -{% if currentVersion ver_gt "enterprise-server@2.21" %}Site administrators can also enable {% data variables.product.prodname_dependabot_alerts %} without notifications. For more information, see "[Enabling {% data variables.product.prodname_dependabot_short %} alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)."{% endif %} - -{% if currentVersion ver_lt "enterprise-server@2.22" %}Site administrators can also enable security alerts without notifications. For more information, see "[Enabling security alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)."{% endif %} - -### Configuring notifications for {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} - -You can configure notification settings for yourself or your organization from the Manage notifications drop-down {% octicon "bell" aria-label="The notifications bell" %} shown at the top of each page. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#choosing-your-notification-settings)." - -{% data reusables.notifications.vulnerable-dependency-notification-delivery-method-customization %} -{% data reusables.notifications.vulnerable-dependency-notification-options %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} - ![{% data variables.product.prodname_dependabot_short %} alerts options](/assets/images/help/notifications-v2/dependabot-alerts-options.png) -{% else %} - ![Security alerts options](/assets/images/help/notifications-v2/security-alerts-options.png) -{% endif %} - -{% note %} - -**Note:** You can filter your {% data variables.product.company_short %} inbox notifications to show {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_short %}{% else %} security{% endif %} alerts. For more information, see "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox#supported-queries-for-custom-filters)." - -{% endnote %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" % %}{% data reusables.repositories.security-alerts-x-github-severity %} For more information, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}"[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#filtering-email-notifications){% else %}"[About email notifications](/github/receiving-notifications-about-activity-on-github/about-email-notifications){% endif %}."{% endif %} - -### How to reduce the noise from notifications for vulnerable dependencies - -If you are concerned about receiving too many notifications for {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %}, we recommend you opt into the weekly email digest, or turn off notifications while keeping {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} enabled. You can still navigate to see your {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} in your repository's Security tab.{% if currentVersion == "free-pro-team@latest" %} For more information, see "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)."{% endif %} - -### Further reading - -- "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications)" -- "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox#supported-is-queries)" diff --git a/content/github/managing-security-vulnerabilities/creating-a-security-advisory.md b/content/github/managing-security-vulnerabilities/creating-a-security-advisory.md deleted file mode 100644 index f1c2117d3dd9..000000000000 --- a/content/github/managing-security-vulnerabilities/creating-a-security-advisory.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Creating a security advisory -intro: You can create a draft security advisory to privately discuss and fix a security vulnerability in your open source project. -redirect_from: - - /articles/creating-a-maintainer-security-advisory - - /github/managing-security-vulnerabilities/creating-a-maintainer-security-advisory -versions: - free-pro-team: '*' ---- - -Anyone with admin permissions to a repository can create a security advisory. - -{% data reusables.security-advisory.security-researcher-cannot-create-advisory %} - -### Creating a security advisory - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-advisories %} -4. Click **New draft security advisory**. - ![Open draft advisory button](/assets/images/help/security/security-advisory-new-draft-security-advisory-button.png) -5. Type a title for your security advisory. - ![Title field](/assets/images/help/security/security-advisory-title.png) -{% data reusables.repositories.security-advisory-edit-details %} -{% data reusables.repositories.security-advisory-edit-description %} -8. Click **Create security advisory**. - ![Create security advisory button](/assets/images/help/security/security-advisory-create-security-advisory-button.png) - -### Next steps - -- Comment on the draft security advisory to discuss the vulnerability with your team. -- Add collaborators to the security advisory. For more information, see "[Adding a collaborator to a security advisory](/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-maintainer-security-advisory)." -- Privately collaborate to fix the vulnerability in a temporary private fork. For more information, see "[Collaborating in a temporary private fork to resolve a security vulnerability](/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability)." -- Add individuals who should receive credit for contributing to the security advisory. For more information, see "[Editing a security advisory](/github/managing-security-vulnerabilities/editing-a-security-advisory#about-credits-for-security-advisories)." -- Publish the security advisory to notify your community of the security vulnerability. For more information, see "[Publishing a security advisory](/github/managing-security-vulnerabilities/publishing-a-security-advisory)." diff --git a/content/github/managing-security-vulnerabilities/editing-a-security-advisory.md b/content/github/managing-security-vulnerabilities/editing-a-security-advisory.md deleted file mode 100644 index 236473c986a1..000000000000 --- a/content/github/managing-security-vulnerabilities/editing-a-security-advisory.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Editing a security advisory -intro: You can edit the metadata and description for a security advisory if you need to update details or correct errors. -versions: - free-pro-team: '*' ---- - -People with admin permissions to a security advisory can edit the security advisory. - -### About credits for security advisories - -You can credit people who helped discover, report, or fix a security vulnerability. If you credit someone, they can choose to accept or decline credit. - -If someone accepts credit, the person's username appears in the "Credits" section of the security advisory. Anyone with read access to the repository can see the advisory and the people who accepted credit for it. - -### Editing a security advisory - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-advisories %} -4. In the "Security Advisories" list, click the security advisory you'd like to edit. -5. In the upper-right corner of the details for the security advisory, click {% octicon "pencil" aria-label="The edit icon" %}. - ![Edit button for a security advisory](/assets/images/help/security/security-advisory-edit-button.png) -{% data reusables.repositories.security-advisory-edit-details %} -{% data reusables.repositories.security-advisory-edit-description %} -8. Optionally, edit the "Credits" for the security advisory. - ![Credits for a security advisory](/assets/images/help/security/security-advisory-credits.png) -9. Click **Update security advisory**. - ![Add button](/assets/images/help/security/update-advisory-button.png) -10. The people listed in the "Credits" section will receive an email or web notification inviting them to accept credit. If a person accepts, their username will be publicly visible once the security advisory is published. - -### Further reading - -- "[Withdrawing a security advisory](/github/managing-security-vulnerabilities/withdrawing-a-security-advisory)" diff --git a/content/github/managing-security-vulnerabilities/index.md b/content/github/managing-security-vulnerabilities/index.md deleted file mode 100644 index 61c09009e14e..000000000000 --- a/content/github/managing-security-vulnerabilities/index.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Managing security vulnerabilities -redirect_from: - - /categories/managing-security-vulnerabilities -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - - -{% topic_link_in_list /managing-security-vulnerabilities-in-your-project %} - {% link_in_list /adding-a-security-policy-to-your-repository %} - {% link_in_list /about-github-security-advisories %} - {% link_in_list /permission-levels-for-security-advisories %} - {% link_in_list /creating-a-security-advisory %} - {% link_in_list /adding-a-collaborator-to-a-security-advisory %} - {% link_in_list /removing-a-collaborator-from-a-security-advisory %} - {% link_in_list /collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability %} - {% link_in_list /publishing-a-security-advisory %} - {% link_in_list /editing-a-security-advisory %} - {% link_in_list /withdrawing-a-security-advisory %} - -{% topic_link_in_list /managing-vulnerabilities-in-your-projects-dependencies %} - - {% link_in_list /browsing-security-vulnerabilities-in-the-github-advisory-database %} - - {% link_in_list /about-alerts-for-vulnerable-dependencies %} - {% link_in_list /configuring-notifications-for-vulnerable-dependencies %} - - {% link_in_list /about-github-dependabot-security-updates %} - {% link_in_list /configuring-github-dependabot-security-updates %} - {% link_in_list /viewing-and-updating-vulnerable-dependencies-in-your-repository %} - {% link_in_list /troubleshooting-the-detection-of-vulnerable-dependencies %} - {% link_in_list /troubleshooting-github-dependabot-errors %} - diff --git a/content/github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project.md b/content/github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project.md deleted file mode 100644 index e8274c7d6e71..000000000000 --- a/content/github/managing-security-vulnerabilities/managing-security-vulnerabilities-in-your-project.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Managing security vulnerabilities in your project -intro: 'You can discover, discuss, fix, and disclose security vulnerabilities in your repositories.' -mapTopic: true -redirect_from: - - /articles/managing-security-vulnerabilities-in-your-project -versions: - free-pro-team: '*' ---- - diff --git a/content/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies.md b/content/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies.md deleted file mode 100644 index 85d0c898bea8..000000000000 --- a/content/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Managing vulnerabilities in your project's dependencies -intro: 'You can track your repository''s dependencies and receive {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} when {% data variables.product.product_name %} detects vulnerable dependencies.' -mapTopic: true -redirect_from: - - /articles/updating-your-project-s-dependencies/ - - /articles/updating-your-projects-dependencies/ - - /articles/managing-security-vulnerabilities-in-your-projects-dependencies/ - - /articles/managing-vulnerabilities-in-your-projects-dependencies -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/managing-security-vulnerabilities/permission-levels-for-security-advisories.md b/content/github/managing-security-vulnerabilities/permission-levels-for-security-advisories.md deleted file mode 100644 index a69030e7e26d..000000000000 --- a/content/github/managing-security-vulnerabilities/permission-levels-for-security-advisories.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Permission levels for security advisories -intro: The actions you can take in a security advisory depend on whether you have admin or write permissions to the security advisory. -redirect_from: - - /articles/permission-levels-for-maintainer-security-advisories - - /github/managing-security-vulnerabilities/permission-levels-for-maintainer-security-advisories -versions: - free-pro-team: '*' ---- - -### Permissions overview - -{% data reusables.repositories.security-advisory-admin-permissions %} For more information about adding a collaborator to a security advisory, see "[Adding a collaborator to a security advisory](/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory)." - -Action | Write permissions | Admin permissions | ------- | ----------------- | ----------------- | -See a draft security advisory | X | X | -Add collaborators to the security advisory (see "[Adding a collaborator to a security advisory](/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory)") | | X | -Edit and delete any comments in the security advisory | X | X | -Create a temporary private fork in the security advisory (see "[Collaborating in a temporary private fork to resolve a security vulnerability](/articles/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability)") | | X | -Add changes to a temporary private fork in the security advisory (see "[Collaborating in a temporary private fork to resolve a security vulnerability](/articles/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability)") | X | X | -Create pull requests in a temporary private fork (see "[Collaborating in a temporary private fork to resolve a security vulnerability](/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability)") | X | X | -Merge changes in the security advisory (see "[Collaborating in a temporary private fork to resolve a security vulnerability](/articles/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability)") | | X | -Add and edit metadata in the security advisory (see "[Publishing a security advisory](/github/managing-security-vulnerabilities/publishing-a-security-advisory)") | X | X | -Add and remove credits for a security advisory (see "[Editing a security advisory](/github/managing-security-vulnerabilities/editing-a-security-advisory#about-credits-for-security-advisories)") | X | X | -Close the draft security advisory | | X | -Publish the security advisory (see "[Publishing a security advisory](/github/managing-security-vulnerabilities/publishing-a-security-advisory)") | | X | - -### Further reading - -- "[Adding a collaborator to a security advisory](/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory)" -- "[Collaborating in a temporary private fork to resolve a security vulnerability](/github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability)" -- "[Removing a collaborator from a security advisory](/github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory)" -- "[Withdrawing a security advisory](/github/managing-security-vulnerabilities/withdrawing-a-security-advisory)" diff --git a/content/github/managing-security-vulnerabilities/publishing-a-security-advisory.md b/content/github/managing-security-vulnerabilities/publishing-a-security-advisory.md deleted file mode 100644 index c02d0b64c8b3..000000000000 --- a/content/github/managing-security-vulnerabilities/publishing-a-security-advisory.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Publishing a security advisory -intro: You can publish a security advisory to alert your community about a security vulnerability in your project. -redirect_from: - - /articles/publishing-a-maintainer-security-advisory - - /github/managing-security-vulnerabilities/publishing-a-maintainer-security-advisory -versions: - free-pro-team: '*' ---- - -Anyone with admin permissions to a security advisory can publish the security advisory. - -### Prerequisites - -Before you can publish a security advisory or request a CVE identification number, you must create a draft security advisory and provide information about the versions of your project affected by the security vulnerability. For more information, see "[Creating a security advisory](/github/managing-security-vulnerabilities/creating-a-security-advisory)." - -If you've created a security advisory but haven't yet provided details about the versions of your project that the security vulnerability affects, you can edit the security advisory. For more information, see "[Editing a security advisory](/github/managing-security-vulnerabilities/editing-a-security-advisory)." - -### About publishing a security advisory - -When you publish a security advisory, you notify your community about the security vulnerability that the security advisory addresses. Publishing a security advisory makes it easier for your community to update package dependencies and research the impact of the security vulnerability. - -{% data reusables.repositories.security-advisories-republishing %} - -Before you publish a security advisory, you can privately collaborate to fix the vulnerability in a temporary private fork. For more information, see "[Collaborating in a temporary private fork to resolve a security vulnerability](/articles/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability)." - -When you publish a draft advisory from a public repository, everyone is able to see: - -- The current version of the advisory data. -- Any advisory credits that the credited users have accepted. - -{% note %} - -**Note**: The general public will never have access to the edit history of the advisory, and will only see the published version. - -{% endnote %} - -After you publish a security advisory, the URL for the security advisory will remain the same as before you published the security advisory. Anyone with read access to the repository can see the security advisory. Collaborators on the security advisory can continue to view past conversations, including the full comment stream, in the security advisory unless someone with admin permissions removes the collaborator from the security advisory. - -If you need to update or correct information in a security advisory that you've published, you can edit the security advisory. For more information, see "[Editing a security advisory](/github/managing-security-vulnerabilities/editing-a-security-advisory)." - -### Requesting a CVE identification number - -Anyone with admin permissions to a security advisory can request a CVE identification number for the security advisory. - -{% data reusables.repositories.request-security-advisory-cve-id %} For more information, see "[About {% data variables.product.prodname_security_advisories %}](/github/managing-security-vulnerabilities/about-github-security-advisories#cve-identification-numbers)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-advisories %} -4. In the "Security Advisories" list, click the security advisory you'd like to request a CVE identification number for. - ![Security advisory in list](/assets/images/help/security/security-advisory-in-list.png) -5. Use the **Publish advisory** drop-down menu, and click **Request CVE**. - ![Request CVE in drop-down](/assets/images/help/security/security-advisory-drop-down-request-cve.png) -6. Click **Request CVE**. - ![Request CVE button](/assets/images/help/security/security-advisory-request-cve-button.png) - -### Publishing a security advisory - -Publishing a security advisory deletes the temporary private fork for the security advisory. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-advisories %} -4. In the "Security Advisories" list, click the security advisory you'd like to publish. - ![Security advisory in list](/assets/images/help/security/security-advisory-in-list.png) -5. At the bottom of the page, click **Publish advisory**. - ![Publish advisory button](/assets/images/help/security/publish-advisory-button.png) - -### {% data variables.product.prodname_dependabot_alerts %} for published security advisories - -{% data reusables.repositories.github-reviews-security-advisories %} - -### Further reading - -- "[Withdrawing a security advisory](/github/managing-security-vulnerabilities/withdrawing-a-security-advisory)" diff --git a/content/github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory.md b/content/github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory.md deleted file mode 100644 index ff06ba0cb0d3..000000000000 --- a/content/github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Removing a collaborator from a security advisory -intro: 'When you remove a collaborator from a security advisory, they lose read and write access to the security advisory''s discussion and metadata.' -versions: - free-pro-team: '*' ---- - -People with admin permissions to a security advisory can remove collaborators from the security advisory. - -### Removing a collaborator from a security advisory - -{% data reusables.repositories.security-advisory-collaborators-public-repositories %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-advisories %} -4. In the "Security Advisories" list, click the security advisory you'd like to remove a collaborator from. - ![Security advisory in list](/assets/images/help/security/security-advisory-in-list.png) -5. On the right side of the page, under "Collaborators", find the name of the user or team you'd like to remove from the security advisory. - ![Security advisory collaborator](/assets/images/help/security/security-advisory-collaborator.png) -6. Next to the collaborator you want to remove, click the **X** icon. - ![X icon to remove security advisory collaborator](/assets/images/help/security/security-advisory-remove-collaborator-x.png) - -### Further reading - -- "[Permission levels for security advisories](/github/managing-security-vulnerabilities/permission-levels-for-security-advisories)" -- "[Adding a collaborator to a security advisory](/github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory)" diff --git a/content/github/managing-security-vulnerabilities/troubleshooting-github-dependabot-errors.md b/content/github/managing-security-vulnerabilities/troubleshooting-github-dependabot-errors.md deleted file mode 100644 index a376ff1995b2..000000000000 --- a/content/github/managing-security-vulnerabilities/troubleshooting-github-dependabot-errors.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Troubleshooting GitHub Dependabot errors -intro: 'Sometimes {% data variables.product.prodname_dependabot %} is unable to raise a pull request to update your dependencies. You can review the error and unblock {% data variables.product.prodname_dependabot_short %}.' -shortTitle: Troubleshooting errors -versions: - free-pro-team: '*' ---- - -{% data reusables.dependabot.beta-note %} - -### About {% data variables.product.prodname_dependabot %} errors - -{% data reusables.dependabot.pull-request-introduction %} - -If anything prevents {% data variables.product.prodname_dependabot_short %} from raising a pull request, this is reported as an error. - -### Investigating errors with {% data variables.product.prodname_dependabot_security_updates %} - -When {% data variables.product.prodname_dependabot_short %} is blocked from creating a pull request to fix a {% data variables.product.prodname_dependabot_short %} alert, it posts the error message on the alert. The {% data variables.product.prodname_dependabot_short %} alerts view shows a list of any alerts that have not been resolved yet. To access the alerts view, click **{% data variables.product.prodname_dependabot_short %} alerts** on the **Security** tab for the repository. Where a pull request that will fix the vulnerable dependency has been generated, the alert includes a link to that pull request. - -![{% data variables.product.prodname_dependabot_short %} alerts view showing a pull request link](/assets/images/help/dependabot/dependabot-alert-pr-link.png) - -There are three reasons why an alert may have no pull request link: - -1. {% data variables.product.prodname_dependabot_security_updates %} are not enabled for the repository. -1. The alert is for an indirect or transitive dependency that is not explicitly defined in a lock file. -1. An error blocked {% data variables.product.prodname_dependabot_short %} from creating a pull request. - -If an error blocked {% data variables.product.prodname_dependabot_short %} from creating a pull request, you can display details of the error by clicking the alert. - -![{% data variables.product.prodname_dependabot_short %} alert showing the error that blocked the creation of a pull request](/assets/images/help/dependabot/dependabot-security-update-error.png) - -### Investigating errors with {% data variables.product.prodname_dependabot_version_updates %} - -When {% data variables.product.prodname_dependabot_short %} is blocked from creating a pull request to update a dependency in an ecosystem, it posts the error icon on the manifest file. The manifest files that are managed by {% data variables.product.prodname_dependabot_short %} are listed on the {% data variables.product.prodname_dependabot_short %} tab. To access this tab, on the **Insights** tab for the repository click **Dependency graph**, and then click the **{% data variables.product.prodname_dependabot_short %}** tab. - -![{% data variables.product.prodname_dependabot_short %} view showing an error](/assets/images/help/dependabot/dependabot-tab-view-error-beta.png) - -To see the log file for any manifest file, click the **Last checked TIME ago** link. When you display the log file for a manifest that's shown with an error symbol (for example, Maven in the screenshot above), any errors are also displayed. - -![{% data variables.product.prodname_dependabot_short %} version update error and log ](/assets/images/help/dependabot/dependabot-version-update-error-beta.png) - -### Understanding {% data variables.product.prodname_dependabot_short %} errors - -Pull requests for security updates act to upgrade a vulnerable dependency to the minimum version that includes a fix for the vulnerability. In contrast, pull requests for version updates act to upgrade a dependency to the latest version allowed by the package manifest and {% data variables.product.prodname_dependabot_short %} configuration files. Consequently, some errors are specific to one type of update. - -#### {% data variables.product.prodname_dependabot_short %} cannot update DEPENDENCY to a non-vulnerable version - -**Security updates only.** {% data variables.product.prodname_dependabot_short %} cannot create a pull request to update the vulnerable dependency to a secure version without breaking other dependencies in the dependency graph for this repository. - -Every application that has dependencies has a dependency graph, that is, a directed acyclic graph of every package version that the application directly or indirectly depends on. Every time a dependency is updated, this graph must resolve otherwise the application won't build. When an ecosystem has a deep and complex dependency graph, for example, npm and RubyGems, it is often impossible to upgrade a single dependency without upgrading the whole ecosystem. - -The best way to avoid this problem is to stay up to date with the most recently released versions, for example, by enabling version updates. This increases the likelihood that a vulnerability in one dependency can be resolved by a simple upgrade that doesn't break the dependency graph. For more information, see "[Enabling and disabling version updates](/github/administering-a-repository/enabling-and-disabling-version-updates)." - -#### {% data variables.product.prodname_dependabot_short %} cannot update to the required version as there is already an open pull request for the latest version - -**Security updates only.** {% data variables.product.prodname_dependabot_short %} will not create a pull request to update the vulnerable dependency to a secure version because there is already an open pull request to update this dependency. You will see this error when a vulnerability is detected in a single dependency and there's already an open pull request to update the dependency to the latest version. - -There are two options: you can review the open pull request and merge it as soon as you are confident that the change is safe, or close that pull request and trigger a new security update pull request. For more information, see "[Triggering a {% data variables.product.prodname_dependabot_short %} pull request manually](#triggering-a-dependabot-pull-request-manually)." - -#### {% data variables.product.prodname_dependabot_short %} timed out during its update - -{% data variables.product.prodname_dependabot_short %} took longer than the maximum time allowed to assess the update required and prepare a pull request. This error is usually seen only for large repositories with many manifest files, for example, npm or yarn monorepo projects with hundreds of *package.json* files. Updates to the Composer ecosystem also take longer to assess and may time out. - -This error is difficult to address. If a version update times out, you could specify the most important dependencies to update using the `allow` parameter or, alternatively, use the `ignore` parameter to exclude some dependencies from updates. Updating your configuration might allow {% data variables.product.prodname_dependabot_short %} to review the version update and generate the pull request in the time available. - -If a security update times out, you can reduce the chances of this happening by keeping the dependencies updated, for example, by enabling version updates. For more information, see "[Enabling and disabling version updates](/github/administering-a-repository/enabling-and-disabling-version-updates)." - -#### {% data variables.product.prodname_dependabot_short %} cannot open any more pull requests - -There's a limit on the number of open pull requests {% data variables.product.prodname_dependabot_short %} will generate. When this limit is reached, no new pull requests are opened and this error is reported. The best way to resolve this error is to review and merge some of the open pull requests. - -There are separate limits for security and version update pull requests, so that open version update pull requests cannot block the creation of a security update pull request. The limit for security update pull requests is 10. By default, the limit for version updates is 5 but you can change this using the `open-pull-requests-limit` parameter in the configuration file. For more information, see "[Configuration options for dependency updates](/github/administering-a-repository/configuration-options-for-dependency-updates#open-pull-requests-limit)." - -The best way to resolve this error is to merge or close some of the existing pull requests and trigger a new pull request manually. For more information, see "[Triggering a {% data variables.product.prodname_dependabot_short %} pull request manually](#triggering-a-dependabot-pull-request-manually)." - -### Triggering a {% data variables.product.prodname_dependabot_short %} pull request manually - -If you unblock {% data variables.product.prodname_dependabot_short %}, you can manually trigger a fresh attempt to create a pull request. - -- **Security updates**—display the {% data variables.product.prodname_dependabot_short %} alert that shows the error you have fixed and click **Create {% data variables.product.prodname_dependabot_short %} security update**. -- **Version updates**—display the log file for the manifest that shows the error that you have fixed and click **Check for updates**. diff --git a/content/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies.md b/content/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies.md deleted file mode 100644 index 9926d8bcf2cf..000000000000 --- a/content/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Troubleshooting the detection of vulnerable dependencies -intro: 'If the dependency information reported by {% data variables.product.product_name %} is not what you expected, there are a number of points to consider, and various things you can check.' -shortTitle: Troubleshooting detection -versions: - free-pro-team: '*' ---- - -The results of dependency detection reported by {% data variables.product.product_name %} may be different from the results returned by other tools. There are good reasons for this and it's helpful to understand how {% data variables.product.prodname_dotcom %} determines dependencies for your project. - -### Why do some dependencies seem to be missing? - -{% data variables.product.prodname_dotcom %} generates and displays dependency data differently than other tools. Consequently, if you've been using another tool to identify dependencies you will almost certainly see different results. Consider the following: - -* {% data variables.product.prodname_advisory_database %} is one of the data sources that {% data variables.product.prodname_dotcom %} uses to identify vulnerable dependencies. It's a free, curated database of vulnerability information for common package ecosystems on {% data variables.product.prodname_dotcom %}. It includes both data reported directly to {% data variables.product.prodname_dotcom %} from {% data variables.product.prodname_security_advisories %}, as well as official feeds and community sources. This data is reviewed and curated by {% data variables.product.prodname_dotcom %} to ensure that false or unactionable information is not shared with the development community. For more information, see "[Browsing security vulnerabilities in the {% data variables.product.prodname_advisory_database %}](/github/managing-security-vulnerabilities/browsing-security-vulnerabilities-in-the-github-advisory-database)" and "[About {% data variables.product.prodname_security_advisories %}](/github/managing-security-vulnerabilities/about-github-security-advisories)." -* The dependency graph parses all known package manifest files in a user’s repository. For example, for npm it will parse the _package-lock.json_ file. It constructs a graph of all of the repository’s dependencies and public dependents. This happens when you enable the dependency graph and when anyone pushes to the default branch, and it includes commits that makes changes to a supported manifest format. For more information, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)." -* {% data variables.product.prodname_dependabot_short %} scans any push, to the default branch, that contains a manifest file. When a new vulnerability record is added, it scans all existing repositories and generates an alert for each vulnerable repository. {% data variables.product.prodname_dependabot_short %} alerts are aggregated at the repository level, rather than creating one alert per vulnerability. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." -* {% data variables.product.prodname_dependabot_security_updates %} are triggered when you receive an alert about a vulnerable dependency in your repository. Where possible, {% data variables.product.prodname_dependabot_short %} creates a pull request in your repository to upgrade the vulnerable dependency to the minimum possible secure version needed to avoid the vulnerability. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-github-dependabot-security-updates)" and "[Troubleshooting {% data variables.product.prodname_dependabot %} errors](/github/managing-security-vulnerabilities/troubleshooting-github-dependabot-errors)." - - {% data variables.product.prodname_dependabot_short %} doesn't scan repositories for vulnerable dependencies on a schedule, but rather when something changes. For example, a scan is triggered when a new dependency is added ({% data variables.product.prodname_dotcom %} checks for this on every push), or when a new vulnerability is discovered and added to the advisory database. - -### Why don't I get vulnerability alerts for some ecosystems? - -{% data variables.product.prodname_dotcom %} limits its support for vulnerability alerts to a set of ecosystems where we can provide high-quality, actionable data. Curated vulnerabilities in the {% data variables.product.prodname_advisory_database %}, the dependency graph, {% data variables.product.prodname_dependabot_short %} alerts, and {% data variables.product.prodname_dependabot_short %} security updates are provided for several ecosystems, including Java’s Maven, JavaScript’s npm and Yarn, .NET’s NuGet, Python’s pip, Ruby's RubyGems, and PHP’s Composer. We'll continue to add support for more ecosystems over time. For an overview of the package ecosystems that we support, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems)." - -It's worth noting that [{% data variables.product.prodname_dotcom %} Security Advisories](/github/managing-security-vulnerabilities/about-github-security-advisories) may exist for other ecosystems. The information in a security advisory is provided by the maintainers of a particular repository. This data is not curated in the same way as information for the supported ecosystems. - -**Check**: Does the uncaught vulnerability apply to an unsupported ecosystem? - -### Does the dependency graph only find dependencies in manifests and lockfiles? - -The dependency graph includes information on dependencies that are explicitly declared in your environment. That is, dependencies that are specified in a manifest or a lockfile. The dependency graph generally also includes transitive dependencies, even when they aren't specified in a lockfile, by looking at the dependencies of the dependencies in a manifest file. - -{% data variables.product.prodname_dependabot_short %} alerts advise you about dependencies you should update, including transitive dependencies, where the version can be determined from a manifest or a lockfile. {% data variables.product.prodname_dependabot_short %} security updates only suggests a change where it can directly "fix" the dependency, that is, when these are: -* Direct dependencies explicitly declared in a manifest or lockfile -* Transitive dependencies declared in a lockfile - -The dependency graph doesn't include “loose” dependencies. “Loose” dependencies are individual files that are copied from another source and checked into the repository directly or within an archive (such as a ZIP or JAR file), rather than being referenced by in a package manager’s manifest or lockfile. - -**Check**: Is the uncaught vulnerability for a component that's not specified in the repository's manifest or lockfile? - -### Does the dependency graph detect dependencies specified using variables? - -The dependency graph analyzes manifests as they’re pushed to {% data variables.product.prodname_dotcom %}. The dependency graph doesn't, therefore, have access to the build environment of the project, so it can't resolve variables used within manifests. If you use variables within a manifest to specify the name, or more commonly the version of a dependency, then that dependency will not be included in the dependency graph. - -**Check**: Is the missing dependency declared in the manifest by using a variable for its name or version? - -### Are there limits which affect the dependency graph data? - -Yes, the dependency graph has two categories of limits: - -1. **Processing limits** - - These affect the dependency graph displayed within {% data variables.product.prodname_dotcom %} and also prevent {% data variables.product.prodname_dependabot_short %} alerts being created. - - Manifests over 0.5 MB in size are only processed for enterprise accounts. For other accounts, manifests over 0.5 MB are ignored and will not create {% data variables.product.prodname_dependabot_short %} alerts. - - By default, {% data variables.product.prodname_dotcom %} will not process more than 20 manifests per repository. {% data variables.product.prodname_dependabot_short %} alerts are not be created for manifests beyond this limit. If you need to increase the limit, contact {% data variables.contact.contact_support %}. - -2. **Visualization limits** - - These affect what's displayed in the dependency graph within {% data variables.product.prodname_dotcom %}. However, they don't affect the {% data variables.product.prodname_dependabot_short %} alerts that are created. - - The Dependencies view of the dependency graph for a repository only displays 100 manifests. Typically this is adequate as it is significantly higher than the processing limit described above. In situations where the processing limit is over 100, {% data variables.product.prodname_dependabot_short %} alerts are still created for any manifests that are not shown within {% data variables.product.prodname_dotcom %}. - -**Check**: Is the missing dependency in a manifest file that's over 0.5 MB, or in a repository with a large number of manifests? - -### Does {% data variables.product.prodname_dependabot_short %} generate alerts for vulnerabilities that have been known for many years? - -The {% data variables.product.prodname_advisory_database %} was launched in November 2019, and initially back-filled to include vulnerability information for the supported ecosystems, starting from 2017. When adding CVEs to the database, we prioritize curating newer CVEs, and CVEs affecting newer versions of software. - -Some information on older vulnerabilities is available, especially where these CVEs are particularly widespread, however some old vulnerabilities are not included in the {% data variables.product.prodname_advisory_database %}. If there's a specific old vulnerability that you need to be included in the database, contact {% data variables.contact.contact_support %}. - -**Check**: Does the uncaught vulnerability have a publish date earlier than 2017 in the National Vulnerability Database? - -### Why does {% data variables.product.prodname_advisory_database %} use a subset of published vulnerability data? - -Some third-party tools use uncurated CVE data that isn't checked or filtered by a human. This means that CVEs with tagging or severity errors, or other quality issues, will cause more frequent, more noisy, and less useful alerts. - -Since {% data variables.product.prodname_dependabot_short %} uses curated data in the {% data variables.product.prodname_advisory_database %}, the volume of alerts may be lower, but the alerts you do receive will be accurate and relevant. - -### Does each dependency vulnerability generate a separate alert? - -When a dependency has multiple vulnerabilities, only one aggregated alert is generated for that dependency, instead of one alert per vulnerability. - -The {% data variables.product.prodname_dependabot_short %} alerts count in {% data variables.product.prodname_dotcom %} shows a total for the number of alerts, that is, the number of dependencies with vulnerabilities, not the number of vulnerabilities. - -![{% data variables.product.prodname_dependabot_short %} alerts view](/assets/images/help/repository/dependabot-alerts-view.png) - -When you click to display the alert details, you can see how many vulnerabilities are included in the alert. - -![Multiple vulnerabilities for a {% data variables.product.prodname_dependabot_short %} alert](/assets/images/help/repository/dependabot-vulnerabilities-number.png) - -**Check**: If there is a discrepancy in the totals you are seeing, check that you are not comparing alert numbers with vulnerability numbers. - -### Further reading - -- "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" -- "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)" -- "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)" -- "[Troubleshooting {% data variables.product.prodname_dependabot %} errors](/github/managing-security-vulnerabilities/troubleshooting-github-dependabot-errors)" diff --git a/content/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository.md b/content/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository.md deleted file mode 100644 index 37ed54adfee3..000000000000 --- a/content/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Viewing and updating vulnerable dependencies in your repository -intro: 'If {% data variables.product.product_name %} discovers vulnerable dependencies in your project, you can view them on the Dependabot alerts tab of your repository. Then, you can update your project to resolve or dismiss the vulnerability.' -redirect_from: - - /articles/viewing-and-updating-vulnerable-dependencies-in-your-repository -permissions: Repository administrators and organization owners can view and update dependencies. -shortTitle: Viewing and updating vulnerable dependencies -versions: - free-pro-team: '*' ---- -Your repository's {% data variables.product.prodname_dependabot %} alerts tab lists all open and closed {% data variables.product.prodname_dependabot_alerts %} and corresponding {% data variables.product.prodname_dependabot_security_updates %}. You can sort the list of alerts using the drop-down menu, and you can click into specific alerts for more details. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." - -You can enable automatic security updates for any repository that uses {% data variables.product.prodname_dependabot_alerts %} and the dependency graph. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-github-dependabot-security-updates)." - -### About updates for vulnerable dependencies in your repository - -{% data variables.product.product_name %} generates {% data variables.product.prodname_dependabot_alerts %} when we detect vulnerabilities affecting your repository. For repositories where {% data variables.product.prodname_dependabot_security_updates %} are enabled, when {% data variables.product.product_name %} detects a vulnerable dependency {% data variables.product.prodname_dependabot_short %} creates a pull request to fix it. The pull request will upgrade the dependency to the minimum possible secure version needed to avoid the vulnerability. - -### Viewing and updating vulnerable dependencies - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-security %} -{% data reusables.repositories.sidebar-dependabot-alerts %} -1. Click the alert you'd like to view. - ![Alert selected in list of alerts](/assets/images/help/graphs/click-alert-in-alerts-list.png) -1. Review the details of the vulnerability and, if available, the pull request containing the automated security update. -1. Optionally, if there isn't already a {% data variables.product.prodname_dependabot_security_updates %} update for the alert, to create a pull request to resolve the vulnerability, click **Create {% data variables.product.prodname_dependabot_short %} security update**. - ![Create {% data variables.product.prodname_dependabot_short %} security update button](/assets/images/help/repository/create-dependabot-security-update-button.png) -1. When you're ready to update your dependency and resolve the vulnerability, merge the pull request. Each pull request raised by {% data variables.product.prodname_dependabot_short %} includes information on commands you can use to control {% data variables.product.prodname_dependabot_short %}. For more information, see "[Managing pull requests for dependency updates](/github/administering-a-repository/managing-pull-requests-for-dependency-updates#managing-github-dependabot-pull-requests-with-comment-commands)." -1. Optionally, if the alert is being fixed, if it's incorrect, or located in unused code, use the "Dismiss" drop-down, and click a reason for dismissing the alert. - ![Choosing reason for dismissing the alert via the "Dismiss" drop-down](/assets/images/help/repository/dependabot-alert-dismiss-drop-down.png) - -### Further reading - -- "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)" -- "[Configuring {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/configuring-github-dependabot-security-updates)" -- "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)" -- "[Troubleshooting the detection of vulnerable dependencies](/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies)" -- "[Troubleshooting {% data variables.product.prodname_dependabot %} errors](/github/managing-security-vulnerabilities/troubleshooting-github-dependabot-errors)" diff --git a/content/github/managing-security-vulnerabilities/withdrawing-a-security-advisory.md b/content/github/managing-security-vulnerabilities/withdrawing-a-security-advisory.md deleted file mode 100644 index 90e0dd0d9951..000000000000 --- a/content/github/managing-security-vulnerabilities/withdrawing-a-security-advisory.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Withdrawing a security advisory -intro: You can withdraw a security advisory that you've published. -versions: - free-pro-team: '*' ---- - -If you publish a security advisory in error, you can withdraw the security advisory by contacting {% data variables.contact.contact_support %}. - -### Further reading - -- [Editing a security advisory](/github/managing-security-vulnerabilities/editing-a-security-advisory) diff --git a/content/github/managing-subscriptions-and-notifications-on-github/about-notifications.md b/content/github/managing-subscriptions-and-notifications-on-github/about-notifications.md deleted file mode 100644 index 217afbb26ed9..000000000000 --- a/content/github/managing-subscriptions-and-notifications-on-github/about-notifications.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: About notifications -intro: 'Notifications provide updates about the activity on {% data variables.product.product_name %} that you''ve subscribed to. You can use the notifications inbox to customize, triage, and manage your updates.' -redirect_from: - - /articles/notifications/ - - /articles/about-notifications - - /github/managing-subscriptions-and-notifications-on-github/about-notifications-beta -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - -### Notifications and subscriptions - -You can choose to receive ongoing updates about specific activity on {% data variables.product.product_name %} through a subscription. Notifications are updates that you receive for specific activity that you are subscribed to. - -#### Subscription options - -You can choose to subscribe to notifications for: -- A conversation in a specific issue, pull request, or gist. -- All activity in a repository or team discussion. -- CI activity, such as the status of workflows in repositories set up with {% data variables.product.prodname_actions %}. -- Releases in a repository. - -You can also choose to automatically watch all repositories that you have push access to, except forks. You can watch any other repository you have access to manually by clicking **Watch**. - -If you're no longer interested in a conversation, you can unsubscribe, unwatch, or customize the types of notifications you'll receive in the future. For example, if you no longer want to receive notifications from a particular repository, you can click **Unsubscribe**. For more information, see "[Managing your subscriptions](/github/managing-subscriptions-and-notifications-on-github/managing-your-subscriptions)." - -#### Default subscriptions - -In general, you are automatically subscribed to conversations by default when you have: -- Not disabled automatic watching for repositories or teams you've joined in your notification settings. This setting is enabled by default. -- Been assigned to an issue or pull request. -- Opened a pull request, issue, or created a team discussion post. -- Commented on a thread. -- Subscribed to a thread manually by clicking **Watch** or **Subscribe**. -- Had your username @mentioned. -- Changed the state of a thread, such as by closing an issue or merging a pull request. -- Had a team you're a member of @mentioned. - -By default, you also automatically watch all repositories that you create and are owned by your user account. - -To unsubscribe from conversations you're automatically subscribed to, you can change your notification settings or directly unsubscribe or unwatch activity on {% data variables.product.product_name %}. For more information, see "[Managing your subscriptions](/github/managing-subscriptions-and-notifications-on-github/managing-your-subscriptions)." - -### Customizing notifications and subscriptions - -You can choose to view your notifications through the notifications inbox at [https://github.com/notifications](https://github.com/notifications){% if currentVersion == "free-pro-team@latest" %} and in the {% data variables.product.prodname_mobile %} app{% endif %}, through your email, or some combination of these options. - -To customize the types of updates you'd like to receive and where to send those updates, configure your notification settings. For more information, see “[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications).” - -To keep your subscriptions manageable, review your subscriptions and watched repositories and unsubscribe as needed. For more information, see "[Managing subscriptions for activity on GitHub](/github/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github)." - -To customize how you'd like to receive updates for specific pull requests or issues, you can configure your preferences within the issue or pull request. For more information, see “[Triaging a single notification](/github/managing-subscriptions-and-notifications-on-github/triaging-a-single-notification#customizing-when-to-receive-future-updates-for-an-issue-or-pull-request).” - -{% if currentVersion == "free-pro-team@latest" %} -You can enable push notifications in the {% data variables.product.prodname_mobile %} app. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#enabling-push-notifications-with-github-for-mobile)." -{% endif %} - -### Reasons for receiving notifications - -Your inbox is configured with default filters, which represent the most common reasons that people need to follow-up on their notifications. For more information about inbox filters, see "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox#default-notification-filters)." - -Your inbox shows the `reasons` you're receiving notifications as a label. - -![Reasons labels in inbox](/assets/images/help/notifications-v2/reasons-as-labels-in-inbox.png) - -You can filter your inbox by the reason you're subscribed to notifications. For example, to only see pull requests where someone requested your review, you can use the `review-requested` query filter. - -![Filter notifications by review requested reason](/assets/images/help/notifications-v2/review-requested-reason.png) - -If you've configured notifications to be sent by email and believe you're receiving notifications that don't belong to you, consider troubleshooting with email headers, which show the intended recipient. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#filtering-email-notifications)." - -### Triaging notifications from your inbox - -To effectively manage your notifications, you can triage your inbox with options to: -- Remove a notification from the inbox with **Done**. You can review **Done** notifications all in one place by clicking **Done** in the sidebar or by using the query `is:done`. -- Mark a notification as read or unread. -- **Save** a notification for later review. **Saved** notifications are flagged in your inbox. You can review **Saved** notifications all in one place in the sidebar by clicking **Saved** or by using the query `is:saved`. -- Automatically unsubscribe from this notification and future updates from this conversation. Unsubscribing also removes the notification from your inbox. If you unsubscribe from a conversation and someone mentions your username or a team you're on that you're receiving updates for, then you will start to receive notifications from this conversation again. - -From your inbox you can also triage multiple notifications at once. For more information, see "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox#triaging-multiple-notifications-at-the-same-time)." - -### Customizing your notifications inbox - -To focus on a group of notifications in your inbox on {% data variables.product.product_name %}{% if currentVersion == "free-pro-team@latest" %} or {% data variables.product.prodname_mobile %}{% endif %}, you can create custom filters. For example, you can create a custom filter for an open source project you contribute to and only see notifications for that repository in which you are mentioned. For more information, see "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox)." For more examples of how to customize your triaging workflow, see "[Customizing a workflow for triaging your notifications](/github/managing-subscriptions-and-notifications-on-github/customizing-a-workflow-for-triaging-your-notifications)." - -### Notification retention policy - -Notifications that are not marked as **Saved** are kept for 5 months. Notifications marked as **Saved** are kept indefinitely. If your saved notification is older than 5 months and you unsave it, the notification will disappear from your inbox within a day. - -### Feedback and support - -If you have feedback or feature requests for notifications, use the [feedback form for notifications](https://support.github.com/contact/feedback?contact%5Bcategory%5D=notifications&contact%5Bsubject%5D=Product+feedback). diff --git a/content/github/managing-subscriptions-and-notifications-on-github/configuring-notifications.md b/content/github/managing-subscriptions-and-notifications-on-github/configuring-notifications.md deleted file mode 100644 index 223c3f828e39..000000000000 --- a/content/github/managing-subscriptions-and-notifications-on-github/configuring-notifications.md +++ /dev/null @@ -1,203 +0,0 @@ ---- -title: Configuring notifications -intro: 'Choose the type of activity on {% data variables.product.product_name %} that you want to receive notifications for and how you want these updates delivered.' -redirect_from: - - /articles/about-web-notifications - - /format-of-notification-emails/ - - /articles/configuring-notification-emails/ - - /articles/about-notification-emails/ - - /articles/about-email-notifications - - /articles/accessing-your-notifications - - /articles/configuring-notification-delivery-methods/ - - /articles/managing-notification-delivery-methods/ - - /articles/managing-notification-emails-for-organizations/ - - /articles/choosing-the-delivery-method-for-your-notifications - - /articles/choosing-the-types-of-notifications-you-receive/ -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - -### Notification delivery options - -You have three basic options for notification delivery: - - the notifications inbox on {% data variables.product.product_name %}{% if currentVersion == "free-pro-team@latest" %} - - the notifications inbox on {% data variables.product.prodname_mobile %}, which syncs with the inbox on {% data variables.product.product_name %}{% endif %} - - an email client that uses a verified email address, which can also sync with the notifications inbox on {% data variables.product.product_name %}{% if currentVersion == "free-pro-team@latest" %} and {% data variables.product.prodname_mobile %}{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.notifications-v2.notifications-inbox-required-setting %} For more information, see "[Choosing your notification settings](#choosing-your-notification-settings)." -{% endif %} - -{% data reusables.notifications-v2.tip-for-syncing-email-and-your-inbox-on-github %} - -#### Benefits of the notifications inbox - -The notifications inbox on {% data variables.product.product_name %}{% if currentVersion == "free-pro-team@latest" %} and {% data variables.product.prodname_mobile %}{% endif %} includes triaging options designed specifically for your {% data variables.product.product_name %} notifications flow, including options to: - - Triage multiple notifications at once. - - Mark completed notifications as **Done** and remove them from your inbox. To view all of your notifications marked as **Done**, use the `is:done` query. - - Save a notification to review later. Saved notifications are flagged in your inbox and kept indefinitely. To view all of your saved notifications, use the `is:saved` query. - - Unsubscribe and remove a notification from your inbox. - - Preview the issue, pull request, or team discussion where the notification originates on {% data variables.product.product_name %} from within the notifications inbox. - - See one of the latest reasons you're receiving a notification from your inbox with a `reasons` label. - - Create custom filters to focus on different notifications when you want. - - Group notifications in your inbox by repository or date to get a quick overview with less context switching - -{% if currentVersion == "free-pro-team@latest" %} -In addition, the notifications inbox on {% data variables.product.prodname_mobile %} allows you to triage notifications in dark mode and receive push notifications for direct mentions. For more information, see "[Enabling push notifications with GitHub for mobile](#enabling-push-notifications-with-github-for-mobile)" or "[GitHub for mobile](/github/getting-started-with-github/github-for-mobile)." -{% endif %} - -#### Benefits of using an email client for notifications - -One benefit of using an email client is that all of your notifications can be kept indefinitely depending on your email client's storage capacity. Your inbox notifications are only kept for 5 months unless you've marked them as **Saved**. **Saved** notifications are kept indefinitely. For more information about your inbox's retention policy, see "[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications#notification-retention-policy)." - -Sending notifications to your email client also allows you to customize your inbox according to your email client's settings, which can include custom or color-coded labels. - -Email notifications also allow flexibility with the types of notifications you receive and allow you to choose different email addresses for updates. For example, you can send certain notifications for a repository to a verified personal email address. For more information, about your email customization options, see "[Customizing your email notifications](#customizing-your-email-notifications)." - -### About participating and watching notifications - -When you watch a repository, you're subscribing to updates for activity in that repository. Similarly, when you watch a specific team's discussions, you're subscribing to all conversation updates on that team's page. To see repositories that you're watching, see [https://github.com/watching](https://github.com/watching). For more information, see "[Managing subscriptions and notifications on GitHub](/github/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github)." - -Anytime you comment in a conversation or when someone @mentions your username, you are _participating_ in a conversation. By default, you are automatically subscribed to a conversation when you participate in it. You can unsubscribe from a conversation you've participated in manually by clicking **Unsubscribe** on the issue or pull request or through the **Unsubscribe** option in the notifications inbox. - -For conversations you're watching or participating in, you can choose whether you want to receive notifications by email or through the notifications inbox on {% data variables.product.product_name %}{% if currentVersion == "free-pro-team@latest" %} and {% data variables.product.prodname_mobile %}{% endif %}. - -![Participating and watching notifications options](/assets/images/help/notifications-v2/participating-and-watching-options.png) - -For example: - - If you don't want notifications to be sent to your email, unselect **email** for participating and watching notifications. - - If you want to receive notifications by email when you've participated in a conversation, then you can select **email** under "Participating". - -If you do not enable watching or participating notifications for web{% if currentVersion == "free-pro-team@latest" %} and mobile{% endif %}, then your notifications inbox will not have any updates. - -### Customizing your email notifications - -After enabling email notifications, {% data variables.product.product_name %} will send notifications to you as multipart emails that contain both HTML and plain text copies of the content. Email notification content includes any Markdown, @mentions, emojis, hash-links, and more, that appear in the original content on {% data variables.product.product_name %}. If you only want to see the text in the email, you can configure your email client to display the plain text copy only. - -{% data reusables.notifications.outbound_email_tip %} - -{% data reusables.notifications.shared_state %} - -{% if currentVersion == "free-pro-team@latest" %} - -If you're using Gmail, you can click a button beside the notification email to visit the original issue or pull request that generated the notification. - -![Buttons in Gmail](/assets/images/help/notifications/gmail-buttons.png) - -{% endif %} - -Choose a default email address where you want to send updates for conversations you're participating in or watching. You can also specify which activity on {% data variables.product.product_name %} you want to receive updates for using your default email address. For example, choose whether you want updates to your default email from: - - Comments on issues and pull requests. - - Pull request reviews. - - Pull request pushes. - - Your own updates, such as when you open, comment on, or close an issue or pull request. - -Depending on the organization that owns the repository, you can also send notifications to different email addresses for specific repositories. For example, you can send notifications for a specific public repository to a verified personal email address. Your organization may require the email address to be verified for a specific domain. For more information, see “[Choosing where your organization’s email notifications are sent](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#choosing-where-your-organizations-email-notifications-are-sent)." - -{% data reusables.notifications-v2.email-notification-caveats %} - -### Filtering email notifications - -Each email notification that {% data variables.product.product_name %} sends contains header information. The header information in every email is consistent, so you can use it in your email client to filter or forward all {% data variables.product.product_name %} notifications, or certain types of {% data variables.product.product_name %} notifications. - -If you believe you're receiving notifications that don't belong to you, examine the `X-GitHub-Recipient` and `X-GitHub-Recipient-Address` headers. These headers show who the intended recipient is. Depending on your email setup, you may receive notifications intended for another user. - -Email notifications from {% data variables.product.product_name %} contain the following header information: - -| Header | Information | -| --- | --- | -| `From` address | This address will always be {% if currentVersion == "free-pro-team@latest" %}'`notifications@github.com`'{% else %}'the no-reply email address configured by your site administrator'{% endif %}. | -| `To` field | This field connects directly to the thread. If you reply to the email, you'll add a new comment to the conversation. | -| `Cc` address | {% data variables.product.product_name %} will `Cc` you if you're subscribed to a conversation. The second `Cc` email address matches the notification reason. The suffix for these notification reasons is {% data variables.notifications.cc_address %}. The possible notification reasons are:
  • `assign`: You were assigned to an issue or pull request.
  • `author`: You created an issue or pull request.
  • `comment`: You commented on an issue or pull request.
  • `manual`: There was an update to an issue or pull request you manually subscribed to.
  • `mention`: You were mentioned on an issue or pull request.
  • `push`: Someone committed to a pull request you're subscribed to.
  • `review_requested`: You or a team you're a member of was requested to review a pull request.
  • `security_alert`: {% data variables.product.prodname_dotcom %} detected a vulnerability in a repository you receive alerts for.
  • `state_change`: An issue or pull request you're subscribed to was either closed or opened.
  • `subscribed`: There was an update in a repository you're watching.
  • `team_mention`: A team you belong to was mentioned on an issue or pull request.
  • `your_activity`: You opened, commented on, or closed an issue or pull request.
| -| `mailing list` field | This field identifies the name of the repository and its owner. The format of this address is always `..{% data variables.command_line.backticks %}`. |{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" % %} -| `X-GitHub-Severity` field | {% data reusables.repositories.security-alerts-x-github-severity %} The possible severity levels are:
  • `low`
  • `moderate`
  • `high`
  • `critical`
For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." |{% endif %} - -### Choosing your notification settings - -{% data reusables.notifications.access_notifications %} -{% data reusables.notifications-v2.manage-notifications %} -3. On the notifications settings page, choose how you receive notifications when: - - There are updates in repositories or team discussions you're watching or in a conversation you're participating in. For more information, see "[About participating and watching notifications](#about-participating-and-watching-notifications)." - - You gain access to a new repository or you've joined a new team. For more information, see "[Automatic watching](#automatic-watching)."{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} - - There are new {% data variables.product.prodname_dependabot_alerts %} in your repository. For more information, see "[{% data variables.product.prodname_dependabot_alerts %} notification options](#github-dependabot-alerts-notification-options)." {% endif %}{% if currentVersion == "enterprise-server@2.21" %} - - There are new security alerts in your repository. For more information, see "[Security alert notification options](#security-alert-notification-options)." {% endif %} {% if currentVersion == "free-pro-team@latest" %} - - There are workflow runs updates on repositories set up with {% data variables.product.prodname_actions %}. For more information, see "[{% data variables.product.prodname_actions %} notification options](#github-actions-notification-options)."{% endif %} - -### Automatic watching - -By default, anytime you gain access to a new repository, you will automatically begin watching that repository. Anytime you join a new team, you will automatically be subscribed to updates and receive notifications when that team is @mentioned. If you don't want to automatically be subscribed, you can unselect the automatic watching options. - - ![Automatic watching options](/assets/images/help/notifications-v2/automatic-watching-options.png) - -If "Automatically watch repositories" is disabled, then you will not automatically watch your own repositories. You must navigate to your repository page and choose the watch option. - -### Choosing where your organization’s email notifications are sent - -If you belong to an organization, you can choose the email account you want notifications for organization activity sent to. For example, if you belong to an organization for work, you may want your notifications sent to your work email address, rather than your personal address. - -{% data reusables.notifications-v2.email-notification-caveats %} - -{% data reusables.notifications.access_notifications %} -{% data reusables.notifications-v2.manage-notifications %} -3. Under "Default notification email", select the email address you'd like notifications sent to. -![Default notification email address drop-down](/assets/images/help/notifications/notifications_primary_email_for_orgs.png) -4. Click **Save**. - -#### Customizing email routes per organization - -If you are a member of more than one organization, you can configure each one to send notifications to any of{% if currentVersion == "free-pro-team@latest" %} your verified email addresses{% else %} the email addressed you've added to your {% data variables.product.product_name %} account{% endif %}. {% if currentVersion == "free-pro-team@latest" %} For more information, see "[Verifying your email address](/articles/verifying-your-email-address)."{% endif %} - -{% data reusables.notifications.access_notifications %} -{% data reusables.notifications-v2.manage-notifications %} -3. Under "Custom routing," find your organization's name in the list. -![List of organizations and email addresses](/assets/images/help/notifications/notifications_org_emails.png) -4. Click **Edit** next to the email address you want to change. -![Editing an organization's email addresses](/assets/images/help/notifications/notifications_edit_org_emails.png) -5. Select one of your verified email addresses, then click **Save**. -![Switching your per-org email address](/assets/images/help/notifications/notifications_switching_org_email.gif) - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -### {% data variables.product.prodname_dependabot_alerts %} notification options -{% else %} -### Security alert notification options -{% endif %} - -{% data reusables.notifications.vulnerable-dependency-notification-delivery-method-customization %} -{% data reusables.notifications.vulnerable-dependency-notification-options %} - -For more information about the notification delivery methods available to you, and advice on optimizing your notifications for {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %}, see "[Configuring notifications for vulnerable dependencies](/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies)." - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} - -### {% data variables.product.prodname_actions %} notification options - -Choose how you want to receive workflow run updates for repositories that you are watching that are set up with {% data variables.product.prodname_actions %}. You can also choose to only receive notifications for failed workflow runs. - - ![Notification options for {% data variables.product.prodname_actions %}](/assets/images/help/notifications-v2/github-actions-notification-options.png) - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} - -### Enabling push notifications with {% data variables.product.prodname_mobile %} - -When you install {% data variables.product.prodname_mobile %}, you will automatically be opted into web notifications. You can then enable push notifications for direct mentions within the app. - -You can only receive notifications for pushes to repositories on {% data variables.product.prodname_mobile %} at this time. - -#### Enabling push notifications with {% data variables.product.prodname_ios %} - -1. Above "Home", tap your profile photo. -2. To view your settings, tap {% octicon "gear" aria-label="The Gear icon" %}. - ![Settings icon for GitHub for iOS](/assets/images/help/mobile/ios-settings-icon.png) -3. To update your notification settings, tap **Push notifications**. -4. To turn on push notifications for direct mentions, use the **Direct Mentions** toggle. - -#### Enabling push notifications with {% data variables.product.prodname_android %} - -1. Above "Home", tap your profile photo. -2. To view your settings, tap {% octicon "gear" aria-label="The Gear icon" %}. - ![Settings icon for GitHub for Android](/assets/images/help/mobile/android-settings-icon.png) -3. To turn on push notifications for direct mentions, use the **Direct mentions** toggle. -{% endif %} diff --git a/content/github/managing-subscriptions-and-notifications-on-github/customizing-a-workflow-for-triaging-your-notifications.md b/content/github/managing-subscriptions-and-notifications-on-github/customizing-a-workflow-for-triaging-your-notifications.md deleted file mode 100644 index 39ecfecef48e..000000000000 --- a/content/github/managing-subscriptions-and-notifications-on-github/customizing-a-workflow-for-triaging-your-notifications.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Customizing a workflow for triaging your notifications -intro: 'To create an ideal workflow for triaging your notifications, you can adapt and customize these example workflows.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - -### Starting your inbox triage - -Before you start triaging your inbox, consider whether you prefer to first find and respond to the most important updates or to clear your inbox of distracting updates that are easy to remove or triage. - -You may decide to use a combination of both approaches at various times depending on the volume of notifications you have. - -For an example workflow of finding and responding to the most important notifications, see "[Checking your highest notification priorities](#checking-your-highest-notification-priorities)." - -For an example workflow of removing notifications that are easy to remove or triage, see "[Clearing your least important notifications](#clearing-your-least-important-notifications)." - -### Checking your highest notification priorities - -Choose which type of notifications are most urgent to review and pick a time to review them that's best for you. You might consider the question "Who am I blocking?" - -For example, you may decide to check your notifications in this order in the morning during your daily planning time: - - Pull requests where your review is requested. (filter by `reason:review-requested`) - - Events where your username is @mentioned, also called direct mentions. (filter by `reason:mention`) - - Events where a team you're a member of is @mentioned, also called team mentions. (filter by `reason:team-mention`) - - CI workflow failures for a specific repository. (filter by `reason:ci-activity` and `repo:owner/repo-name` and ensure you've enabled CI activity notifications for workflow failures in your notification settings) - - {% tip %} - - **Tip:** To quickly review your highest priorities, set up custom filters in order of their reviewing priority. For more information, see "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox#customizing-your-inbox-with-custom-filters)." - - {% endtip %} - -### Following up on ongoing notification updates - -To follow-up on notifications, you might consider the question "What was I blocked on that I'm no longer blocked on?" Choose your follow-up notification priorities. - -For example, you may decide to follow up in this order: - - Issues and pull requests you're assigned to. Immediately close any issues or pull requests you can and add updates. As needed, save notifications to review later. - - Review notifications in the saved inbox, especially unread updates. If the thread is no longer relevant, uncheck {% octicon "bookmark" aria-label="The bookmark icon" %} to remove the notification from the saved inbox and unsave it. - -### Managing lower-priority notifications - -After triaging the higher priority notifications, review the remaining notifications, such as participating notifications. Consider these questions: - - Can you unsubscribe to this notification? Is this notification completed and ready to be marked as **Done**? - {% tip %} - - **Tip:** When you unsubscribe from a notification you won't receive new updates unless you start participating in the thread or you're @mentioned or a team you're on is @mentioned. When you mark a notification as **Done**, the notification is removed from your main inbox view and can be viewed with the query `is:read`. For more information, see "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox#triaging-options)." - - {% endtip %} - - Would you like to receive future updates when this issue or pull request is closed or reopened, or when a pull request is merged? For more information on these options, see "[Triaging a single notification](/github/managing-subscriptions-and-notifications-on-github/triaging-a-single-notification#customizing-when-to-receive-future-updates-for-an-issue-or-pull-request)." - - Would you like to avoid receiving notifications like this in the future? If so, consider unsubscribing. For more information, see "[Managing subscriptions for activity on GitHub](/github/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github)." - -### Clearing your least important notifications - -Choose which type of notifications are quickest and easiest for you to triage and remove from your inbox, ideally triaging multiple notifications at once. - -For example, you may decide to clear notifications in this order: - - Participating notifications that you can unsubscribe to. - - Repository updates that are not relevant to keep or follow-up on. - -For more information on managing multiple notifications in your inbox at the same time, see "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox#triaging-multiple-notifications-at-the-same-time)." - -You may also consider changing your notification settings or unsubscribing from these updates if possible. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications)" or "[Managing subscriptions for activity on GitHub](/github/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github)." diff --git a/content/github/managing-subscriptions-and-notifications-on-github/index.md b/content/github/managing-subscriptions-and-notifications-on-github/index.md deleted file mode 100644 index 9bd9f13b0a8b..000000000000 --- a/content/github/managing-subscriptions-and-notifications-on-github/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Managing subscriptions and notifications on GitHub -redirect_from: - - /categories/76/articles/ - - /categories/notifications/ - - /categories/receiving-notifications-about-activity-on-github -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - -### Table of Contents - -{% topic_link_in_list /setting-up-notifications %} - {% link_in_list /about-notifications %} - {% link_in_list /configuring-notifications %} - -{% topic_link_in_list /viewing-and-triaging-notifications %} - {% link_in_list /managing-notifications-from-your-inbox %} - {% link_in_list /triaging-a-single-notification %} - {% link_in_list /customizing-a-workflow-for-triaging-your-notifications %} - -{% topic_link_in_list /managing-subscriptions-for-activity-on-github %} - {% link_in_list /viewing-your-subscriptions %} - {% link_in_list /managing-your-subscriptions %} diff --git a/content/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox.md b/content/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox.md deleted file mode 100644 index fad89fc13084..000000000000 --- a/content/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Managing notifications from your inbox -intro: 'Use your inbox to quickly triage and sync your notifications across email{% if currentVersion == "free-pro-team@latest" %} and mobile{% endif %}.' -redirect_from: - - /articles/marking-notifications-as-read - - /articles/saving-notifications-for-later -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - -### About your inbox - -{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.notifications-v2.notifications-inbox-required-setting %} For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#choosing-your-notification-settings)." -{% endif %} - -To access your notifications inbox, in the upper-right corner of any page, click {% octicon "bell" aria-label="The notifications bell" %}. - - ![Notification indicating any unread message](/assets/images/help/notifications/notifications_general_existence_indicator.png) - -Your inbox shows all of the notifications that you haven't unsubscribed to or marked as **Done.** You can customize your inbox to best suit your workflow using filters, viewing all or just unread notifications, and grouping your notifications to get a quick overview. - - ![inbox view](/assets/images/help/notifications-v2/inbox-view.png) - -By default, your inbox will show read and unread notifications. To only see unread notifications, click **Unread** or use the `is:unread` query. - - ![unread inbox view](/assets/images/help/notifications-v2/unread-inbox-view.png) - -### Triaging options - -You have several options for triaging notifications from your inbox. - -| Triaging option | Description | -|-----------------|-------------| -| Save | Saves your notification for later review. To save a notification, to the right of the notification, click {% octicon "bookmark" aria-label="The bookmark icon" %}.

Saved notifications are kept indefinitely and can be viewed by clicking **Saved** in the sidebar or with the `is:saved` query. If your saved notification is older than 5 months and becomes unsaved, the notification will disappear from your inbox within a day. | -| Done | Marks a notification as completed and removes the notification from your inbox. You can see all completed notifications by clicking **Done** in the sidebar or with the `is:done` query. Notifications marked as **Done** are saved for 5 months. -| Unsubscribe | Automatically removes the notification from your inbox and unsubscribes you from the conversation until you are @mentioned, a team you're on is @mentioned, or you're requested for review. -| Read | Marks a notification as read. To only view read notifications in your inbox, use the `is:read` query. This query doesn't include notifications marked as **Done**. -| Unread | Marks notification as unread. To only view unread notifications in your inbox, use the `is:unread` query. | - -To see the available keyboard shortcuts, see "[Keyboard Shortcuts](/github/getting-started-with-github/keyboard-shortcuts#notifications)." - -Before choosing a triage option, you can preview your notification's details first and investigate. For more information, see "[Triaging a single notification](/github/managing-subscriptions-and-notifications-on-github/triaging-a-single-notification)." - -### Triaging multiple notifications at the same time - -To triage multiple notifications at once, select the relevant notifications and use the {% octicon "kebab-horizontal" aria-label="The edit icon" %} drop-down to choose a triage option. - -![Drop-down menu with triage options and selected notifications](/assets/images/help/notifications-v2/triage-multiple-notifications-together.png) - -### Default notification filters - -By default, your inbox has filters for when you are assigned, participating in a thread, requested to review a pull request, or when your username is @mentioned directly or a team you're a member of is @mentioned. - - ![Default custom filters](/assets/images/help/notifications-v2/default-filters.png) - -### Customizing your inbox with custom filters - -You can add up to 15 of your own custom filters. - -{% data reusables.notifications.access_notifications %} -2. To open the filter settings, in the left sidebar, next to "Filters", click {% octicon "gear" aria-label="The Gear icon" %}. - - {% tip %} - - **Tip:** You can quickly preview a filter's inbox results by creating a query in your inbox view and clicking **Save**, which opens the custom filter settings. - - {% endtip %} - -3. Add a name for your filter and a filter query. For example, to only see notifications for a specific repository, you can create a filter using the query `repo:octocat/open-source-project-name reason:participating`. You can also add emojis with a native emoji keyboard. For a list of supported search queries, see "[Supported queries for custom filters](#supported-queries-for-custom-filters)." - - ![Custom filter example](/assets/images/help/notifications-v2/custom-filter-example.png) - -4. Click **Create**. - -### Custom filter limitations - -Custom filters do not currently support: - - Full text search in your inbox, including searching for pull request or issue titles. - - Distinguishing between the `is:issue`, `is:pr`, and `is:pull-request` query filters. These queries will return both issues and pull requests. - - Creating more than 15 custom filters. - - Changing the default filters or their order. - -### Supported queries for custom filters - -There are three types of filters that you can use: - - Filter by repository with `repo:` - - Filter by discussion type with `is:` - - Filter by notification reason with `reason:` - -To add a `repo:` filter, you must include the owner of the repository in the query. For example, `repo:atom/atom` represents the Atom repository owned by the Atom organization. - -#### Supported `reason:` queries - -To filter notifications by why you've received an update, you can use the `reason:` query. For example, to see notifications when you (or a team you're on) is requested to review a pull request, use `reason:review-requested`. For more information, see "[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications#reasons-for-receiving-notifications)." - -| Query | Description | -|-----------------|-------------| -| `reason:assign` | When there's an update on an issue or pull request you've been assigned to. -| `reason:author` | When you opened a pull request or issue and there has been an update or new comment. -| `reason:comment`| When you commented on an issue, pull request, or team discussion. -| `reason:participating` | When you have commented on an issue, pull request, or team discussion or you have been @mentioned. -| `reason:invitation` | When you're invited to a team, organization, or repository. -| `reason:manual` | When you click **Subscribe** on an issue or pull request you weren't already subscribed to. -| `reason:mention` | You were directly @mentioned. -| `reason:review-requested` | You or a team you're on have been requested to review a pull request. -| `reason:security-alert` | When a security alert is issued for a repository. -| `reason:state-change` | When the state of a pull request or issue is changed. For example, an issue is closed or a pull request is merged. -| `reason:team-mention` | When a team you're a member of is @mentioned. -| `reason:ci-activity` | When a repository has a CI update, such as a new workflow run status. - -#### Supported `is:` queries - -To filter notifications for specific activity on {% data variables.product.product_name %}, you can use the `is` query. For example, to only see repository invitation updates, use `is:repository-invitation`, and to only see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_short %}{% else %} security{% endif %} alerts, use `is:repository-vulnerability-alert`. - -- `is:check-suite` -- `is:commit` -- `is:gist` -- `is:issue-or-pull-request` -- `is:release` -- `is:repository-invitation` -- `is:repository-vulnerability-alert` -- `is:repository-advisory` -- `is:team-discussion` - -For information about reducing noise from notifications for {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %}, see "[Configuring notifications for vulnerable dependencies](/github/managing-security-vulnerabilities/configuring-notifications-for-vulnerable-dependencies)." - -You can also use the `is:` query to describe how the notification was triaged. - -- `is:saved` -- `is:done` -- `is:unread` -- `is:read` diff --git a/content/github/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github.md b/content/github/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github.md deleted file mode 100644 index 414c69beff47..000000000000 --- a/content/github/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Managing subscriptions for activity on GitHub -intro: 'To maintain sustainable notification workflows, understand and regularly review your subscriptions.' -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - diff --git a/content/github/managing-subscriptions-and-notifications-on-github/managing-your-subscriptions.md b/content/github/managing-subscriptions-and-notifications-on-github/managing-your-subscriptions.md deleted file mode 100644 index c76a24f0c7f0..000000000000 --- a/content/github/managing-subscriptions-and-notifications-on-github/managing-your-subscriptions.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Managing your subscriptions -intro: 'To help you manage your notifications efficiently, there are several ways to unsubscribe.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - -To help you understand your subscriptions and decide whether to unsubscribe, see "[Viewing your subscriptions](/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions)." - -{% note %} - -**Note:** Instead of unsubscribing, you have the option to ignore a repository. If you ignore a repository, you won't receive any notifications. We don't recommend ignoring repositories as you won't be notified if you're @mentioned. {% if currentVersion == "free-pro-team@latest" %}If you're experiencing abuse and want to ignore a repository, please [contact support](/contact) so we can help. {% data reusables.policies.abuse %}{% endif %} - -{% endnote %} - -### Choosing how to unsubscribe - -To unwatch (or unsubscribe from) repositories quickly, go to the "Watched repositories" page, where you can see all repositories you're watching. For more information, see "[Unwatch a repository](#unwatch-a-repository)." - -To unsubscribe from multiple notifications at the same time, you can unsubscribe using your inbox or on the subscriptions page. Both of these options offer more context about your subscriptions than the "Watched repositories" page. - -#### Benefits of unsubscribing from your inbox - -When you unsubscribe from notifications in your inbox, you have several other triaging options and can filter your notifications by custom filters and discussion types. For more information, see "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox)." - -#### Benefits of unsubscribing from the subscriptions page - -When you unsubscribe from notifications on the subscriptions page, you can see more of the notifications you're subscribed to and sort them by "Most recently subscribed" or "Least recently subscribed". - -The subscriptions page shows you all of the notifications that you're currently subscribed to, including notifications that you have marked as **Done** in your inbox. - -You can only filter your subscriptions by repository and the reason you're receiving the notification. - -### Unsubscribing from notifications in your inbox - -When you unsubscribe from notifications in your inbox, they will automatically disappear from your inbox. - -{% data reusables.notifications.access_notifications %} -1. From the notifications inbox, select the notifications you want to unsubscribe to. -2. Use the **selected** {% octicon "triangle-down" aria-label="The down triangle icon" %} drop-down to click **Unsubscribe.** - ![Unsubcribe option from main inbox](/assets/images/help/notifications-v2/unsubscribe-from-main-inbox.png) - -### Unsubscribing from notifications on the subscriptions page - -{% data reusables.notifications.access_notifications %} -1. In the left sidebar, under the list of repositories, use the "Manage notifications" drop-down to click **Subscriptions**. - ![Manage notifications drop down menu options](/assets/images/help/notifications-v2/manage-notifications-options.png) - -2. Select the notifications you want to unsubscribe to. In the top right, click **Unsubscribe.** - ![Subscriptions page](/assets/images/help/notifications-v2/unsubscribe-from-subscriptions-page.png) - -### Unwatch a repository - -When you unwatch a repository, you unsubscribe from future updates from that repository unless you participate in a conversation or are @mentioned. - -{% data reusables.notifications.access_notifications %} -1. In the left sidebar, under the list of repositories, use the "Manage notifications" drop-down to click **Watched repositories**. - ![Manage notifications drop down menu options](/assets/images/help/notifications-v2/manage-notifications-options.png) -2. On the watched repositories page, after you've evaluated the repositories you're watching, choose whether to: - - unwatch a repository - - only watch releases for a repository - - ignore all notifications for a repository diff --git a/content/github/managing-subscriptions-and-notifications-on-github/setting-up-notifications.md b/content/github/managing-subscriptions-and-notifications-on-github/setting-up-notifications.md deleted file mode 100644 index 0d776b57fa0d..000000000000 --- a/content/github/managing-subscriptions-and-notifications-on-github/setting-up-notifications.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Setting up notifications -intro: 'To improve the relevance of your notifications and simplify your triaging workflow, set up your notifications to match your priorities.' -mapTopic: true -redirect_from: - - /articles/getting-started-with-notifications -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - diff --git a/content/github/managing-subscriptions-and-notifications-on-github/triaging-a-single-notification.md b/content/github/managing-subscriptions-and-notifications-on-github/triaging-a-single-notification.md deleted file mode 100644 index 2c47e8caa0d4..000000000000 --- a/content/github/managing-subscriptions-and-notifications-on-github/triaging-a-single-notification.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Triaging a single notification -intro: 'When you review and investigate a single notification, you have several triaging options that are optimized for the detailed notification view.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - -### Saving a single notification - -To save a single notification to review later, to the right of the notification, click {% octicon "bookmark" aria-label="The bookmark icon" %}. You can only save one notification at a time. - -Saved notifications are kept indefinitely and can be viewed by clicking **Saved** in the sidebar or with the `is:saved` query. If your saved notification is older than 5 months and becomes unsaved, the notification will disappear from your inbox within a day. - - ![Save triaging option](/assets/images/help/notifications-v2/save-triaging-option.png) - -### Investigating a notification - -When you click an individual notification from your inbox, you're directed to the conversation that prompted the notification. From the top of the page, you can: -- Mark the individual notification as done -- Unsubscribe from future notifications -- Mark the notification as read -- Save the notification for later -- Return to your notifications inbox - -For more information about your triage options, see "[Managing notifications from your inbox](/github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox#triaging-options)." - -### Customizing when to receive future updates for an issue or pull request - -You can choose how you want to receive future notifications for a specific issue or pull request. - -1. In the right column of the issue or pull request, next to "Notifications", click **Customize**. - - ![Customize option under "Notifications"](/assets/images/help/notifications-v2/customize-notifications-for-specific-thread.png) - -2. Select **Custom** and choose when you'd like to receive a notification update for this thread. For example, you can choose to receive an update when the pull request has been merged, closed, or reopened. You will be subscribed again if you participate in the thread, your username is @mentioned, or a team you're a member of is @mentioned. - - ![Options for customizing notifications](/assets/images/help/notifications-v2/custom-options-for-customizing-notification-thread-updates.png) - -3. Click **Save**. diff --git a/content/github/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications.md b/content/github/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications.md deleted file mode 100644 index bd243beb39a9..000000000000 --- a/content/github/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Viewing and triaging notifications -intro: 'To optimize your notifications workflow, you can customize how you view and triage notifications.' -mapTopic: true -redirect_from: - - /articles/managing-notifications/ - - /articles/managing-your-notifications -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - diff --git a/content/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions.md b/content/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions.md deleted file mode 100644 index c1b0c11b7c19..000000000000 --- a/content/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Viewing your subscriptions -intro: 'To understand where your notifications are coming from and your notifications volume, we recommend reviewing your subscriptions and watched repositories regularly.' -redirect_from: - - /articles/subscribing-to-conversations/ - - /articles/unsubscribing-from-conversations/ - - /articles/subscribing-to-and-unsubscribing-from-notifications - - /articles/listing-the-issues-and-pull-requests-youre-subscribed-to - - /articles/watching-repositories/ - - /articles/unwatching-repositories/ - - /articles/watching-and-unwatching-repositories - - /articles/watching-and-unwatching-releases-for-a-repository - - /articles/watching-and-unwatching-team-discussions - - /articles/listing-watched-repositories/ - - /articles/listing-the-repositories-you-re-watching - - /articles/listing-the-repositories-youre-watching -versions: - free-pro-team: '*' - enterprise-server: '>=2.21' ---- - -You receive notifications for your subscriptions of ongoing activity on {% data variables.product.product_name %}. There are many reasons you can be subscribed to a conversation. For more information, see "[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications#notifications-and-subscriptions)." - -We recommend auditing and unsubscribing from your subscriptions as a part of a healthy notifications workflow. For more information about your options for unsubscribing, see "[Managing subscriptions](/github/managing-subscriptions-and-notifications-on-github/managing-your-subscriptions)." - -### Diagnosing why you receive too many notifications - -When your inbox has too many notifications to manage, consider whether you have oversubscribed or how you can change your notification settings to reduce the subscriptions you have and the types of notifications you're receiving. For example, you may consider disabling the settings to automatically watch all repositories and all team discussions whenever you've joined a team or repository. - -![Automatic watching](/assets/images/help/notifications-v2/automatic-watching-example.png) - -For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#automatic-watching)." - -To see an overview of your repository subscriptions, see "[Reviewing repositories that you're watching](#reviewing-repositories-that-youre-watching)." Many people forget about repositories that they've chosen to watch in the past. From the "Watched repositories" page you can quickly unwatch repositories. For more information on ways to unsubscribe, see "[Managing subscriptions](/github/managing-subscriptions-and-notifications-on-github/managing-your-subscriptions)." - -### Reviewing all of your subscriptions - -{% data reusables.notifications.access_notifications %} -1. In the left sidebar, under the list of repositories that you have notifications from, use the "Manage notifications" drop-down to click **Subscriptions**. - ![Manage notifications drop down menu options](/assets/images/help/notifications-v2/manage-notifications-options.png) - -2. Use the filters and sort to narrow the list of subscriptions and begin unsubscribing to conversations you no longer want to receive notifications for. - - ![Subscriptions page](/assets/images/help/notifications-v2/all-subscriptions.png) - -{% tip %} - -**Tips:** -- To review subscriptions you may have forgotten about, sort by "least recently subscribed." - -- To review a list of repositories that you can still receive notifications for, see the repository list in the "filter by repository" drop-down menu. - -{% endtip %} - -### Reviewing repositories that you're watching - -1. In the left sidebar, under the list of repositories, use the "Manage notifications" drop-down menu and click **Watched repositories**. - ![Manage notifications drop down menu options](/assets/images/help/notifications-v2/manage-notifications-options.png) - -3. Evaluate the repositories that you are watching and decide if their updates are still relevant and helpful. When you watch a repository, you will be notified of all conversations for that repository. - - ![Watched notifications page](/assets/images/help/notifications-v2/watched-notifications.png) - - {% tip %} - - **Tip:** Instead of watching a repository, consider only watching releases for a repository or completely unwatching a repository. When you unwatch a repository, you can still be notified when you're @mentioned or participating in a thread. When you only watch releases for a repository, you're only notified when there's a new release, you're participating in a thread, or you or a team you're on is @mentioned. - - {% endtip %} - -### Configuring your watch settings for an individual repository - -You can choose whether to watch or unwatch an individual repository. You can also choose to only be notified of new releases or ignore an individual repository. - -{% data reusables.repositories.navigate-to-repo %} -2. In the upper-right corner, click the "Watch" drop-down menu to select a watch option. - ![Watch options in a drop-down menu for a repository](/assets/images/help/notifications-v2/watch-repository-options.png) diff --git a/content/github/managing-your-work-on-github/about-automation-for-issues-and-pull-requests-with-query-parameters.md b/content/github/managing-your-work-on-github/about-automation-for-issues-and-pull-requests-with-query-parameters.md deleted file mode 100644 index f2ce265a2a58..000000000000 --- a/content/github/managing-your-work-on-github/about-automation-for-issues-and-pull-requests-with-query-parameters.md +++ /dev/null @@ -1,47 +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: - - /articles/about-automation-for-issues-and-pull-requests-with-query-parameters -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -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 don’t have the proper permissions, the URL will return a 404 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)" diff --git a/content/github/managing-your-work-on-github/about-automation-for-project-boards.md b/content/github/managing-your-work-on-github/about-automation-for-project-boards.md deleted file mode 100644 index c947ec9fd6d5..000000000000 --- a/content/github/managing-your-work-on-github/about-automation-for-project-boards.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: About automation for project boards -intro: You can configure automatic workflows to keep the status of project board cards in sync with the associated issues and pull requests. -redirect_from: - - /articles/about-automation-for-project-boards -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% 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)." - -{% data reusables.project-management.use-automated-template %} - -{% data reusables.project-management.copy-project-boards %} - -Project board automation can also help teams develop a shared understanding of a project board's purpose and the team's development process by creating a standard workflow for certain actions. - -{% data reusables.project-management.resync-automation %} - -### Automation options - -| Column preset | Configuration options | -| --- | --- | -| To do |
  • Move all newly added issues here
  • Move all newly added pull requests here
  • Move all reopened issues here
  • Move all reopened pull requests here
| -| In progress |
  • Move all newly opened pull requests here
  • Move all reopened issues here
  • Move all reopened pull requests here
  • Move all pull requests that meet the base branch's minimum number of required reviews here
  • Move all pull requests that no longer meet the base branch's minimum number of required reviews here
| -| Done |
  • Move all closed issues here
  • Move all merged pull requests here
  • Move all closed, unmerged pull requests here
| - -### Project progress tracking - -You can track the progress on your project board. Cards in the "To do", "In progress", or "Done" columns count toward the overall project progress. {% data reusables.project-management.project-progress-locations %} - -For more information, see "[Tracking progress on your project board](/github/managing-your-work-on-github/tracking-progress-on-your-project-board)." - -### Further reading -- "[Configuring automation for project boards](/articles/configuring-automation-for-project-boards)"{% if currentVersion == "free-pro-team@latest" %} -- "[Copying a project board](/articles/copying-a-project-board)"{% endif %} diff --git a/content/github/managing-your-work-on-github/about-duplicate-issues-and-pull-requests.md b/content/github/managing-your-work-on-github/about-duplicate-issues-and-pull-requests.md deleted file mode 100644 index 7baddee437f6..000000000000 --- a/content/github/managing-your-work-on-github/about-duplicate-issues-and-pull-requests.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: About duplicate issues and pull requests -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: - - /articles/about-duplicate-issues-and-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -For a "marked as duplicate" timeline event to appear, the user who creates the duplicate reference comment must have write access to the repository where they create the comment. - -### Marking duplicates - -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. You can also use the GitHub-provided "Duplicate issue" or "Duplicate pull request" saved replies to mark an issue or pull request as a duplicate. For more information, see "[About saved replies](/articles/about-saved-replies)." - -![Duplicate issue syntax](/assets/images/help/issues/duplicate-issue-syntax.png) - -### Unmarking duplicates - -You can unmark duplicate issues and pull requests by clicking **Undo** in the timeline. This will add a new timeline event, indicating that the issue or pull request was unmarked. - -![Unmark duplicate issue button](/assets/images/help/issues/unmark-duplicate-issue-button.png) diff --git a/content/github/managing-your-work-on-github/about-issues.md b/content/github/managing-your-work-on-github/about-issues.md deleted file mode 100644 index 8d4533765bbc..000000000000 --- a/content/github/managing-your-work-on-github/about-issues.md +++ /dev/null @@ -1,31 +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: - - /articles/creating-issues/ - - /articles/about-issues/ -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -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. - -{% 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" %}"[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](/articles/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). diff --git a/content/github/managing-your-work-on-github/about-labels.md b/content/github/managing-your-work-on-github/about-labels.md deleted file mode 100644 index 9e98a8398f2c..000000000000 --- a/content/github/managing-your-work-on-github/about-labels.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: About labels -intro: 'Labels on {% data variables.product.product_name %} help you organize and prioritize your work. You can apply labels to issues and pull requests to signify priority, category, or any other information you find useful.' -redirect_from: - - /articles/about-labels -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Labels are tied to the repository they are created in. Once a label exists, you can use it on any issue or pull request within that repository. For more information, see "[Creating a label](/articles/creating-a-label/)." - -Anyone with read access to a repository can view and search the repository’s labels. To create, edit, apply, or delete a label, you must have write access to the repository. - -### Using default labels - -{% data variables.product.product_name %} provides default labels in every new repository. You can use these default labels to help create a standard workflow in a repository: - -Label | Description ---- | --- -`bug` | Indicates an unexpected problem or unintended behavior -`documentation` | Indicates a need for improvements or additions to documentation -`duplicate` | Indicates similar issues or pull requests -`enhancement` | Indicates new feature requests -`good first issue` | Indicates a good issue for first-time contributors -`help wanted` | Indicates that a maintainer wants help on an issue or pull request -`invalid` | Indicates that an issue or pull request is no longer relevant -`question` | Indicates that an issue or pull request needs more information -`wontfix` | Indicates that work won't continue on an issue or pull request - -Default labels are included in every new repository when the repository is created, but you can edit or delete the labels later. For more information, see "[Deleting a label](/articles/deleting-a-label/)." - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -Organization owners can customize the default labels for repositories in their organization. For more information, see "[Managing default labels for repositories in your organization](/articles/managing-default-labels-for-repositories-in-your-organization)." -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -### Further reading - -- "[Encouraging helpful contributions to your project with labels](/github/building-a-strong-community/encouraging-helpful-contributions-to-your-project-with-labels)" -{% endif %} diff --git a/content/github/managing-your-work-on-github/about-milestones.md b/content/github/managing-your-work-on-github/about-milestones.md deleted file mode 100644 index 53a9aed276b9..000000000000 --- a/content/github/managing-your-work-on-github/about-milestones.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: About milestones -intro: You can use milestones to track progress on groups of issues or pull requests in a repository. -redirect_from: - - /articles/about-milestones -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When you [create a milestone](/articles/creating-and-editing-milestones-for-issues-and-pull-requests), you can [associate it with issues and pull requests](/articles/associating-milestones-with-issues-and-pull-requests). - -To better manage your project, you can [view details about your milestone](/articles/viewing-your-milestone-s-progress). From the milestone page, you can see: - -- A user-provided description of the milestone, which can include information like a project overview, relevant teams, and projected due dates -- The milestone's due date -- The milestone's completion percentage -- The number of open and closed issues and pull requests associated with the milestone -- A list of the open and closed issues and pull requests associated with the milestone - -Additionally, you can edit the milestone from the milestone page and create new issues that are, by default, associated with the milestone. - -![Milestone page](/assets/images/help/issues/milestone-info-page.png) - -### Prioritizing issues and pull requests in milestones - -You can prioritize open issues and pull requests in a milestone by clicking to the left of an issue or pull request's checkbox, dragging it to a new location, and dropping it. - -{% note %} - -**Note:** If there are more than 500 open issues in a milestone, you won't be able to prioritize issues. - -{% endnote %} - -![Reordered milestone](/assets/images/help/issues/milestone-reordered.gif) - -### Further reading - -- "[Creating and editing milestones for issues and pull requests](/articles/creating-and-editing-milestones-for-issues-and-pull-requests)" -- "[Associating milestones with issues and pull requests](/articles/associating-milestones-with-issues-and-pull-requests)" -- "[Filtering issues and pull requests by milestone](/articles/filtering-issues-and-pull-requests-by-milestone)" -- "[Viewing your milestone's progress](/articles/viewing-your-milestone-s-progress)" diff --git a/content/github/managing-your-work-on-github/about-project-boards.md b/content/github/managing-your-work-on-github/about-project-boards.md deleted file mode 100644 index c780b431841b..000000000000 --- a/content/github/managing-your-work-on-github/about-project-boards.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: About project boards -intro: 'Project boards on {% data variables.product.product_name %} help you organize and prioritize your work. You can create project boards for specific feature work, comprehensive roadmaps, or even release checklists. With project boards, you have the flexibility to create customized workflows that suit your needs.' -redirect_from: - - /articles/about-projects/ - - /articles/about-project-boards -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -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 %} - -You can create notes within columns to serve as task reminders, references to issues and pull requests from any repository on {% data variables.product.product_name %}, or to add information related to the project board. You can create a reference card for another project board by adding a link to a note. If the note isn't sufficient for your needs, you can convert it to an issue. For more information on converting project board notes to issues, see "[Adding notes to a project board](/articles/adding-notes-to-a-project-board)." - -Types of project boards: - -- **User-owned project boards** can contain issues and pull requests from any personal repository. -- **Organization-wide project boards** can contain issues and pull requests from any repository that belongs to an organization. {% data reusables.project-management.link-repos-to-project-board %} For more information, see "[Linking a repository to a project board](/articles/linking-a-repository-to-a-project-board)." -- **Repository project boards** are scoped to issues and pull requests within a single repository. They can also include notes that reference issues and pull requests in other repositories. - -### Creating and viewing project boards - -To create a project board for your organization, you must be an organization member. Organization owners and people with project board admin permissions can customize access to the project board. - -If an organization-owned project board includes issues or pull requests from a repository that you don't have permission to view, the card will be redacted. For more information, see "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)." - -The activity view shows the project board's recent history, such as cards someone created or moved between columns. To access the activity view, click **Menu** and scroll down. - -To find specific cards on a project board or view a subset of the cards, you can filter project board cards. For more information, see "[Filtering cards on a project board](/articles/filtering-cards-on-a-project-board)." - -To simplify your workflow and keep completed tasks off your project board, you can archive cards. For more information, see "[Archiving cards on a project board](/articles/archiving-cards-on-a-project-board)." - -If you've completed all of your project board tasks or no longer need to use your project board, you can close the project board. For more information, see "[Closing a project board](/articles/closing-a-project-board)." - -You can also [disable project boards in a repository](/articles/disabling-project-boards-in-a-repository) or [disable project boards in your organization](/articles/disabling-project-boards-in-your-organization), if you prefer to track your work in a different way. - -{% data reusables.project-management.project-board-import-with-api %} - -### Templates for project boards - -You can use templates to quickly set up a new project board. When you use a template to create a project board, your new board will include columns as well as cards with tips for using project boards. You can also choose a template with automation already configured. - -| Template | Description | -| --- | --- | -| Basic kanban | Track your tasks with To do, In progress, and Done columns | -| Automated kanban | Cards automatically move between To do, In progress, and Done columns | -| Automated kanban with review | Cards automatically move between To do, In progress, and Done columns, with additional triggers for pull request review status | -| Bug triage | Triage and prioritize bugs with To do, High priority, Low priority, and Closed columns | - -For more information on automation for project boards, see "[About automation for project boards](/articles/about-automation-for-project-boards)." - -![Project board with basic kanban template](/assets/images/help/projects/project-board-basic-kanban-template.png) - -{% data reusables.project-management.copy-project-boards %} - -### Further reading - -- "[Creating a project board](/articles/creating-a-project-board)" -- "[Editing a project board](/articles/editing-a-project-board)"{% if currentVersion == "free-pro-team@latest" %} -- "[Copying a project board](/articles/copying-a-project-board)"{% endif %} -- "[Adding issues and pull requests to a project board](/articles/adding-issues-and-pull-requests-to-a-project-board)" -- "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)" -- "[Keyboard shortcuts](/articles/keyboard-shortcuts/#project-boards)" diff --git a/content/github/managing-your-work-on-github/about-task-lists.md b/content/github/managing-your-work-on-github/about-task-lists.md deleted file mode 100644 index f2a69ea030b4..000000000000 --- a/content/github/managing-your-work-on-github/about-task-lists.md +++ /dev/null @@ -1,31 +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: - - /articles/about-task-lists -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -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)" diff --git a/content/github/managing-your-work-on-github/adding-issues-and-pull-requests-to-a-project-board.md b/content/github/managing-your-work-on-github/adding-issues-and-pull-requests-to-a-project-board.md deleted file mode 100644 index d0616988bf24..000000000000 --- a/content/github/managing-your-work-on-github/adding-issues-and-pull-requests-to-a-project-board.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Adding issues and pull requests to a project board -intro: You can add issues and pull requests to a project board in the form of cards and triage them into columns. -redirect_from: - - /articles/adding-issues-and-pull-requests-to-a-project/ - - /articles/adding-issues-and-pull-requests-to-a-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -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. -- Searching for issues or pull requests in the project board search sidebar. - -You can put a maximum of 2,500 cards into each project column. If a column has reached the maximum number of cards, no cards can be moved into that column. - -![Cursor moves issue card from triaging sidebar to project board column](/assets/images/help/projects/add-card-from-sidebar.gif) - -{% note %} - -**Note:** You can also add notes to your project board to serve as task reminders, references to issues and pull requests from any repository on {% data variables.product.product_name %}, or to add related information to your project board. For more information, see "[Adding notes to a project board](/articles/adding-notes-to-a-project-board)." - -{% endnote %} - -{% data reusables.project-management.edit-in-project %} - -{% data reusables.project-management.link-repos-to-project-board %} When you search for issues and pull requests to add to your project board, the search automatically scopes to your linked repositories. You can remove these qualifiers to search within all organization repositories. For more information, see "[Linking a repository to a project board](/articles/linking-a-repository-to-a-project-board)." - -### Adding issues and pull requests to a project board - -1. Navigate to the project board where you want to add issues and pull requests. -2. In your project board, click {% octicon "plus" aria-label="The plus icon" %} **Add cards**. -![Add cards button](/assets/images/help/projects/add-cards-button.png) -3. Search for issues and pull requests to add to your project board using search qualifiers. For more information on search qualifiers you can use, see "[Searching issues](/articles/searching-issues)." - ![Search issues and pull requests](/assets/images/help/issues/issues_search_bar.png) - - {% tip %} - - **Tips:** - - You can also add an issue or pull request by typing the URL in a card. - - If you're working on a specific feature, you can apply a label to each related issue or pull request for that feature, and then easily add cards to your project board by searching for the label name. For more information, see "[Apply labels to issues and pull requests](/articles/applying-labels-to-issues-and-pull-requests)." - - {% endtip %} -4. From the filtered list of issues and pull requests, drag the card you'd like to add to your project board and drop it in the correct column. Alternatively, you can move cards using keyboard shortcuts. {% data reusables.project-management.for-more-info-project-keyboard-shortcuts %} - - {% tip %} - - **Tip:** You can drag and drop or use keyboard shortcuts to reorder cards and move them between columns. {% data reusables.project-management.for-more-info-project-keyboard-shortcuts %} - - {% endtip %} - -### Adding issues and pull requests to a project board from the sidebar - -1. On the right side of an issue or pull request, click **Projects {% octicon "gear" aria-label="The Gear icon" %}**. - ![Project board button in sidebar](/assets/images/help/projects/sidebar-project.png) -2. Click the **Recent**, **Repository**,**User**, or **Organization** tab for the project board you would like to add to. - ![Recent, Repository and Organization tabs](/assets/images/help/projects/sidebar-project-tabs.png) -3. Type the name of the project in **Filter projects** field. - ![Project board search box](/assets/images/help/projects/sidebar-search-project.png) -4. Select one or more project boards where you want to add the issue or pull request. - ![Selected project board](/assets/images/help/projects/sidebar-select-project.png) -5. Click {% octicon "triangle-down" aria-label="The down triangle icon" %}, then click the column where you want your issue or pull request. The card will move to the bottom of the project board column you select. - ![Move card to column menu](/assets/images/help/projects/sidebar-select-project-board-column-menu.png) - -### Further reading - -- "[About project boards](/articles/about-project-boards)" -- "[Editing a project board](/articles/editing-a-project-board)" -- "[Filtering cards on a project board](/articles/filtering-cards-on-a-project-board)" diff --git a/content/github/managing-your-work-on-github/adding-notes-to-a-project-board.md b/content/github/managing-your-work-on-github/adding-notes-to-a-project-board.md deleted file mode 100644 index 7f4f491ddc75..000000000000 --- a/content/github/managing-your-work-on-github/adding-notes-to-a-project-board.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Adding notes to a project board -intro: You can add notes to a project board to serve as task reminders or to add information related to the project board. -redirect_from: - - /articles/adding-notes-to-a-project/ - - /articles/adding-notes-to-a-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tips:** -- You can format your note using Markdown syntax. For example, you can use headings, links, task lists, or emoji. For more information, see "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax)." -- You can drag and drop or use keyboard shortcuts to reorder notes and move them between columns. {% data reusables.project-management.for-more-info-project-keyboard-shortcuts %} -- Your project board must have at least one column before you can add notes. For more information, see "[Creating a project board](/articles/creating-a-project-board)." - -{% endtip %} - -When you add a URL for an issue, pull request, or another project board to a note, you'll see a preview in a summary card below your text. - -![Project board cards showing a preview of an issue and another project board](/assets/images/help/projects/note-with-summary-card.png) - -### Adding notes to a project board - -1. Navigate to the project board where you want to add notes. -2. In the column you want to add a note to, click {% octicon "plus" aria-label="The plus icon" %}. -![Plus icon in the column header](/assets/images/help/projects/add-note-button.png) -3. Type your note, then click **Add**. -![Field for typing a note and Add card button](/assets/images/help/projects/create-and-add-note-button.png) - - {% tip %} - - **Tip:** You can reference an issue or pull request in your note by typing its URL in the card. - - {% endtip %} - -### Converting a note to an issue - -If you've created a note and find that it isn't sufficient for your needs, you can convert it to an issue. - -When you convert a note to an issue, the issue is automatically created using the content from the note. The first line of the note will be the issue title and any additional content from the note will be added to the issue description. - -{% tip %} - -**Tip:** You can add content in the body of your note to @mention someone, link to another issue or pull request, and add emoji. These {% data variables.product.prodname_dotcom %} Flavored Markdown features aren't supported within project board notes, but once your note is converted to an issue, they'll appear correctly. For more information on using these features, see "[About writing and formatting on {% data variables.product.prodname_dotcom %}](/articles/about-writing-and-formatting-on-github)." - -{% endtip %} - -1. Navigate to the note that you want to convert to an issue. -{% data reusables.project-management.project-note-more-options %} -3. Click **Convert to issue**. - ![Convert to issue button](/assets/images/help/projects/convert-to-issue.png) -4. If the card is on an organization-wide project board, in the drop-down menu, choose the repository you want to add the issue to. - ![Drop-down menu listing repositories where you can create the issue](/assets/images/help/projects/convert-note-choose-repository.png) -5. Optionally, edit the pre-filled issue title, and type an issue body. - ![Fields for issue title and body](/assets/images/help/projects/convert-note-issue-title-body.png) -6. Click **Convert to issue**. -7. The note is automatically converted to an issue. In the project board, the new issue card will be in the same location as the previous note. - -### Editing and removing a note - -1. Navigate to the note that you want to edit or remove. -{% data reusables.project-management.project-note-more-options %} -3. To edit the contents of the note, click **Edit note**. - ![Edit note button](/assets/images/help/projects/edit-note.png) -4. To delete the contents of the notes, click **Delete note**. - ![Delete note button](/assets/images/help/projects/delete-note.png) - -### Further reading - -- "[About project boards](/articles/about-project-boards)" -- "[Creating a project board](/articles/creating-a-project-board)" -- "[Editing a project board](/articles/editing-a-project-board)" -- "[Adding issues and pull requests to a project board](/articles/adding-issues-and-pull-requests-to-a-project-board)" diff --git a/content/github/managing-your-work-on-github/applying-labels-to-issues-and-pull-requests.md b/content/github/managing-your-work-on-github/applying-labels-to-issues-and-pull-requests.md deleted file mode 100644 index dcf5a01db9b3..000000000000 --- a/content/github/managing-your-work-on-github/applying-labels-to-issues-and-pull-requests.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Applying labels to issues and pull requests -intro: 'In repositories where you have write access, you can assign labels to issues and pull requests to help organize your projects.' -redirect_from: - - /articles/customizing-issue-labels/ - - /articles/applying-labels-to-issues-and-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tip:** You can apply up to a maximum of 100 labels to issues and pull requests. - -{% endtip %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -{% data reusables.repositories.select-items-in-issue-or-pr-list %} -4. In the upper-right corner, click **Label**, then start typing the name of an existing label. Click the label's name to associate it with the selected items. You can also apply a label in the Labels drop-down menu within an issue or pull request. - ![Issues Milestone assignment drop-down](/assets/images/help/issues/issues_applying_labels_dropdown.png) - - -### Further reading - -- "[About labels](/articles/about-labels)" -- "[Filtering issues and pull requests by labels](/articles/filtering-issues-and-pull-requests-by-labels)" diff --git a/content/github/managing-your-work-on-github/archiving-cards-on-a-project-board.md b/content/github/managing-your-work-on-github/archiving-cards-on-a-project-board.md deleted file mode 100644 index 7e09861ea93f..000000000000 --- a/content/github/managing-your-work-on-github/archiving-cards-on-a-project-board.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Archiving cards on a project board -intro: You can archive project board cards to declutter your workflow without losing the historical context of a project. -redirect_from: - - /articles/archiving-cards-on-a-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -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 - -1. In a project board, find the card you want archive, then click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}. -![List of options for editing a project board card](/assets/images/help/projects/select-archiving-options-project-board-card.png) -2. Click **Archive**. -![Select archive option from menu](/assets/images/help/projects/archive-project-board-card.png) - -### Restoring cards on a project board from the sidebar - -{% data reusables.project-management.click-menu %} -2. Click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **View archive**. - ![Select view archive option from menu](/assets/images/help/projects/select-view-archive-option-project-board-card.png) -3. Above the project board card you want to unarchive, click **Restore**. - ![Select restore project board card](/assets/images/help/projects/restore-card.png) diff --git a/content/github/managing-your-work-on-github/assigning-issues-and-pull-requests-to-other-github-users.md b/content/github/managing-your-work-on-github/assigning-issues-and-pull-requests-to-other-github-users.md deleted file mode 100644 index d99e105d35f5..000000000000 --- a/content/github/managing-your-work-on-github/assigning-issues-and-pull-requests-to-other-github-users.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Assigning issues and pull requests to other GitHub users -intro: Assignees clarify who is working on specific issues and pull requests. -redirect_from: - - /articles/assigning-issues-and-pull-requests-to-other-github-users -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Anyone with write permissions to a repository can assign issues and pull requests. - -You can assign up to 10 people to each issue or pull request, including yourself, anyone who has commented on the issue or pull request, anyone with write permissions to the repository, and organization members with read permissions to the repository. For more information, see "[Access permissions on {% data variables.product.prodname_dotcom %}](/articles/access-permissions-on-github)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -3. Select the checkbox next to the items you want to assign to someone. - ![Issues metadata checkbox](/assets/images/help/issues/issues_assign_checkbox.png) -4. In the upper-right corner, click **Assignee**. -5. To assign the items to a user, start typing their username, then click their name when it appears. You can select and add up to ten assignees to an issue or pull request. - ![Issues assignment drop-down](/assets/images/help/issues/issues_assigning_dropdown.png) - -### Further reading - -* "[Filtering issues and pull requests by assignees](/articles/filtering-issues-and-pull-requests-by-assignees)" diff --git a/content/github/managing-your-work-on-github/associating-milestones-with-issues-and-pull-requests.md b/content/github/managing-your-work-on-github/associating-milestones-with-issues-and-pull-requests.md deleted file mode 100644 index a82d0901e0b6..000000000000 --- a/content/github/managing-your-work-on-github/associating-milestones-with-issues-and-pull-requests.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Associating milestones with issues and pull requests -intro: You can associate similar issues and pull requests with a milestone to better track their progress. -redirect_from: - - /articles/associating-milestones-with-issues-and-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -3. Select the checkbox next to the items you want associated with a milestone. - ![Issues metadata checkbox](/assets/images/help/issues/issues_assign_checkbox.png) -4. In the upper-right corner, click **Milestone**, then start typing the name of [an existing milestone](/articles/creating-and-editing-milestones-for-issues-and-pull-requests). Click the milestone's name to associate it with the item. - ![Issues Milestone assignment drop-down](/assets/images/help/issues/issues_assigning_milestone_dropdown.png) - -{% tip %} - -As you're working on issues and pull requests, you can [track the progress of your milestone](/articles/viewing-your-milestone-s-progress). - -{% endtip %} - -### Further reading - -- "[About milestones](/articles/about-milestones)" -- "[Creating and editing milestones for issues and pull requests](/articles/creating-and-editing-milestones-for-issues-and-pull-requests)" -- "[Filtering issues and pull requests by milestone](/articles/filtering-issues-and-pull-requests-by-milestone)" diff --git a/content/github/managing-your-work-on-github/changing-project-board-visibility.md b/content/github/managing-your-work-on-github/changing-project-board-visibility.md deleted file mode 100644 index b59a210e1b56..000000000000 --- a/content/github/managing-your-work-on-github/changing-project-board-visibility.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Changing project board visibility -intro: 'As an organization owner or project board admin, you can make a project board public or private.' -redirect_from: - - /articles/changing-project-board-visibility -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.project-management.project-board-visibility %} - -{% tip %} - -**Tip:** When you make your project board public, organization members are given read access by default. You can give specific organization members write or admin permissions by giving project board access to teams they're on or by adding them to the project board as a collaborator. For more information, see "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)." - -{% endtip %} - -1. Navigate to the project board you want to make public or private. -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.access-collaboration-settings %} -4. Under "Visibility", select **Public** or **Private**. Then, click **Save**. -![Public and private radio buttons](/assets/images/help/projects/project-board-visibility-options.png) diff --git a/content/github/managing-your-work-on-github/closing-a-project-board.md b/content/github/managing-your-work-on-github/closing-a-project-board.md deleted file mode 100644 index 8543304b3f6a..000000000000 --- a/content/github/managing-your-work-on-github/closing-a-project-board.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Closing a project board -intro: 'If you''ve completed all the tasks in a project board or no longer need to use a project board, you can close the project board.' -redirect_from: - - /articles/closing-a-project/ - - /articles/closing-a-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -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)." - -1. Navigate to list of project boards in your repository or organization, or owned by your user account. -2. In the projects list, next to the project board you want to close, click {% octicon "chevron-down" aria-label="The chevron icon" %}. -![Chevron icon to the right of the project board's name](/assets/images/help/projects/project-list-action-chevron.png) -3. Click **Close**. -![Close item in the project board's drop-down menu](/assets/images/help/projects/close-project.png) - -### Further reading - -- "[About project boards](/articles/about-project-boards)" -- "[Deleting a project board](/articles/deleting-a-project-board)" -- "[Disabling project boards in a repository](/articles/disabling-project-boards-in-a-repository)" -- "[Disabling project boards in your organization](/articles/disabling-project-boards-in-your-organization)" -- "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)" diff --git a/content/github/managing-your-work-on-github/configuring-automation-for-project-boards.md b/content/github/managing-your-work-on-github/configuring-automation-for-project-boards.md deleted file mode 100644 index 1bfa483df632..000000000000 --- a/content/github/managing-your-work-on-github/configuring-automation-for-project-boards.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Configuring automation for project boards -intro: You can set up automatic workflows to move issues and pull requests to a project board column when a specified event occurs. -redirect_from: - - /articles/configuring-automation-for-project-boards -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% 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 %} - -{% data reusables.project-management.resync-automation %} - -{% tip %} - -**Tip**: To edit columns that already have configured automation, click **Manage** at the bottom of the column. - -{% endtip %} - -1. Navigate to the project board you want to automate. -2. In the column you want to automate, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}. -![Edit icon](/assets/images/help/projects/edit-column-button.png) -3. Click **Manage automation**. -![Manage automation button](/assets/images/help/projects/manage-automation-button.png) -4. Using the Preset drop-down menu, select an automation preset. -![Select preset automation from menu](/assets/images/help/projects/select-automation.png) -5. Select the workflow automations you want to configure for the column. -![List of options for automating the column](/assets/images/help/projects/select-automation-options-existing-column.png) -6. Click **Update automation**. - -### Further reading -- "[About automation for project boards](/articles/about-automation-for-project-boards)" diff --git a/content/github/managing-your-work-on-github/copying-a-project-board.md b/content/github/managing-your-work-on-github/copying-a-project-board.md deleted file mode 100644 index 367b3963ce18..000000000000 --- a/content/github/managing-your-work-on-github/copying-a-project-board.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Copying a project board -intro: You can copy a project board to quickly create a new project. Copying frequently used or highly customized project boards helps standardize your workflow. -redirect_from: - - /articles/copying-a-project-board -versions: - free-pro-team: '*' ---- - -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. - -When you copy a project board to an organization, the project board's visibility will default to private, with an option to change the visibility. For more information, see "[Changing project board visibility](/articles/changing-project-board-visibility/)." - -A project board's automation is also enabled by default. For more information, see "[About automation for project boards](/articles/about-automation-for-project-boards/)." - -1. Navigate to the project board you want to copy. -{% data reusables.project-management.click-menu %} -3. Click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **Copy**. -![Copy option in drop-down menu from project board sidebar](/assets/images/help/projects/project-board-copy-setting.png) -4. Under "Owner", use the drop-down menu and click the repository or organization where you want to copy the project board. -![Select owner of copied project board from drop-down menu](/assets/images/help/projects/copied-project-board-owner.png) -5. Optionally, under "Project board name", type the name of the copied project board. -![Field to type a name for the copied project board](/assets/images/help/projects/copied-project-board-name.png) -6. Optionally, under "Description", type a description of the copied project board that other people will see. -![Field to type a description for the copied project board](/assets/images/help/projects/copied-project-board-description.png) -7. Optionally, under "Automation settings", select whether you want to copy the configured automatic workflows. This option is enabled by default. For more information, see "[About automation for project boards](/articles/about-automation-for-project-boards/)." -![Select automation settings for copied project board](/assets/images/help/projects/copied-project-board-automation-settings.png) -8. If you are copying an organization-owned project board, under "Visibility", select whether you want your copied project board to be private or public. -![Select visibility settings for copied project board](/assets/images/help/projects/copied-project-board-visibility-settings.png) -9. Click **Copy project**. -![Confirm Copy button](/assets/images/help/projects/confirm-copy-project-board.png) diff --git a/content/github/managing-your-work-on-github/creating-a-label.md b/content/github/managing-your-work-on-github/creating-a-label.md deleted file mode 100644 index e7f553d3ac0c..000000000000 --- a/content/github/managing-your-work-on-github/creating-a-label.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Creating a label -intro: 'In repositories where you have write access, you can create labels to organize issues and pull requests.' -redirect_from: - - /articles/creating-and-editing-labels-for-issues-and-pull-requests/ - - /articles/creating-a-label -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tip:** You can also create a label in the Labels drop-down menu within an issue or pull request. - -{% endtip %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -{% data reusables.project-management.labels %} -4. To the right of the search field, click **New label**. -{% data reusables.project-management.name-label %} -{% data reusables.project-management.label-description %} -{% data reusables.project-management.label-color-randomizer %} -{% data reusables.project-management.create-label %} - -### Further reading - -- "[About labels](/articles/about-labels)" -- "[Applying labels to issues and pull requests](/articles/applying-labels-to-issues-and-pull-requests)" -- "[Editing a label](/articles/editing-a-label)" -- "[Filtering issues and pull requests by labels](/articles/filtering-issues-and-pull-requests-by-labels)"{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -- "[Managing default labels for repositories in your organization](/articles/managing-default-labels-for-repositories-in-your-organization)" -{% endif %} diff --git a/content/github/managing-your-work-on-github/creating-a-permanent-link-to-a-code-snippet.md b/content/github/managing-your-work-on-github/creating-a-permanent-link-to-a-code-snippet.md deleted file mode 100644 index b78c327682e3..000000000000 --- a/content/github/managing-your-work-on-github/creating-a-permanent-link-to-a-code-snippet.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Creating a permanent link to a code snippet -intro: You can create a permanent link to a specific line or range of lines of code in a specific version of a file or pull request. -redirect_from: - - /articles/creating-a-permanent-link-to-a-code-snippet -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -This type of permanent link will render as a code snippet only in the repository it originated in. In other repositories, the permalink code snippet will render as a URL. - -![Code snippet rendered in a comment](/assets/images/help/repository/rendered-code-snippet.png) - -{% tip %} - -**Tip:** To create a permalink for an entire file, see "[Getting permanent links to files](/articles/getting-permanent-links-to-files)." - -{% endtip %} - -{% data reusables.repositories.navigate-to-repo %} -2. Locate the code you'd like to link to: - - To link to code from a file, navigate to the file. - - To link to code from 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 line or range of lines, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab octicon" %}. In the drop-down menu, click **Copy permalink**. - ![Kebab menu with option to copy a permanent link for a selected line](/assets/images/help/repository/copy-permalink-specific-line.png) -5. Navigate to the conversation where you want to link to the code snippet. -6. Paste your permalink into a comment, and click **Comment**. - ![Pasted permalink in a comment in the same repository](/assets/images/help/repository/code-snippet-permalink-in-comment.png) - -### Further reading - -- "[Creating an issue](/articles/creating-an-issue/)" -- "[Opening an issue from code](/articles/opening-an-issue-from-code/)" -- "[Reviewing changes in pull requests](/articles/reviewing-changes-in-pull-requests/)" diff --git a/content/github/managing-your-work-on-github/creating-a-project-board.md b/content/github/managing-your-work-on-github/creating-a-project-board.md deleted file mode 100644 index b51d09c72fa5..000000000000 --- a/content/github/managing-your-work-on-github/creating-a-project-board.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Creating a project board -intro: 'Project boards can be used to create customized workflows to suit your needs, like tracking and prioritizing specific feature work, comprehensive roadmaps, or even release checklists.' -redirect_from: - - /articles/creating-a-project/ - - /articles/creating-a-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.project-management.use-automated-template %} - -{% data reusables.project-management.copy-project-boards %} - -{% data reusables.project-management.link-repos-to-project-board %} For more information, see "[Linking a repository to a project board](/articles/linking-a-repository-to-a-project-board)." - -Once you've created your project board, you can add issues, pull requests, and notes to it. For more information, see "[Adding issues and pull requests to a project board](/articles/adding-issues-and-pull-requests-to-a-project-board)" and "[Adding notes to a project board](/articles/adding-notes-to-a-project-board)." - -You can also configure workflow automations to keep your project board in sync with the status of issues and pull requests. For more information, see "[About automation for project boards](/articles/about-automation-for-project-boards)." - -{% data reusables.project-management.project-board-import-with-api %} - -### Creating a user-owned project board - -{% data reusables.profile.access_profile %} -2. On the top of your profile page, in the main navigation, click {% octicon "project" aria-label="The project board icon" %} **Projects**. -![Project tab](/assets/images/help/projects/user-projects-tab.png) -{% data reusables.project-management.click-new-project %} -{% data reusables.project-management.create-project-name-description %} -{% data reusables.project-management.choose-template %} -{% data reusables.project-management.linked-repositories %} -{% data reusables.project-management.create-project-button %} -{% data reusables.project-management.add-column-new-project %} -{% data reusables.project-management.name-project-board-column %} -{% data reusables.project-management.select-column-preset %} -{% data reusables.project-management.select-automation-options-new-column %} -{% data reusables.project-management.click-create-column %} -{% data reusables.project-management.add-more-columns %} - -{% data reusables.project-management.edit-project-columns %} - -### Creating an organization-wide project board - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.organization-wide-project %} -{% data reusables.project-management.click-new-project %} -{% data reusables.project-management.create-project-name-description %} -{% data reusables.project-management.choose-template %} -{% data reusables.project-management.linked-repositories %} -{% data reusables.project-management.create-project-button %} -{% data reusables.project-management.add-column-new-project %} -{% data reusables.project-management.name-project-board-column %} -{% data reusables.project-management.select-column-preset %} -{% data reusables.project-management.select-automation-options-new-column %} -{% data reusables.project-management.click-create-column %} -{% data reusables.project-management.add-more-columns %} - -{% data reusables.project-management.edit-project-columns %} - -### Creating a repository project board - -{% data reusables.repositories.navigate-to-repo %} -2. Under your repository name, click {% octicon "project" aria-label="The project board icon" %} **Projects**. -![Project tab](/assets/images/help/projects/repo-tabs-projects.png) -{% data reusables.project-management.click-new-project %} -{% data reusables.project-management.create-project-name-description %} -{% data reusables.project-management.choose-template %} -{% data reusables.project-management.create-project-button %} -{% data reusables.project-management.add-column-new-project %} -{% data reusables.project-management.name-project-board-column %} -{% data reusables.project-management.select-column-preset %} -{% data reusables.project-management.select-automation-options-new-column %} -{% data reusables.project-management.click-create-column %} -{% data reusables.project-management.add-more-columns %} - -{% data reusables.project-management.edit-project-columns %} - -### Further reading - -- "[About projects boards](/articles/about-project-boards)" -- "[Editing a project board](/articles/editing-a-project-board)"{% if currentVersion == "free-pro-team@latest" %} -- "[Copying a project board](/articles/copying-a-project-board)"{% endif %} -- "[Closing a project board](/articles/closing-a-project-board)" -- "[About automation for project boards](/articles/about-automation-for-project-boards)" diff --git a/content/github/managing-your-work-on-github/creating-an-issue.md b/content/github/managing-your-work-on-github/creating-an-issue.md deleted file mode 100644 index ae499dea3bbf..000000000000 --- a/content/github/managing-your-work-on-github/creating-an-issue.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Creating an issue -intro: 'Issues can be used to keep track of bugs, enhancements, or other requests.' -redirect_from: - - /articles/creating-an-issue -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% data reusables.repositories.create-issue-in-public-repository %} - -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" %} -{% 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](/github/building-a-strong-community/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 - -- "[Creating a permanent link to a code snippet](/github/managing-your-work-on-github/creating-a-permanent-link-to-a-code-snippet)" diff --git a/content/github/managing-your-work-on-github/creating-and-editing-milestones-for-issues-and-pull-requests.md b/content/github/managing-your-work-on-github/creating-and-editing-milestones-for-issues-and-pull-requests.md deleted file mode 100644 index ee343b1d3d84..000000000000 --- a/content/github/managing-your-work-on-github/creating-and-editing-milestones-for-issues-and-pull-requests.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Creating and editing milestones for issues and pull requests -intro: You can create a milestone to track progress on groups of issues or pull requests in a repository. -redirect_from: - - /articles/creating-milestones-for-issues-and-pull-requests/ - - /articles/creating-and-editing-milestones-for-issues-and-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -{% data reusables.project-management.milestones %} -4. Choose one of these options: - - To create a new milestone, click **New Milestone**. - ![New milestone button](/assets/images/help/repository/new-milestone.png) - - To edit a milestone, next to the milestone you want to edit, click **Edit**. - ![Edit milestone option](/assets/images/help/repository/edit-milestone.png) -5. Type the milestone's title, description, or other changes, and click **Create milestone** or **Save changes**. - -### Deleting milestones - -When you delete milestones, issues and pull requests are not affected. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -{% data reusables.project-management.milestones %} -4. Next to the milestone you want to delete, click **Delete**. -![Delete milestone option](/assets/images/help/repository/delete-milestone.png) - -### Further reading - -- "[About milestones](/articles/about-milestones)" -- "[Associating milestones with issues and pull requests](/articles/associating-milestones-with-issues-and-pull-requests)" -- "[Viewing your milestone's progress](/articles/viewing-your-milestone-s-progress)" -- "[Filtering issues and pull requests by milestone](/articles/filtering-issues-and-pull-requests-by-milestone)" diff --git a/content/github/managing-your-work-on-github/deleting-a-label.md b/content/github/managing-your-work-on-github/deleting-a-label.md deleted file mode 100644 index 903d75e012ce..000000000000 --- a/content/github/managing-your-work-on-github/deleting-a-label.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Deleting a label -intro: 'In repositories where you have write access, you can delete a label if you no longer need it to classify issues or pull requests.' -redirect_from: - - /articles/deleting-a-label -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Deleting a label will remove the label from any issues or pull requests where it's been applied. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -{% data reusables.project-management.labels %} -{% data reusables.project-management.delete-label %} - -### Further reading - -- "[Applying labels to issues and pull requests](/articles/applying-labels-to-issues-and-pull-requests)" -- "[Filtering issues and pull requests by labels](/articles/filtering-issues-and-pull-requests-by-labels)"{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -- "[Managing default labels for repositories in your organization](/articles/managing-default-labels-for-repositories-in-your-organization)" -{% endif %} diff --git a/content/github/managing-your-work-on-github/deleting-a-project-board.md b/content/github/managing-your-work-on-github/deleting-a-project-board.md deleted file mode 100644 index 4ea51ddbedcd..000000000000 --- a/content/github/managing-your-work-on-github/deleting-a-project-board.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Deleting a project board -intro: You can delete an existing project board if you no longer need access to its contents. -redirect_from: - - /articles/deleting-a-project/ - - /articles/deleting-a-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% 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. - -{% endtip %} - -1. Navigate to the project board you want to delete. -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.click-edit-sidebar-menu-project-board %} -4. Click **Delete project**. -![Delete project button](/assets/images/help/projects/delete-project-button.png) -5. To confirm that you want to delete the project board, click **OK**. - -### Further reading - -- "[Closing a project board](/articles/closing-a-project-board)" -- "[Disabling project boards in a repository](/articles/disabling-project-boards-in-a-repository)" -- "[Disabling project boards in your organization](/articles/disabling-project-boards-in-your-organization)" diff --git a/content/github/managing-your-work-on-github/deleting-an-issue.md b/content/github/managing-your-work-on-github/deleting-an-issue.md deleted file mode 100644 index 7da9879a358f..000000000000 --- a/content/github/managing-your-work-on-github/deleting-an-issue.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Deleting an issue -intro: People with admin permissions in a repository can permanently delete an issue from a repository. -redirect_from: - - /articles/deleting-an-issue -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can only delete issues in a repository owned by your user account. You cannot delete issues in a repository owned by another user account, even if you are a collaborator there. - -To delete an issue in a repository owned by an organization, an organization owner must enable deleting an issue for the organization's repositories, and you must have admin or owner permissions in the repository. For more information, see "[Allowing people to delete issues in your organization](/articles/allowing-people-to-delete-issues-in-your-organization)" and "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization/)." - -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**. -!["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**. - -### Further reading - -- "[Linking a pull request to an issue](/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue)" diff --git a/content/github/managing-your-work-on-github/disabling-issues.md b/content/github/managing-your-work-on-github/disabling-issues.md deleted file mode 100644 index 4fed2082744c..000000000000 --- a/content/github/managing-your-work-on-github/disabling-issues.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Disabling issues -intro: You may wish to turn issues off for your repository if you do not accept contributions or bug reports. -redirect_from: - - /articles/disabling-issues -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under Features, unselect the **Issues** checkbox. - ![Remove Issues checkbox](/assets/images/help/issues/issues_settings_remove_from_repo.png) - -If you decide to enable issues again in the future, any issues that were previously added will be available. - -{% if currentVersion == "free-pro-team@latest" %} - -{% tip %} - -Please contact {% data variables.contact.contact_support %} if you want to turn off issues because of abuse from strangers. -{% data reusables.policies.abuse %} - -{% endtip %} - -{% endif %} diff --git a/content/github/managing-your-work-on-github/disabling-project-boards-in-a-repository.md b/content/github/managing-your-work-on-github/disabling-project-boards-in-a-repository.md deleted file mode 100644 index 1da9ba210786..000000000000 --- a/content/github/managing-your-work-on-github/disabling-project-boards-in-a-repository.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Disabling project boards in a repository -intro: Repository administrators can turn off project boards for a repository if you or your team manages work differently. -redirect_from: - - /articles/disabling-project-boards-in-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -When you disable project boards, you will no longer see project board information in timelines or [audit logs](/articles/reviewing-your-security-log/). - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Features," unselect the **Projects** checkbox. - ![Remove Projects checkbox](/assets/images/help/projects/disable-projects-checkbox.png) - -After project boards are disabled, existing project boards are inaccessible at their previous URLs. {% data reusables.organizations.disable_project_board_results %} diff --git a/content/github/managing-your-work-on-github/disabling-project-boards-in-your-organization.md b/content/github/managing-your-work-on-github/disabling-project-boards-in-your-organization.md deleted file mode 100644 index 43947e58879f..000000000000 --- a/content/github/managing-your-work-on-github/disabling-project-boards-in-your-organization.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Disabling project boards in your organization -intro: Organization owners can turn off organization-wide project boards and repository project boards in an organization. -redirect_from: - - /articles/disabling-project-boards-in-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -After you disable organization-wide project boards, it won’t be possible to create new project boards at the organization level, and any existing organization-level project boards will become inaccessible at their previous URLs. Project boards in repositories in the organization are not affected. - -After you disable repository project boards in an organization, it won't be possible to create new project boards in any repositories in the organization, and any existing project boards in repositories in the organization will become inaccessible at their previous URLs. Project boards at the organization level are not affected. - -When you disable project boards, you will no longer see project board information in timelines or [audit logs](/articles/reviewing-the-audit-log-for-your-organization/). - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -4. Decide whether to disable organization-wide project boards, disable repository project boards in the organization, or both. Then, under "Projects": - - To disable organization-wide project boards, unselect **Enable projects for the organization**. - - To disable repository project boards in the organization, unselect **Enable projects for all repositories**. - ![Checkboxes to disable projects for an organization or for all of an organization's repositories](/assets/images/help/projects/disable-org-projects-checkbox.png) -5. Click **Save**. - -{% data reusables.organizations.disable_project_board_results %} - -### Further reading - -- "[About project boards](/articles/about-project-boards)" -- "[Closing a project board](/articles/closing-a-project-board)" -- "[Deleting a project board](/articles/deleting-a-project-board)" -- "[Disabling project boards in a repository](/articles/disabling-project-boards-in-a-repository)" diff --git a/content/github/managing-your-work-on-github/editing-a-label.md b/content/github/managing-your-work-on-github/editing-a-label.md deleted file mode 100644 index f90533325f07..000000000000 --- a/content/github/managing-your-work-on-github/editing-a-label.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Editing a label -intro: 'In repositories where you have write access, you can edit the name, color, and description of an existing label.' -redirect_from: - - /articles/editing-a-label -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -{% data reusables.project-management.labels %} -{% data reusables.project-management.edit-label %} -{% data reusables.project-management.name-label %} -{% data reusables.project-management.label-description %} -{% data reusables.project-management.label-color-randomizer %} -{% data reusables.project-management.save-label %} - -### Further reading - -- "[About labels](/articles/about-labels)" -- "[Creating a label](/articles/creating-a-label)" -- "[Deleting a label](/articles/deleting-a-label)" -- "[Applying labels to issues and pull requests](/articles/applying-labels-to-issues-and-pull-requests)" -- "[Filtering issues and pull requests by labels](/articles/filtering-issues-and-pull-requests-by-labels)"{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -- "[Managing default labels for repositories in your organization](/articles/managing-default-labels-for-repositories-in-your-organization)" -{% endif %} diff --git a/content/github/managing-your-work-on-github/editing-a-project-board.md b/content/github/managing-your-work-on-github/editing-a-project-board.md deleted file mode 100644 index 268a8cab4615..000000000000 --- a/content/github/managing-your-work-on-github/editing-a-project-board.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Editing a project board -intro: You can edit the title and description of an existing project board. -redirect_from: - - /articles/editing-a-project/ - - /articles/editing-and-deleting-a-project/ - - /articles/editing-a-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% tip %} - -**Tip:** For details on adding, removing, or editing columns in your project board, see "[Creating a project board](/articles/creating-a-project-board)." - -{% endtip %} - -1. Navigate to the project board you want to edit. -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.click-edit-sidebar-menu-project-board %} -4. Modify the project board name and description as needed, then click **Save project**. -![Fields with the project board name and description, and Save project button](/assets/images/help/projects/edit-project-board-save-button.png) - -### Further reading - -- "[About project boards](/articles/about-project-boards)" -- "[Adding issues and pull requests to a project board](/articles/adding-issues-and-pull-requests-to-a-project-board)" -- "[Deleting a project board](/articles/deleting-a-project-board)" diff --git a/content/github/managing-your-work-on-github/file-attachments-on-issues-and-pull-requests.md b/content/github/managing-your-work-on-github/file-attachments-on-issues-and-pull-requests.md deleted file mode 100644 index f6f3178e42fa..000000000000 --- a/content/github/managing-your-work-on-github/file-attachments-on-issues-and-pull-requests.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: File attachments on issues and pull requests -intro: 'When you open issue or update a pull request, you can use issue attachments to upload images of proposed features or screenshots of bugs.' -redirect_from: - - /articles/issue-attachments/ - - /articles/file-attachments-on-issues-and-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% warning %} - -**Warning:** If you add an image to a pull request or issue comment, anyone can view the anonymized image URL without authentication, even if the pull request is in a private repository{% if enterpriseServerVersions contains currentVersion %}, or if private mode is enabled{% endif %}. To keep sensitive images private, serve them from a private network or server that requires authentication. {% if currentVersion == "free-pro-team@latest" %}For more information on anonymized URLs see "[About anonymized image URLs](/articles/about-anonymized-image-urls)".{% endif %} - -{% endwarning %} - -To attach a file to an issue or pull request conversation, drag and drop it into the comment box. Alternatively, you can click the bar at the bottom of the comment box to browse, select, and add a file from your computer. - -![Select attachments from computer](/assets/images/help/pull_requests/select-bar.png) - -{% tip %} - -**Tip:** In many browsers, you can copy-and-paste images directly into the box. - -{% endtip %} - -The maximum size for files is 25MB and the maximum size for images is 10MB. - -We support these files: - -* PNG (*.png*) -* GIF (*.gif*) -* JPEG (*.jpg*) -* Log files (*.log*) -* Microsoft Word (*.docx*), Powerpoint (*.pptx*), and Excel (*.xlsx*) documents -* Text files (*.txt*) -* PDFs (*.pdf*) -* ZIP (*.zip*, *.gz*) - -![Attachments animated GIF](/assets/images/help/pull_requests/dragging_images.gif) diff --git a/content/github/managing-your-work-on-github/filtering-cards-on-a-project-board.md b/content/github/managing-your-work-on-github/filtering-cards-on-a-project-board.md deleted file mode 100644 index 359033b08dfb..000000000000 --- a/content/github/managing-your-work-on-github/filtering-cards-on-a-project-board.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Filtering cards on a project board -intro: You can filter the cards on a project board to search for specific cards or view a subset of the cards. -redirect_from: - - /articles/filtering-cards-on-a-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -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. - -- Filter cards by author using `author:USERNAME` -- Filter cards by assignee using `assignee:USERNAME` or `no:assignee` -- Filter cards by label using `label:LABEL`, `label:"MULTI-WORD LABEL NAME"`, or `no:label` -- Filter by milestone by using `milestone:MY-MILESTONE` -- Filter cards by state using `state:open`, `state:closed`, or `state:merged` -- Filter by review status using `review:none`, `review:required`, `review:approved`, or `review:changes_requested` -- Filter by check status using `status:pending`, `status:success`, or `status:failure` -- Filter cards by type using `type:issue`, `type:pr`, or `type:note` -- Filter cards by state and type using `is:open`, `is:closed`, or `is:merged`; and `is:issue`, `is:pr`, or `is:note` -- Filter cards by issues that are linked to a pull request by a closing reference using `linked:pr`{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -- Filter cards by repository in an organization-wide project board using `repo:ORGANIZATION/REPOSITORY`{% endif %} - -1. Navigate to the project board that contains the cards you want to filter. -2. Above the project card columns, click into the "Filter cards" search bar and type a search query to filter the cards. -![Filter card search bar](/assets/images/help/projects/filter-card-search-bar.png) - -{% tip %} - -**Tip:** You can drag and drop filtered cards or use keyboard shortcuts to move them between columns. {% data reusables.project-management.for-more-info-project-keyboard-shortcuts %} - -{% endtip %} - -### Further reading - -- "[About project boards](/articles/about-project-boards)" -- "[Adding issues and pull requests to a project board](/articles/adding-issues-and-pull-requests-to-a-project-board)" -- "[Adding notes to a project board](/articles/adding-notes-to-a-project-board)" diff --git a/content/github/managing-your-work-on-github/filtering-issues-and-pull-requests-by-assignees.md b/content/github/managing-your-work-on-github/filtering-issues-and-pull-requests-by-assignees.md deleted file mode 100644 index 62efeb547e0b..000000000000 --- a/content/github/managing-your-work-on-github/filtering-issues-and-pull-requests-by-assignees.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Filtering issues and pull requests by assignees -intro: 'Once you''ve [assigned an issue or pull request to someone](/articles/assigning-issues-and-pull-requests-to-other-github-users), you can find items based on who''s working on them.' -redirect_from: - - /articles/filtering-issues-and-pull-requests-by-assignees -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.cli.filter-issues-and-pull-requests-tip %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -3. In the upper-right corner, select the Assignee drop-down menu. -4. The Assignee drop-down menu lists everyone who has write access to your repository. Click the name of the person whose assigned items you want to see, or click **Assigned to nobody** to see which issues are unassigned. -![Using the Assignees drop-down tab](/assets/images/help/issues/issues_assignee_dropdown.png) - -{% tip %} - -To clear your filter selection, click **Clear current search query, filters, and sorts**. - -{% endtip %} - -### Further reading - -- "[Filtering issues and pull requests](/articles/filtering-issues-and-pull-requests)" -- "[Sorting issues and pull requests](/articles/sorting-issues-and-pull-requests)" -- "[Using search to filter issues and pull requests](/articles/using-search-to-filter-issues-and-pull-requests)" -- "[Sharing filters](/articles/sharing-filters)" -- "[Viewing all of your issues and pull requests](/articles/viewing-all-of-your-issues-and-pull-requests)" diff --git a/content/github/managing-your-work-on-github/filtering-issues-and-pull-requests-by-labels.md b/content/github/managing-your-work-on-github/filtering-issues-and-pull-requests-by-labels.md deleted file mode 100644 index 4273b2e6ce79..000000000000 --- a/content/github/managing-your-work-on-github/filtering-issues-and-pull-requests-by-labels.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Filtering issues and pull requests by labels -intro: 'Once you''ve [applied labels to an issue or pull request](/articles/applying-labels-to-issues-and-pull-requests), you can find items based on their labels.' -redirect_from: - - /articles/filtering-issues-and-pull-requests-by-labels -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.cli.filter-issues-and-pull-requests-tip %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -{% data reusables.project-management.labels %} -4. In the list of labels, click a label to see the issues and pull requests that it's been applied to. - ![List of a repository's labels](/assets/images/help/issues/labels-page.png) - -{% tip %} - -**Tip:** To clear your filter selection, click **Clear current search query, filters, and sorts**. - -{% endtip %} - -### Further reading - -- "[Filtering issues and pull requests](/articles/filtering-issues-and-pull-requests)" -- "[Sorting issues and pull requests](/articles/sorting-issues-and-pull-requests)" -- "[Using search to filter issues and pull requests](/articles/using-search-to-filter-issues-and-pull-requests)" -- "[Sharing filters](/articles/sharing-filters)" diff --git a/content/github/managing-your-work-on-github/filtering-issues-and-pull-requests-by-milestone.md b/content/github/managing-your-work-on-github/filtering-issues-and-pull-requests-by-milestone.md deleted file mode 100644 index 753238cbd162..000000000000 --- a/content/github/managing-your-work-on-github/filtering-issues-and-pull-requests-by-milestone.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Filtering issues and pull requests by milestone -intro: 'Issues and pull requests can be filtered based on the milestone they''re associated with. Once you''ve [associated an issue or pull request with a milestone](/articles/associating-milestones-with-issues-and-pull-requests), you can find items based on their milestones. Within a milestone, you can prioritize issues and pull requests.' -redirect_from: - - /articles/filtering-issues-and-pull-requests-by-milestone -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tips:** - -- If you'd rather filter issues and pull requests using the Search bar, you can use the milestone search syntax. For a milestone called My Milestone, the search syntax would be: `milestone:"My Milestone"`. -- To clear your filter selection, click **Clear current search query, filters, and sorts**. -- You can also filter issues or pull requests using the {% data variables.product.prodname_cli %}. For more information, see "[`gh issue list`](https://cli.github.com/manual/gh_issue_list)" or "[`gh pr list`](https://cli.github.com/manual/gh_pr_list)" in the {% data variables.product.prodname_cli %} documentation. - -{% endtip %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -3. Select **Milestones** to see a list of all available milestones for the repository. - ![Milestones button](/assets/images/help/issues/issues_milestone_button.png) -4. Select the milestone you're interested in from the list. You can view relevant information for the milestone, including all issues and pull requests associated with it, from the milestone page. For more information, see "[About milestones](/articles/about-milestones)." - -### Further reading - -- "[Filtering issues and pull requests](/articles/filtering-issues-and-pull-requests)" -- "[Sorting issues and pull requests](/articles/sorting-issues-and-pull-requests)" -- "[Using search to filter issues and pull requests](/articles/using-search-to-filter-issues-and-pull-requests)" -- "[Sharing filters](/articles/sharing-filters)" -- "[Filtering cards on a project board](/articles/filtering-cards-on-a-project-board)" diff --git a/content/github/managing-your-work-on-github/filtering-issues-and-pull-requests.md b/content/github/managing-your-work-on-github/filtering-issues-and-pull-requests.md deleted file mode 100644 index 789bfd9eadc5..000000000000 --- a/content/github/managing-your-work-on-github/filtering-issues-and-pull-requests.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Filtering issues and pull requests -intro: Issues and pull requests come with a set of default filters you can apply to organize your listings. -redirect_from: - - /articles/filtering-issues-and-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% data reusables.search.requested_reviews_search %} - -You can filter issues and pull requests to find: -- All open issues and pull requests -- Issues and pull requests that you've created -- Issues and pull requests that are assigned to you -- Issues and pull requests where you're [**@mentioned**](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams) - -{% data reusables.cli.filter-issues-and-pull-requests-tip %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -3. Click **Filters** to choose the type of filter you're interested in. - ![Using the Filters drop-down](/assets/images/help/issues/issues_filter_dropdown.png) - -### Further reading - -- "[Filtering issues and pull requests by assignees](/articles/filtering-issues-and-pull-requests-by-assignees)" -- "[Filtering issues and pull requests by milestones](/articles/filtering-issues-and-pull-requests-by-milestone)" -- "[Filtering issues and pull requests by labels](/articles/filtering-issues-and-pull-requests-by-labels)" -- "[Filtering pull requests by review status](/articles/filtering-pull-requests-by-review-status)" -- "[Using search to filter issues and pull requests](/articles/using-search-to-filter-issues-and-pull-requests)" -- "[Sharing filters](/articles/sharing-filters)" -- "[Viewing all of your issues and pull requests](/articles/viewing-all-of-your-issues-and-pull-requests)" diff --git a/content/github/managing-your-work-on-github/filtering-pull-requests-by-review-status.md b/content/github/managing-your-work-on-github/filtering-pull-requests-by-review-status.md deleted file mode 100644 index b67528e51a12..000000000000 --- a/content/github/managing-your-work-on-github/filtering-pull-requests-by-review-status.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Filtering pull requests by review status -intro: You can use filters to list pull requests by review status and to find pull requests that you've reviewed or other people have asked you to review. -redirect_from: - - /articles/filtering-pull-requests-by-review-status -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can filter a repository's list of pull requests to find: -- Pull requests that haven't been [reviewed](/articles/about-pull-request-reviews) yet -- Pull requests that [require a review](/articles/about-required-reviews-for-pull-requests) before they can be merged -- Pull requests that a reviewer has approved -- Pull requests in which a reviewer has asked for changes -- Pull requests that you have reviewed -- Pull requests that [someone has asked you, or a team you're a member of, to review](/articles/requesting-a-pull-request-review) - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-pr %} -3. In the upper-right corner, select the Reviews drop-down menu. - ![Reviews drop-down menu in the filter menu above the list of pull requests](/assets/images/help/pull_requests/reviews-filter-dropdown.png) -4. Choose a filter to find all of the pull requests with that filter's status. - ![List of filters in the Reviews drop-down menu](/assets/images/help/pull_requests/pr-review-filters.png) - -### Further reading - -- "[About pull request reviews](/articles/about-pull-request-reviews)" -- "[Using search to filter issues and pull requests](/articles/using-search-to-filter-issues-and-pull-requests)" -- "[Viewing all of your issues and pull requests](/articles/viewing-all-of-your-issues-and-pull-requests)" diff --git a/content/github/managing-your-work-on-github/finding-information-in-a-repository.md b/content/github/managing-your-work-on-github/finding-information-in-a-repository.md deleted file mode 100644 index 5e2309c96f19..000000000000 --- a/content/github/managing-your-work-on-github/finding-information-in-a-repository.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Finding information in a repository -intro: 'To find detailed information about a repository on GitHub, you can filter, sort, and search issues and pull requests that are relevant to the repository.' -mapTopic: true -redirect_from: - - /articles/finding-information-in-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/managing-your-work-on-github/index.md b/content/github/managing-your-work-on-github/index.md deleted file mode 100644 index a0903774e057..000000000000 --- a/content/github/managing-your-work-on-github/index.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Managing your work on GitHub -redirect_from: - - /categories/100/articles/ - - /categories/managing-projects/ - - /categories/managing-projects-on-github/ - - /categories/managing-your-work-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /managing-your-work-with-issues %} - {% link_in_list /about-issues %} - {% link_in_list /creating-an-issue %} - - {% link_in_list /deleting-an-issue %} - - {% link_in_list /opening-an-issue-from-a-comment %} - {% link_in_list /opening-an-issue-from-code %} - - {% link_in_list /transferring-an-issue-to-another-repository %} - {% link_in_list /pinning-an-issue-to-your-repository %} - - {% link_in_list /creating-a-permanent-link-to-a-code-snippet %} - {% link_in_list /about-task-lists %} - {% link_in_list /about-automation-for-issues-and-pull-requests-with-query-parameters %} - {% link_in_list /file-attachments-on-issues-and-pull-requests %} - {% link_in_list /assigning-issues-and-pull-requests-to-other-github-users %} - {% link_in_list /viewing-all-of-your-issues-and-pull-requests %} - {% link_in_list /disabling-issues %} - {% link_in_list /linking-a-pull-request-to-an-issue %} - {% link_in_list /about-duplicate-issues-and-pull-requests %} -{% topic_link_in_list /labeling-issues-and-pull-requests %} - {% link_in_list /about-labels %} - {% link_in_list /creating-a-label %} - {% link_in_list /applying-labels-to-issues-and-pull-requests %} - {% link_in_list /editing-a-label %} - {% link_in_list /deleting-a-label %} -{% topic_link_in_list /managing-project-boards %} - {% link_in_list /about-project-boards %} - {% link_in_list /creating-a-project-board %} - {% link_in_list /editing-a-project-board %} - {% link_in_list /linking-a-repository-to-a-project-board %} - {% link_in_list /about-automation-for-project-boards %} - {% link_in_list /configuring-automation-for-project-boards %} - - {% link_in_list /copying-a-project-board %} - - {% link_in_list /closing-a-project-board %} - {% link_in_list /reopening-a-closed-project-board %} - {% link_in_list /deleting-a-project-board %} - {% link_in_list /disabling-project-boards-in-a-repository %} - {% link_in_list /disabling-project-boards-in-your-organization %} - {% link_in_list /changing-project-board-visibility %} -{% topic_link_in_list /tracking-the-progress-of-your-work-with-project-boards %} - {% link_in_list /adding-issues-and-pull-requests-to-a-project-board %} - {% link_in_list /adding-notes-to-a-project-board %} - {% link_in_list /tracking-progress-on-your-project-board %} - {% link_in_list /filtering-cards-on-a-project-board %} - {% link_in_list /archiving-cards-on-a-project-board %} -{% topic_link_in_list /tracking-the-progress-of-your-work-with-milestones %} - {% link_in_list /about-milestones %} - {% link_in_list /creating-and-editing-milestones-for-issues-and-pull-requests %} - {% link_in_list /associating-milestones-with-issues-and-pull-requests %} - {% link_in_list /filtering-issues-and-pull-requests-by-milestone %} - {% link_in_list /viewing-your-milestones-progress %} -{% topic_link_in_list /finding-information-in-a-repository %} - {% link_in_list /filtering-issues-and-pull-requests %} - {% link_in_list /filtering-issues-and-pull-requests-by-assignees %} - {% link_in_list /filtering-issues-and-pull-requests-by-labels %} - {% link_in_list /filtering-pull-requests-by-review-status %} - {% link_in_list /sorting-issues-and-pull-requests %} - {% link_in_list /using-search-to-filter-issues-and-pull-requests %} - {% link_in_list /sharing-filters %} diff --git a/content/github/managing-your-work-on-github/labeling-issues-and-pull-requests.md b/content/github/managing-your-work-on-github/labeling-issues-and-pull-requests.md deleted file mode 100644 index 662c3128dd3c..000000000000 --- a/content/github/managing-your-work-on-github/labeling-issues-and-pull-requests.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Labeling issues and pull requests -intro: 'You can manage your work on {% data variables.product.product_name %} by creating labels to categorize issues and pull requests.' -mapTopic: true -redirect_from: - - /articles/labeling-issues-and-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue.md b/content/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue.md deleted file mode 100644 index 2c2aa3d5da5c..000000000000 --- a/content/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Linking a pull request to an issue -intro: 'You can link a pull request to an issue to{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.18" %} show that a fix is in progress and to{% endif %} automatically close the issue when the pull request is merged.' -redirect_from: - - /articles/closing-issues-via-commit-message/ - - /articles/closing-issues-via-commit-messages/ - - /articles/closing-issues-using-keywords - - /github/managing-your-work-on-github/closing-issues-using-keywords -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% note %} - -**Note:** The special keywords in a pull request description are interpreted when the pull request targets the repository's *default* branch. However, if the PR's base is *any other branch*, then these keywords are ignored, no links are created and merging the PR has no effect on the issues. **If you want to link a pull request to an issue using a keyword, the PR must be on the default branch.** - -{% endnote %} - -### About linked issues and pull requests - -You can link an issue to a pull request {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}manually or {% endif %}using a supported keyword in the pull request description. - -When you link a pull request to the issue the pull request addresses, collaborators can see that someone is working on the issue. {% if currentVersion ver_lt "enterprise-server@2.21" %}If the pull request and the issue are in different repositories, {% data variables.product.product_name %} will display the link after the pull request is merged, if the person who merges the pull request also has permission to close the issue.{% endif %} - -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" %} -### 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). - -* close -* closes -* closed -* fix -* fixes -* fixed -* resolve -* resolves -* resolved - -The syntax for closing keywords depends on whether the issue is in the same repository as the pull request. - -Linked issue | Syntax | Example ---------------- | ------ | ------ -Issue in the same repository | *KEYWORD* #*ISSUE-NUMBER* | `Closes #10` -Issue in a different repository | *KEYWORD* *OWNER*/*REPOSITORY*#*ISSUE-NUMBER* | `Fixes octo-org/octo-repo#100` -Multiple issues | Use full syntax for each issue | `Resolves #10, resolves #123, resolves octo-org/octo-repo#100` - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}Only manually linked pull requests can be manually unlinked. To unlink an issue that you linked using a keyword, you must edit the pull request description to remove the keyword.{% endif %} - -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. - -### Further reading - -- "[Autolinked references and URLs](/articles/autolinked-references-and-urls/#issues-and-pull-requests)" diff --git a/content/github/managing-your-work-on-github/linking-a-repository-to-a-project-board.md b/content/github/managing-your-work-on-github/linking-a-repository-to-a-project-board.md deleted file mode 100644 index e6710c6fc4bf..000000000000 --- a/content/github/managing-your-work-on-github/linking-a-repository-to-a-project-board.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Linking a repository to a project board -intro: You can link a repository to your organization's or user account's project board. -redirect_from: - - /articles/linking-a-repository-to-a-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% note %} - -**Note:** In order to link a repository to your organization or user owned project board the repository needs to have issues enabled. For information on how to see if issues are disabled for a repository, see "[Disabling issues](/github/managing-your-work-on-github/disabling-issues) ." - -{% endnote %} - -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)." - -1. Navigate to the project board where you want to link a repository. -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.access-collaboration-settings %} -4. In the left sidebar, click **Linked repositories**. -![Linked repositories menu option in left sidebar](/assets/images/help/projects/project-board-linked-repositories-setting.png) -5. Click **Link a repository**. -![Link a repository button on Linked repositories tab](/assets/images/help/projects/link-repository-button.png) -6. Search for the repository you'd like to link. -![Search field on Link a repository window](/assets/images/help/projects/search-to-link-repository.png) -7. Click **Link**. To unlink, click **Unlink**. -![Link button](/assets/images/help/projects/link-button.png) - -### Further reading - -- "[About projects boards](/articles/about-project-boards)" diff --git a/content/github/managing-your-work-on-github/managing-project-boards.md b/content/github/managing-your-work-on-github/managing-project-boards.md deleted file mode 100644 index b2f9ef87f031..000000000000 --- a/content/github/managing-your-work-on-github/managing-project-boards.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing project boards -intro: You can use project boards to organize issues and pull requests and manage your workflow across a repository or organization. -mapTopic: true -redirect_from: - - /articles/managing-project-boards -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/managing-your-work-on-github/managing-your-work-with-issues.md b/content/github/managing-your-work-on-github/managing-your-work-with-issues.md deleted file mode 100644 index b7d767d5bb4a..000000000000 --- a/content/github/managing-your-work-on-github/managing-your-work-with-issues.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing your work with issues -intro: 'You can manage your work on {% data variables.product.product_name %} by creating issues to track ideas, enhancements, tasks, or bugs.' -mapTopic: true -redirect_from: - - /articles/managing-your-work-with-issues -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/managing-your-work-on-github/opening-an-issue-from-a-comment.md b/content/github/managing-your-work-on-github/opening-an-issue-from-a-comment.md deleted file mode 100644 index 105db0a3a948..000000000000 --- a/content/github/managing-your-work-on-github/opening-an-issue-from-a-comment.md +++ /dev/null @@ -1,27 +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. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -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 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)" diff --git a/content/github/managing-your-work-on-github/opening-an-issue-from-code.md b/content/github/managing-your-work-on-github/opening-an-issue-from-code.md deleted file mode 100644 index 612990be7226..000000000000 --- a/content/github/managing-your-work-on-github/opening-an-issue-from-code.md +++ /dev/null @@ -1,32 +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. -redirect_from: - - /articles/opening-an-issue-from-code -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -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.create-issue-in-public-repository %} - -{% 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)" diff --git a/content/github/managing-your-work-on-github/pinning-an-issue-to-your-repository.md b/content/github/managing-your-work-on-github/pinning-an-issue-to-your-repository.md deleted file mode 100644 index 765810fa990d..000000000000 --- a/content/github/managing-your-work-on-github/pinning-an-issue-to-your-repository.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Pinning an issue to your repository -intro: You can pin up to three important issues above the issues list in your repository. -redirect_from: - - /articles/pinning-an-issue-to-your-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -![Pinned issues](/assets/images/help/issues/pinned-issues.png) - -To pin an issue, you must have write permissions for the repository the issue is in. - -{% 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**. - ![Button to pin issue](/assets/images/help/repository/pin-issue.png) diff --git a/content/github/managing-your-work-on-github/reopening-a-closed-project-board.md b/content/github/managing-your-work-on-github/reopening-a-closed-project-board.md deleted file mode 100644 index 8a1575dbd473..000000000000 --- a/content/github/managing-your-work-on-github/reopening-a-closed-project-board.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Reopening a closed project board -intro: You can reopen a closed project board and and restart any workflow automation that was configured for the project board. -redirect_from: - - /articles/reopening-a-closed-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -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. - -1. Navigate to the project board you want to reopen. -{% data reusables.project-management.click-menu %} -3. Choose whether to sync automation for your project board or reopen your project board without syncing. - - To reopen your project board and sync automation, click **Reopen and sync project**. - ![Select "Reopen and resync project" button](/assets/images/help/projects/reopen-and-sync-project.png) - - To reopen your project board without syncing automation, using the reopen drop-down menu, click **Reopen only**. Then, click **Reopen only**. - ![Reopen closed project board drop-down menu](/assets/images/help/projects/reopen-closed-project-board-drop-down-menu.png) - -### Further reading - -- "[Configuring automation for project boards](/articles/configuring-automation-for-project-boards)" diff --git a/content/github/managing-your-work-on-github/sharing-filters.md b/content/github/managing-your-work-on-github/sharing-filters.md deleted file mode 100644 index 7c0b5a86afb5..000000000000 --- a/content/github/managing-your-work-on-github/sharing-filters.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Sharing filters -intro: 'When you filter or sort issues and pull requests, your browser''s URL is automatically updated to match the new view.' -redirect_from: - - /articles/sharing-filters -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -You can send the URL that issues generates to any user, and they'll be able to see the same filter view that you see. - -For example, if you filter on issues assigned to Hubot, and sort on the oldest open issues, your URL would update to something like the following: - -``` -/issues?q=state:open+type:issue+assignee:hubot+sort:created-asc -``` - -### Further reading - -* "[Filtering issues and pull requests](/articles/filtering-issues-and-pull-requests)" -* "[Sorting issues and pull requests](/articles/sorting-issues-and-pull-requests)" -* "[Using search to filter issues and pull requests](/articles/using-search-to-filter-issues-and-pull-requests)" diff --git a/content/github/managing-your-work-on-github/sorting-issues-and-pull-requests.md b/content/github/managing-your-work-on-github/sorting-issues-and-pull-requests.md deleted file mode 100644 index f58d6916aff4..000000000000 --- a/content/github/managing-your-work-on-github/sorting-issues-and-pull-requests.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Sorting issues and pull requests -intro: Filters can be sorted to provide better information during a specific time period. -redirect_from: - - /articles/sorting-issues-and-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can sort any filtered view by: - -* The newest created issues or pull requests -* The oldest created issues or pull requests -* The most commented issues or pull requests -* The least commented issues or pull requests -* The newest updated issues or pull requests -* The oldest updated issues or pull requests -* The most added [reaction](/articles/about-conversations-on-github#reacting-to-ideas-in-comments) on issues or pull requests - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -3. In the upper-right corner, select the Sort drop-down menu. - ![Using the Sort drop-down tab](/assets/images/help/issues/issues_sort_dropdown.png) - -To clear your sort selection, click **Sort** > **Newest**. - -### Further reading - -* "[Filtering issues and pull requests](/articles/filtering-issues-and-pull-requests)" -* "[Using search to filter issues and pull requests](/articles/using-search-to-filter-issues-and-pull-requests)" -* "[Sharing filters](/articles/sharing-filters)" diff --git a/content/github/managing-your-work-on-github/tracking-progress-on-your-project-board.md b/content/github/managing-your-work-on-github/tracking-progress-on-your-project-board.md deleted file mode 100644 index 15540e9630d4..000000000000 --- a/content/github/managing-your-work-on-github/tracking-progress-on-your-project-board.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Tracking progress on your project board -intro: 'You can see the overall progress of your project in a progress bar.' -redirect_from: - - /articles/tracking-progress-on-your-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.project-management.project-progress-locations %} - -1. Navigate to the project board where you want to enable or disable project progress tracking. -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.click-edit-sidebar-menu-project-board %} -4. Select or deselect **Track project progress**. diff --git a/content/github/managing-your-work-on-github/tracking-the-progress-of-your-work-with-milestones.md b/content/github/managing-your-work-on-github/tracking-the-progress-of-your-work-with-milestones.md deleted file mode 100644 index 8438a8e63a2e..000000000000 --- a/content/github/managing-your-work-on-github/tracking-the-progress-of-your-work-with-milestones.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Tracking the progress of your work with milestones -intro: 'You can track your work on {% data variables.product.product_name %} by creating milestones with associated issues and pull requests.' -mapTopic: true -redirect_from: - - /articles/tracking-the-progress-of-your-work-with-milestones -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/managing-your-work-on-github/tracking-the-progress-of-your-work-with-project-boards.md b/content/github/managing-your-work-on-github/tracking-the-progress-of-your-work-with-project-boards.md deleted file mode 100644 index de603b6d9329..000000000000 --- a/content/github/managing-your-work-on-github/tracking-the-progress-of-your-work-with-project-boards.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Tracking the progress of your work with project boards -intro: 'You can track and prioritize your work on {% data variables.product.product_name %} by creating a project board with associated issues, pull requests, and notes.' -redirect_from: - - /articles/tracking-the-progress-of-your-work-with-projects/ - - /articles/tracking-the-progress-of-your-work-with-project-boards -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/managing-your-work-on-github/transferring-an-issue-to-another-repository.md b/content/github/managing-your-work-on-github/transferring-an-issue-to-another-repository.md deleted file mode 100644 index 703d521b353f..000000000000 --- a/content/github/managing-your-work-on-github/transferring-an-issue-to-another-repository.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Transferring an issue to another repository -intro: 'To move an issue to a better fitting repository, you can transfer open issues to other repositories.' -redirect_from: - - /articles/transferring-an-issue-to-another-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -To transfer an open issue to another repository, you must have write permissions on the repository the issue is in and the repository you're transferring the issue to. For more information, see "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)." - -You can only transfer issues between repositories owned by the same user or organization account. You can't transfer an issue from a private repository to a public repository. - -When you transfer an issue, comments and assignees are retained. The issue's labels and milestones are not retained. This issue will stay on any user-owned or organization-wide project boards and be removed from any repository project boards. For more information, see "[About project boards](/articles/about-project-boards)." - -People or teams who are mentioned in the issue will receive a notification letting them know that the issue has been transferred to a new repository. The original URL redirects to the new issue's URL. People who don't have read permissions in the new repository will see a banner letting them know that the issue has been transferred to a new repository that they can't access. - -### Transferring an open issue to another repository - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issues %} -3. In the list of issues, click the issue you'd like to transfer. -4. In the right sidebar, click **Transfer issue**. -![Button to transfer issue](/assets/images/help/repository/transfer-issue.png) -5. Use the **Choose a repository** drop-down menu, and select the repository you want to transfer the issue to. -![Choose a repository selection](/assets/images/help/repository/choose-a-repository.png) -6. Click **Transfer issue**. -![Transfer issue button](/assets/images/help/repository/transfer-issue-button.png) - -### Further reading - -- "[About issues](/articles/about-issues)" -- "[Reviewing your security log](/articles/reviewing-your-security-log)" -- "[Reviewing the audit log for your organization](/articles/reviewing-the-audit-log-for-your-organization)" diff --git a/content/github/managing-your-work-on-github/using-search-to-filter-issues-and-pull-requests.md b/content/github/managing-your-work-on-github/using-search-to-filter-issues-and-pull-requests.md deleted file mode 100644 index 4dcfd8eb26c1..000000000000 --- a/content/github/managing-your-work-on-github/using-search-to-filter-issues-and-pull-requests.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Using search to filter issues and pull requests -intro: Every issues and pull requests view comes with a search bar for advanced filter management. -redirect_from: - - /articles/using-search-to-filter-issues-and-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The issues and pull requests search bar allows you to define your own custom filters and sort by a wide variety of criteria. You can find the search bar on each repository's **Issues** and **Pull requests** tabs and on your [Issues and Pull requests dashboards](/articles/viewing-all-of-your-issues-and-pull-requests). - -![The issues and pull requests search bar](/assets/images/help/issues/issues_search_bar.png) - -{% tip %} - -**Tip:** {% data reusables.search.search_issues_and_pull_requests_shortcut %} - -{% endtip %} - -With issue and pull request search terms, you can: - -- Filter issues and pull requests by author: `state:open type:issue author:octocat` -- Filter issues and pull requests that involve, but don't necessarily [**@mention**](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams), certain people: `state:open type:issue involves:octocat` -- Filter issues and pull requests by assignee: `state:open type:issue assignee:octocat` -- Filter issues and pull requests by label: `state:open type:issue label:"bug"` - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -For issues, you can also use search to: - -- Filter for issues that are linked to a pull request by a closing reference: `linked:pr` -{% endif %} - -For pull requests, you can also use search to: -- Filter [draft](/articles/about-pull-requests#draft-pull-requests) pull requests: `is:draft` -- Filter pull requests that haven't been [reviewed](/articles/about-pull-request-reviews) yet: `state:open type:pr review:none` -- Filter pull requests that [require a review](/articles/about-required-reviews-for-pull-requests) before they can be merged: `state:open type:pr review:required` -- Filter pull requests that a reviewer has approved: `state:open type:pr review:approved` -- Filter pull requests in which a reviewer has asked for changes: `state:open type:pr review:changes_requested` -- Filter pull requests by [reviewer](/articles/about-pull-request-reviews/): `state:open type:pr reviewed-by:octocat` -- Filter pull requests by the specific user [requested for review](/articles/requesting-a-pull-request-review): `state:open type:pr review-requested:octocat` -- Filter pull requests by the team requested for review: `state:open type:pr team-review-requested:github/atom`{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -- Filter for pull requests that are linked to an issue that the pull request may close: `linked:issue`{% endif %} - -### Further reading - -- "[Searching issues](/articles/searching-issues)" -- "[Filtering issues and pull requests](/articles/filtering-issues-and-pull-requests)" -- "[Sorting issues and pull requests](/articles/sorting-issues-and-pull-requests)" -- "[Sharing filters](/articles/sharing-filters)" diff --git a/content/github/managing-your-work-on-github/viewing-all-of-your-issues-and-pull-requests.md b/content/github/managing-your-work-on-github/viewing-all-of-your-issues-and-pull-requests.md deleted file mode 100644 index aa457913a7bc..000000000000 --- a/content/github/managing-your-work-on-github/viewing-all-of-your-issues-and-pull-requests.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Viewing all of your issues and pull requests -intro: 'The Issues and Pull Request dashboards list the open issues and pull requests you''ve created. You can use them to update items that have gone stale, close them, or keep track of where you''ve been mentioned across all repositories—including those you''re not subscribed to.' -redirect_from: - - /articles/viewing-all-of-your-issues-and-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Your issues and pull request dashboards are available at the top of any page. On each dashboard, you can filter the list to find issues or pull requests you created, that are assigned to you, or in which you're mentioned. You can also find pull requests that you've been asked to review. - -1. At the top of any page, click **Pull requests** or **Issues**. - ![The global pull requests and issues dashboards](/assets/images/help/overview/issues_and_pr_dashboard.png) -2. Optionally, choose a filter or [use the search bar to filter for more specific results](/articles/using-search-to-filter-issues-and-pull-requests). - ![List of pull requests with the "Created" filter selected](/assets/images/help/overview/pr_dashboard_created.png) - -### Further reading - -- {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}”[Viewing your subscriptions](/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions#reviewing-repositories-that-youre-watching){% else %}”[Listing the repositories you're watching](/github/receiving-notifications-about-activity-on-github/listing-the-repositories-youre-watching){% endif %}" diff --git a/content/github/managing-your-work-on-github/viewing-your-milestones-progress.md b/content/github/managing-your-work-on-github/viewing-your-milestones-progress.md deleted file mode 100644 index 34b5a15f4eb0..000000000000 --- a/content/github/managing-your-work-on-github/viewing-your-milestones-progress.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Viewing your milestone's progress -intro: 'In order to track your milestones, you''ll want to get a better understanding of how many open issues and pull requests are remaining.' -redirect_from: - - /articles/viewing-your-milestone-s-progress - - /articles/viewing-your-milestones-progress -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -3. In the upper-left corner, click **Milestones**. - ![Issues Milestone button](/assets/images/help/issues/issues_milestone_button.png) -4. Select the milestone you wish to see more information about. - -![Issues Milestone overview](/assets/images/help/issues/issues_milestone_overview.png) - -To better manage your project, you can prioritize issues or pull requests within a milestone. For more information, see "[About milestones](/articles/about-milestones#prioritizing-issues-and-pull-requests-in-milestones)." - -### Further reading - -* "[Associating milestones with issues and pull requests](/articles/associating-milestones-with-issues-and-pull-requests)" -* "[Filtering issues and pull requests by milestone](/articles/filtering-issues-and-pull-requests-by-milestone)" diff --git a/content/github/receiving-notifications-about-activity-on-github/about-email-notifications.md b/content/github/receiving-notifications-about-activity-on-github/about-email-notifications.md deleted file mode 100644 index 54a0b42048ae..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/about-email-notifications.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: About email notifications -intro: 'When you enable email notifications, you will receive participating and watching notifications in your email client, and you can filter them using the email header information.' -versions: - enterprise-server: <2.21 ---- - -For more information about the differences between *participating* and *watching* notifications, see "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)." - -After enabling email notifications, {% data variables.product.product_name %} will send notifications to you as multipart emails that contain both HTML and plain text copies of the content. Email notification content includes any Markdown, @mentions, emojis, hash-links, and more, that appear in the original content on {% data variables.product.product_name %}. If you only want to see the text in the email, you can configure your email client to display the plain text copy only. For more information about enabling email notifications, see "[Choosing the delivery method for your notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications)." - -{% data reusables.notifications.outbound_email_tip %} - -{% data reusables.notifications.shared_state %} - -### Filtering email notifications - -Each email notification that {% data variables.product.product_name %} sends contains header information. The header information in every email is consistent, so you can use it in your email client to filter or forward all {% data variables.product.product_name %} notifications, or certain types of {% data variables.product.product_name %} notifications. - -Email notifications from {% data variables.product.product_name %} contain the following header information: - -| Header | Information | -| --- | --- | -| `From` address | This address will always be 'the no-reply email address configured by your site administrator'. | -| `To` field | This field connects directly to the thread. If you reply to the email, you'll add a new comment to the conversation. | -| `Cc` address | {% data variables.product.product_name %} will `Cc` you if you're subscribed to a conversation. The second `Cc` email address matches the notification reason. The suffix for these notification reasons is {% data variables.notifications.cc_address %}. The possible notification reasons are:
  • `assign`: You were assigned to an issue or pull request.
  • `author`: You created an issue or pull request.
  • `comment`: You commented on an issue or pull request.
  • `manual`: There was an update to an issue or pull request you manually subscribed to.
  • `mention`: You were mentioned on an issue or pull request.
  • `push`: Someone committed to a pull request you're subscribed to.
  • `review_requested`: You or a team you're a member of was requested to review a pull request.
  • `security_alert`: {% data variables.product.prodname_dotcom %} detected a vulnerability in a repository you receive security alerts for.
  • `state_change`: An issue or pull request you're subscribed to was either closed or opened.
  • `subscribed`: There was an update in a repository you're watching.
  • `team_mention`: A team you belong to was mentioned on an issue or pull request.
  • `your_activity`: You opened, commented on, or closed an issue or pull request.
| -| `mailing list` field | This field identifies the name of the repository and its owner. The format of this address is always `..{% data variables.command_line.backticks %}`. {% if currentVersion ver_gt "enterprise-server@2.19" % %} -| `X-GitHub-Severity` field | {% data reusables.repositories.security-alerts-x-github-severity %} The possible severity levels are:
  • `low`
  • `moderate`
  • `high`
  • `critical`
For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." |{% endif %} - -### Further reading - -- "[Listing the repositories you're watching](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/listing-the-repositories-youre-watching)" -- "[Watching and unwatching repositories](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories)" -- "[Subscribing to and unsubscribing from notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications)" -- "[Creating gists](/articles/creating-gists)" diff --git a/content/github/receiving-notifications-about-activity-on-github/about-notifications.md b/content/github/receiving-notifications-about-activity-on-github/about-notifications.md deleted file mode 100644 index fa20f0ba19cf..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/about-notifications.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: About notifications -intro: 'Notifications provide updates about the activities and conversations you''re interested in. You can receive notifications on {% data variables.product.product_name %} or through your email client.' -versions: - enterprise-server: <2.21 ---- - -### Types of notifications - -The notifications you receive will either be *participating* notifications or *watching* notifications. Both types of notifications can be received as web notifications or email notifications. For more information, see: - -- "[About web notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-web-notifications)" -- "[About email notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-email-notifications)" -- "[Choosing the delivery method for your notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications)" - -{% data reusables.notifications.outbound_email_tip %} - -{% data reusables.notifications.shared_state %} - -#### Participating notifications - -{% data variables.product.product_name %} sends *participating* notifications when you're directly involved in activities or conversations within a repository or a team you're a member of. You'll receive a notification when: - - You, or a team you're a member of, are mentioned. For more information, see "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams)." - - The parent team of a child team you're a member of is mentioned. For more information, see "[About teams](/articles/about-teams)." - - You're assigned to an issue or pull request. - - A comment is added in a conversation you're subscribed to. - - A commit is made to a pull request you're subscribed to. - - You open, comment on, or close an issue or pull request. - - A review is submitted that approves or requests changes to a pull request you're subscribed to. - - You, or a team you're a member of, are requested to review a pull request. - - You, or a team you're a member of, are the designated owner of a file and someone opens a pull request that changes that file. For more information, see "[About code owners](/articles/about-code-owners)." - - You create or reply to a team discussion. - -#### Watching notifications - -{% data variables.product.product_name %} sends *watching* notifications for updates in repositories or team discussions that you're watching. {% data reusables.notifications.auto-watch %}For more information, see "[Watching and unwatching repositories](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories)." -You'll receive a notification when: - - An issue is opened. - - A comment is added to an open issue. - - A pull request is opened. - - A comment is added to an open pull request. - - A comment is added to a commit. - - A release is published. For more information, see "[About releases](/articles/about-releases)." You can also only watch for releases published in a repository, rather than all updates to a repository. For more information, see "[Watching and unwatching releases for a repository](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-releases-for-a-repository)." - - A review is submitted that approves or requests changes to a pull request. - - A team discussion post is created or replied to for a team you're watching. - - A team discussion post for a parent team of or a team you're a member of and watching, is opened, edited, or replied to. For more information, see "[Nested teams](/articles/about-teams/#nested-teams)." - -You can also browse activity from people you follow, repositories you watch, and organizations you're a member of on your dashboard. For more information, see "[About your personal dashboard](/articles/about-your-personal-dashboard)." - -### Further reading - -- "[Listing the repositories you're watching](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/listing-the-repositories-youre-watching)" -- "[Watching and unwatching repositories](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories)" -- "[Watching and unwatching team discussions](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-team-discussions)" -- "[Subscribing to and unsubscribing from notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications)" diff --git a/content/github/receiving-notifications-about-activity-on-github/about-web-notifications.md b/content/github/receiving-notifications-about-activity-on-github/about-web-notifications.md deleted file mode 100644 index f271829cb0bf..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/about-web-notifications.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: About web notifications -intro: 'If you''re receiving web notifications, you can view your participating and watching notifications on the notifications page on {% data variables.product.product_name %}.' -versions: - enterprise-server: <2.21 ---- - -For more information about the differences between *participating* and *watching* notifications, see "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)." - -When web notifications are enabled for your account, you can click an item on your notifications page and you will be redirected to the conversation the notification is referencing. For more information on enabling web notifications, see "[Choosing the delivery method for your notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications)." For more information on accessing your notifications after enabling web notifications, see "[Accessing your notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/accessing-your-notifications)." - -{% data reusables.notifications.shared_state %} - -From your notifications page, you can also mark notifications as read, save notifications for later, and unsubscribe from threads. For more information, see: - -- "[Marking notifications as read](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/marking-notifications-as-read)" -- "[Saving notifications for later](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/saving-notifications-for-later)" -- "[Subscribing to and unsubscribing from notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications)" - -### Further reading - -- "[Listing the repositories you're watching](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/listing-the-repositories-youre-watching)" -- "[Watching and unwatching repositories](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories)" -- "[Subscribing to and unsubscribing from notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications)" diff --git a/content/github/receiving-notifications-about-activity-on-github/accessing-your-notifications.md b/content/github/receiving-notifications-about-activity-on-github/accessing-your-notifications.md deleted file mode 100644 index e5ff9551237a..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/accessing-your-notifications.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Accessing your notifications -intro: 'Depending on how your notification delivery is set up, you can access your notifications on {% data variables.product.product_name %} or through your email client.' -versions: - enterprise-server: <2.21 ---- - -### Accessing your web notifications - -To access web notifications on {% data variables.product.product_name %}, you must have web notifications enabled. For more information, see "[About web notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-web-notifications)" and "[Choosing the delivery method for your notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications)." - -{% data reusables.notifications.access_notifications %} -2. In the left sidebar, to see all notifications for activity you're participating in, click **Participating**. -![Listing participating notifications](/assets/images/help/notifications/notifications_sidebar_participating.png) -3. In the left sidebar, click the name of a repository to see notifications for a specific repository. -![Listing individual repository notifications](/assets/images/help/notifications/notifications_sidebar_specific_repos.png) - -### Accessing your email notifications - -If you have email notifications set up, you can access your notifications through your email client. For more information on enabling email notifications, see "[About email notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-email-notifications)" and "[Choosing the delivery method for your notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications)." - -### Further reading - -- "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)" -- "[Listing the repositories you're watching](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/listing-the-repositories-youre-watching)" diff --git a/content/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications.md b/content/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications.md deleted file mode 100644 index caca2775253f..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Choosing the delivery method for your notifications -intro: 'You can receive your notifications on {% data variables.product.product_location %} or have them delivered through your email client.' -versions: - enterprise-server: <2.21 ---- - -For personal accounts, notification emails are automatically sent to your default notification email. - -{% data reusables.notifications.outbound_email_tip %} - -### Choosing the delivery method for notifications about repository activity - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.notifications %} -3. Configure how you would like to receive notifications you either participate in or watch by selecting the checkboxes: - - Selecting **Email** sends an email to your default notification email. - - Selecting **Web** allows you to access the notifications on {% data variables.product.product_location %}. - ![Configuring notification settings](/assets/images/help/settings/ent-notifications-settings.png) -4. If you selected **Email** for conversations you're either participating in or watching, choose which updates you receive by selecting the checkboxes in the "Notification email" section: - - Select **Comments on Issues and Pull Requests** to receive an email when someone makes a comment in an issue or in the "Conversation" tab of a pull request. - - Select **Pull request reviews** to receive an email when someone makes a review comment in the "Files changed" tab of a pull request. - - Select **Pull request pushes** to receive an email when someone adds commits to a pull request that you're subscribed to. - - Select **Include your own updates** to receive an email when you open, comment on, or close an issue or pull request. - ![Configuring email notification options](/assets/images/help/settings/email_notification_settings.png) - -### Choosing the delivery method for security alerts for vulnerable dependencies - -{% data reusables.repositories.security-alert-delivery-options %} - -{% data reusables.repositories.enable-security-alerts %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.notifications %} -3. Under "Security alerts", configure how you would like to receive notifications when {% data variables.product.product_name %} detects a vulnerable dependency in your repository: - ![Options to configure notifications for security alerts](/assets/images/help/settings/vulnerability-alerts-options.png) - - Selecting **UI alerts** displays a banner in the {% data variables.product.product_name %} interface. - - Selecting **Command Line** displays warnings as a callback when you push to a repository with vulnerabilities. - - Selecting **Web** allows you to access the notifications on {% data variables.product.product_location %}. - - Selecting **Email each time a vulnerability is found** sends an email to your default notification email. - - Selecting **Email a digest summary of vulnerabilities** sends a digest email with a summary of up to 10 repositories' security alerts. Use the drop-down menu to choose to receive digest emails daily or weekly. - -### Further reading - -- "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)" -- "[About email notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-email-notifications)" -- "[About web notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-web-notifications)" -- "[Watching and unwatching repositories](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories)" -- "[Managing email preferences](/articles/managing-email-preferences)" diff --git a/content/github/receiving-notifications-about-activity-on-github/getting-started-with-notifications.md b/content/github/receiving-notifications-about-activity-on-github/getting-started-with-notifications.md deleted file mode 100644 index 8f969e28d2c8..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/getting-started-with-notifications.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Getting started with notifications -intro: 'Notifications help you keep track of the conversations and updates you''re interested in. You can receive notifications on {% data variables.product.product_name %} or through your email client for conversations you''re participating in or updates you''re watching.' -mapTopic: true -versions: - enterprise-server: <2.21 ---- - diff --git a/content/github/receiving-notifications-about-activity-on-github/index.md b/content/github/receiving-notifications-about-activity-on-github/index.md deleted file mode 100644 index 31ad8c870ead..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Receiving notifications about activity on GitHub -versions: - enterprise-server: <2.21 ---- - -### Table of Contents - -{% topic_link_in_list /getting-started-with-notifications %} - {% link_in_list /about-notifications %} - {% link_in_list /about-web-notifications %} - {% link_in_list /about-email-notifications %} - {% link_in_list /accessing-your-notifications %} - {% link_in_list /choosing-the-delivery-method-for-your-notifications %} -{% topic_link_in_list /managing-your-notifications %} - {% link_in_list /marking-notifications-as-read %} - - {% link_in_list /saving-notifications-for-later %} - - {% link_in_list /subscribing-to-and-unsubscribing-from-notifications %} - - {% link_in_list /listing-the-issues-and-pull-requests-youre-subscribed-to %} - - {% link_in_list /watching-and-unwatching-repositories %} - - {% link_in_list /watching-and-unwatching-releases-for-a-repository %} - - {% link_in_list /watching-and-unwatching-team-discussions %} - {% link_in_list /listing-the-repositories-youre-watching %} diff --git a/content/github/receiving-notifications-about-activity-on-github/listing-the-issues-and-pull-requests-youre-subscribed-to.md b/content/github/receiving-notifications-about-activity-on-github/listing-the-issues-and-pull-requests-youre-subscribed-to.md deleted file mode 100644 index 9851bd376530..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/listing-the-issues-and-pull-requests-youre-subscribed-to.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Listing the issues and pull requests you're subscribed to -intro: 'You can see an overview of all the issues and pull requests you''re subscribed to, making it easier to navigate to conversations you''re interested in but have not received recent notifications about.' -versions: - enterprise-server: <2.21 ---- - -The subscriptions list does not include every issue and pull request from repositories you're watching. You can manually subscribe to a specific issue or pull request to include it in your subscriptions list. For more information, see "[Subscribing to and unsubscribing from notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications)" and "[Watching and unwatching repositories](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories)." - -### Viewing a list of your subscriptions - -1. In the upper-right corner of any page, click {% octicon "bell" aria-label="The notifications bell" %}. If you've disabled web notifications and you don't see the bell icon, you can navigate to . For more information, see "[Choosing the delivery method for your notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/choosing-the-delivery-method-for-your-notifications)." -![Notification indicating any unread message](/assets/images/help/notifications/notifications_general_existence_indicator.png) -2. Click **Subscriptions** -![Subscriptions tab](/assets/images/help/notifications/subscriptions-tab.png) - -### Unsubscribing from issues and pull requests - -You can unsubscribe from issues and pull requests directly from your subscriptions list. - -1. To the left of each issue or pull request you want to unsubscribe from, select the checkbox. - ![Checkbox to unsubscribe](/assets/images/help/notifications/unsubscribe-checkbox.png) -2. In the upper-right corner of the page, click **Unsubscribe**. - ![Unsubscribe button](/assets/images/help/notifications/unsubscribe-button.png) diff --git a/content/github/receiving-notifications-about-activity-on-github/listing-the-repositories-youre-watching.md b/content/github/receiving-notifications-about-activity-on-github/listing-the-repositories-youre-watching.md deleted file mode 100644 index 3d3f5c7333a7..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/listing-the-repositories-youre-watching.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Listing the repositories you're watching -intro: You can get an overview of all the repositories you're watching so that you can easily remove any you're no longer interested in receiving notifications for. -versions: - enterprise-server: <2.21 ---- - -{% data reusables.notifications.access_watching %} -2. Click **Watching** to view the list of repositories you're watching. -![Listing of watched repositories](/assets/images/help/notifications/notifications-watching-tab.png) -3. Click **Unwatch** or **Unwatch releases** next to the repository you're no longer interested in receiving notifications for. - -### Further reading - -- "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)" -- "[Watching and unwatching repositories](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories)" - -- "[Viewing all of your issues and pull requests](/articles/viewing-all-of-your-issues-and-pull-requests)" diff --git a/content/github/receiving-notifications-about-activity-on-github/managing-your-notifications.md b/content/github/receiving-notifications-about-activity-on-github/managing-your-notifications.md deleted file mode 100644 index 707a5c8163e3..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/managing-your-notifications.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Managing your notifications -intro: 'To make it easier to receive the notifications you''re interested in, you can mark notifications as read, subscribe and unsubscribe from notifications, and watch and unwatch repositories.' -mapTopic: true -versions: - enterprise-server: <2.21 ---- - diff --git a/content/github/receiving-notifications-about-activity-on-github/marking-notifications-as-read.md b/content/github/receiving-notifications-about-activity-on-github/marking-notifications-as-read.md deleted file mode 100644 index a00046cda5f9..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/marking-notifications-as-read.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Marking notifications as read -intro: 'You can mark web notifications as read without reviewing them. If an update is made to the conversation, you''ll receive a new notification. You can also mark read notifications as unread, so you can easily find them again later.' -versions: - enterprise-server: <2.21 ---- - -For more information about how to access your web notifications, see "[Accessing your notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/accessing-your-notifications)." - -### Marking a notification as read - -{% data reusables.notifications.access_notifications %} -1. In the list of unread notifications, find the notification you would like to mark as read. -1. On the right side of the notification, click {% octicon "check" aria-label="The check symbol" %}. -![Button to mark a single notification as read](/assets/images/help/notifications/notifications_mark_individual_as_read.png) - -### Marking a notification as unread - -{% data reusables.notifications.access_notifications %} -1. In the left sidebar, click **Read**. -![All notifications button](/assets/images/help/notifications/sidebar_read_notifications.png) -1. In the list of read notifications, find the notification you would like to mark as unread. -1. On the right side of the notification, click {% octicon "dot-fill" aria-label="The dot symbol" %}. -![Button to mark a notification as read](/assets/images/help/notifications/notifications_mark_individual_as_unread.png) - -### Marking all notifications as read - -{% data reusables.notifications.access_notifications %} -1. In the upper right corner of the page, click **Mark all as read**. -![Button to mark all notifications as read](/assets/images/help/notifications/notifications_mark_all_as_read.png) - -### Marking all notifications from a repository as read - -{% data reusables.notifications.access_notifications %} -1. In the left sidebar, click the name of the repository for which you'd like to mark all notifications as read. -1. In the list of notifications, on the right side of the repository name, click {% octicon "check" aria-label="The check symbol" %}. -![Button to mark all notifications from a repository as read](/assets/images/help/notifications/notifications_repositories_mark_all_as_read.png) - -### Further reading - -- "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)" -- "[About web notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-web-notifications)" diff --git a/content/github/receiving-notifications-about-activity-on-github/saving-notifications-for-later.md b/content/github/receiving-notifications-about-activity-on-github/saving-notifications-for-later.md deleted file mode 100644 index 88d27af6e292..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/saving-notifications-for-later.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Saving notifications for later -intro: You can save web notifications to follow up on them at a later time. -versions: - enterprise-server: <2.21 ---- - -When you save a notification, it moves to the Saved for later tab on your notifications page. For more information, see "[About web notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-web-notifications)." - -### Saving a notification for later - -{% data reusables.notifications.access_notifications %} -1. In the list of notifications, find the notification you would like to save for later. -1. On the right side of the notification, click {% octicon "bookmark" aria-label="The bookmark button" %}. -![Button to save a notification](/assets/images/help/notifications/save_notification.png) -{% data reusables.notifications.saved_for_late_sidebar %} - -### Removing a saved notification - -{% data reusables.notifications.access_notifications %} -{% data reusables.notifications.saved_for_late_sidebar %} -1. In your list of saved notifications, find the saved notification you would like to remove. -1. On the right side of the saved notification, click {% octicon "bookmark" aria-label="The bookmark button" %}. -![Button to remove saved notification](/assets/images/help/notifications/remove-saved-notification.png) - -### Further reading - -- "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)" -- "[Accessing your notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/accessing-your-notifications)" -- "[Marking notifications as read](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/marking-notifications-as-read)" diff --git a/content/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications.md b/content/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications.md deleted file mode 100644 index 56449b1787f0..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Subscribing to and unsubscribing from notifications -intro: 'You can subscribe to individual conversations in issues, pull requests, and team discussions, even if you''re not watching the repository or a member of the team where the conversation is occurring. If you''re no longer interested in a conversation, you can unsubscribe or customize the types of notifications you receive.' -versions: - enterprise-server: <2.21 ---- - -### Managing your notification settings for an issue or pull request - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -3. Choose an issue or pull request to subscribe to. -4. In the right sidebar, click **Subscribe** or **Unsubscribe**. - ![Conversation Subscribe button](/assets/images/help/notifications/subscribe_button_with_gear.png) -5. To customize your notifications, click {% octicon "gear" aria-label="The gear icon" %}. - ![Gear button next to Conversation Subscribe](/assets/images/help/notifications/subscribe_button_with_gear_chosen.png) -6. Select the type of notifications you want to receive for this conversation, then click **Save**. - ![Conversation Subscribe options list](/assets/images/help/notifications/subscribe_options.png) -You can see a list of all the issues and pull requests you're subscribed to. For more information, see "[Listing the issues and pull requests you're subscribed to](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/listing-the-issues-and-pull-requests-youre-subscribed-to)." - -### Subscribing to team discussions - -{% data reusables.organizations.team-discussions-are-for-orgs %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -5. On the team page, find the discussion you want to subscribe to. -6. In the top right corner of the discussion, click {% octicon "unmute" aria-label="The subscribe symbol" %} to subscribe to the discussion. - ![Team discussion Subscribe button](/assets/images/help/notifications/team-discussion-subscribe-button.png) - -### Unsubscribing from team discussions - -{% data reusables.organizations.team-discussions-are-for-orgs %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -5. On the team page, find the discussion you want to unsubscribe from. -6. In the top right corner of the discussion, click {% octicon "mute" aria-label="The unsubscribe symbol" %} to unsubscribe from the discussion. - ![Team discussion Subscribe button](/assets/images/help/notifications/team-discussion-unsubscribe-button.png) - -### Further reading - -- "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)" -- "[About conversations on {% data variables.product.product_name %}](/articles/about-conversations-on-github)" -- "[Watching and unwatching repositories](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories)" - -- "[Listing the repositories you're watching](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/listing-the-repositories-youre-watching)" diff --git a/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-releases-for-a-repository.md b/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-releases-for-a-repository.md deleted file mode 100644 index 47063d5be957..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-releases-for-a-repository.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Watching and unwatching releases for a repository -intro: You can watch releases in a repository to receive notifications when a new release is published without receiving notifications about other updates to the repository. You can also unwatch releases if you no longer want to receive notifications for new releases in a repository. -versions: - enterprise-server: <2.21 ---- - -### Watching releases for a repository - -{% data reusables.repositories.navigate-to-repo %} -2. In the upper-right corner, click **Releases only** from the "Watch" drop-down menu. - ![Watch options in a drop-down menu for releases](/assets/images/help/notifications/watch-releases.png) - -### Unwatching releases for a repository - -{% data reusables.repositories.navigate-to-repo %} -2. In the upper-right corner, click **Not watching** from the "Watch" drop-down menu. - ![Watch options in a drop-down menu for releases](/assets/images/help/notifications/unwatch-repository.png) - -### Further reading - -- "[About releases](/articles/about-releases)" -- "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)" -- "[Watching and unwatching repositories](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories)" - diff --git a/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories.md b/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories.md deleted file mode 100644 index 831b6f6936ce..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Watching and unwatching repositories -intro: You can watch a repository to receive notifications for new pull requests and issues that are created. You can also unwatch a repository if you no longer want to receive notifications for that specific repository. -versions: - enterprise-server: <2.21 ---- - -{% data reusables.notifications.auto-watch %} For more information, see "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)." - -You can also watch and unwatch releases in a repository. For more information, see "[Watching and unwatching releases for a repository](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-releases-for-a-repository)." - -### Watching all repositories that you have push access to - -{% data reusables.notifications.access_watching %} -2. Click **Watching**. -![Listing of watched repositories](/assets/images/help/notifications/notifications-watching-tab.png) -3. On the right side of the page, select **Automatically watch**. - ![A checkbox for configuring watching repositories automatically](/assets/images/help/notifications/ent-automatically-watch-repos.png) - -### Watching a single repository - -{% data reusables.repositories.navigate-to-repo %} -2. In the upper-right corner, click **Watching** from the "Watch" drop-down menu. - ![Watch options in a drop-down menu for a repository](/assets/images/help/notifications/watch-repository.png) - -### Unwatching all repositories that you have push access to - -{% data reusables.notifications.access_watching %} -2. Click **Watching**. -![Listing of watched repositories](/assets/images/help/notifications/notifications-watching-tab.png) -3. On the right side of the page, unselect **Automatically watch**. - ![A checkbox for configuring watching repositories automatically](/assets/images/help/notifications/ent-automatically-watch-repos.png) - -### Unwatching a single repository - -{% data reusables.repositories.navigate-to-repo %} -2. In the upper-right corner, click **Unwatch** from the "Watch" drop-down menu. - ![Watch options in a drop-down menu for a repository](/assets/images/help/notifications/unwatch-repository.png) - -{% note %} - -**Note:** You can also choose to ignore a repository. If you ignore a repository, you won't receive any notifications. We don't recommend ignoring repositories as you won't be notified if you're @mentioned. {% if currentVersion == "free-pro-team@latest" %}If you experiencing abuse and want to ignore a repository, please [contact support](/contact) so we can help. {% data reusables.policies.abuse %}{% endif %} - -{% endnote %} - -### Further reading - -- "[Subscribing to and unsubscribing from notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications)" -- "[Listing the repositories you're watching](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/listing-the-repositories-youre-watching)" diff --git a/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-team-discussions.md b/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-team-discussions.md deleted file mode 100644 index 6205d243d610..000000000000 --- a/content/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-team-discussions.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Watching and unwatching team discussions -intro: You can watch a team to receive notifications for team discussions. You can unwatch a team if you no longer want to receive notifications for that team's discussions. -versions: - enterprise-server: <2.21 ---- - -By default, you'll automatically receive notifications for team discussions you're a member of. If you don't want to receive certain notifications for an existing team discussion, you must unwatch that team. You can also unsubscribe or subscribe to specific team discussion posts. For more information, see "[About team discussions](/articles/about-team-discussions)" and "[Subscribing to and unsubscribing from notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/subscribing-to-and-unsubscribing-from-notifications)." - -If you don't want to automatically watch team discussions when you become a member of new teams, you can update your automatic watching settings. - -### Watching all team discussions for new teams you join - -To automatically watch all team discussions for new teams you join, set your automatic watching notification settings. - -{% note %} - -**Note:** By default, this setting is set to **Automatically watching teams**. - -{% endnote %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.notifications %} -{% data reusables.user_settings.automatic_watching_box %} select **Automatically watch teams**. -![Checkbox for automatically watching teams](/assets/images/help/notifications/automatic-team-discussions-watching.png) - -### Watching a single team's discussions - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.watch-team-options %} click **Watch** to open your notifications options. Then click **Watching**. -![Watch options in a drop-down menu for a specific team](/assets/images/help/notifications/specific-team-watch-options.png) - -### Unwatching team discussions for all new teams you join - -If you don't want to automatically receive team discussion notifications when you join a team, you can change your notification settings to unwatch all new teams you join. - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.notifications %} -{% data reusables.user_settings.automatic_watching_box %} unselect **Automatically watch teams**. -![Automatically watching teams setting selected by default](/assets/images/help/notifications/automatic-team-discussions-watching.png) - -### Unwatching a single team's discussions - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.watch-team-options %} click **Unwatch** to open your notifications options. Then click **Not watching**. -![Watch options in a drop-down menu for a specific team](/assets/images/help/notifications/specific-team-unwatch.png) - -{% note %} - -**Note:** You can also choose to ignore a team's notifications. If you ignore a team, you won't receive any notifications. We don't recommend ignoring teams as you won't be notified if you're @mentioned. - -{% endnote %} - -### Further reading - -- "[About notifications](/enterprise/{{ currentVersion }}/user/github/receiving-notifications-about-activity-on-github/about-notifications)" -- "[About team discussions](/articles/about-team-discussions)" -- "[About teams](/articles/about-teams)" diff --git a/content/github/searching-for-information-on-github/about-searching-on-github.md b/content/github/searching-for-information-on-github/about-searching-on-github.md deleted file mode 100644 index 5639534bd93c..000000000000 --- a/content/github/searching-for-information-on-github/about-searching-on-github.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: About searching on GitHub -intro: 'Our integrated search covers the many repositories, users, and lines of code on {% data variables.product.product_name %}.' -redirect_from: - - /articles/using-the-command-bar/ - - /articles/github-search-basics/ - - /articles/search-basics/ - - /articles/searching-github/ - - /articles/advanced-search/ - - /articles/about-searching-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can search globally across all of {% data variables.product.product_name %}, or scope your search to a particular repository or organization. - -- To search globally across all of {% data variables.product.product_name %}, type what you're looking for into the search field at the top of any page, and choose "All {% data variables.product.prodname_dotcom %}" in the search drop-down menu. -- To search within a particular repository or organization, navigate to the repository or organization page, type what you're looking for into the search field at the top of the page, and press **Enter**. - -{% note %} - -**Notes:** - -- {% data reusables.search.required_login %} -- {% data variables.product.prodname_pages %} sites are not searchable on {% data variables.product.product_name %}. However you can search the source content if it exists in the default branch of a repository, using code search. For more information, see "[Searching code](/articles/searching-code)." For more information about {% data variables.product.prodname_pages %}, see "[What is GitHub Pages?](/articles/what-is-github-pages/)" -- Currently our search doesn't support exact matching. -- Whenever you are searching in code files, only the first two results in each file will be returned. - -{% endnote %} - -After running a search on {% data variables.product.product_name %}, you can sort the results, or further refine them by clicking one of the languages in the sidebar. For more information, see "[Sorting search results](/articles/sorting-search-results)." - -{% data variables.product.product_name %} search uses an ElasticSearch cluster to index projects every time a change is pushed to {% data variables.product.product_name %}. Issues and pull requests are indexed when they are created or modified. - -### Types of searches on {% data variables.product.prodname_dotcom %} - -You can search the following types of information across all public {% data variables.product.product_name %} repositories, and all private {% data variables.product.product_name %} repositories you have access to: - -- [Repositories](/articles/searching-for-repositories) -- [Topics](/articles/searching-topics) -- [Issues and pull requests](/articles/searching-issues-and-pull-requests) -- [Code](/articles/searching-code) -- [Commits](/articles/searching-commits) -- [Users](/articles/searching-users){% if currentVersion == "free-pro-team@latest" %} -- [Packages](/github/searching-for-information-on-github/searching-for-packages){% endif %} -- [Wikis](/articles/searching-wikis) - -### Searching using a visual interface - -Alternatively, you can search {% data variables.product.product_name %} using the {% data variables.search.search_page_url %} or {% data variables.search.advanced_url %}. - -The {% data variables.search.advanced_url %} provides a visual interface for constructing search queries. You can filter your searches by a variety of factors, such as the number of stars or number of forks a repository has. As you fill in the advanced search fields, your query will automatically be constructed in the top search bar. - -![Advanced Search](/assets/images/help/search/advanced_search_demo.gif) - -### Searching across {% data variables.product.prodname_enterprise %} and {% data variables.product.prodname_dotcom_the_website %} simultaneously - -If you use {% data variables.product.prodname_enterprise %} and you're a member of a {% data variables.product.prodname_dotcom_the_website %} organization using {% data variables.product.prodname_ghe_cloud %}, your {% data variables.product.prodname_enterprise %} site administrator can enable {% data variables.product.prodname_github_connect %} so that you can search across both environments at the same time. For more information, see "[Enabling {% data variables.product.prodname_unified_search %} between {% data variables.product.prodname_enterprise %} and {% data variables.product.prodname_dotcom_the_website %}](/enterprise/admin/guides/developer-workflow/enabling-unified-search-between-github-enterprise-server-and-jackfan.us.kg)." - -You can only search across both environments from {% data variables.product.prodname_enterprise %}. To scope your search by environment, you can use a filter option on the {% data variables.search.advanced_url %} or you can use the `environment:` search prefix. To only search for content on {% data variables.product.prodname_enterprise %}, use the search syntax `environment:local`. To only search for content on {% data variables.product.prodname_dotcom_the_website %}, use `environment:github`. - -Your {% data variables.product.prodname_enterprise %} site administrator can enable {% data variables.product.prodname_unified_search %} for all public repositories, all private repositories, or only certain private repositories in the connected {% data variables.product.prodname_ghe_cloud %} organization. - -If your site administrator enables {% data variables.product.prodname_unified_search %} in private repositories, you can only search in the private repositories that the administrator enabled {% data variables.product.prodname_unified_search %} for and that you have access to in the connected {% data variables.product.prodname_dotcom_the_website %} organization. Your {% data variables.product.prodname_enterprise %} administrators and organization owners on {% data variables.product.prodname_dotcom_the_website %} cannot search private repositories owned by your account. To search the applicable private repositories, you must enable private repository search for your personal accounts on {% data variables.product.prodname_dotcom_the_website %} and {% data variables.product.prodname_enterprise %}. For more information, see "[Enabling private {% data variables.product.prodname_dotcom_the_website %} repository search in your {% data variables.product.prodname_enterprise %} account](/articles/enabling-private-jackfan.us.kg-repository-search-in-your-github-enterprise-server-account)." - -### Further reading - -- "[Understanding the search syntax](/articles/understanding-the-search-syntax)" -- "[Searching on GitHub](/articles/searching-on-github)" diff --git a/content/github/searching-for-information-on-github/enabling-githubcom-repository-search-in-github-enterprise-server.md b/content/github/searching-for-information-on-github/enabling-githubcom-repository-search-in-github-enterprise-server.md deleted file mode 100644 index 20e42320775d..000000000000 --- a/content/github/searching-for-information-on-github/enabling-githubcom-repository-search-in-github-enterprise-server.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Enabling GitHub.com repository search in GitHub Enterprise Server -intro: 'You can connect your personal accounts for {% data variables.product.prodname_dotcom_the_website %} and {% data variables.product.prodname_ghe_server %} to search for content in certain private {% data variables.product.prodname_dotcom_the_website %} repositories from {% data variables.product.prodname_ghe_server %}.' -redirect_from: - - /articles/enabling-private-githubcom-repository-search-in-your-github-enterprise-account/ - - /articles/enabling-private-jackfan.us.kg-repository-search-in-your-github-enterprise-server-account/ - - /articles/enabling-private-githubcom-repository-search-in-your-github-enterprise-server-account/ - - /articles/enabling-githubcom-repository-search-in-github-enterprise-server -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If you use {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_dotcom_the_website %} and your {% data variables.product.prodname_ghe_server %} site administrator has enabled {% data variables.product.prodname_github_connect %} and {% data variables.product.prodname_unified_search %} for private repositories, then you can search for designated private repositories in the connected organization. - -To see private repositories in your search results, you must already have access to these repositories and connect your {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_dotcom_the_website %} accounts. For more information about the repositories you can search in, see "[Searching across {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_dotcom_the_website %} simultaneously](/articles/about-searching-on-github/#searching-across-github-enterprise-and-githubcom-simultaneously)." - -{% data reusables.github-connect.access-dotcom-and-enterprise %} -{% data reusables.github-connect.access-profile-settings %} -{% data reusables.github-connect.github-connect-tab-user-settings %} -{% data reusables.github-connect.connect-dotcom-and-enterprise %} -{% data reusables.github-connect.authorize-connection %} diff --git a/content/github/searching-for-information-on-github/finding-files-on-github.md b/content/github/searching-for-information-on-github/finding-files-on-github.md deleted file mode 100644 index b06c6e69434c..000000000000 --- a/content/github/searching-for-information-on-github/finding-files-on-github.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Finding files on GitHub -intro: 'You can search for a file in a repository using the file finder. To search for a file in multiple repositories on {% data variables.product.product_name %}, use the [`filename` code search qualifier](/articles/searching-code#search-by-filename).' -redirect_from: - - /articles/finding-files-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tips:** - -- File finder results exclude some directories like `build`, `log`, `tmp`, and `vendor`. To search for files within these directories, use the [`filename` code search qualifier](/articles/searching-code#search-by-filename). -- You can also open the file finder by pressing `t` on your keyboard. For more information, see "[Keyboard shortcuts](/articles/keyboard-shortcuts)." - -{% endtip %} - -{% data reusables.repositories.navigate-to-repo %} -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} -2. Under your repository name, click **Find file**. -![Find file button](/assets/images/help/search/find-file-button.png) -{% else %} -2. Above the list of files, click **Go to file**. -![Find file button](/assets/images/help/search/find-file-button.png) -{% endif %} -3. In the search field, type the name of the file you'd like to find. -![Find file search field](/assets/images/help/search/find-file-search-field.png) -4. In the list of results, click the file you wanted to find. - -### Further reading - -- "[About searching on GitHub](/articles/about-searching-on-github)" - diff --git a/content/github/searching-for-information-on-github/getting-started-with-searching-on-github.md b/content/github/searching-for-information-on-github/getting-started-with-searching-on-github.md deleted file mode 100644 index 8711ba12b993..000000000000 --- a/content/github/searching-for-information-on-github/getting-started-with-searching-on-github.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Getting started with searching on GitHub -mapTopic: true -redirect_from: - - /articles/getting-started-with-searching-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/searching-for-information-on-github/index.md b/content/github/searching-for-information-on-github/index.md deleted file mode 100644 index ea8b735f6f54..000000000000 --- a/content/github/searching-for-information-on-github/index.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Searching for information on GitHub -redirect_from: - - /categories/78/articles/ - - /categories/search/ - - /categories/searching-for-information-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /getting-started-with-searching-on-github %} - {% link_in_list /about-searching-on-github %} - {% link_in_list /understanding-the-search-syntax %} - {% link_in_list /troubleshooting-search-queries %} - {% link_in_list /sorting-search-results %} - {% link_in_list /enabling-githubcom-repository-search-in-github-enterprise-server %} -{% topic_link_in_list /searching-on-github %} - {% link_in_list /finding-files-on-github %} - {% link_in_list /searching-for-repositories %} - {% link_in_list /searching-topics %} - {% link_in_list /searching-code %} - {% link_in_list /searching-commits %} - {% link_in_list /searching-issues-and-pull-requests %}{% if currentVersion == "free-pro-team@latest" %} - {% link_in_list /searching-github-marketplace %}{% endif %} - {% link_in_list /searching-users %} - {% link_in_list /searching-for-packages %} - {% link_in_list /searching-wikis %} - {% link_in_list /searching-in-forks %} diff --git a/content/github/searching-for-information-on-github/searching-code.md b/content/github/searching-for-information-on-github/searching-code.md deleted file mode 100644 index ea42305587d8..000000000000 --- a/content/github/searching-for-information-on-github/searching-code.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Searching code -intro: 'You can search for code on {% data variables.product.product_name %} and narrow the results using these code search qualifiers in any combination.' -redirect_from: - - /articles/searching-code - - /github/searching-for-information-on-github/searching-files-in-a-repository-for-exact-matches - - /github/searching-for-information-on-github/searching-code-for-exact-matches -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can search for code globally across all of {% data variables.product.product_name %}, or search for code within a particular repository or organization. To search for code across all public repositories, you must be signed in to a {% data variables.product.product_name %} account. For more information, see "[About searching on GitHub](/articles/about-searching-on-github)." - -You can only search code using these code search qualifiers. Search qualifiers specifically for repositories, users, or commits, will not work when searching for code. - -{% data reusables.search.syntax_tips %} - -### Considerations for code search - -Due to the complexity of searching code, there are some restrictions on how searches are performed: - -- {% data reusables.search.required_login %} -- Code in [forks](/articles/about-forks) is only searchable if the fork has more stars than the parent repository. Forks with fewer stars than the parent repository are **not** indexed for code search. To include forks with more stars than their parent in the search results, you will need to add `fork:true` or `fork:only` to your query. For more information, see "[Searching in forks](/articles/searching-in-forks)." -- Only the _default branch_ is indexed for code search.{% if currentVersion == "free-pro-team@latest" %} -- Only files smaller than 384 KB are searchable.{% else %}* Only files smaller than 5 MB are searchable. -- Only the first 500 KB of each file is searchable.{% endif %} -- Only repositories with fewer than 500,000 files are searchable. -- Users who are signed in can search all public repositories. -- Except with [`filename`](#search-by-filename) searches, you must always include at least one search term when searching source code. For example, searching for [`language:javascript`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ajavascript&type=Code&ref=searchresults) is not valid, while [`amazing language:javascript`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ajavascript&type=Code&ref=searchresults) is. -- At most, search results can show two fragments from the same file, but there may be more results within the file. -- You can't use the following wildcard characters as part of your search query: . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]. The search will simply ignore these symbols. - -### Search by the file contents or file path - -With the `in` qualifier you can restrict your search to the contents of the source code file, the file path, or both. When you omit this qualifier, only the file contents are searched. - -| Qualifier | Example -| ------------- | ------------- -| `in:file` | [**octocat in:file**](https://github.com/search?q=octocat+in%3Afile&type=Code) matches code where "octocat" appears in the file contents. -| `in:path` | [**octocat in:path**](https://github.com/search?q=octocat+in%3Apath&type=Code) matches code where "octocat" appears in the file path. -| | [**octocat in:file,path**](https://github.com/search?q=octocat+in%3Afile%2Cpath&type=Code) matches code where "octocat" appears in the file contents or the file path. - -### Search within a user's or organization's repositories - -To search the code in all repositories owned by a certain user or organization, you can use the `user` or `org` qualifier. To search the code in a specific repository, you can use the `repo` qualifier. - -| Qualifier | Example -| ------------- | ------------- -| user:USERNAME | [**user:defunkt extension:rb**](https://github.com/search?q=user%3Agithub+extension%3Arb&type=Code) matches code from @defunkt that ends in .rb. -| org:ORGNAME |[**org:github extension:js**](https://github.com/search?utf8=%E2%9C%93&q=org%3Agithub+extension%3Ajs&type=Code) matches code from GitHub that ends in .js. -| repo:USERNAME/REPOSITORY | [**repo:mozilla/shumway extension:as**](https://github.com/search?q=repo%3Amozilla%2Fshumway+extension%3Aas&type=Code) matches code from @mozilla's shumway project that ends in .as. - -### Search by file location - -You can use the `path` qualifier to search for source code that appears at a specific location in a repository. Use `path:/` to search for files that are located at the root level of a repository. Or specify a directory name or the path to a directory to search for files that are located within that directory or any of its subdirectories. - -| Qualifier | Example -| ------------- | ------------- -| path:/ | [**octocat filename:readme path:/**](https://github.com/search?utf8=%E2%9C%93&q=octocat+filename%3Areadme+path%3A%2F&type=Code) matches _readme_ files with the word "octocat" that are located at the root level of a repository. -| path:DIRECTORY | [**form path:cgi-bin language:perl**](https://github.com/search?q=form+path%3Acgi-bin+language%3Aperl&type=Code) matches Perl files with the word "form" in a cgi-bin directory, or in any of its subdirectories. -| path:PATH/TO/DIRECTORY | [**console path:app/public language:javascript**](https://github.com/search?q=console+path%3A%22app%2Fpublic%22+language%3Ajavascript&type=Code) matches JavaScript files with the word "console" in an app/public directory, or in any of its subdirectories (even if they reside in app/public/js/form-validators). - -### Search by language - -You can search for code based on what language it's written in. - -| Qualifier | Example -| ------------- | ------------- -| language:LANGUAGE | [**element language:xml size:100**](https://github.com/search?q=element+language%3Axml+size%3A100&type=Code) matches code with the word "element" that's marked as being XML and has exactly 100 bytes. -| | [**display language:scss**](https://github.com/search?q=display+language%3Ascss&type=Code) matches code with the word "display," that's marked as being SCSS. -| | [**org:mozilla language:markdown**](https://github.com/search?utf8=%E2%9C%93&q=org%3Amozilla+language%3Amarkdown&type=Code) matches code from all @mozilla's repositories that's marked as Markdown. - -### Search by file size - -You can use the `size` qualifier to search for source code based on the size of the file where the code exists. The `size` qualifier uses [greater than, less than, and range qualifiers](/articles/understanding-the-search-syntax) to filter results based on the byte size of the file in which the code is found. - -| Qualifier | Example -| ------------- | ------------- -| size:n | [**function size:>10000 language:python**](https://github.com/search?q=function+size%3A%3E10000+language%3Apython&type=Code) matches code with the word "function," written in Python, in files that are larger than 10 KB. - -### Search by filename - -The `filename` qualifier matches code files with a certain filename. You can also find a file in a repository using the file finder. For more information, see "[Finding files on GitHub](/articles/finding-files-on-github)." - -| Qualifier | Example -| ------------- | ------------- -| filename:FILENAME | [**filename:linguist**](https://github.com/search?utf8=%E2%9C%93&q=filename%3Alinguist&type=Code) matches files named "linguist." -| | [**filename:.vimrc commands**](https://github.com/search?q=filename%3A.vimrc+commands&type=Code) matches *.vimrc* files with the word "commands." -| | [**filename:test_helper path:test language:ruby**](https://github.com/search?q=minitest+filename%3Atest_helper+path%3Atest+language%3Aruby&type=Code) matches Ruby files named *test_helper* within the *test* directory. - -### Search by file extension - -The `extension` qualifier matches code files with a certain file extension. - -| Qualifier | Example -| ------------- | ------------- -| extension:EXTENSION | [**form path:cgi-bin extension:pm**](https://github.com/search?q=form+path%3Acgi-bin+extension%3Apm&type=Code) matches code with the word "form," under cgi-bin, with the .pm file extension. -| | [**icon size:>200000 extension:css**](https://github.com/search?utf8=%E2%9C%93&q=icon+size%3A%3E200000+extension%3Acss&type=Code) matches files larger than 200 KB that end in .css and have the word "icon." - -### Further reading - -- "[Sorting search results](/articles/sorting-search-results/)" -- "[Searching in forks](/articles/searching-in-forks)"{% if currentVersion == "free-pro-team@latest" %} -- "[Navigating code on {% data variables.product.prodname_dotcom %}](/github/managing-files-in-a-repository/navigating-code-on-github)"{% endif %} diff --git a/content/github/searching-for-information-on-github/searching-commits.md b/content/github/searching-for-information-on-github/searching-commits.md deleted file mode 100644 index b9830828ca22..000000000000 --- a/content/github/searching-for-information-on-github/searching-commits.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Searching commits -intro: 'You can search for commits on {% data variables.product.product_name %} and narrow the results using these commit search qualifiers in any combination.' -redirect_from: - - /articles/searching-commits -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can search for commits globally across all of {% data variables.product.product_name %}, or search for commits within a particular repository or organization. For more information, see "[About searching on {% data variables.product.company_short %}](/articles/about-searching-on-github)." - -When you search for commits, only the [default branch](/articles/about-branches) of a repository is searched. - -{% data reusables.search.syntax_tips %} - -### Search within commit messages - -You can find commits that contain particular words in the message. For example, [**fix typo**](https://github.com/search?q=fix+typo&type=Commits) matches commits containing the words "fix" and "typo." - -### Search by author or committer - -You can find commits by a particular user with the `author` or `committer` qualifiers. - -| Qualifier | Example -| ------------- | ------------- -| author:USERNAME | [**author:defunkt**](https://github.com/search?q=author%3Adefunkt&type=Commits) matches commits authored by @defunkt. -| committer:USERNAME | [**committer:defunkt**](https://github.com/search?q=committer%3Adefunkt&type=Commits) matches commits committed by @defunkt. - -The `author-name` and `committer-name` qualifiers match commits by the name of the author or committer. - -| Qualifier | Example -| ------------- | ------------- -| author-name:NAME | [**author-name:wanstrath**](https://github.com/search?q=author-name%3Awanstrath&type=Commits) matches commits with "wanstrath" in the author name. -| committer-name:NAME | [**committer-name:wanstrath**](https://github.com/search?q=committer-name%3Awanstrath&type=Commits) matches commits with "wanstrath" in the committer name. - -The `author-email` and `committer-email` qualifiers match commits by the author's or committer's full email address. - -| Qualifier | Example -| ------------- | ------------- -| author-email:EMAIL | [**author-email:chris@github.com**](https://github.com/search?q=author-email%3Achris%40github.com&type=Commits) matches commits authored by chris@github.com. -| committer-email:EMAIL | [**committer-email:chris@github.com**](https://github.com/search?q=committer-email%3Achris%40github.com&type=Commits) matches commits committed by chris@github.com. - -### Search by authored or committed date - -Use the `author-date` and `committer-date` qualifiers to match commits authored or committed within the specified date range. - -{% data reusables.search.date_gt_lt %} - -| Qualifier | Example -| ------------- | ------------- -| author-date:YYYY-MM-DD | [**author-date:<2016-01-01**](https://github.com/search?q=author-date%3A<2016-01-01&type=Commits) matches commits authored before 2016-01-01. -| committer-date:YYYY-MM-DD | [**committer-date:>2016-01-01**](https://github.com/search?q=committer-date%3A<2016-01-01&type=Commits) matches commits committed after 2016-01-01. - -### Filter merge commits - -The `merge` qualifier filters merge commits. - -| Qualifier | Example -| ------------- | ------------- -| `merge:true` | [**merge:true**](https://github.com/search?q=merge%3Atrue&type=Commits) matches merge commits. -| `merge:false` | [**merge:false**](https://github.com/search?q=merge%3Afalse&type=Commits) matches non-merge commits. - -### Search by hash - -The `hash` qualifier matches commits with the specified SHA-1 hash. - -| Qualifier | Example -| ------------- | ------------- -| hash:HASH | [**hash:124a9a0ee1d8f1e15e833aff432fbb3b02632105**](https://github.com/github/gitignore/search?q=hash%3A124a9a0ee1d8f1e15e833aff432fbb3b02632105&type=Commits) matches commits with the hash `124a9a0ee1d8f1e15e833aff432fbb3b02632105`. - -### Search by parent - -The `parent` qualifier matches commits whose parent has the specified SHA-1 hash. - -| Qualifier | Example -| ------------- | ------------- -| parent:HASH | [**parent:124a9a0ee1d8f1e15e833aff432fbb3b02632105**](https://github.com/github/gitignore/search?q=parent%3A124a9a0ee1d8f1e15e833aff432fbb3b02632105&type=Commits&utf8=%E2%9C%93) matches children of commits with the hash `124a9a0ee1d8f1e15e833aff432fbb3b02632105`. - -### Search by tree - -The `tree` qualifier matches commits with the specified SHA-1 git tree hash. - -| Qualifier | Example -| ------------- | ------------- -| tree:HASH | [**tree:99ca967**](https://github.com/github/gitignore/search?q=tree%3A99ca967&type=Commits) matches commits that refer to the tree hash `99ca967`. - -### Search within a user's or organization's repositories - -To search commits in all repositories owned by a certain user or organization, use the `user` or `org` qualifier. To search commits in a specific repository, use the `repo` qualifier. - -| Qualifier | Example -| ------------- | ------------- -| user:USERNAME | [**gibberish user:defunkt**](https://github.com/search?q=gibberish+user%3Adefunkt&type=Commits&utf8=%E2%9C%93) matches commit messages with the word "gibberish" in repositories owned by @defunkt. -| org:ORGNAME | [**test org:github**](https://github.com/search?utf8=%E2%9C%93&q=test+org%3Agithub&type=Commits) matches commit messages with the word "test" in repositories owned by @github. -| repo:USERNAME/REPO | [**language repo:defunkt/gibberish**](https://github.com/search?utf8=%E2%9C%93&q=language+repo%3Adefunkt%2Fgibberish&type=Commits) matches commit messages with the word "language" in @defunkt's "gibberish" repository. - -### Filter public or private repositories - -The `is` qualifier matches public or private commits. - -| Qualifier | Example -| ------------- | ------------- -| `is:public` | [**is:public**](https://github.com/search?q=is%3Apublic&type=Commits) matches public commits. -| `is:private` | [**is:private**](https://github.com/search?q=is%3Aprivate&type=Commits) matches private commits. - -### Further reading - -- "[Sorting search results](/articles/sorting-search-results/)" diff --git a/content/github/searching-for-information-on-github/searching-for-packages.md b/content/github/searching-for-information-on-github/searching-for-packages.md deleted file mode 100644 index 584f9e176739..000000000000 --- a/content/github/searching-for-information-on-github/searching-for-packages.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Searching for packages -intro: 'You can search for packages on {% data variables.product.product_name %} and narrow the results using search qualifiers.' -product: '{% data reusables.gated-features.packages %}' -permissions: Anyone can search for packages they have access to. -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -### About searching for packages - -You can search for packages globally across all of {% data variables.product.product_name %}, or search for packages within a particular organization. For more information, see "[About searching on {% data variables.product.prodname_dotcom %}](/articles/about-searching-on-github)." - -{% if enterpriseServerVersions contains currentVersion %} -You can only search for packages on {% data variables.product.product_location_enterprise %}, not {% data variables.product.prodname_dotcom_the_website %}, even if {% data variables.product.prodname_github_connect %} is enabled. -{% endif %} - -{% data reusables.search.syntax_tips %} - -### Searching within a user's or organization's packages - -To find packages owned by a certain user or organization, use the `user` or `org` qualifier. - -| Qualifier | Example -| ------------- | ------------- -| user:USERNAME | [**user:codertocat**](https://github.com/search?q=user%3Acodertocat&type=RegistryPackages) matches packages owned by @codertocat -| org:ORGNAME | [**org:github**](https://github.com/search?q=org%3Agithub&type=RegistryPackages) matches packages owned by the {% data variables.product.prodname_dotcom %} organization - -### Filtering by package visibility - -To filter your search by whether a package is public or private, use the `is` qualifier. - -| Qualifier | Example | -| ------------- | ------------- -| `is:public`| [**is:public angular**](https://github.com/search?q=is%3Apublic+angular&type=RegistryPackages) matches public packages that contain the word "angular" -| `is:private`| [**is:private php**](https://github.com/search?q=is%3Aprivate+php&type=RegistryPackages) matches private packages that contain the word "php" diff --git a/content/github/searching-for-information-on-github/searching-for-repositories.md b/content/github/searching-for-information-on-github/searching-for-repositories.md deleted file mode 100644 index 2303d7f0e4b8..000000000000 --- a/content/github/searching-for-information-on-github/searching-for-repositories.md +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: Searching for repositories -intro: 'You can search for repositories on {% data variables.product.product_name %} and narrow the results using these repository search qualifiers in any combination.' -redirect_from: - - /articles/searching-repositories/ - - /articles/searching-for-repositories -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can search for repositories globally across all of {% data variables.product.product_name %}, or search for repositories within a particular organization. For more information, see "[About searching on {% data variables.product.prodname_dotcom %}](/articles/about-searching-on-github)." - -To include forks in the search results, you will need to add `fork:true` or `fork:only` to your query. For more information, see "[Searching in forks](/articles/searching-in-forks)." - -{% data reusables.search.syntax_tips %} - -### Search by repository name, description, or contents of the README file - -With the `in` qualifier you can restrict your search to the repository name, repository description, contents of the README file, or any combination of these. When you omit this qualifier, only the repository name and description are searched. - -| Qualifier | Example -| ------------- | ------------- -| `in:name` | [**jquery in:name**](https://github.com/search?q=jquery+in%3Aname&type=Repositories) matches repositories with "jquery" in their name. -| `in:description` | [**jquery in:name,description**](https://github.com/search?q=jquery+in%3Aname%2Cdescription&type=Repositories) matches repositories with "jquery" in their name or description. -| `in:readme` | [**jquery in:readme**](https://github.com/search?q=jquery+in%3Areadme&type=Repositories) matches repositories mentioning "jquery" in their README file. -| `repo:owner/name` | [**repo:octocat/hello-world**](https://github.com/search?q=repo%3Aoctocat%2Fhello-world) matches a specific repository name. - -### Search based on the contents of a repository - -You can find a repository by searching for content in its README file, using the `in:readme` qualifier. - -Besides using `in:readme`, it's not possible to find repositories by searching for specific content within the repository. To search for a specific file or content within a repository, you can use the file finder or code-specific search qualifiers. For more information, see "[Finding files on {% data variables.product.prodname_dotcom %}](/articles/finding-files-on-github)" and "[Searching code](/articles/searching-code)." - -| Qualifier | Example -| ------------- | ------------- -| `in:readme` | [**octocat in:readme**](https://github.com/search?q=octocat+in%3Areadme&type=Repositories) matches repositories mentioning "octocat" in their README file. - -### Search within a user's or organization's repositories - -To search in all repositories owned by a certain user or organization, you can use the `user` or `org` qualifier. - -| Qualifier | Example -| ------------- | ------------- -| user:USERNAME | [**user:defunkt forks:>100**](https://github.com/search?q=user%3Adefunkt+forks%3A%3E%3D100&type=Repositories) matches repositories from @defunkt that have more than 100 forks. -| org:ORGNAME | [**org:github**](https://github.com/search?utf8=%E2%9C%93&q=org%3Agithub&type=Repositories) matches repositories from GitHub. - -### Search by repository size - -The `size` qualifier finds repositories that match a certain size (in kilobytes), using [greater than, less than, and range qualifiers](/articles/understanding-the-search-syntax). - -| Qualifier | Example -| ------------- | ------------- -| size:n | [**size:1000**](https://github.com/search?q=size%3A1000&type=Repositories) matches repositories that are 1 MB exactly. -| | [**size:>=30000**](https://github.com/search?q=size%3A%3E%3D30000&type=Repositories) matches repositories that are at least 30 MB. -| | [**size:<50**](https://github.com/search?q=size%3A%3C50&type=Repositories) matches repositories that are smaller than 50 KB. -| | [**size:50..120**](https://github.com/search?q=size%3A50..120&type=Repositories) matches repositories that are between 50 KB and 120 KB. - -### Search by number of followers - -You can filter repositories based on the number of followers that they have, using the `followers` qualifier with [greater than, less than, and range qualifiers](/articles/understanding-the-search-syntax). - -| Qualifier | Example -| ------------- | ------------- -| followers:n | [**node followers:>=10000**](https://github.com/search?q=node+followers%3A%3E%3D10000) matches repositories with 10,000 or more followers mentioning the word "node". -| | [**styleguide linter followers:1..10**](https://github.com/search?q=styleguide+linter+followers%3A1..10&type=Repositories) matches repositories with between 1 and 10 followers, mentioning the word "styleguide linter." - -### Search by number of forks - -The `forks` qualifier specifies the number of forks a repository should have, using [greater than, less than, and range qualifiers](/articles/understanding-the-search-syntax). - -| Qualifier | Example -| ------------- | ------------- -| forks:n | [**forks:5**](https://github.com/search?q=forks%3A5&type=Repositories) matches repositories with only five forks. -| | [**forks:>=205**](https://github.com/search?q=forks%3A%3E%3D205&type=Repositories) matches repositories with at least 205 forks. -| | [**forks:<90**](https://github.com/search?q=forks%3A%3C90&type=Repositories) matches repositories with fewer than 90 forks. -| | [**forks:10..20**](https://github.com/search?q=forks%3A10..20&type=Repositories) matches repositories with 10 to 20 forks. - -### Search by number of stars - -You can search repositories based on the number of [stars](/articles/saving-repositories-with-stars) a repository has, using [greater than, less than, and range qualifiers](/articles/understanding-the-search-syntax) - -| Qualifier | Example -| ------------- | ------------- -| stars:n | [**stars:500**](https://github.com/search?utf8=%E2%9C%93&q=stars%3A500&type=Repositories) matches repositories with exactly 500 stars. -| | [**stars:10..20**](https://github.com/search?q=stars%3A10..20+size%3A%3C1000&type=Repositories) matches repositories 10 to 20 stars, that are smaller than 1000 KB. -| | [**stars:>=500 fork:true language:php**](https://github.com/search?q=stars%3A%3E%3D500+fork%3Atrue+language%3Aphp&type=Repositories) matches repositories with the at least 500 stars, including forked ones, that are written in PHP. - -### Search by when a repository was created or last updated - -You can filter repositories based on time of creation or time of last update. For repository creation, you can use the `created` qualifier; to find out when a repository was last updated, you'll want to use the `pushed` qualifier. The `pushed` qualifier will return a list of repositories, sorted by the most recent commit made on any branch in the repository. - -Both take a date as a parameter. {% data reusables.time_date.date_format %} {% data reusables.time_date.time_format %} - -{% data reusables.search.date_gt_lt %} - -| Qualifier | Example -| ------------- | ------------- -| created:YYYY-MM-DD | [**webos created:<2011-01-01**](https://github.com/search?q=webos+created%3A%3C2011-01-01&type=Repositories) matches repositories with the word "webos" that were created before 2011. -| pushed:YYYY-MM-DD | [**css pushed:>2013-02-01**](https://github.com/search?utf8=%E2%9C%93&q=css+pushed%3A%3E2013-02-01&type=Repositories) matches repositories with the word "css" that were pushed to after January 2013. -| | [**case pushed:>=2013-03-06 fork:only**](https://github.com/search?q=case+pushed%3A%3E%3D2013-03-06+fork%3Aonly&type=Repositories) matches repositories with the word "case" that were pushed to on or after March 6th, 2013, and that are forks. - -### Search by language - -You can search repositories based on the main language they're written in. - -| Qualifier | Example -| ------------- | ------------- -| language:LANGUAGE | [**rails language:javascript**](https://github.com/search?q=rails+language%3Ajavascript&type=Repositories) matches repositories with the word "rails" that are written in JavaScript. - -### Search by topic - -You can find all of the repositories that are classified with a particular [topic](/articles/classifying-your-repository-with-topics). - -| Qualifier | Example -| ------------- | ------------- -| topic:TOPIC | [**topic:jekyll**](https://github.com/search?utf8=%E2%9C%93&q=topic%3Ajekyll&type=Repositories&ref=searchresults) matches repositories that have been classified with the topic "jekyll." - -### Search by number of topics - -You can search repositories by the number of [topics](/articles/classifying-your-repository-with-topics) that have been applied to them, using the `topics` qualifier along with [greater than, less than, and range qualifiers](/articles/understanding-the-search-syntax). - -| Qualifier | Example -| ------------- | ------------- -| topics:n | [**topics:5**](https://github.com/search?utf8=%E2%9C%93&q=topics%3A5&type=Repositories&ref=searchresults) matches repositories that have five topics. -| | [**topics:>3**](https://github.com/search?utf8=%E2%9C%93&q=topics%3A%3E3&type=Repositories&ref=searchresults) matches repositories that have more than three topics. - -### Search by license - -You can search repositories by their [license](/articles/licensing-a-repository). You must use a [license keyword](/articles/licensing-a-repository/#searching-github-by-license-type) to filter repositories by a particular license or license family. - -| Qualifier | Example -| ------------- | ------------- -| license:LICENSE_KEYWORD | [**license:apache-2.0**](https://github.com/search?utf8=%E2%9C%93&q=license%3Aapache-2.0&type=Repositories&ref=searchresults) matches repositories that are licensed under Apache License 2.0. - -### Search by public or private repository - -You can filter your search based on whether a repository is public or private. - -| Qualifier | Example -| ------------- | ------------- -| `is:public` | [**is:public org:github**](https://github.com/search?q=is%3Apublic+org%3Agithub&type=Repositories&utf8=%E2%9C%93) matches repositories owned by GitHub that are public. -| `is:private` | [**is:private pages**](https://github.com/search?utf8=%E2%9C%93&q=pages+is%3Aprivate&type=Repositories) matches private repositories you have access to and that contain the word "pages." - -{% if currentVersion == "free-pro-team@latest" %} - -### Search based on whether a repository is a mirror - -You can search repositories based on whether or not they're a mirror and are hosted elsewhere. For more information, see "[Finding ways to contribute to open source on {% data variables.product.prodname_dotcom %}](/github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github)." - -| Qualifier | Example -| ------------- | ------------- -| `mirror:true` | [**mirror:true GNOME**](https://github.com/search?utf8=%E2%9C%93&q=mirror%3Atrue+GNOME&type=) matches repositories that are mirrors and contain the word "GNOME." -| `mirror:false` | [**mirror:false GNOME**](https://github.com/search?utf8=%E2%9C%93&q=mirror%3Afalse+GNOME&type=) matches repositories that are not mirrors and contain the word "GNOME." - -{% endif %} - -### Search based on whether a repository is archived - -You can search repositories based on whether or not they're [archived](/articles/about-archiving-repositories). - -| Qualifier | Example -| ------------- | ------------- -| `archived:true` | [**archived:true GNOME**](https://github.com/search?utf8=%E2%9C%93&q=archived%3Atrue+GNOME&type=) matches repositories that are archived and contain the word "GNOME." -| `archived:false` | [**archived:false GNOME**](https://github.com/search?utf8=%E2%9C%93&q=archived%3Afalse+GNOME&type=) matches repositories that are not archived and contain the word "GNOME." - -{% if currentVersion == "free-pro-team@latest" %} -### Search based on number of issues with `good first issue` or `help wanted` labels - -You can search for repositories that have a minimum number of issues labeled `help-wanted` or `good-first-issue` with the qualifiers `help-wanted-issues:>n` and `good-first-issues:>n`. For more information, see "[Encouraging helpful contributions to your project with labels](/github/building-a-strong-community/encouraging-helpful-contributions-to-your-project-with-labels)." - -| Qualifier | Example -| ------------- | ------------- -| `good-first-issues:>n` | [**good-first-issues:>2 javascript**](https://github.com/search?utf8=%E2%9C%93&q=javascript+good-first-issues%3A%3E2&type=) matches repositories with more than two issues labeled `good-first-issue` and that contain the word "javascript." -| `help-wanted-issues:>n`|[**help-wanted-issues:>4 react**](https://github.com/search?utf8=%E2%9C%93&q=react+help-wanted-issues%3A%3E4&type=) matches repositories with more than four issues labeled `help-wanted` and that contain the word "React." -{% endif %} - -### Further reading - -- "[Sorting search results](/articles/sorting-search-results/)" -- "[Searching in forks](/articles/searching-in-forks)" diff --git a/content/github/searching-for-information-on-github/searching-github-marketplace.md b/content/github/searching-for-information-on-github/searching-github-marketplace.md deleted file mode 100644 index 8521b5faaa59..000000000000 --- a/content/github/searching-for-information-on-github/searching-github-marketplace.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Searching GitHub Marketplace -intro: 'You can search for apps and actions that are available on {% data variables.product.prodname_marketplace %}.' -versions: - free-pro-team: '*' ---- - -### About searching {% data variables.product.prodname_marketplace %} - -You can find apps and actions on {% data variables.product.prodname_marketplace %} in two ways: - -- Search from in {% data variables.product.prodname_marketplace %}. -- Search across all of {% data variables.product.prodname_dotcom_the_website %} and then filter the results. - -### Searching in {% data variables.product.prodname_marketplace %} - -1. At the top of any page, click **Marketplace**. - ![Marketplace link](/assets/images/help/search/marketplace-link.png) -2. Type any keywords and press **Enter**. - ![Search for linter on {% data variables.product.prodname_marketplace %}](/assets/images/help/search/marketplace-apps-and-actions-search-field.png) -3. Optionally, filter your results by clicking one or more options in the left sidebar. - -### Searching across {% data variables.product.prodname_dotcom_the_website %} - -Anytime you search across all of {% data variables.product.prodname_dotcom_the_website %}, you can filter the results to see matching apps and actions from {% data variables.product.prodname_marketplace %}. - -1. Navigate to https://github.com/search. -2. Type any keywords and press **Enter**. - ![search field](/assets/images/help/search/search-field.png) -3. In the left sidebar, click **Marketplace**. - ![Search results for linter with Marketplace side-menu option highlighted](/assets/images/help/search/marketplace-left-side-navigation.png) - -### Further reading - -- "[About {% data variables.product.prodname_marketplace %}](/github/customizing-your-github-workflow/about-github-marketplace)" -- "[Using actions from {% data variables.product.prodname_marketplace %} in your workflow](/actions/automating-your-workflow-with-github-actions/using-actions-from-github-marketplace-in-your-workflow)" diff --git a/content/github/searching-for-information-on-github/searching-in-forks.md b/content/github/searching-for-information-on-github/searching-in-forks.md deleted file mode 100644 index 207c5072d42f..000000000000 --- a/content/github/searching-for-information-on-github/searching-in-forks.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Searching in forks -intro: 'By default, [forks](/articles/about-forks) are not shown in search results. You can choose to include them in repository searches, and in code searches if they meet certain criteria.' -redirect_from: - - /articles/searching-in-forks -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -To show forks in [repository search](/articles/searching-for-repositories) results, add `fork:true` or `fork:only` to your query. - -Forks are only indexed for [code search](/articles/searching-code) when they have more stars than the parent repository. You will not be able to search the code in a fork that has less stars than its parent. To show forks with more stars than the parent repository in code search results, add `fork:true` or `fork:only` to your query. - -The `fork:true` qualifier finds all results that match your search query, including forks. The `fork:only` qualifier finds _only_ forks that match your search query. - -| Qualifier | Example -| ------------- | ------------- -| `fork:true` | [**github fork:true**](https://github.com/search?q=github+fork%3Atrue&type=Repositories) matches all repositories containing the word "github," including forks. -| | [**android language:java fork:true**](https://github.com/search?q=android+language%3Ajava+fork%3Atrue&type=Code) matches code with the word "android" that's written in Java, in both forks and regular repositories. -| `fork:only` | [**github fork:only**](https://github.com/search?q=github+fork%3Aonly&type=Repositories) matches all fork repositories containing the word "github." -| | [**forks:>500 fork:only**](https://github.com/search?q=forks%3A%3E500+fork%3Aonly&type=Repositories) matches repositories with more than 500 forks, and only returns those that are forks. - -### Further reading - -- "[About forks](/articles/about-forks)" -- "[About searching on GitHub](/articles/about-searching-on-github)" diff --git a/content/github/searching-for-information-on-github/searching-issues-and-pull-requests.md b/content/github/searching-for-information-on-github/searching-issues-and-pull-requests.md deleted file mode 100644 index ef77c70f5239..000000000000 --- a/content/github/searching-for-information-on-github/searching-issues-and-pull-requests.md +++ /dev/null @@ -1,336 +0,0 @@ ---- -title: Searching issues and pull requests -intro: 'You can search for issues and pull requests on {% data variables.product.product_name %} and narrow the results using these search qualifiers in any combination.' -redirect_from: - - /articles/searching-issues/ - - /articles/searching-issues-and-pull-requests -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can search for issues and pull requests globally across all of {% data variables.product.product_name %}, or search for issues and pull requests within a particular organization. For more information, see "[About searching on {% data variables.product.company_short %}](/articles/about-searching-on-github)." - -{% tip %} - -**Tips:**{% if enterpriseServerVersions contains currentVersion %} - - This article contains example searches on the {% data variables.product.prodname_dotcom %}.com website, but you can use the same search filters on {% data variables.product.product_location_enterprise %}.{% endif %} - - For a list of search syntaxes that you can add to any search qualifier to further improve your results, see "[Understanding the search syntax](/articles/understanding-the-search-syntax)". - - Use quotations around multi-word search terms. For example, if you want to search for issues with the label "In progress," you'd search for `label:"in progress"`. Search is not case sensitive. - - {% data reusables.search.search_issues_and_pull_requests_shortcut %} - - {% endtip %} - -### Search only issues or pull requests - -By default, {% data variables.product.product_name %} search will return both issues and pull requests. However, you can restrict search results to just issues or pull requests using the `type` or `is` qualifier. - -| Qualifier | Example -| ------------- | ------------- -| `type:pr` | [**cat type:pr**](https://github.com/search?q=cat+type%3Apr&type=Issues) matches pull requests with the word "cat." -| `type:issue` | [**github commenter:defunkt type:issue**](https://github.com/search?q=github+commenter%3Adefunkt+type%3Aissue&type=Issues) matches issues that contain the word "github," and have a comment by @defunkt. -| `is:pr` | [**event is:pr**](https://github.com/search?utf8=%E2%9C%93&q=event+is%3Apr&type=) matches pull requests with the word "event." -| `is:issue` | [**is:issue label:bug is:closed**](https://github.com/search?utf8=%E2%9C%93&q=is%3Aissue+label%3Abug+is%3Aclosed&type=) matches closed issues with the label "bug." - -### Search by the title, body, or comments - -With the `in` qualifier you can restrict your search to the title, body, comments, or any combination of these. When you omit this qualifier, the title, body, and comments are all searched. - -| Qualifier | Example -| ------------- | ------------- -| `in:title` | [**warning in:title**](https://github.com/search?q=warning+in%3Atitle&type=Issues) matches issues with "warning" in their title. -| `in:body` | [**error in:title,body**](https://github.com/search?q=error+in%3Atitle%2Cbody&type=Issues) matches issues with "error" in their title or body. -| `in:comments` | [**shipit in:comments**](https://github.com/search?q=shipit+in%3Acomment&type=Issues) matches issues mentioning "shipit" in their comments. - -### Search within a user's or organization's repositories - -To search issues and pull requests in all repositories owned by a certain user or organization, you can use the `user` or `org` qualifier. To search issues and pull requests in a specific repository, you can use the `repo` qualifier. - -| Qualifier | Example -| ------------- | ------------- -| user:USERNAME | [**user:defunkt ubuntu**](https://github.com/search?q=user%3Adefunkt+ubuntu&type=Issues) matches issues with the word "ubuntu" from repositories owned by @defunkt. -| org:ORGNAME | [**org:github**](https://github.com/search?q=org%3Agithub&type=Issues&utf8=%E2%9C%93) matches issues in repositories owned by the GitHub organization. -| repo:USERNAME/REPOSITORY | [**repo:mozilla/shumway created:<2012-03-01**](https://github.com/search?q=repo%3Amozilla%2Fshumway+created%3A%3C2012-03-01&type=Issues) matches issues from @mozilla's shumway project that were created before March 2012. - -### Search by open or closed state - -You can filter issues and pull requests based on whether they're open or closed using the `state` or `is` qualifier. - -| Qualifier | Example -| ------------- | ------------- -| `state:open` | [**libraries state:open mentions:vmg**](https://github.com/search?utf8=%E2%9C%93&q=libraries+state%3Aopen+mentions%3Avmg&type=Issues) matches open issues that mention @vmg with the word "libraries." -| `state:closed` | [**design state:closed in:body**](https://github.com/search?utf8=%E2%9C%93&q=design+state%3Aclosed+in%3Abody&type=Issues) matches closed issues with the word "design" in the body. -| `is:open` | [**performance is:open is:issue**](https://github.com/search?q=performance+is%3Aopen+is%3Aissue&type=Issues) matches open issues with the word "performance." -| `is:closed` | [**android is:closed**](https://github.com/search?utf8=%E2%9C%93&q=android+is%3Aclosed&type=) matches closed issues and pull requests with the word "android." - -### Search by public or private repository - -If you're [searching across all of {% data variables.product.product_name %}](https://github.com/search), it can be helpful to filter your results based on whether the repository is public or private. You can do this with `is:public` and `is:private`. - -| Qualifier | Example -| ------------- | ------------- -| `is:public` | [**is:public**](https://github.com/search?q=is%3Apublic&type=Issues) matches issues and pull requests in all public repositories. -| `is:private` | [**is:private cupcake**](https://github.com/search?q=is%3Aprivate&type=Issues) matches issues and pull requests that contain the word "cupcake" in private repositories you have access to. - -### Search by author - -The `author` qualifier finds issues and pull requests created by a certain user or integration account. - -| Qualifier | Example -| ------------- | ------------- -| author:USERNAME | [**cool author:gjtorikian**](https://github.com/search?q=cool+author%3Agjtorikian&type=Issues) matches issues and pull requests with the word "cool" that were created by @gjtorikian. -| | [**bootstrap in:body author:mdo**](https://github.com/search?q=bootstrap+in%3Abody+author%3Amdo&type=Issues) matches issues written by @mdo that contain the word "bootstrap" in the body. -| author:app/USERNAME | [**author:app/robot**](https://github.com/search?q=author%3Aapp%2Frobot&type=Issues) matches issues created by the integration account named "robot." - -### Search by assignee - -The `assignee` qualifier finds issues and pull requests that are assigned to a certain user. You cannot search for issues and pull requests that have _any_ assignee, however, you can search for [issues and pull requests that have no assignee](#search-by-missing-metadata). - -| Qualifier | Example -| ------------- | ------------- -| assignee:USERNAME | [**assignee:vmg repo:libgit2/libgit2**](https://github.com/search?utf8=%E2%9C%93&q=assignee%3Avmg+repo%3Alibgit2%2Flibgit2&type=Issues) matches issues and pull requests in libgit2's project libgit2 that are assigned to @vmg. - -### Search by mention - -The `mentions` qualifier finds issues that mention a certain user. For more information, see "[Mentioning people and teams](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams)." - -| Qualifier | Example -| ------------- | ------------- -| mentions:USERNAME | [**resque mentions:defunkt**](https://github.com/search?q=resque+mentions%3Adefunkt&type=Issues) matches issues with the word "resque" that mention @defunkt. - -### Search by team mention - -For organizations and teams you belong to, you can use the `team` qualifier to find issues or pull requests that @mention a certain team within that organization. Replace these sample names with your organization and team name to perform a search. - -| Qualifier | Example -| ------------- | ------------- -| team:ORGNAME/TEAMNAME | **team:jekyll/owners** matches issues where the `@jekyll/owners` team is mentioned. -| | **team:myorg/ops is:open is:pr** matches open pull requests where the `@myorg/ops` team is mentioned. - -### Search by commenter - -The `commenter` qualifier finds issues that contain a comment from a certain user. - -| Qualifier | Example -| ------------- | ------------- -| commenter:USERNAME | [**github commenter:defunkt org:github**](https://github.com/search?utf8=%E2%9C%93&q=github+commenter%3Adefunkt+org%3Agithub&type=Issues) matches issues in repositories owned by GitHub, that contain the word "github," and have a comment by @defunkt. - -### Search by a user that's involved in an issue or pull request - -You can use the `involves` qualifier to find issues that in some way involve a certain user. The `involves` qualifier is a logical OR between the `author`, `assignee`, `mentions`, and `commenter` qualifiers for a single user. In other words, this qualifier finds issues and pull requests that were either created by a certain user, assigned to that user, mention that user, or were commented on by that user. - -| Qualifier | Example -| ------------- | ------------- -| involves:USERNAME | **[involves:defunkt involves:jlord](https://github.com/search?q=involves%3Adefunkt+involves%3Ajlord&type=Issues)** matches issues either @defunkt or @jlord are involved in. -| | [**NOT bootstrap in:body involves:mdo**](https://github.com/search?q=NOT+bootstrap+in%3Abody+involves%3Amdo&type=Issues) matches issues @mdo is involved in that do not contain the word "bootstrap" in the body. - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -### Search for linked issues and pull requests -You can narrow your results to only include issues that are linked to a pull request by a closing reference, or pull requests that are linked to an issue that the pull request may close. - -| Qualifier | Example | -| ------------- | ------------- | -| `linked:pr` | [**repo:desktop/desktop is:open linked:pr**](https://github.com/search?q=repo%3Adesktop%2Fdesktop+is%3Aopen+linked%3Apr) matches open issues in the `desktop/desktop` repository that are linked to a pull request by a closing reference. | -| `linked:issue` | [**repo:desktop/desktop is:closed linked:issue**](https://github.com/search?q=repo%3Adesktop%2Fdesktop+is%3Aclosed+linked%3Aissue) matches closed pull requests in the `desktop/desktop` repository that were linked to an issue that the pull request may have closed. | -| `-linked:pr` | [**repo:desktop/desktop is:open -linked:pr**](https://github.com/search?q=repo%3Adesktop%2Fdesktop+is%3Aopen+-linked%3Apr) matches open issues in the `desktop/desktop` repository that are not linked to a pull request by a closing reference. | -| `-linked:issue` | [**repo:desktop/desktop is:open -linked:issue**](https://github.com/search?q=repo%3Adesktop%2Fdesktop+is%3Aopen+-linked%3Aissue) matches open pull requests in the `desktop/desktop` repository that are not linked to an issue that the pull request may close. |{% endif %} - -### Search by label - -You can narrow your results by labels, using the `label` qualifier. Since issues can have multiple labels, you can list a separate qualifier for each issue. - -| Qualifier | Example -| ------------- | ------------- -| label:LABEL | [**label:"help wanted" language:ruby**](https://github.com/search?utf8=%E2%9C%93&q=label%3A%22help+wanted%22+language%3Aruby&type=Issues) matches issues with the label "help wanted" that are in Ruby repositories. -| | [**broken in:body -label:bug label:priority**](https://github.com/search?q=broken+in%3Abody+-label%3Abug+label%3Apriority&type=Issues) matches issues with the word "broken" in the body, that lack the label "bug", but *do* have the label "priority." -| | [**label:bug label:resolved**](https://github.com/search?l=&q=label%3Abug+label%3Aresolved&type=Issues) matches issues with the labels "bug" and "resolved." - -### Search by milestone - -The `milestone` qualifier finds issues or pull requests that are a part of a [milestone](/articles/about-milestones) within a repository. - -| Qualifier | Example -| ------------- | ------------- -| milestone:MILESTONE | [**milestone:"overhaul"**](https://github.com/search?utf8=%E2%9C%93&q=milestone%3A%22overhaul%22&type=Issues) matches issues that are in a milestone named "overhaul." -| | [**milestone:"bug fix"**](https://github.com/search?utf8=%E2%9C%93&q=milestone%3A%22bug+fix%22&type=Issues) matches issues that are in a milestone named "bug fix." - -### Search by project board - -You can use the `project` qualifier to find issues that are associated with a specific [project board](/articles/about-project-boards/) in a repository or organization. You must search project boards by the project board number. You can find the project board number at the end of a project board's URL. - -| Qualifier | Example -| ------------- | ------------- -| project:PROJECT_BOARD | **project:github/57** matches issues owned by GitHub that are associated with the organization's project board 57. -| project:REPOSITORY/PROJECT_BOARD | **project:github/linguist/1** matches issues that are associated with project board 1 in @github's linguist repository. - -### Search by commit status - -You can filter pull requests based on the status of the commits. This is especially useful if you are using [the Status API](/v3/repos/statuses/) or a CI service. - -| Qualifier | Example -| ------------- | ------------- -| `status:pending` | [**language:go status:pending**](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago+status%3Apending) matches pull requests opened into Go repositories where the status is pending. -| `status:success` | [**is:open status:success finally in:body**](https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+status%3Asuccess+finally+in%3Abody&type=Issues) matches open pull requests with the word "finally" in the body with a successful status. -| `status:failure` | [**created:2015-05-01..2015-05-30 status:failure**](https://github.com/search?utf8=%E2%9C%93&q=created%3A2015-05-01..2015-05-30+status%3Afailure&type=Issues) matches pull requests opened on May 2015 with a failed status. - -### Search by commit SHA - -If you know the specific SHA hash of a commit, you can use it to search for pull requests that contain that SHA. The SHA syntax must be at least seven characters. - -| Qualifier | Example -| ------------- | ------------- -| SHA | [**e1109ab**](https://github.com/search?q=e1109ab&type=Issues) matches pull requests with a commit SHA that starts with `e1109ab`. -| | [**0eff326d6213c is:merged**](https://github.com/search?q=0eff326d+is%3Amerged&type=Issues) matches merged pull requests with a commit SHA that starts with `0eff326d6213c`. - -### Search by branch name - -You can filter pull requests based on the branch they came from (the "head" branch) or the branch they are merging into (the "base" branch). - -| Qualifier | Example -| ------------- | ------------- -| head:HEAD_BRANCH | [**head:change is:closed is:unmerged**](https://github.com/search?utf8=%E2%9C%93&q=head%3Achange+is%3Aclosed+is%3Aunmerged) matches pull requests opened from branch names beginning with the word "change" that are closed. -| base:BASE_BRANCH | [**base:gh-pages**](https://github.com/search?utf8=%E2%9C%93&q=base%3Agh-pages) matches pull requests that are being merged into the `gh-pages` branch. - -### Search by language - -With the `language` qualifier you can search for issues and pull requests within repositories that are written in a certain language. - -| Qualifier | Example -| ------------- | ------------- -| language:LANGUAGE | [**language:ruby state:open**](https://github.com/search?q=language%3Aruby+state%3Aopen&type=Issues) matches open issues that are in Ruby repositories. - -### Search by number of comments - -You can use the `comments` qualifier along with [greater than, less than, and range qualifiers](/articles/understanding-the-search-syntax) to search by the number of comments. - -| Qualifier | Example -| ------------- | ------------- -| comments:n | [**state:closed comments:>100**](https://github.com/search?q=state%3Aclosed+comments%3A%3C100&type=Issues) matches closed issues with more than 100 comments. -| | [**comments:500..1000**](https://github.com/search?q=comments%3A500..1000&type=Issues) matches issues with comments ranging from 500 to 1,000. - -### Search by number of interactions - -You can filter issues and pull requests by the number of interactions with the `interactions` qualifier along with [greater than, less than, and range qualifiers](/articles/understanding-the-search-syntax). The interactions count is the number of reactions and comments on an issue or pull request. - -| Qualifier | Example -| ------------- | ------------- -| interactions:n | [** interactions:>2000**](https://github.com/search?q=interactions%3A%3E2000) matches pull requests or issues with more than 2000 interactions. -| | [**interactions:500..1000**](https://github.com/search?q=interactions%3A500..1000) matches pull requests or issues with interactions ranging from 500 to 1,000. - -### Search by number of reactions - -You can filter issues and pull requests by the number of reactions using the `reactions` qualifier along with [greater than, less than, and range qualifiers](/articles/understanding-the-search-syntax). - -| Qualifier | Example -| ------------- | ------------- -| reactions:n | [** reactions:>1000**](https://github.com/search?q=reactions%3A%3E1000&type=Issues) matches issues with more than 1000 reactions. -| | [**reactions:500..1000**](https://github.com/search?q=reactions%3A500..1000) matches issues with reactions ranging from 500 to 1,000. - -### Search for draft pull requests -You can filter for draft pull requests. For more information, see "[About pull requests](/articles/about-pull-requests#draft-pull-requests)." - -| Qualifier | Example -| ------------- | -------------{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -| `draft:true` | [**draft:true**](https://github.com/search?q=draft%3Atrue) matches draft pull requests. -| `draft:false` | [**draft:false**](https://github.com/search?q=draft%3Afalse) matches pull requests that are ready for review.{% else %} -| `is:draft` | [**is:draft**](https://github.com/search?q=is%3Adraft) matches draft pull requests.{% endif %} - -### Search by pull request review status and reviewer - -You can filter pull requests based on their [review status](/articles/about-pull-request-reviews) (_none_, _required_, _approved_, or _changes requested_), by reviewer, and by requested reviewer. - -| Qualifier | Example -| ------------- | ------------- -| `review:none` | [**type:pr review:none**](https://github.com/search?utf8=%E2%9C%93&q=type%3Apr+review%3Anone&type=Issues) matches pull requests that have not been reviewed. -| `review:required` | [**type:pr review:required**](https://github.com/search?utf8=%E2%9C%93&q=type%3Apr+review%3Arequired&type=Issues) matches pull requests that require a review before they can be merged. -| `review:approved` | [**type:pr review:approved**](https://github.com/search?utf8=%E2%9C%93&q=type%3Apr+review%3Aapproved&type=Issues) matches pull requests that a reviewer has approved. -| `review:changes_requested` | [**type:pr review:changes_requested**](https://github.com/search?utf8=%E2%9C%93&q=type%3Apr+review%3Achanges_requested&type=Issues) matches pull requests in which a reviewer has asked for changes. -| reviewed-by:USERNAME | [**type:pr reviewed-by:gjtorikian**](https://github.com/search?utf8=%E2%9C%93&q=type%3Apr+reviewed-by%3Agjtorikian&type=Issues) matches pull requests reviewed by a particular person. -| review-requested:USERNAME | [**type:pr review-requested:benbalter**](https://github.com/search?utf8=%E2%9C%93&q=type%3Apr+review-requested%3Abenbalter&type=Issues) matches pull requests where a specific person is requested for review. Requested reviewers are no longer listed in the search results after they review a pull request. If the requested person is on a team that is requested for review, then review requests for that team will also appear in the search results. -| team-review-requested:TEAMNAME | [**type:pr team-review-requested:atom/design**](https://github.com/search?q=type%3Apr+team-review-requested%3Aatom%2Fdesign&type=Issues) matches pull requests that have review requests from the team `atom/design`. Requested reviewers are no longer listed in the search results after they review a pull request. - -### Search by when an issue or pull request was created or last updated - -You can filter issues based on times of creation, or when they were last updated. For issue creation, you can use the `created` qualifier; to find out when an issue was last updated, you'll want to use the `updated` qualifier. - -Both take a date as a parameter. {% data reusables.time_date.date_format %} {% data reusables.time_date.time_format %} - -{% data reusables.search.date_gt_lt %} - -| Qualifier | Example -| ------------- | ------------- -| created:YYYY-MM-DD | [**language:c# created:<2011-01-01 state:open**](https://github.com/search?q=language%3Ac%23+created%3A%3C2011-01-01+state%3Aopen&type=Issues) matches open issues that were created before 2011 in repositories written in C#. -| updated:YYYY-MM-DD | [**weird in:body updated:>=2013-02-01**](https://github.com/search?q=weird+in%3Abody+updated%3A%3E%3D2013-02-01&type=Issues) matches issues with the word "weird" in the body that were updated after February 2013. - -### Search by when an issue or pull request was closed - -You can filter issues and pull requests based on when they were closed, using the `closed` qualifier. - -This qualifier takes a date as its parameter. {% data reusables.time_date.date_format %} {% data reusables.time_date.time_format %} - -{% data reusables.search.date_gt_lt %} - -| Qualifier | Example -| ------------- | ------------- -| closed:YYYY-MM-DD | [**language:swift closed:>2014-06-11**](https://github.com/search?q=language%3Aswift+closed%3A%3E2014-06-11&type=Issues) matches issues and pull requests in Swift that were closed after June 11, 2014. -| | [**data in:body closed:<2012-10-01**](https://github.com/search?utf8=%E2%9C%93&q=data+in%3Abody+closed%3A%3C2012-10-01+&type=Issues) matches issues and pull requests with the word "data" in the body that were closed before October 2012. - -### Search by when a pull request was merged - -You can filter pull requests based on when they were merged, using the `merged` qualifier. - -This qualifier takes a date as its parameter. {% data reusables.time_date.date_format %} {% data reusables.time_date.time_format %} - -{% data reusables.search.date_gt_lt %} - -| Qualifier | Example -| ------------- | ------------- -| merged:YYYY-MM-DD | [**language:javascript merged:<2011-01-01**](https://github.com/search?q=language%3Ajavascript+merged%3A%3C2011-01-01+&type=Issues) matches pull requests in JavaScript repositories that were merged before 2011. -| | [**fast in:title language:ruby merged:>=2014-05-01**](https://github.com/search?q=fast+in%3Atitle+language%3Aruby+merged%3A%3E%3D2014-05-01+&type=Issues) matches pull requests in Ruby with the word "fast" in the title that were merged after May 2014. - -### Search based on whether a pull request is merged or unmerged - -You can filter pull requests based on whether they're merged or unmerged using the `is` qualifier. - -| Qualifier | Example -| ------------- | ------------- -| `is:merged` | [**bugfix is:pr is:merged**](https://github.com/search?utf8=%E2%9C%93&q=bugfix+is%3Apr+is%3Amerged&type=) matches merged pull requests with the word "bugfix." -| `is:unmerged` | [**error is:unmerged**](https://github.com/search?utf8=%E2%9C%93&q=error+is%3Aunmerged&type=) matches closed issues and pull requests with the word "error." - -### Search based on whether a repository is archived - -The `archived` qualifier filters your results based on whether an issue or pull request is in an archived repository. - -| Qualifier | Example -| ------------- | ------------- -| `archived:true` | [**archived:true GNOME**](https://github.com/search?q=archived%3Atrue+GNOME&type=) matches issues and pull requests that contain the word "GNOME" in archived repositories you have access to. -| `archived:false` | [**archived:false GNOME**](https://github.com/search?q=archived%3Afalse+GNOME&type=) matches issues and pull requests that contain the word "GNOME" in unarchived repositories you have access to. - -### Search based on whether a conversation is locked - -You can search for an issue or pull request that has a locked conversation using the `is` qualifier. For more information, see "[Locking conversations](/articles/locking-conversations)." - -| Qualifier | Example -| ------------- | ------------- -| `is:locked` | [**code of conduct is:locked is:issue archived:false**](https://github.com/search?q=code+of+conduct+is%3Alocked+is%3Aissue+archived%3Afalse) matches issues or pull requests with the words "code of conduct" that have a locked conversation in a repository that is not archived. -| `is:unlocked` | [**code of conduct is:unlocked is:issue archived:false**](https://github.com/search?q=code+of+conduct+is%3Aunlocked+archived%3Afalse) matches issues or pull requests with the words "code of conduct" that have an unlocked conversation in a repository that is not archived. - -### Search by missing metadata - -You can narrow your search to issues and pull requests that are missing certain metadata, using the `no` qualifier. That metadata includes: - -* Labels -* Milestones -* Assignees -* Projects - -| Qualifier | Example -| ------------- | ------------- -| `no:label` | [**priority no:label**](https://github.com/search?q=priority+no%3Alabel&type=Issues) matches issues and pull requests with the word "priority" that also don't have any labels. -| `no:milestone` | [**sprint no:milestone type:issue**](https://github.com/search?q=sprint+no%3Amilestone+type%3Aissue&type=Issues) matches issues not associated with a milestone containing the word "sprint." -| `no:assignee` | [**important no:assignee language:java type:issue**](https://github.com/search?q=important+no%3Aassignee+language%3Ajava+type%3Aissue&type=Issues) matches issues not associated with an assignee, containing the word "important," and in Java repositories. -| `no:project` | [**build no:project**](https://github.com/search?utf8=%E2%9C%93&q=build+no%3Aproject&type=Issues) matches issues not associated with a project board, containing the word "build." - -### Further reading - -- "[Sorting search results](/articles/sorting-search-results/)" diff --git a/content/github/searching-for-information-on-github/searching-on-github.md b/content/github/searching-for-information-on-github/searching-on-github.md deleted file mode 100644 index 9eebbac9a383..000000000000 --- a/content/github/searching-for-information-on-github/searching-on-github.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Searching on GitHub -mapTopic: true -redirect_from: - - /articles/searching-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/searching-for-information-on-github/searching-topics.md b/content/github/searching-for-information-on-github/searching-topics.md deleted file mode 100644 index 35f5b7b3dc41..000000000000 --- a/content/github/searching-for-information-on-github/searching-topics.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Searching topics -intro: 'You can search for topics associated with repositories on {% data variables.product.product_name %}.' -redirect_from: - - /articles/searching-topics -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Search {% data variables.product.product_name %} for topics - -You can search for topics on {% data variables.product.product_name %}, explore related topics, and see how many repositories are associated with a certain topic. - -1. Navigate to https://github.com/search. -2. Type a topic keyword. - ![search field](/assets/images/help/search/search-field.png) -3. In the left sidebar, to narrow your search to topics, click **Topics**. -{% if currentVersion == "free-pro-team@latest" %} - ![Jekyll repository search results page with topics side-menu option highlighted](/assets/images/help/search/topic-left-side-navigation-dotcom.png){% else %} - ![Jekyll repository search results page on dotcom with topics side-menu option highlighted](/assets/images/help/search/topic-left-side-navigation.png){% endif %} - -### Narrowing your search with search qualifiers - -If you want to explore repositories about a certain topic, find projects to contribute to, or learn which topics are most popular on {% data variables.product.product_name %}, you can search topics with the search qualifiers `is:featured`, `is:curated`, `repositories:n` and `created:YYYY-MM-DD`. - -The `is:featured` search qualifier will narrow search results to the topics with the most repositories on {% data variables.product.product_name %}. These topics are also featured at https://github.com/topics/. - -The `is:curated` search qualifier will narrow search results to topics that community members have added extra information to. For more information, see the explore repository at https://github.com/github/explore. - -You can filter topics based when they were created using the date parameter and `created:` or based on how many repositories are associated with this topic using `repositories:n`. Both of these qualifiers can use the [greater than and less than range qualifiers](/articles/understanding-the-search-syntax). - -{% data reusables.time_date.date_format %} {% data reusables.time_date.time_format %} - -{% data reusables.search.date_gt_lt %} - -| Qualifier | Example | -| ------------- | ------------- -| `is:curated`| [**is:curated javascript**](https://github.com/search?utf8=%E2%9C%93&q=javascript+is%3Acurated&type=Topics) matches topics that are curated and contain the word "javascript." -| `is:featured` | [**is:featured javascript**](https://github.com/search?utf8=%E2%9C%93&q=javascript+is%3Afeatured&type=Topics) matches topics that are featured on https://github.com/topics/ and contain the word "javascript." -| `is:not-curated` | [**is:not-curated javascript**](https://github.com/search?utf8=%E2%9C%93&q=javascript+is%3Anot-curated&type=Topics) matches topics that don't have extra information, such as a description or logo, and contain the word "javascript." -| `is:not-featured`| [**is:not-featured javascript**](https://github.com/search?utf8=%E2%9C%93&q=javascript+is%3Anot-featured&type=Topics) matches topics that aren't featured on https://github.com/topics/ and contain the word "javascript." -| `repositories:n` | [**repositories:>5000**](https://github.com/search?q=repositories%3A%3E5000) matches topics that have more than 5000 repositories. -| created:YYYY-MM-DD | [**Serverless created:>2019-01-01**](https://github.com/search?q=Serverless+created%3A%3E2019-01-01&type=Topics) matches topics with the word "serverless" that were created after 2018. - -### Search repositories by topic - -You can use the `topic:` qualifier to find every repository connected to a particular topic. For more information, see "[Searching for repositories](/articles/searching-for-repositories/#search-by-topic)." - -### Further reading -- "[Classifying your repository with topics](/articles/classifying-your-repository-with-topics)" diff --git a/content/github/searching-for-information-on-github/searching-users.md b/content/github/searching-for-information-on-github/searching-users.md deleted file mode 100644 index aa0323d75355..000000000000 --- a/content/github/searching-for-information-on-github/searching-users.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Searching users -intro: 'You can search for users on {% data variables.product.product_name %} and narrow the results using these user search qualifiers in any combination.' -redirect_from: - - /articles/searching-users -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can search for users globally across all of {% data variables.product.product_name %}. For more information, see "[About searching on {% data variables.product.company_short %}](/articles/about-searching-on-github)." - -{% data reusables.search.syntax_tips %} - -### Search only users or organizations - -By default, searching users will return both personal and organizations. However, you can use the `type` qualifier to restrict search results to personal accounts or organizations only. - -| Qualifier | Example -| ------------- | ------------- -| `type:user` | [**mike in:name created:<2011-01-01 type:user**](https://github.com/search?q=mike+in:name+created%3A%3C2011-01-01+type%3Auser&type=Users) matches personal accounts named "mike" that were created before 2011. -| `type:org` | [**data in:email type:org**](https://github.com/search?q=data+in%3Aemail+type%3Aorg&type=Users) matches organizations with the word "data" in their email. - -### Search by account name, full name, or public email - -You can filter your search to the personal user or organization account name with `user` or `org` qualifiers. - -With the `in` qualifier you can restrict your search to the username (`login`), full name, public email, or any combination of these. When you omit this qualifier, only the username and email address are searched. For privacy reasons, you cannot search by email domain name. - -| Qualifier | Example -| ------------- | ------------- -| `user:name` | [**user:octocat**](https://github.com/search?q=user%3Aoctocat&type=Users) matches the user with the username "octocat". -| `org:name` | [**org:electron type:users**](https://github.com/search?q=org%3Aelectron+type%3Ausers&type=Users) matches the Electron organization's account name. -| `in:login` | [**kenya in:login**](https://github.com/search?q=kenya+in%3Alogin&type=Users) matches users with the word "kenya" in their username. -| `in:name` | [**bolton in:name**](https://github.com/search?q=bolton+in%3Afullname&type=Users) matches users whose real name contains the word "bolton." -| `fullname:firstname lastname` | [**fullname:nat friedman**](https://github.com/search?q=fullname%3Anat+friedman&type=Users) matches a user with the full name "Nat Friedman." Note: This search qualifier is sensitive to spacing. -| `in:email` | [**data in:email**](https://github.com/search?q=data+in%3Aemail&type=Users&utf8=%E2%9C%93) matches users with the word "data" in their email. - -### Search by number of repositories a user owns - -You can filter users based on the number of repositories they own, using the `repos` qualifier and [greater than, less than, and range qualifiers](/articles/understanding-the-search-syntax). - -| Qualifier | Example -| ------------- | ------------- -| repos:n | [**repos:>9000**](https://github.com/search?q=repos%3A%3E%3D9000&type=Users) matches users whose repository count is over 9,000. -| | [**bert repos:10..30**](https://github.com/search?q=bert+repos%3A10..30&type=Users) matches users with the word "bert" in their username or real name who own 10 to 30 repositories. - -### Search by location - -You can search for users by the location indicated in their profile. - -| Qualifier | Example -| ------------- | ------------- -| location:LOCATION | [**repos:1 location:iceland**](https://github.com/search?q=repos%3A1+location%3Aiceland&type=Users) matches users with exactly one repository that live in Iceland. - -### Search by repository language - -Using the `language` qualifier you can search for users based on the languages of repositories they own. - -| Qualifier | Example -| ------------- | ------------- -| language:LANGUAGE | [**language:javascript location:russia**](https://github.com/search?q=language%3Ajavascript+location%3Arussia&type=Users) matches users in Russia with a majority of their repositories written in JavaScript. -| | [**jenny language:javascript in:fullname**](https://github.com/search?q=jenny+language%3Ajavascript+in%3Afullname&type=Users) matches users with JavaScript repositories whose full name contains the word "jenny." - -### Search by when a user account was created - -You can filter users based on when they joined {% data variables.product.product_name %} with the `created` qualifier. This takes a date as its parameter. {% data reusables.time_date.date_format %} {% data reusables.time_date.time_format %} - -{% data reusables.search.date_gt_lt %} - -| Qualifier | Example -| ------------- | ------------- -| created:YYYY-MM-DD | [**created:<2011-01-01**](https://github.com/search?q=created%3A%3C2011-01-01&type=Users) matches users that joined before 2011. -| | [**created:>=2013-05-11**](https://github.com/search?q=created%3A%3E%3D2013-05-11&type=Users) matches users that joined at or after May 11th, 2013. -| | [**created:2013-03-06 location:london**](https://github.com/search?q=created%3A2013-03-06+location%3Alondon&type=Users) matches users that joined on March 6th, 2013, who list their location as London. -| | [**created:2010-01-01..2011-01-01 john in:login**](https://github.com/search?q=created%3A2010-01-01..2011-01-01+john+in%3Ausername&type=Users) matches users that joined between 2010 and 2011 with the word "john" in their username. - -### Search by number of followers - -You can filter users based on the number of followers that they have, using the `followers` qualifier with [greater than, less than, and range qualifiers](/articles/understanding-the-search-syntax). - -| Qualifier | Example -| ------------- | ------------- -| followers:n | [**followers:>=1000**](https://github.com/search?q=followers%3A%3E%3D1000&type=Users) matches users with 1,000 or more followers. -| | [**sparkle followers:1..10**](https://github.com/search?q=sparkle+followers%3A1..10&type=Users) matches users with between 1 and 10 followers, with the word "sparkle" in their name. - -### Further reading - -- "[Sorting search results](/articles/sorting-search-results/)" diff --git a/content/github/searching-for-information-on-github/searching-wikis.md b/content/github/searching-for-information-on-github/searching-wikis.md deleted file mode 100644 index f5007dc1b824..000000000000 --- a/content/github/searching-for-information-on-github/searching-wikis.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Searching wikis -intro: 'You can search wikis on {% data variables.product.product_name %} and narrow the results using these wiki search qualifiers in any combination.' -redirect_from: - - /articles/searching-wikis -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can search wikis globally across all of {% data variables.product.product_name %}, or search wikis within a particular repository or organization. For more information, see "[About searching on {% data variables.product.company_short %}](/articles/about-searching-on-github)." - -{% data reusables.search.syntax_tips %} - -### Search within a user's or organization's repositories - -To find wiki pages from all repositories owned by a certain user or organization, use the `user` or `org` qualifier. To find wiki pages from a specific repository, use the `repo` qualifier. - -| Qualifier | Example -| ------------- | ------------- -| user:USERNAME | [**user:defunkt**](https://github.com/search?q=user%3Adefunkt&type=Wikis) matches wiki pages from repositories owned by @defunkt. -| org:ORGNAME | [**org:github**](https://github.com/search?q=org%3Agithub&type=Wikis&utf8=%E2%9C%93) matches wikis in repositories owned by the GitHub organization. -| repo:USERNAME/REPOSITORY | [**repo:defunkt/gibberish**](https://github.com/search?q=user%3Adefunkt&type=Wikis) matches wiki pages from @defunkt's "gibberish" repository. - -### Search within a wiki page title or body text - -The `in` qualifier limits the search to the wiki page title or body text. Without the qualifier, both the title and body text are searched. - -| Qualifier | Example -| ------------- | ------------- -| `in:title` | [**usage in:title**](https://github.com/search?q=usage+in%3Atitle&type=Wikis) matches wiki page titles with the word "usage." -| `in:body` | [**installation in:body**](https://github.com/search?q=installation+in%3Abody&type=Wikis) matches wiki pages with the word "installation" in their main body text. - -### Search by last updated date - -The `updated` qualifier matches wiki pages that were last updated within the specified date range. - -{% data reusables.search.date_gt_lt %} - -| Qualifier | Example -| ------------- | ------------- -| updated:YYYY-MM-DD | [**usage updated:>2016-01-01**](https://github.com/search?q=usage+updated%3A>2016-01-01&type=Wikis) matches wiki pages with the word "usage" that were last updated after 2016-01-01. - -### Further reading - -- "[Sorting search results](/articles/sorting-search-results/)" diff --git a/content/github/searching-for-information-on-github/sorting-search-results.md b/content/github/searching-for-information-on-github/sorting-search-results.md deleted file mode 100644 index a2924b9b036a..000000000000 --- a/content/github/searching-for-information-on-github/sorting-search-results.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Sorting search results -intro: 'You can sort [{% data variables.product.product_name %} search](/articles/searching-on-github) results using the Sort menu, or by adding a `sort` qualifier to your query.' -redirect_from: - - /articles/sorting-search-results -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Use the Sort menu to sort results by relevance, number of stars, number of forks, and how recently the items were updated. - - ![Menu with options for sorting search results](/assets/images/help/search/repo-search-sort.png) - -To sort by interactions, reactions, author date, committer date, or how recently the items were updated, you can add a `sort` qualifier to your search query. - -### Sort by interactions - -The `sort:interactions` qualifier sorts by the highest combined number of reactions and comments. - -| Qualifier | Example -| ------------- | ------------- -| `sort:interactions` or `sort:interactions-desc` | [**org:github sort:interactions**](https://github.com/search?q=org%3Agithub+sort%3Ainteractions&type=Issues) matches issues in repositories owned by {% data variables.product.product_name %}, sorted by the highest combined number of reactions and comments. -| `sort:interactions-asc` | [**org:github sort:interactions-asc**](https://github.com/search?utf8=%E2%9C%93&q=org%3Agithub+sort%3Ainteractions-asc&type=Issues) matches issues in repositories owned by {% data variables.product.product_name %}, sorted by the lowest combined number of reactions and comments. - -### Sort by reactions - -The `sort:reactions` qualifier sorts by the number or type of reactions. - -| Qualifier | Example -| ------------- | ------------- -| `sort:reactions` or `sort:reactions-desc` | [**org:github sort:reactions**](https://github.com/search?q=org%3Agithub+sort%3Areactions&type=Issues) matches issues in repositories owned by {% data variables.product.product_name %}, sorted by the highest number of reactions. -| `sort:reactions-asc` | [**org:github sort:reactions-asc**](https://github.com/search?q=org%3Agithub+sort%3Areactions-asc&type=Issues) matches issues in repositories owned by {% data variables.product.product_name %}, sorted by ascending number of reactions (the fewest to the most). -| sort:reactions-reaction | [**org:github sort:reactions-+1**](https://github.com/search?q=org%3Agithub+sort%3Areactions-%2B1&type=Issues) matches issues in repositories owned by {% data variables.product.product_name %}, sorted by most thumbs up (:+1:) reactions. -| | [**org:github sort:reactions--1**](https://github.com/search?utf8=%E2%9C%93&q=org%3Agithub+sort%3Areactions--1&type=Issues) matches issues in repositories owned by {% data variables.product.product_name %}, sorted by most thumbs down (:-1:) reactions. -| | [**org:github sort:reactions-smile**](https://github.com/search?utf8=%E2%9C%93&q=org%3Agithub+sort%3Areactions-smile&type=Issues) matches issues in repositories owned by {% data variables.product.product_name %}, sorted by most laugh (:smile:) reactions. -| | [**org:github sort:reactions-tada**](https://github.com/search?utf8=%E2%9C%93&q=org%3Agithub+sort%3Areactions-tada&type=Issues) matches issues in repositories owned by {% data variables.product.product_name %}, sorted by most hurray (:tada:) reactions. -| | [**org:github sort:reactions-heart**](https://github.com/search?utf8=%E2%9C%93&q=org%3Agithub+sort%3Areactions-heart&type=Issues) matches issues in repositories owned by {% data variables.product.product_name %}, sorted by most heart (:heart:) reactions. - -### Sort by author date - -The `sort:author-date` qualifier sorts by descending or ascending author date. - -| Qualifier | Example -| ------------- | ------------- -| `sort:author-date` or `sort:author-date-desc` | [**feature org:github sort:author-date**](https://github.com/search?utf8=%E2%9C%93&q=feature+org%3Agithub+sort%3Aauthor-date&type=Commits) matches commits containing the word "feature" in repositories owned by {% data variables.product.product_name %}, sorted by descending author date. -| `sort:author-date-asc` | [**feature org:github sort:author-date-asc**](https://github.com/search?utf8=%E2%9C%93&q=feature+org%3Agithub+sort%3Aauthor-date-asc&type=Commits) matches commits containing the word "feature" in repositories owned by {% data variables.product.product_name %}, sorted by ascending author date. - -### Sort by committer date - -The `sort:committer-date` qualifier sorts by descending or ascending committer date. - -| Qualifier | Example -| ------------- | ------------- -| `sort:committer-date` or `sort:committer-date-desc` | [**feature org:github sort:committer-date**](https://github.com/search?utf8=%E2%9C%93&q=feature+org%3Agithub+sort%3Acommitter-date&type=Commits) matches commits containing the word "feature" in repositories owned by {% data variables.product.product_name %}, sorted by descending committer date. -| `sort:committer-date-asc` | [**feature org:github sort:committer-date-asc**](https://github.com/search?utf8=%E2%9C%93&q=feature+org%3Agithub+sort%3Acommitter-date-asc&type=Commits) matches commits containing the word "feature" in repositories owned by {% data variables.product.product_name %}, sorted by ascending committer date. - -### Sort by updated date - -The `sort:updated` qualifier sorts by how recently the items were updated. - -| Qualifier | Example -| ------------- | ------------- -| `sort:updated` or `sort:updated-desc` | [**feature sort:updated**](https://github.com/search?utf8=%E2%9C%93&q=feature+sort%3Aupdated&type=Repositories) matches repositories containing the word "feature," sorted by most recently updated date. -| `sort:updated-asc` | [**feature sort:updated-asc**](https://github.com/search?utf8=%E2%9C%93&q=feature+sort%3Aupdated-asc&type=Repositories) matches repositories containing the word "feature," sorted by least recently updated date. - -### Further reading - -- [About searching on GitHub](/articles/about-searching-on-github) -- [Sorting issues and pull requests](/articles/sorting-issues-and-pull-requests/) diff --git a/content/github/searching-for-information-on-github/troubleshooting-search-queries.md b/content/github/searching-for-information-on-github/troubleshooting-search-queries.md deleted file mode 100644 index 9c28e4d72a3d..000000000000 --- a/content/github/searching-for-information-on-github/troubleshooting-search-queries.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Troubleshooting search queries -intro: 'If you encounter unexpected results while searching on {% data variables.product.product_name %}, you can troubleshoot by reviewing common problems and limitations.' -redirect_from: - - /articles/troubleshooting-search-queries -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Potential timeouts - -Some queries are computationally expensive for our search infrastructure to execute. To keep search fast for everyone, we limit how long any individual query can run. In rare situations when a query exceeds the time limit, search returns all matches that were found prior to the timeout and informs you that a timeout occurred. - -Reaching a timeout does not necessarily mean that search results are incomplete. It just means that the query was discontinued before it searched through all possible data. - -### Limitations on query length - -There are some limits to the length of the queries when searching across {% data variables.product.product_name %}: - -* Queries longer than 256 characters are not supported -* You can't construct a query using more than five `AND`, `OR`, or `NOT` operators - -Specific search types, such as code search, might have additional limitations. Check the documentation for these search types for more information. - -### Further reading - -- "[About searching on GitHub](/articles/about-searching-on-github)" diff --git a/content/github/searching-for-information-on-github/understanding-the-search-syntax.md b/content/github/searching-for-information-on-github/understanding-the-search-syntax.md deleted file mode 100644 index a94568f062d5..000000000000 --- a/content/github/searching-for-information-on-github/understanding-the-search-syntax.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Understanding the search syntax -intro: 'When searching {% data variables.product.product_name %}, you can construct queries that match specific numbers and words.' -redirect_from: - - /articles/search-syntax/ - - /articles/understanding-the-search-syntax -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Query for values greater or less than another value - -You can use `>`, `>=`, `<`, and `<=` to search for values that are greater than, greater than or equal to, less than, and less than or equal to another value. - -Query | Example -------------- | ------------- ->n | **[cats stars:>1000](https://github.com/search?utf8=%E2%9C%93&q=cats+stars%3A%3E1000&type=Repositories)** matches repositories with the word "cats" that have more than 1000 stars. ->=n | **[cats topics:>=5](https://github.com/search?utf8=%E2%9C%93&q=cats+topics%3A%3E%3D5&type=Repositories)** matches repositories with the word "cats" that have 5 or more topics. -<n | **[cats size:<10000](https://github.com/search?utf8=%E2%9C%93&q=cats+size%3A%3C10000&type=Code)** matches code with the word "cats" in files that are smaller than 10 KB. -<=n | **[cats stars:<=50](https://github.com/search?utf8=%E2%9C%93&q=cats+stars%3A%3C%3D50&type=Repositories)** matches repositories with the word "cats" that have 50 or fewer stars. - -You can also use [range queries](#query-for-values-between-a-range) to search for values that are greater than or equal to, or less than or equal to, another value. - -Query | Example -------------- | ------------- -n..* | **[cats stars:10..*](https://github.com/search?utf8=%E2%9C%93&q=cats+stars%3A10..*&type=Repositories)** is equivalent to `stars:>=10` and matches repositories with the word "cats" that have 10 or more stars. -*..n | **[cats stars:*..10](https://github.com/search?utf8=%E2%9C%93&q=cats+stars%3A%22*..10%22&type=Repositories)** is equivalent to `stars:<=10` and matches repositories with the word "cats" that have 10 or fewer stars. - -### Query for values between a range - -You can use the range syntax n..n to search for values within a range, where the first number _n_ is the lowest value and the second is the highest value. - -Query | Example -------------- | ------------- -n..n | **[cats stars:10..50](https://github.com/search?utf8=%E2%9C%93&q=cats+stars%3A10..50&type=Repositories)** matches repositories with the word "cats" that have between 10 and 50 stars. - -### Query for dates - -You can search for dates that are earlier or later than another date, or that fall within a range of dates, by using `>`, `>=`, `<`, `<=`, and [range queries](#query-for-values-between-a-range). {% data reusables.time_date.date_format %} - -Query | Example -------------- | ------------- ->YYYY-MM-DD | **[cats created:>2016-04-29](https://github.com/search?utf8=%E2%9C%93&q=cats+created%3A%3E2016-04-29&type=Issues)** matches issues with the word "cats" that were created after April 29, 2016. ->=YYYY-MM-DD | **[cats created:>=2017-04-01](https://github.com/search?utf8=%E2%9C%93&q=cats+created%3A%3E%3D2017-04-01&type=Issues)** matches issues with the word "cats" that were created on or after April 1, 2017. -<YYYY-MM-DD | **[cats pushed:<2012-07-05](https://github.com/search?q=cats+pushed%3A%3C2012-07-05&type=Code&utf8=%E2%9C%93)** matches code with the word "cats" in repositories that were pushed to before July 5, 2012. -<=YYYY-MM-DD | **[cats created:<=2012-07-04](https://github.com/search?utf8=%E2%9C%93&q=cats+created%3A%3C%3D2012-07-04&type=Issues)** matches issues with the word "cats" that were created on or before July 4, 2012. -YYYY-MM-DD..YYYY-MM-DD | **[cats pushed:2016-04-30..2016-07-04](https://github.com/search?utf8=%E2%9C%93&q=cats+pushed%3A2016-04-30..2016-07-04&type=Repositories)** matches repositories with the word "cats" that were pushed to between the end of April and July of 2016. -YYYY-MM-DD..* | **[cats created:2012-04-30..*](https://github.com/search?utf8=%E2%9C%93&q=cats+created%3A2012-04-30..*&type=Issues)** matches issues created after April 30th, 2012 containing the word "cats." -*..YYYY-MM-DD | **[cats created:*..2012-04-30](https://github.com/search?utf8=%E2%9C%93&q=cats+created%3A*..2012-07-04&type=Issues)** matches issues created before July 4th, 2012 containing the word "cats." - -{% data reusables.time_date.time_format %} - -Query | Example -------------- | ------------- -YYYY-MM-DDTHH:MM:SS+00:00 | **[cats created:2017-01-01T01:00:00+07:00..2017-03-01T15:30:15+07:00](https://github.com/search?utf8=%E2%9C%93&q=cats+created%3A2017-01-01T01%3A00%3A00%2B07%3A00..2017-03-01T15%3A30%3A15%2B07%3A00&type=Issues)** matches issues created between January 1, 2017 at 1 a.m. with a UTC offset of `07:00` and March 1, 2017 at 3 p.m. with a UTC offset of `07:00`. -YYYY-MM-DDTHH:MM:SSZ | **[cats created:2016-03-21T14:11:00Z..2016-04-07T20:45:00Z](https://github.com/search?utf8=%E2%9C%93&q=cats+created%3A2016-03-21T14%3A11%3A00Z..2016-04-07T20%3A45%3A00Z&type=Issues)** matches issues created between March 21, 2016 at 2:11pm and April 7, 2106 at 8:45pm. - -### Exclude certain results - -You can exclude results containing a certain word, using the `NOT` syntax. The `NOT` operator can only be used for string keywords. It does not work for numerals or dates. - -Query | Example -------------- | ------------- -`NOT` | **[hello NOT world](https://github.com/search?q=hello+NOT+world&type=Repositories)** matches repositories that have the word "hello" but not the word "world." - -Another way you can narrow down search results is to exclude certain subsets. You can prefix any search qualifier with a `-` to exclude all results that are matched by that qualifier. - -Query | Example -------------- | ------------- --QUALIFIER | **[cats stars:>10 -language:javascript](https://github.com/search?q=cats+stars%3A>10+-language%3Ajavascript&type=Repositories)** matches repositories with the word "cats" that have more than 10 stars but are not written in JavaScript. - | **[mentions:defunkt -org:github](https://github.com/search?utf8=%E2%9C%93&q=mentions%3Adefunkt+-org%3Agithub&type=Issues)** matches issues mentioning @defunkt that are not in repositories in the GitHub organization - -### Use quotation marks for queries with whitespace - -If your search query contains whitespace, you will need to surround it with quotation marks. For example: - -* [cats NOT "hello world"](https://github.com/search?utf8=✓&q=cats+NOT+"hello+world"&type=Repositories) matches repositories with the word "cats" but not the words "hello world." -* [build label:"bug fix"](https://github.com/search?utf8=%E2%9C%93&q=build+label%3A%22bug+fix%22&type=Issues) matches issues with the word "build" that have the label "bug fix." - -Some non-alphanumeric symbols, such as spaces, are dropped from code search queries within quotation marks, so results can be unexpected. - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -### Queries with usernames - -If your search query contains a qualifier that requires a username, such as `user`, `actor`, or `assignee`, you can use any {% data variables.product.product_name %} username, to specify a specific person, or `@me`, to specify the current user. - -Query | Example -------------- | ------------- -`QUALIFIER:USERNAME` | [`author:nat`](https://github.com/search?q=author%3Anat&type=Commits) matches commits authored by @nat -`QUALIFIER:@me` | [`is:issue assignee:@me`](https://github.com/search?q=is%3Aissue+assignee%3A%40me&type=Issues) matches issues assigned to the person viewing the results - -You can only use `@me` with a qualifier and not as search term, such as `@me main.workflow`. -{% endif %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-git-large-file-storage.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-git-large-file-storage.md deleted file mode 100644 index 7abf04ebd901..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-git-large-file-storage.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: About billing for Git Large File Storage -intro: 'If you purchase additional storage and bandwidth for {% data variables.large_files.product_name_long %}, your purchase shares your account''s existing billing date, payment method, and receipt.' -redirect_from: - - /articles/about-billing-for-git-large-file-storage -versions: - free-pro-team: '*' ---- - -### About billing for {% data variables.large_files.product_name_long %} - -{% data reusables.large_files.free-storage-bandwidth-amount %} {% data reusables.large_files.does_not_carry %} - -{% data reusables.large_files.owner_quota_only %} - -### Purchasing additional storage and bandwidth - -Additional storage and bandwidth is offered in a single data pack. One data pack costs {% data variables.large_files.pack_monthly_price %}, and provides a monthly quota of {% data variables.large_files.pack_monthly_bandwidth %} for bandwidth and {% data variables.large_files.pack_monthly_storage %} for storage. You can purchase as many data packs as you need. For example, if you need 150 GB of storage, you'd buy three data packs. - -Purchasing data packs for {% data variables.large_files.product_name_short %} is independent of any other paid feature or product on {% data variables.product.product_name %}. - -### Downgrading storage and bandwidth - -If you downgrade your number of additional data packs, your changes will take effect on your next billing date. - -### Further reading - -- "[About {% data variables.large_files.product_name_long %}](/articles/about-git-large-file-storage)" -- "[Installing {% data variables.large_files.product_name_long %}](/articles/installing-git-large-file-storage)" -- "[About storage and bandwidth usage](/articles/about-storage-and-bandwidth-usage)" -- "[Viewing your {% data variables.large_files.product_name_long %} usage](/articles/viewing-your-git-large-file-storage-usage)" -- "[Upgrading {% data variables.large_files.product_name_long %}](/articles/upgrading-git-large-file-storage)" -- "[Downgrading {% data variables.large_files.product_name_long %}](/articles/downgrading-git-large-file-storage)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-accounts.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-accounts.md deleted file mode 100644 index ee973ad804cd..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-accounts.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: About billing for GitHub accounts -intro: '{% data variables.product.product_name %} offers free and paid products for every developer or team.' -redirect_from: - - /articles/what-is-the-total-cost-of-using-an-organization-account/ - - /articles/what-are-the-costs-of-using-an-organization-account/ - - /articles/what-plan-should-i-choose/ - - /articles/do-you-have-custom-plans/ - - /articles/user-account-billing-plans/ - - /articles/organization-billing-plans/ - - /articles/github-s-billing-plans - - /articles/about-billing-for-github-accounts -versions: - free-pro-team: '*' ---- - -For more information on the products available for your account, see "[{% data variables.product.product_name %}'s products](/articles/github-s-products)." You can see pricing and a full list of features for each product at <{% data variables.product.pricing_url %}>. {% data variables.product.product_name %} does not offer custom products or subscriptions. - -You can choose monthly or yearly billing, and you can upgrade or downgrade your subscription at any time. For more information, see "[Managing billing for your {% data variables.product.prodname_dotcom %} account](/articles/managing-billing-for-your-github-account)." - -You can purchase other features and products with your existing {% data variables.product.product_name %} payment information. For more information, see "[About billing on {% data variables.product.prodname_dotcom %}](/articles/about-billing-on-github)." - -{% tip %} - -**Tip:** {% data variables.product.prodname_dotcom %} has programs for verified students and academic faculty, which include academic discounts. For more information, visit [{% data variables.product.prodname_education %}](https://education.github.com/). - -{% endtip %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions.md deleted file mode 100644 index b3562de79920..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: About billing for GitHub Actions -intro: 'If you want to use {% data variables.product.prodname_actions %} beyond the storage or minutes included in your account, you will be billed for additional usage.' -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' ---- - -### About billing for {% data variables.product.prodname_actions %} - -{% data reusables.github-actions.actions-billing %} {% data reusables.github-actions.actions-spending-limit %} - -Minutes reset every month, while storage usage does not. - -|Product | Storage | Minutes (per month)| -|------- | ------- | ---------| -| {% data variables.product.prodname_free_user %} | 500 MB | 2,000 | -| {% data variables.product.prodname_pro %} | 1 GB | 3,000 | -| {% data variables.product.prodname_free_team %} for organizations | 500 MB | 2,000 | -| {% data variables.product.prodname_team %} | 2 GB | 3,000 | -| {% data variables.product.prodname_ghe_cloud %} | 50 GB | 50,000 | - -Jobs that run on Windows and macOS runners that {% data variables.product.prodname_dotcom %} hosts consume minutes at 2 and 10 times the rate that jobs on Linux runners consume. For example, using 1,000 Windows minutes would consume 2,000 of the minutes included in your account. Using 1,000 macOS minutes, would consume 10,000 minutes included in your account. - -| Operating system | Minute multiplier | -|------- | ---------| -| Linux | 1 | -| macOS| 10 | -| Windows | 2 | - -The storage used by a repository is the total storage used by {% data variables.product.prodname_actions %} artifacts and {% data variables.product.prodname_registry %}. Your storage cost is the total usage for all repositories owned by your account. For more information about pricing for {% data variables.product.prodname_registry %}, see "[About billing for {% data variables.product.prodname_registry %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-packages)." - - If your account's usage surpasses these limits and you have set a spending limit above $0, you will pay $0.25 USD per GB of storage per month and per-minute usage depending on the operating system used by the {% data variables.product.prodname_dotcom %}-hosted runner. {% data variables.product.prodname_dotcom %} rounds the minutes each job uses up to the nearest minute. - -{% note %} - -**Note:** Minute multipliers do not apply to the per-minute rates shown below. - -{% endnote %} - -| Operating system | Per-minute rate | -|------- | ---------| -| Linux | $0.008 | -| macOS | $0.08 | -| Windows | $0.016 | - -The number of jobs you can run concurrently across all repositories in your user or organization account depends on your GitHub plan. For more information, see "[Usage limits and billing](/actions/reference/usage-limits-billing-and-administration)" for {% data variables.product.prodname_dotcom %}-hosted runners and "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners/#usage-limits)" for self-hosted runner usage limits. - -### Calculating minute and storage spending - -At the end of the month, {% data variables.product.prodname_dotcom %} calculates the cost of minutes and storage used over the amount included in your account. For example, if your organization uses {% data variables.product.prodname_team %} and allows unlimited spending, using 15,000 minutes could have a total storage and minute overage cost of $56, depending on the operating systems used to run jobs. - -- 5,000 (3,000 Linux and 2,000 Windows) minutes = $56 ($24 + $32). - - 3,000 Linux minutes at $0.008 per minute = $24. - - 2,000 Windows minutes at $0.016 per minute = $32. - -At the end of the month, {% data variables.product.prodname_dotcom %} rounds your data transfer to the nearest GB. - -{% data variables.product.prodname_dotcom %} calculates your storage usage for each month based on hourly usage during that month. For example, if you use 3 GB of storage for 10 days of March and 12 GB for 21 days of March, your storage usage would be: - -- 3 GB x 10 days x (24 hours per day) = 720 GB-Hours -- 12 GB x 21 days x (24 hours per day) = 6,048 GB-Hours -- 720 GB-Hours + 6,048 GB-Hours = 6,768 GB-Hours -- 6,768 GB-Hours / (744 hours per month) = 9.0967 GB-Months - -At the end of the month, {% data variables.product.prodname_dotcom %} rounds your storage to the nearest MB. Therefore, your storage usage for March would be 9.097 GB. - -Your {% data variables.product.prodname_actions %} usage shares your account's existing billing date, payment method, and receipt. {% data reusables.dotcom_billing.view-all-subscriptions %} - -### About spending limits - -By default, your account will have a spending limit of $0 for {% data variables.product.prodname_actions %} usage. To enable using minutes and storage for private repositories beyond the amounts included with your account, you can increase the spending limit or allow unlimited spending. For more information, see "[Managing your spending limit for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-actions)." - -{% data reusables.github-actions.spending-limit-enterprise-account %} - -{% data reusables.dotcom_billing.actions-packages-unpaid-account %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-marketplace.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-marketplace.md deleted file mode 100644 index ae029cc60bb1..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-marketplace.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: About billing for GitHub Marketplace -intro: 'If you install a paid app in {% data variables.product.prodname_marketplace %}, your subscription shares your account''s existing billing date, payment method, and receipt.' -redirect_from: - - /articles/about-billing-for-github-marketplace -versions: - free-pro-team: '*' ---- - -{% data variables.product.prodname_marketplace %} includes apps with free and paid pricing plans. After you purchase and install an app, you can upgrade, downgrade, or cancel at any time. - -{% data reusables.marketplace.marketplace-apps-only %} - -{% data reusables.marketplace.marketplace-org-perms %} - -### Payment methods and billing cycles for {% data variables.product.prodname_marketplace %} purchases - -You will have the same payment method for all paid plans and subscriptions across {% data variables.product.prodname_dotcom %}. - -If your personal account or organization doesn't have a payment method on file, when you choose a paid plan for an app: -- Your billing date is today. -- You must add a payment method to your personal account or the organization in which you want to install the app. -- Your payment method is charged the full amount of your subscription. -- Your receipt is sent to the primary or billing email address on file for your personal account or organization. - -If your personal account or organization has an existing payment method, when you choose a paid plan for an app: -- The payment method on file is immediately charged a prorated amount based on the time remaining until your next billing date. -- The monthly or yearly billing date for your app subscription is the same as the account or organization's regular billing date. -- On your next billing date, your receipt lists charges for your paid {% data variables.product.prodname_dotcom %} plan and your app subscription. - -When you choose a paid plan with a free trial: -- You must have an existing payment method or add a new payment method for your personal account or the organization in which you want to install the app. -- If you don't have any other paid plans or subscriptions, you are charged the full amount of your subscription at the end of the 14-day free trial. -- If you have other paid plans or subscriptions, once your 14-day free trial ends, the payment method on file is immediately charged a prorated amount based on the time remaining until your next billing date. -- If you have other paid plans or subscriptions, on your next billing date, your receipt lists charges for your paid {% data variables.product.prodname_dotcom %} plan and your app subscription. - -### Unit plan limits - -If you choose a unit plan (for example, a plan that charges per user), and you exceed the units that you're paying for, the integrator may disable your access until you upgrade the app. For more information, see "[Upgrading the billing plan for a {% data variables.product.prodname_marketplace %} app](/articles/upgrading-the-billing-plan-for-a-github-marketplace-app)." - -### Downgrading a {% data variables.product.prodname_marketplace %} app - -If you downgrade your app subscription to a less expensive plan or if you cancel a paid app subscription, your changes will take effect at the end your current billing cycle. Your subscription will be moved to your new plan on your next billing date. - -If you cancel an app on a free plan, your subscription will immediately end and you'll lose access to the app. - -{% data reusables.marketplace.downgrade-marketplace-only %} - -If you cancel a free trial on a paid plan, your subscription is immediately canceled and you will lose access to the app. For more information, see "[Canceling a {% data variables.product.prodname_marketplace %} app](/articles/canceling-a-github-marketplace-app)." - -### Further reading - -- "[About {% data variables.product.prodname_marketplace %}](/articles/about-github-marketplace)" -- "[Purchasing and installing apps in {% data variables.product.prodname_marketplace %}](/articles/purchasing-and-installing-apps-in-github-marketplace)" -- "[{% data variables.product.prodname_marketplace %} support](/articles/github-marketplace-support)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-packages.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-packages.md deleted file mode 100644 index 28d0b8a645eb..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-packages.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: About billing for GitHub Packages -intro: 'If you want to use {% data variables.product.prodname_registry %} beyond the storage or data transfer included in your account, you will be billed for additional usage.' -product: '{% data reusables.gated-features.packages %}' -versions: - free-pro-team: '*' ---- - -### About billing for {% data variables.product.prodname_registry %} - -{% data reusables.package_registry.packages-billing %} - -{% data reusables.package_registry.container-registry-beta-billing-note %} - -Data transfer resets every month, while storage usage does not. - -Product | Storage | Data transfer (per month) -------- | ------- | --------- -{% data variables.product.prodname_free_user %} | 500MB | 1GB -{% data variables.product.prodname_pro %} | 2GB | 10GB -{% data variables.product.prodname_free_team %} for organizations | 500MB | 1GB | -{% data variables.product.prodname_team %} | 2GB | 10GB -{% data variables.product.prodname_ghe_cloud %} | 50GB | 100GB - -All data transferred out, when triggered by {% data variables.product.prodname_actions %}, and data transferred in from any source is free. We determine you are downloading packages using {% data variables.product.prodname_actions %} when you log in to {% data variables.product.prodname_registry %} using a `GITHUB_TOKEN`. - -||Hosted|Self-Hosted| -|-|-|-| -|Access using a `GITHUB_TOKEN`|Free|Free| -|Access using a personal access token|Free|$| - -Storage usage is shared with build artifacts produced by {% data variables.product.prodname_actions %} for repositories owned by your account. For more information, see "[About billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions)." - -{% data variables.product.prodname_dotcom %} charges usage to the account that owns the repository where the package is published. If your account's usage surpasses these limits and you have set a spending limit above $0, you will pay $0.25 USD per GB of storage and $0.50 USD per GB of data transfer. - -For example, if your organization uses {% data variables.product.prodname_team %}, allows unlimited spending, uses 150GB of storage, and has 50GB of data transfer out during a month, the organization would have overages of 148GB for storage and 40GB for data transfer for that month. The storage overage would cost $0.25 per GB or $37. The overage for data transfer would cost $0.50 per GB or $20. - -At the end of the month, {% data variables.product.prodname_dotcom %} rounds your data transfer to the nearest GB. - -{% data variables.product.prodname_dotcom %} calculates your storage usage for each month based on hourly usage during that month. For example, if you use 3 GB of storage for 10 days of March and 12 GB for 21 days of March, your storage usage would be: - -- 3 GB x 10 days x (24 hours per day) = 720 GB-Hours -- 12 GB x 21 days x (24 hours per day) = 6,048 GB-Hours -- 720 GB-Hours + 6,048 GB-Hours = 6,768 GB-Hours -- 6,768 GB-Hours / (744 hours per month) = 9.0967 GB-Months - -At the end of the month, {% data variables.product.prodname_dotcom %} rounds your storage to the nearest MB. Therefore, your storage usage for March would be 9.097 GB. - -Your {% data variables.product.prodname_registry %} usage shares your account's existing billing date, payment method, and receipt. {% data reusables.dotcom_billing.view-all-subscriptions %} - -### About spending limits - -By default, your account will have a spending limit of $0 for {% data variables.product.prodname_registry %} usage. To enable storage and data transfer for private packages beyond the amounts included with your account, you can increase the spending limit or allow unlimited spending. For more information, see "[Managing your spending limit for {% data variables.product.prodname_registry %}](/github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-packages)." - -{% data reusables.package_registry.spending-limit-enterprise-account %} - -{% data reusables.dotcom_billing.actions-packages-unpaid-account %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-sponsors.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-sponsors.md deleted file mode 100644 index fec21f3ab71b..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-sponsors.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: About billing for GitHub Sponsors -intro: You will be billed for your sponsorships with the rest of your paid products and features. -redirect_from: - - /articles/about-billing-for-github-sponsors -versions: - free-pro-team: '*' ---- - -{% data reusables.sponsors.sponsorship-details %} - -{% data reusables.dotcom_billing.view-all-subscriptions %} - -### Further reading - -- "[About {% data variables.product.prodname_sponsors %}](/articles/about-github-sponsors)" -- "[Sponsoring open source contributors](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-open-source-contributors)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-on-github.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-on-github.md deleted file mode 100644 index 8b377b21e1d9..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-on-github.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: About billing on GitHub -intro: 'Everything you purchase on {% data variables.product.prodname_dotcom %} shares your account''s billing date, payment method, and receipt.' -redirect_from: - - /articles/about-billing-on-github -versions: - free-pro-team: '*' ---- - -### Paid features and products - -You can upgrade your personal account or organization to a paid subscription at any time. You can also choose to purchase apps from {% data variables.product.prodname_marketplace %} or upgrade storage and bandwidth for {% data variables.large_files.product_name_long %}. For more information, see: -- "[About billing for {% data variables.product.product_name %} accounts](/articles/about-billing-for-github-accounts)" -- "[About billing for {% data variables.product.prodname_marketplace %}](/articles/about-billing-for-github-marketplace)" -- "[About billing for {% data variables.large_files.product_name_long %}](/articles/about-billing-for-git-large-file-storage)" -- "[About billing for {% data variables.product.prodname_sponsors %}](/articles/about-billing-for-github-sponsors)" - -### Managing billing settings - -You must manage billing settings, payment method, and paid features and products for each of your accounts separately. You can choose to pay monthly or yearly for each account's paid products and features. Every paid feature or product associated with an account shares a billing date, payment method, and receipt. - -{% data reusables.dotcom_billing.payment-methods %} {% data reusables.dotcom_billing.same-payment-method %} - -For more information, see "[Managing your {% data variables.product.prodname_dotcom %} billing settings](/articles/managing-your-github-billing-settings)." - -### Further reading - -- "[Managing billing for your {% data variables.product.prodname_dotcom %} account](/articles/managing-billing-for-your-github-account)" -- "[Managing billing for {% data variables.product.prodname_marketplace %} apps](/articles/managing-billing-for-github-marketplace-apps)" -- "[Managing billing for {% data variables.large_files.product_name_long %}](/articles/managing-billing-for-git-large-file-storage)" -- "[Managing billing for {% data variables.product.prodname_sponsors %}](/articles/managing-billing-for-github-sponsors)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-organizations-for-procurement-companies.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/about-organizations-for-procurement-companies.md deleted file mode 100644 index 620bb92d7cec..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-organizations-for-procurement-companies.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: About organizations for procurement companies -intro: 'Businesses use organizations to collaborate on shared projects with multiple owners and administrators. You can create an organization for your client, make a payment on their behalf, then pass ownership of the organization to your client.' -redirect_from: - - /articles/about-organizations-for-resellers/ - - /articles/about-organizations-for-procurement-companies -versions: - free-pro-team: '*' ---- - -To access an organization, each member must sign into their own personal user account. - -Organization members can have different roles, such as *owner* or *billing manager*: - -- **Owners** have complete administrative access to an organization and its contents. -- **Billing managers** can manage billing settings, and cannot access organization contents. Billing managers are not shown in the list of organization members. - -### Payments and pricing for organizations - -We don't provide quotes for organization pricing. You can see our published pricing for [organizations](https://github.com/pricing) and [Git Large File Storage](/articles/about-storage-and-bandwidth-usage/). We do not provide discounts for procurement companies or for renewal orders. - -We accept payment in US dollars, although end users may be located anywhere in the world. - -We accept payment by credit card and PayPal. We don't accept payment by purchase order or invoice. - -For easier and more efficient purchasing, we recommend that procurement companies set up yearly billing for their clients' organizations. - -### Further reading - -- "[Creating and paying for an organization on behalf of a client](/articles/creating-and-paying-for-an-organization-on-behalf-of-a-client)" -- "[Upgrading or downgrading your client's paid organization](/articles/upgrading-or-downgrading-your-client-s-paid-organization)" -- "[Renewing your client's paid organization](/articles/renewing-your-client-s-paid-organization)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-per-user-pricing.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/about-per-user-pricing.md deleted file mode 100644 index 4ad2ca3d401f..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/about-per-user-pricing.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: About per-user pricing -intro: 'With per-user pricing, organizations pay based on team size to access advanced collaboration and management tools for teams, and optionally, security, compliance, and deployment controls.' -redirect_from: - - /articles/about-per-user-pricing -versions: - free-pro-team: '*' ---- - -New organizations can build public and open-source projects with {% data variables.product.prodname_free_team %}, or [upgrade]({% data variables.product.pricing_url %}) to a paid product with per-user pricing. - -Organizations using a paid subscription before May 11, 2016 can choose to stay on their existing per-repository plan or switch to per-user pricing. We will notify you twelve months before any mandated change to your subscription. For more information on switching your subscription, see "[Upgrading your {% data variables.product.prodname_dotcom %} subscription](/articles/upgrading-your-github-subscription)." - -For more information on products with per-user pricing, see "[{% data variables.product.prodname_dotcom %}'s products](/articles/githubs-products)." - -### How many licenses do I need for my organization? - -Organization owners and members each fill a license. If you've sent a pending invitation to a prospective organization member, the invitation will fill a license. {% data reusables.organizations.org-invite-expiration %} - -Outside collaborators and bot accounts will count toward your organization's total of paid licenses if they are given access to a private repository. - -### How can I add or downgrade my organization's paid licenses? - -You can add paid licenses to your organization anytime. If you're paying for more licenses than you're using, you can also remove paid licenses from your organization. For more information, see "[Upgrading your {% data variables.product.prodname_dotcom %} subscription](/articles/upgrading-your-github-subscription)" and "[Downgrading your {% data variables.product.prodname_dotcom %} subscription](/articles/downgrading-your-github-subscription)." - -If you have questions about your organization's subscription, contact {% data variables.contact.contact_support %}. - -### If I keep my organization on a per-repository plan, can I upgrade or downgrade to a different per-repository plan? - -You can upgrade or downgrade between legacy paid plans in your organization's billing settings. When you upgrade to a plan with more private repositories, we'll immediately move your account to your new plan and bill you for the difference in price, prorated for the number of days left in your billing cycle. - -When you downgrade to a legacy paid plan with fewer private repositories, your new plan will take effect on your next billing date. If you have more private repositories than your new plan allows for, your private repositories will be locked when your new plan takes effect. To reduce your number of private repositories, you can make some of your private repositories public, or you can clone your private repositories locally and delete the copies on {% data variables.product.prodname_dotcom %}. - -### Further reading - -- "[How does upgrading or downgrading affect the billing process?](/articles/how-does-upgrading-or-downgrading-affect-the-billing-process)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/adding-information-to-your-receipts.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/adding-information-to-your-receipts.md deleted file mode 100644 index 978c3847963a..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/adding-information-to-your-receipts.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Adding information to your receipts -intro: 'You can add extra information to your {% data variables.product.product_name %} receipts, such as tax or accounting information required by your company or country.' -redirect_from: - - /articles/can-i-add-my-credit-card-number-to-my-receipts/ - - /articles/can-i-add-extra-information-to-my-receipts--2/ - - /articles/how-can-i-add-extra-information-to-my-receipts/ - - /articles/could-you-add-my-card-number-to-my-receipts/ - - /articles/how-can-i-add-extra-information-to-my-personal-account-s-receipts/ - - /articles/adding-information-to-your-personal-account-s-receipts/ - - /articles/how-can-i-add-extra-information-to-my-organization-s-receipts/ - - /articles/adding-information-to-your-organization-s-receipts/ - - /articles/adding-information-to-your-receipts -versions: - free-pro-team: '*' ---- - -Your receipts include your {% data variables.product.prodname_dotcom %} subscription as well as any subscriptions for [other paid features and products](/articles/about-billing-on-github). - -{% warning %} - -**Warning**: For security reasons, we strongly recommend against including any confidential or financial information (such as credit card numbers) on your receipts. - -{% endwarning %} - -### Adding information to your personal account's receipts - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.payment-info-tab %} -{% data reusables.dotcom_billing.extra_info_receipt %} - -### Adding information to your organization's receipts - -{% note %} - -**Note**: {% data reusables.dotcom_billing.org-billing-perms %} - -{% endnote %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.payment-info-tab %} -{% data reusables.dotcom_billing.extra_info_receipt %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/adding-or-editing-a-payment-method.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/adding-or-editing-a-payment-method.md deleted file mode 100644 index 2252335a71f7..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/adding-or-editing-a-payment-method.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Adding or editing a payment method -intro: You can add a payment method to your account or update your account's existing payment method at any time. -redirect_from: - - /articles/updating-your-personal-account-s-payment-method/ - - /articles/how-do-i-update-my-credit-card/ - - /articles/updating-your-account-s-credit-card/ - - /articles/updating-your-personal-account-s-credit-card/ - - /articles/updating-your-personal-account-s-paypal-information/ - - /articles/does-github-provide-invoicing/ - - /articles/switching-payment-methods-for-your-personal-account/ - - /articles/paying-for-your-github-organization-account/ - - /articles/updating-your-organization-s-credit-card/ - - /articles/updating-your-organization-s-paypal-information/ - - /articles/updating-your-organization-s-payment-method/ - - /articles/switching-payment-methods-for-your-organization/ - - /articles/adding-or-editing-a-payment-method -versions: - free-pro-team: '*' ---- -{% data reusables.dotcom_billing.payment-methods %} {% data reusables.dotcom_billing.same-payment-method %} - -We don't provide invoicing or support purchase orders for personal accounts. We email receipts monthly or yearly on your account's billing date. If your company, country, or accountant requires your receipts to provide more detail, you can also [add extra information](/articles/adding-information-to-your-personal-account-s-receipts) to your receipts. - -### Updating your personal account's payment method - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.dotcom_billing.update_payment_method %} -{% data reusables.dotcom_billing.enter-payment-info %} - -### Updating your organization's payment method - -{% data reusables.dotcom_billing.org-billing-perms %} - -If your organization is outside of the US or if you're using a corporate checking account to pay for {% data variables.product.product_name %}, PayPal could be a helpful method of payment. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.dotcom_billing.update_payment_method %} -{% data reusables.dotcom_billing.enter-payment-info %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/canceling-a-github-marketplace-app.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/canceling-a-github-marketplace-app.md deleted file mode 100644 index 8ea7be345db5..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/canceling-a-github-marketplace-app.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Canceling a GitHub Marketplace app -intro: 'You can cancel and remove a {% data variables.product.prodname_marketplace %} app from your account at any time.' -redirect_from: - - /articles/canceling-an-app-for-your-personal-account/ - - /articles/canceling-an-app-for-your-organization/ - - /articles/canceling-a-github-marketplace-app -versions: - free-pro-team: '*' ---- - -When you cancel an app, your subscription remains active until the end of your current billing cycle. The cancellation takes effect on your next billing date. For more information, see "[About billing for {% data variables.product.prodname_marketplace %}](/articles/about-billing-for-github-marketplace)." - -When you cancel a free trial on a paid plan, your subscription is immediately canceled and you will lose access to the app. If you don't cancel your free trial within the trial period, the payment method on file for your account will be charged for the plan you chose at the end of the trial period. For more information, see "[About billing for {% data variables.product.prodname_marketplace %}](/articles/about-billing-for-github-marketplace)." - -{% data reusables.marketplace.downgrade-marketplace-only %} - -### Canceling an app for your personal account - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.marketplace.cancel-app-billing-settings %} -{% data reusables.marketplace.cancel-app %} - -### Canceling a free trial for an app for your personal account - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.marketplace.cancel-free-trial-billing-settings %} -{% data reusables.marketplace.cancel-app %} - -### Canceling an app for your organization - -{% data reusables.marketplace.marketplace-org-perms %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.marketplace.cancel-app-billing-settings %} -{% data reusables.marketplace.cancel-app %} - -### Canceling a free trial for an app for your organization - -{% data reusables.marketplace.marketplace-org-perms %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.marketplace.cancel-free-trial-billing-settings %} -{% data reusables.marketplace.cancel-app %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/changing-the-duration-of-your-billing-cycle.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/changing-the-duration-of-your-billing-cycle.md deleted file mode 100644 index be7799346d2a..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/changing-the-duration-of-your-billing-cycle.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Changing the duration of your billing cycle -intro: You can pay for your account's subscription and other paid features and products on a monthly or yearly billing cycle. -redirect_from: - - /articles/monthly-and-yearly-billing/ - - /articles/switching-between-monthly-and-yearly-billing-for-your-personal-account/ - - /articles/switching-between-monthly-and-yearly-billing-for-your-organization/ - - /articles/changing-the-duration-of-your-billing-cycle -versions: - free-pro-team: '*' ---- - -When you change your billing cycle's duration, your {% data variables.product.prodname_dotcom %} subscription, along with any other paid features and products, will be moved to your new billing cycle on your next billing date. - -### Changing the duration of your personal account's billing cycle - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.dotcom_billing.change_plan_duration %} -{% data reusables.dotcom_billing.confirm_duration_change %} - -### Changing the duration of your organization's billing cycle - -{% data reusables.dotcom_billing.org-billing-perms %} - -#### Changing the duration of a per-user subscription - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.billing %} -{% data reusables.dotcom_billing.change_plan_duration %} -{% data reusables.dotcom_billing.confirm_duration_change %} - -#### Changing the duration of a legacy per-repository plan - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.billing %} -4. Under "Billing overview", click **Change plan**. - ![Billing overview change plan button](/assets/images/help/billing/billing_overview_change_plan.png) -5. At the top right corner, click **Switch to monthly billing** or **Switch to yearly billing**. - ![Billing information section](/assets/images/help/billing/settings_billing_organization_plans_switch_to_yearly.png) diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/creating-and-paying-for-an-organization-on-behalf-of-a-client.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/creating-and-paying-for-an-organization-on-behalf-of-a-client.md deleted file mode 100644 index c1743cd9df29..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/creating-and-paying-for-an-organization-on-behalf-of-a-client.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Creating and paying for an organization on behalf of a client -intro: 'You can create and pay for a {% data variables.product.prodname_dotcom %} organization on behalf of a client.' -redirect_from: - - /articles/creating-and-paying-for-an-organization-on-behalf-of-a-client -versions: - free-pro-team: '*' ---- - -### Requirements - -Before you start, make sure you know: -- The {% data variables.product.prodname_dotcom %} username of the client who will become the owner of the organization you create -- The name your client would like to use for the organization -- The email address where you would like receipts to be sent -- The [product](/articles/github-s-products) your client would like to purchase -- The number of [paid seats](/articles/about-per-user-pricing/) your client would like you to purchase for the organization - -### Step 1: Create your personal {% data variables.product.prodname_dotcom %} account - -You will use your personal account to set up the organization. You'll also need to sign in to this account to renew or make changes to your client's subscription in the future. - -If you already have a personal {% data variables.product.prodname_dotcom %} user account, skip to [step 2](#step-2-create-the-organization). - -1. Go to the [Join GitHub](https://github.com/join) page. -2. Under "Create your personal account," type your username, email address, and password, then click **Create an account**. -![Create personal account entry form](/assets/images/help/billing/billing_create_your_personal_account_form.png) -3. Select {% data variables.product.prodname_free_user %} for your personal account. -4. Click **Finish sign up**. - -### Step 2: Create the organization - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.organizations %} -{% data reusables.organizations.new-organization %} -3. Under "Choose a plan", click **Choose {% data variables.product.prodname_free_team %}**. You will upgrade the organization in the next step. -{% data reusables.organizations.organization-name %} -5. Under "Contact email", type a contact email address for your client. - ![Contact email field](/assets/images/help/organizations/contact-email-field.png) -{% data reusables.dotcom_billing.owned_by_business %} -8. Click **Next**. - -### Step 3: Upgrade the organization to a yearly paid subscription - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.dotcom_billing.upgrade_org %} -{% data reusables.dotcom_billing.choose_org_plan %} (You can add more seats to the organization in the next step.) -6. Under "Upgrade summary", select **Pay yearly** to pay for the organization yearly. -![Radio button for yearly billing](/assets/images/help/billing/choose-annual-billing-org-resellers.png) -{% data reusables.dotcom_billing.show-plan-details %} -{% data reusables.dotcom_billing.add-payment-method %} -1. Under "Pay with", type your credit card information. -![Form for entering credit card information](/assets/images/help/billing/settings_billing_upgrade_with_credit_card.png) -1. Click **Update credit card**. -{% data reusables.dotcom_billing.finish_upgrade %} - -### Step 4: Upgrade the number of paid seats in the organization - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.dotcom_billing.add-seats %} -{% data reusables.dotcom_billing.number-of-seats %} -{% data reusables.dotcom_billing.confirm-add-seats %} - -### Step 5: Invite your client to join the organization - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -{% data reusables.organizations.invite_member_from_people_tab %} -5. Type your client's {% data variables.product.prodname_dotcom %} username and press **Enter**. -![Field to type your client's username](/assets/images/help/organizations/org-invite-modal.png) -6. Choose the *owner* role for your client, then click **Send invitation**. -![Owner radio button and send invitation button](/assets/images/help/organizations/add-owner-send-invite-reseller.png) -7. Your client will receive an email inviting them to the organization. They will need to accept the invitation before you can move on to the next step. - -### Step 6: Transfer organization ownership to your client - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -4. Confirm that your client is listed among the members of the organization and is assigned the *owner* role. -5. To the right of your username, use the {% octicon "gear" aria-label="The Settings gear" %} drop-down menu, and click **Manage**. - ![The manage access link](/assets/images/help/organizations/member-manage-access.png) -6. On the left, click **Remove from organization**. - ![Remove from organization button](/assets/images/help/organizations/remove-from-org-button.png) -7. Confirm your choice and click **Remove members**. - ![Remove members confirmation button](/assets/images/help/organizations/confirm-remove-from-org.png) - -### Next steps - -1. Contact your client and ask them to [add you to the organization as a billing manager](/articles/adding-a-billing-manager-to-your-organization). You'll need to be a billing manager for the organization so that you can renew or make changes to your client's subscription in the future. -2. If you would like your organization's credit card to be removed from the organization so that it's not charged again, contact {% data variables.contact.contact_support %}. -3. When it's time to renew your client's paid subscription, see "[Renewing your client's paid organization](/articles/renewing-your-client-s-paid-organization)." - -### Further reading - -- "[About organizations for procurement companies](/articles/about-organizations-for-procurement-companies)" -- "[Upgrading or downgrading your client's paid organization](/articles/upgrading-or-downgrading-your-client-s-paid-organization)" -- "[Renewing your client's paid organization](/articles/renewing-your-client-s-paid-organization)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/discounted-subscriptions-for-github-accounts.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/discounted-subscriptions-for-github-accounts.md deleted file mode 100644 index d8d5d87aa299..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/discounted-subscriptions-for-github-accounts.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Discounted subscriptions for GitHub accounts -intro: '{% data variables.product.product_name %} provides discounts to students, educators, educational institutions, nonprofits, and libraries.' -redirect_from: - - /articles/discounted-personal-accounts/ - - /articles/discounted-organization-accounts/ - - /articles/discounted-billing-plans/ - - /articles/discounted-subscriptions-for-github-accounts -versions: - free-pro-team: '*' ---- - -{% tip %} - -**Tip**: Discounts for {% data variables.product.prodname_dotcom %} do not apply to subscriptions for other paid products and features. - -{% endtip %} - -### Discounts for personal accounts - -In addition to the unlimited public and private repositories for students and faculty with {% data variables.product.prodname_free_user %}, verified students can apply for the {% data variables.product.prodname_student_pack %} to receive additional benefits from {% data variables.product.prodname_dotcom %} partners. For more information, see "[Applying for a student developer pack](/articles/applying-for-a-student-developer-pack)." - -### Discounts for schools and universities - -Verified academic faculty can apply for {% data variables.product.prodname_team %} for teaching or academic research. For more information, see "[Using {% data variables.product.prodname_dotcom %} in your classroom and research](/articles/using-github-in-your-classroom-and-research)." You can also request educational materials goodies for your students. For more information, visit [{% data variables.product.prodname_education %}](https://education.github.com/). - -### Discounts for nonprofits and libraries - -{% data variables.product.product_name %} provides free {% data variables.product.prodname_team %} for organizations with unlimited private repositories, unlimited collaborators, and a full feature set to qualifying 501(c)3 (or equivalent) organizations and libraries. You can request a discount for your organization on [our nonprofit page](https://github.com/nonprofit). - -If your organization already has a paid subscription, your organization's last transaction will be refunded once your nonprofit discount has been applied. - -### Further reading - -- "[About billing on {% data variables.product.prodname_dotcom %}](/articles/about-billing-on-github)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-a-sponsorship.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-a-sponsorship.md deleted file mode 100644 index 5ec6dafb61d3..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-a-sponsorship.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Downgrading a sponsorship -intro: You can downgrade your sponsorship to a lower tier or cancel your sponsorship. -redirect_from: - - /articles/downgrading-a-sponsorship -versions: - free-pro-team: '*' ---- - -### Downgrading a sponsorship - -When you downgrade a sponsorship, the change will become effective on your next billing date. {% data reusables.sponsors.no-refunds %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.sponsors.change-tier %} -4. On the right side of the page, next to your selected tier, click **Edit**. - ![Edit tier button](/assets/images/help/billing/edit-tier-button.png) -{% data reusables.sponsors.select-a-tier %} -{% data reusables.sponsors.update-sponsorship %} - -### Canceling a sponsorship - -When you cancel a sponsorship, the change will become effective on your next billing date. {% data reusables.sponsors.no-refunds %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.subscriptions-tab %} -3. Under "{% data variables.product.prodname_sponsors %}", to the right of the sponsored open source contributor, click {% octicon "triangle-down" aria-label="The down triangle octicon" %} next to your sponsored amount, then click **Cancel sponsorship**. - ![Cancel sponsorship button](/assets/images/help/billing/edit-sponsor-billing.png) -4. Review the information about canceling your sponsorship, then click **OK**. - ![Cancellation confirmation box](/assets/images/help/billing/confirm-sponsorship-cancellation.png) diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-git-large-file-storage.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-git-large-file-storage.md deleted file mode 100644 index 8ae009055028..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-git-large-file-storage.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Downgrading Git Large File Storage -intro: 'You can downgrade storage and bandwidth for {% data variables.large_files.product_name_short %} by increments of 50 GB per month.' -redirect_from: - - /articles/downgrading-storage-and-bandwidth-for-a-personal-account/ - - /articles/downgrading-storage-and-bandwidth-for-an-organization/ - - /articles/downgrading-git-large-file-storage -versions: - free-pro-team: '*' ---- - -When you downgrade your number of data packs, your change takes effect on your next billing date. For more information, see "[About billing for {% data variables.large_files.product_name_long %}](/articles/about-billing-for-git-large-file-storage)." - -### Downgrading storage and bandwidth for a personal account - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.dotcom_billing.lfs-remove-data %} -{% data reusables.large_files.downgrade_data_packs %} - -### Downgrading storage and bandwidth for an organization - -{% data reusables.dotcom_billing.org-billing-perms %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.dotcom_billing.lfs-remove-data %} -{% data reusables.large_files.downgrade_data_packs %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-the-billing-plan-for-a-github-marketplace-app.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-the-billing-plan-for-a-github-marketplace-app.md deleted file mode 100644 index 0ee8629d6351..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-the-billing-plan-for-a-github-marketplace-app.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Downgrading the billing plan for a GitHub Marketplace app -intro: 'If you''d like to use a different billing plan, you can downgrade your {% data variables.product.prodname_marketplace %} app at any time.' -redirect_from: - - /articles/downgrading-an-app-for-your-personal-account/ - - /articles/downgrading-an-app-for-your-organization/ - - /articles/downgrading-the-billing-plan-for-a-github-marketplace-app -versions: - free-pro-team: '*' ---- - -When you downgrade an app, your subscription remains active until the end of your current billing cycle. The downgrade takes effect on your next billing date. For more information, see "[About billing for {% data variables.product.prodname_marketplace %}](/articles/about-billing-for-github-marketplace)." - -{% data reusables.marketplace.downgrade-marketplace-only %} - -### Downgrading an app for your personal account - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.marketplace.downgrade-app-billing-settings %} -{% data reusables.marketplace.choose-new-plan %} -{% data reusables.marketplace.choose-new-quantity %} -{% data reusables.marketplace.issue-plan-changes %} - -### Downgrading an app for your organization - -{% data reusables.marketplace.marketplace-org-perms %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.marketplace.downgrade-app-billing-settings %} -{% data reusables.marketplace.choose-new-plan %} -{% data reusables.marketplace.choose-new-quantity %} -{% data reusables.marketplace.issue-plan-changes %} - -### Further reading - -- "[Canceling a {% data variables.product.prodname_marketplace %} app](/articles/canceling-a-github-marketplace-app/)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-your-github-subscription.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-your-github-subscription.md deleted file mode 100644 index 52e4c319e30a..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-your-github-subscription.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Downgrading your GitHub subscription -intro: 'You can downgrade the subscription for any type of {% data variables.product.product_name %} account at any time.' -redirect_from: - - /articles/downgrading-your-personal-account-s-billing-plan/ - - /articles/how-do-i-cancel-my-account/ - - /articles/downgrading-a-user-account-to-free/ - - /articles/removing-paid-seats-from-your-organization/ - - /articles/downgrading-your-organization-s-paid-seats/ - - /articles/downgrading-your-organization-s-billing-plan/ - - /articles/downgrading-an-organization-with-per-seat-pricing-to-free/ - - /articles/downgrading-an-organization-with-per-repository-pricing-to-free/ - - /articles/downgrading-your-organization-to-free/ - - /articles/downgrading-your-organization-from-the-business-plan-to-the-team-plan/ - - /articles/downgrading-your-organization-from-github-business-cloud-to-the-team-plan/ - - /articles/downgrading-your-github-billing-plan/ - - /articles/downgrading-your-github-subscription -versions: - free-pro-team: '*' ---- - -### Downgrading your {% data variables.product.product_name %} subscription - -When you downgrade your user account or organization's subscription, pricing and account feature changes take effect on your next billing date. Changes to your paid user account or organization subscription does not affect subscriptions or payments for other paid {% data variables.product.prodname_dotcom %} features. For more information, see "[How does upgrading or downgrading affect the billing process?](/articles/how-does-upgrading-or-downgrading-affect-the-billing-process)." - -### Downgrading your user account's subscription - -If you downgrade your user account from {% data variables.product.prodname_pro %} to {% data variables.product.prodname_free_user %}, the account will lose access to advanced code review tools on private repositories. {% data reusables.gated-features.more-info %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.subscriptions-tab %} -4. Use the **Edit** drop-down and click **Downgrade to Free**. - ![Downgrade to free button](/assets/images/help/billing/downgrade-to-free.png) -5. Read the information about the features your user account will no longer have access to on your next billing date, then click **I understand. Continue with downgrade**. - ![Continue with downgrade button](/assets/images/help/billing/continue-with-downgrade.png) - -If you published a {% data variables.product.prodname_pages %} site in a private repository and added a custom domain, remove or update your DNS records before downgrading from {% data variables.product.prodname_pro %} to {% data variables.product.prodname_free_user %}, to avoid the risk of a domain takeover. For more information, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site)." - -### Downgrading your organization's subscription - -{% data reusables.dotcom_billing.org-billing-perms %} - -If you downgrade your organization from {% data variables.product.prodname_team %} to {% data variables.product.prodname_free_team %} for an organization, the account will lose access to advanced collaboration and management tools for teams. - -If you downgrade your organization from {% data variables.product.prodname_ghe_cloud %} to {% data variables.product.prodname_team %} or {% data variables.product.prodname_free_team %}, the account will lose access to advanced security, compliance, and deployment controls. {% data reusables.gated-features.more-info %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -6. Use the **Edit** drop-down and click the downgrade option you want. - ![Downgrade button](/assets/images/help/billing/downgrade-option-button.png) -{% data reusables.dotcom_billing.confirm_cancel_org_plan %} - -### Downgrading an organization's subscription with legacy per-repository pricing - -{% data reusables.dotcom_billing.org-billing-perms %} - -{% data reusables.dotcom_billing.switch-legacy-billing %} For more information, see "[Switching your organization from per-repository to per-user pricing](/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-your-github-subscription#switching-your-organization-from-per-repository-to-per-user-pricing)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -5. Under "Subscriptions", select the "Edit" drop-down, and click **Edit plan**. - ![Edit Plan dropdown](/assets/images/help/billing/edit-plan-dropdown.png) -1. Under "Billing/Plans", next to the plan you want to change, click **Downgrade**. - ![Downgrade button](/assets/images/help/billing/downgrade-plan-option-button.png) -1. Enter the reason you're downgrading your account, then click **Downgrade plan**. - ![Text box for downgrade reason and downgrade button](/assets/images/help/billing/downgrade-plan-button.png) - -### Removing paid seats from your organization - -To reduce the number of paid seats your organization uses, you can remove members from your organization or convert members to outside collaborators and give them access to only public repositories. For more information, see: -- "[Removing a member from your organization](/articles/removing-a-member-from-your-organization)" -- "[Converting an organization member to an outside collaborator](/articles/converting-an-organization-member-to-an-outside-collaborator)" -- "[Managing an individual's access to an organization repository](/articles/managing-an-individual-s-access-to-an-organization-repository)" - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -6. Use the **Edit** drop-down and click **Remove seats**. - ![remove seats dropdown](/assets/images/help/billing/remove-seats-dropdown.png) -1. Under "Remove seats", select the number of seats you'd like to downgrade to. - ![remove seats option](/assets/images/help/billing/remove-seats-amount.png) -1. Review the information about your new payment on your next billing date, then click **Remove seats**. - ![remove seats button](/assets/images/help/billing/remove-seats-button.png) - -### Further reading - -- "[{% data variables.product.prodname_dotcom %}'s products](/articles/github-s-products)" -- "[How does upgrading or downgrading affect the billing process?](/articles/how-does-upgrading-or-downgrading-affect-the-billing-process)" -- "[About billing on {% data variables.product.prodname_dotcom %}](/articles/about-billing-on-github)." -- "[Removing a payment method](/articles/removing-a-payment-method)" -- "[About per-user pricing](/articles/about-per-user-pricing)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/how-does-upgrading-or-downgrading-affect-the-billing-process.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/how-does-upgrading-or-downgrading-affect-the-billing-process.md deleted file mode 100644 index 28dcc69c66b8..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/how-does-upgrading-or-downgrading-affect-the-billing-process.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: How does upgrading or downgrading affect the billing process? -intro: 'When you upgrade the subscription for your personal account or organization, changes are applied immediately. When you downgrade your subscription, changes are applied at the end of your current billing cycle.' -redirect_from: - - /articles/how-does-upgrading-or-downgrading-affect-the-billing-process -versions: - free-pro-team: '*' ---- - -Changes to your paid user account or organization subscription does not affect subscriptions or payments for other paid {% data variables.product.prodname_dotcom %} features, such as {% data variables.large_files.product_name_long %} or paid apps purchased in {% data variables.product.prodname_marketplace %}. - -For more information, see "[{% data variables.product.prodname_dotcom %}'s products](/articles/github-s-products)" and "[About billing on {% data variables.product.prodname_dotcom %}](/articles/about-billing-on-github)." - -#### Example of canceling a paid subscription for a personal account or organization - -Kumiko pays for a monthly subscription on the 5th of every month. If Kumiko downgrades from the paid subscription to {% data variables.product.prodname_free_user %} on October 10th, her paid subscription will remain in effect until the end of her current billing cycle on November 4th. On November 5th, her account will move to {% data variables.product.prodname_free_user %}. - -#### Example of changing from a yearly to a monthly subscription for a personal account or organization - -Ravi pays for a yearly subscription on October 5th every year. If Ravi switches from a yearly to monthly billing on December 10th, his account remains on the yearly subscription until the end of its current billing cycle on October 4th the next year. On October 5th of the next year, Ravi will be charged for a month of service. His next billing date will be November 5th. - -#### Example of adding paid seats to your organization - -Mada's organization pays for 25 seats on the 15th of every month. If Mada adds ten paid seats on June 4th, her organization is immediately charged a prorated amount for ten additional seats for the time between June 4th and June 14th, and the seats are available to use immediately. On June 15th, Mada's organization will pay for 35 seats. - -#### Example of removing paid seats from your organization - -Stefan's organization pays for 50 seats every year on May 20th. If Stefan removes 20 seats and downgrades to a new total of 30 paid seats on September 30, his organization can still access its 50 paid seats until the end of its current billing cycle on May 19th. On May 20th, the downgrade will take effect - Stefan's organization will pay for 30 seats and will have access to 30 paid seats. - -### Further reading - -- "[Managing billing for your {% data variables.product.prodname_dotcom %} account](/articles/managing-billing-for-your-github-account)" -- "[Managing billing for {% data variables.product.prodname_marketplace %} apps](/articles/managing-billing-for-github-marketplace-apps)" -- "[Managing billing for {% data variables.large_files.product_name_long %}](/articles/managing-billing-for-git-large-file-storage)" -- "[About per-user pricing](/articles/about-per-user-pricing)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/index.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/index.md deleted file mode 100644 index 1ec07412e38b..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/index.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Setting up and managing billing and payments on GitHub -shortTitle: Billing and payments -redirect_from: - - /categories/setting-up-and-managing-billing-and-payments-on-github -versions: - free-pro-team: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /managing-your-github-billing-settings %} - {% link_in_list /about-billing-on-github %} - {% link_in_list /viewing-your-subscriptions-and-billing-date %} - {% link_in_list /adding-or-editing-a-payment-method %} - {% link_in_list /viewing-your-payment-history-and-receipts %} - {% link_in_list /adding-information-to-your-receipts %} - {% link_in_list /setting-your-billing-email %} - {% link_in_list /changing-the-duration-of-your-billing-cycle %} - {% link_in_list /redeeming-a-coupon %} - {% link_in_list /troubleshooting-a-declined-credit-card-charge %} - {% link_in_list /unlocking-a-locked-account %} - {% link_in_list /removing-a-payment-method %} -{% topic_link_in_list /managing-billing-for-your-github-account %} - {% link_in_list /about-billing-for-github-accounts %} - {% link_in_list /about-per-user-pricing %} - {% link_in_list /how-does-upgrading-or-downgrading-affect-the-billing-process %} - {% link_in_list /upgrading-your-github-subscription %} - {% link_in_list /viewing-and-managing-pending-changes-to-your-subscription %} - {% link_in_list /downgrading-your-github-subscription %} - {% link_in_list /discounted-subscriptions-for-github-accounts %} -{% topic_link_in_list /managing-billing-for-github-marketplace-apps %} - {% link_in_list /about-billing-for-github-marketplace %} - {% link_in_list /upgrading-the-billing-plan-for-a-github-marketplace-app %} - {% link_in_list /downgrading-the-billing-plan-for-a-github-marketplace-app %} - {% link_in_list /canceling-a-github-marketplace-app %} -{% topic_link_in_list /managing-billing-for-github-actions %} - {% link_in_list /about-billing-for-github-actions %} - {% link_in_list /viewing-your-github-actions-usage %} - {% link_in_list /managing-your-spending-limit-for-github-actions %} -{% topic_link_in_list /managing-billing-for-git-large-file-storage %} - {% link_in_list /about-billing-for-git-large-file-storage %} - {% link_in_list /viewing-your-git-large-file-storage-usage %} - {% link_in_list /upgrading-git-large-file-storage %} - {% link_in_list /downgrading-git-large-file-storage %} -{% topic_link_in_list /managing-billing-for-github-sponsors %} - {% link_in_list /about-billing-for-github-sponsors %} - {% link_in_list /upgrading-a-sponsorship %} - {% link_in_list /downgrading-a-sponsorship %} -{% topic_link_in_list /managing-billing-for-github-packages %} - {% link_in_list /about-billing-for-github-packages %} - {% link_in_list /viewing-your-github-packages-usage %} - {% link_in_list /managing-your-spending-limit-for-github-packages %} -{% topic_link_in_list /setting-up-paid-organizations-for-procurement-companies %} - {% link_in_list /about-organizations-for-procurement-companies %} - {% link_in_list /creating-and-paying-for-an-organization-on-behalf-of-a-client %} - {% link_in_list /upgrading-or-downgrading-your-clients-paid-organization %} - {% link_in_list /renewing-your-clients-paid-organization %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-git-large-file-storage.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-git-large-file-storage.md deleted file mode 100644 index 8e2bf2e7ccab..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-git-large-file-storage.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Managing billing for Git Large File Storage -intro: 'You can view usage for, upgrade, and downgrade {% data variables.large_files.product_name_long %}.' -redirect_from: - - /articles/managing-large-file-storage-and-bandwidth-for-your-personal-account/ - - /articles/managing-large-file-storage-and-bandwidth-for-your-organization/ - - /articles/managing-storage-and-bandwidth-usage/ - - /articles/managing-billing-for-git-large-file-storage -mapTopic: true -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions.md deleted file mode 100644 index 39f30888886a..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Managing billing for GitHub Actions -intro: 'You can view your usage and set a spending limit for {% data variables.product.prodname_actions %}.' -mapTopic: true -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-marketplace-apps.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-marketplace-apps.md deleted file mode 100644 index 3f00310c38f6..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-marketplace-apps.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Managing billing for GitHub Marketplace apps -intro: 'You can upgrade, downgrade, or cancel {% data variables.product.prodname_marketplace %} apps at any time.' -redirect_from: - - /articles/managing-your-personal-account-s-apps/ - - /articles/managing-your-organization-s-apps/ - - /articles/managing-billing-for-github-marketplace-apps -mapTopic: true -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages.md deleted file mode 100644 index 18f10a288ac2..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Managing billing for GitHub Packages -intro: 'You can view your {% data variables.product.prodname_registry %} usage and set a spending limit for {% data variables.product.prodname_registry %}.' -mapTopic: true -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-sponsors.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-sponsors.md deleted file mode 100644 index f03d1f05d65e..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-sponsors.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Managing billing for GitHub Sponsors -intro: You can upgrade or downgrade the tier for each of your sponsorships. -mapTopic: true -redirect_from: - - /articles/managing-billing-for-github-sponsors -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-your-github-account.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-your-github-account.md deleted file mode 100644 index 929708d3eaae..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-your-github-account.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Managing billing for your GitHub account -intro: '{% data variables.product.product_name %} offers free and paid products for every account. You can upgrade, downgrade, and view pending changes to your account''s subscription at any time.' -redirect_from: - - /categories/97/articles/ - - /categories/paying-for-user-accounts/ - - /articles/paying-for-your-github-user-account/ - - /articles/managing-billing-on-github/ - - /articles/changing-your-personal-account-s-billing-plan/ - - /categories/billing/ - - /categories/3/articles/ - - /articles/managing-your-organization-s-paid-seats/ - - /articles/managing-billing-for-your-github-account -mapTopic: true -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-your-github-billing-settings.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-your-github-billing-settings.md deleted file mode 100644 index e684dad17cf1..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-your-github-billing-settings.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Managing your GitHub billing settings -intro: 'Your account''s billing settings apply to every paid feature or product you add to the account. You can manage settings like your payment method, billing cycle, and billing email. You can also view billing information such as your subscription, billing date, payment history, and past receipts.' -redirect_from: - - /articles/viewing-and-managing-your-personal-account-s-billing-information/ - - /articles/paying-for-user-accounts/ - - /articles/viewing-and-managing-your-organization-s-billing-information/ - - /articles/paying-for-organization-accounts/ - - /categories/paying-for-organization-accounts/articles/ - - /categories/99/articles/ - - /articles/managing-your-github-billing-settings -mapTopic: true -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-actions.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-actions.md deleted file mode 100644 index 1f70661bedff..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-actions.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Managing your spending limit for GitHub Actions -intro: 'You can set a spending limit for {% data variables.product.prodname_actions %} usage.' -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' ---- - -### About spending limits for {% data variables.product.prodname_actions %} - -{% data reusables.github-actions.actions-billing %} {% data reusables.github-actions.actions-spending-limit %} - -You can set a higher spending limit or, for some accounts, allow unlimited spending. If you pay for your organization or enterprise account by invoice, you can prepay for overages to set a higher spending limit. The spending limit applies to your combined overages for {% data variables.product.prodname_actions %} and {% data variables.product.prodname_registry %}. For more information about pricing for {% data variables.product.prodname_actions %} usage, see "[About billing for {% data variables.product.prodname_actions %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions)." - -As soon as you set a spending limit above $0, you will be responsible for any overages that occurred in the past. For example, if your organization uses {% data variables.product.prodname_team %}, does not allow overages, and creates workflow artifacts that increase your storage usage for the month from 1.9GB to 2.1GB, you will use slightly more storage than the 2GB your product includes. - -Because you have not enabled overages, your next attempt to publish a version of the package will fail. You will not receive a bill for the 0.1GB overage that month. However, if you enable overages in a future month, your first bill will include the 0.1GB of overage from the past in addition to any overages for the current billing cycle. - -### Managing the spending limit for {% data variables.product.prodname_actions %} for your user account - -Anyone can manage the spending limit for {% data variables.product.prodname_actions %} for their own user account. - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.cost-management-tab %} -{% data reusables.dotcom_billing.monthly-spending-limit %} -{% data reusables.dotcom_billing.update-spending-limit %} - -### Managing the spending limit for {% data variables.product.prodname_actions %} for your organization - -Organizations owners and billing managers can manage the spending limit for {% data variables.product.prodname_actions %} for an organization. - -If you pay for your organization account by invoice, you cannot manage the spending limit for your enterprise account on {% data variables.product.product_name %}. If you want to allow repositories owned by your organization to use {% data variables.product.prodname_actions %} beyond the storage or data transfer included for each repository, you can prepay for overages. Because overages must prepaid, you cannot enable unlimited spending on accounts paid by invoice. Your spending limit will be 150% of the amount you prepaid. If you have any questions, [contact our account management team](https://enterprise.github.com/contact). - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.cost-management-tab %} -{% data reusables.dotcom_billing.monthly-spending-limit %} -{% data reusables.dotcom_billing.update-spending-limit %} - -### Managing the spending limit for {% data variables.product.prodname_actions %} for your enterprise account - -Enterprise owners and billing managers can manage the spending limit for {% data variables.product.prodname_actions %} for an enterprise account. - -{% data reusables.github-actions.spending-limit-enterprise-account %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.billing-tab %} -1. Under "{% data variables.product.prodname_actions %} and Packages monthly usage", click **Cost management**. - ![Cost management tab](/assets/images/help/settings/cost-management-tab-enterprise.png) -{% data reusables.dotcom_billing.monthly-spending-limit %} -{% data reusables.dotcom_billing.update-spending-limit %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-packages.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-packages.md deleted file mode 100644 index 242ac1a7c464..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-packages.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Managing your spending limit for GitHub Packages -intro: 'You can set a spending limit for {% data variables.product.prodname_registry %} usage.' -product: '{% data reusables.gated-features.packages %}' -versions: - free-pro-team: '*' ---- - -### About spending limits for {% data variables.product.prodname_registry %} - -{% data reusables.package_registry.packages-billing %} - -You can set a higher spending limit or, for some accounts, allow unlimited spending. If you pay for your organization or enterprise account by invoice, you can prepay for overages to set a higher spending limit. The spending limit applies to your combined overages for {% data variables.product.prodname_registry %} and {% data variables.product.prodname_actions %}. For more information about pricing for {% data variables.product.prodname_registry %} usage, see "[About billing for {% data variables.product.prodname_registry %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-packages)." - -As soon as you set a spending limit above $0, you will be responsible for any overages that occurred in the past. For example, if your organization uses {% data variables.product.prodname_team %}, does not allow overages, and publishes a new version of a private package that increases your storage usage for the month from 1.9GB to 2.1GB, publishing the version will use slightly more than the 2GB your product includes. - -Because you have not enabled overages, your next attempt to publish a version of the package will fail. You will not receive a bill for the 0.1GB overage that month. However, if you enable overages in a future month, your first bill will include the 0.1GB of overage from the past in addition to any overages for the current billing cycle. - -### Managing the spending limit for {% data variables.product.prodname_registry %} for your user account - -Anyone can manage the spending limit for {% data variables.product.prodname_registry %} for their own user account. - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.cost-management-tab %} -{% data reusables.dotcom_billing.monthly-spending-limit %} -{% data reusables.dotcom_billing.update-spending-limit %} - -### Managing the spending limit for {% data variables.product.prodname_registry %} for your organization - -Organizations owners and billing managers can manage the spending limit for {% data variables.product.prodname_registry %} for an organization. - -If you pay for your organization account by invoice, you cannot manage the spending limit for your enterprise account on {% data variables.product.product_name %}. If you want to allow repositories owned by your organization to use {% data variables.product.prodname_registry %} beyond the storage or data transfer included for each repository, you can prepay for overages. Because overages must prepaid, you cannot enable unlimited spending on accounts paid by invoice. Your spending limit will be 150% of the amount you prepaid. If you have any questions, [contact our account management team](https://enterprise.github.com/contact). - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.cost-management-tab %} -{% data reusables.dotcom_billing.monthly-spending-limit %} -{% data reusables.dotcom_billing.update-spending-limit %} - -### Managing the spending limit for {% data variables.product.prodname_registry %} for your enterprise account - -Enterprise owners and billing managers can manage the spending limit for {% data variables.product.prodname_registry %} for an enterprise account. - -{% data reusables.package_registry.spending-limit-enterprise-account %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.billing-tab %} -1. Under "{% data variables.product.prodname_actions %} and Packages monthly usage", click **Cost management**. - ![Cost management tab](/assets/images/help/settings/cost-management-tab-enterprise.png) -{% data reusables.dotcom_billing.monthly-spending-limit %} -{% data reusables.dotcom_billing.update-spending-limit %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/redeeming-a-coupon.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/redeeming-a-coupon.md deleted file mode 100644 index 7ba2f817258b..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/redeeming-a-coupon.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Redeeming a coupon -intro: 'If you have a coupon, you can redeem it towards a paid {% data variables.product.prodname_dotcom %} subscription.' -redirect_from: - - /articles/where-do-i-add-a-coupon-code/ - - /articles/redeeming-a-coupon-for-your-personal-account/ - - /articles/redeeming-a-coupon-for-organizations/ - - /articles/redeeming-a-coupon -versions: - free-pro-team: '*' ---- - -{% data variables.product.product_name %} can't issue a refund if you pay for an account before applying a coupon. We also can't transfer a redeemed coupon or give you a new coupon if you apply it to the wrong account. Confirm that you're applying the coupon to the correct account before you redeem a coupon. - -You cannot apply coupons to paid plans for {% data variables.product.prodname_marketplace %} apps. - -### Redeeming a coupon for your personal account - -{% data reusables.dotcom_billing.enter_coupon_code_on_redeem_page %} -4. Under "Redeem your coupon", click **Choose** next to your *personal* account's username. - ![Choose button](/assets/images/help/settings/redeem-coupon-choose-button-for-personal-accounts.png) -{% data reusables.dotcom_billing.redeem_coupon %} - -### Redeeming a coupon for your organization - -{% data reusables.dotcom_billing.org-billing-perms %} - -{% data reusables.dotcom_billing.enter_coupon_code_on_redeem_page %} -4. Under "Redeem your coupon", click **Choose** next to the *organization* you want to apply the coupon to. If you'd like to apply your coupon to a new organization that doesn't exist yet, click **Create a new organization**. - ![Choose button](/assets/images/help/settings/redeem-coupon-choose-button.png) -{% data reusables.dotcom_billing.redeem_coupon %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/removing-a-payment-method.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/removing-a-payment-method.md deleted file mode 100644 index d28d8cb4be5b..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/removing-a-payment-method.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Removing a payment method -intro: 'If you aren''t using your payment method for any paid subscriptions on {% data variables.product.prodname_dotcom %}, you can remove the payment method so it''s no longer stored in your account.' -redirect_from: - - /articles/removing-a-credit-card-associated-with-your-user-account/ - - /articles/removing-a-payment-method-associated-with-your-user-account/ - - /articles/removing-a-credit-card-associated-with-your-organization/ - - /articles/removing-a-payment-method-associated-with-your-organization/ - - /articles/removing-a-payment-method -versions: - free-pro-team: '*' ---- - -If you're paying for your {% data variables.product.product_name %} subscription with a coupon, and you aren't using your payment method for any [other paid features or products](/articles/about-billing-on-github) on {% data variables.product.product_name %}, you can remove your credit card or PayPal information. - -{% tip %} - -**Tip:** If you [downgrade your account to a free product](/articles/downgrading-your-github-subscription) and you don't have subscriptions for any other paid features or products, we'll automatically remove your payment information. - -{% endtip %} - -### Removing your personal account's payment method - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.payment-info-tab %} -{% data reusables.dotcom_billing.remove-payment-method %} -{% data reusables.dotcom_billing.remove_payment_info %} - -### Removing your organization's payment method - -{% data reusables.dotcom_billing.org-billing-perms %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.payment-info-tab %} -{% data reusables.dotcom_billing.remove-payment-method %} -{% data reusables.dotcom_billing.remove_payment_info %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/renewing-your-clients-paid-organization.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/renewing-your-clients-paid-organization.md deleted file mode 100644 index 95f32e829cc5..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/renewing-your-clients-paid-organization.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Renewing your client's paid organization -intro: 'If your client''s organization has a valid payment method on file, their yearly subscription will automatically renew. Billing managers can view and update the organization''s payment method and subscription.' -redirect_from: - - /articles/renewing-your-client-s-paid-organization - - /articles/renewing-your-clients-paid-organization -versions: - free-pro-team: '*' ---- - -{% data reusables.organizations.reseller-ask-to-become-billing-manager %} - -{% tip %} - -**Tip**: Billing managers can also [change the organization's number of paid seats](/articles/upgrading-or-downgrading-your-client-s-paid-organization) anytime. - -{% endtip %} - -### Updating your organization's credit card - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.dotcom_billing.update_payment_method %} -1. Type your new credit card information in the secure form. - ![Credit card information form](/assets/images/help/settings/creditcard-billing-form.png) -1. Click **Update credit card** or **Save credit card**. diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/setting-up-paid-organizations-for-procurement-companies.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/setting-up-paid-organizations-for-procurement-companies.md deleted file mode 100644 index f2ed48d2f9b6..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/setting-up-paid-organizations-for-procurement-companies.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Setting up paid organizations for procurement companies -intro: 'If you pay for {% data variables.product.product_name %} on behalf of a client, you can configure their organization and payment settings to optimize convenience and security.' -redirect_from: - - /articles/setting-up-and-paying-for-organizations-for-resellers/ - - /articles/setting-up-and-paying-for-organizations-for-procurement-companies/ - - /articles/setting-up-paid-organizations-for-procurement-companies -mapTopic: true -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/setting-your-billing-email.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/setting-your-billing-email.md deleted file mode 100644 index a2d2fb3b7dfa..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/setting-your-billing-email.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Setting your billing email -intro: 'Your account''s billing email is where {% data variables.product.product_name %} sends receipts and other billing-related communication.' -redirect_from: - - /articles/setting-your-personal-account-s-billing-email/ - - /articles/can-i-change-what-email-address-received-my-github-receipt/ - - '/articles/how-do-i-change-the-billing-email,setting-your-billing-email/' - - /articles/setting-your-organization-s-billing-email/ - - /articles/setting-your-billing-email -versions: - free-pro-team: '*' ---- - -### Setting your personal account's billing email - -Your personal account's primary email is where {% data variables.product.product_name %} sends receipts and other billing-related communication. - -Your primary email address is the first email listed in your account email settings. -We also use your primary email address as our billing email address. - -If you'd like to change your billing email, see "[Changing your primary email address](/articles/changing-your-primary-email-address)." - -### Setting your organization's billing email - -Your organization's billing email is where {% data variables.product.product_name %} sends receipts and other billing-related communication. - -{% data reusables.dotcom_billing.org-billing-perms %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -4. Under **Billing email**, type a valid email address. The email does not need to be unique to the organization account. - ![Billing email textbox](/assets/images/help/settings/org-billing-email.png) -5. To confirm your changes, click **Update profile**. - ![Update profile button](/assets/images/help/settings/update-profile-button.png) - -### Managing additional recipients for your organization's billing email - -If you have users that want to receive billing reports, you can add their email addresses as billing email recipients. This feature is only available to organizations that are not managed by an enterprise. - -#### Adding a recipient for billing notifications - -{% data reusables.organizations.navigate-to-org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -1. Under "Billing management", to the right of "Email recipients", click **Add**. - ![Add recipient](/assets/images/help/billing/billing-add-email-recipient.png) -1. Type the email address of the recipient, then click **Add**. - ![Add recipient modal](/assets/images/help/billing/billing-add-email-recipient-modal.png) - -#### Changing the primary recipient for billing notifications - -One address must always be designated as the primary recipient. The address with this designation can't be removed until a new primary recipient is selected. - -{% data reusables.organizations.navigate-to-org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -1. Under "Billing management", find the email address you want to set as the primary recipient. -1. To the right of the email address, use the "Edit" drop-down menu, and click **Mark as primary**. - ![Mark primary recipient](/assets/images/help/billing/billing-change-primary-email-recipient.png) - -#### Removing a recipient from billing notifications - -{% data reusables.organizations.navigate-to-org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -1. Under "Email recipients", find the email address you want to remove. -1. For the user's entry in the list, click **Edit**. - ![Edit recipient](/assets/images/help/billing/billing-edit-email-recipient.png) -1. To the right of the email address, use the "Edit" drop-down menu, and click *Remove**. - ![Remove recipient](/assets/images/help/billing/billing-remove-email-recipient.png) -1. Review the confirmation prompt, then click **Remove**. diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/troubleshooting-a-declined-credit-card-charge.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/troubleshooting-a-declined-credit-card-charge.md deleted file mode 100644 index f76f433b3aaf..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/troubleshooting-a-declined-credit-card-charge.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Troubleshooting a declined credit card charge -intro: 'If the credit card you use to pay for {% data variables.product.product_name %} is declined, you can take several steps to ensure that your payments go through and that you are not locked out of your account.' -redirect_from: - - /articles/what-do-i-do-if-my-card-is-declined/ - - /articles/troubleshooting-a-declined-credit-card-charge -versions: - free-pro-team: '*' ---- - -If your card is declined, we'll send you an email about why the payment was declined. You'll have a few days to resolve the problem before we try charging you again. - -### Check your card's expiration date - -If your card has expired, you'll need to update your account's payment information. For more information, see "[Adding or editing a payment method](/articles/adding-or-editing-a-payment-method)." - -### Verify your bank's policy on card restrictions - -Some international banks place restrictions on international, e-commerce, and automatically recurring transactions. If you're having trouble making a payment with your international credit card, call your bank to see if there are any restrictions on your card. - -We also support payments through PayPal. For more information, see "[Adding or editing a payment method](/articles/adding-or-editing-a-payment-method)." - -### Contact your bank for details about the transaction - -Your bank can provide additional information about declined payments if you specifically ask about the attempted transaction. If there are restrictions on your card and you need to call your bank, provide this information to your bank: - -- **The amount you're being charged.** The amount for your subscription appears on your account's receipts. For more information, see "[Viewing your payment history and receipts](/articles/viewing-your-payment-history-and-receipts)." -- **The date when {% data variables.product.product_name %} bills you.** Your account's billing date appears on your receipts. -- **The transaction ID number.** Your account's transaction ID appears on your receipts. -- **The merchant name.** The merchant name is {% data variables.product.prodname_dotcom %}. -- **The error message your bank sent with the declined charge.** You can find your bank's error message on the email we send you when a charge is declined. diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/unlocking-a-locked-account.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/unlocking-a-locked-account.md deleted file mode 100644 index bc7968d21ebe..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/unlocking-a-locked-account.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Unlocking a locked account -intro: Your organization's paid features are locked if your payment is past due because of billing problems. -redirect_from: - - /articles/what-happens-if-my-account-is-locked/ - - /articles/if-my-account-is-locked-and-i-upgrade-it-do-i-owe-anything-for-previous-time/ - - /articles/if-my-account-is-locked-and-i-upgrade-it-do-i-pay-backcharges/ - - /articles/what-happens-if-my-repository-is-locked/ - - /articles/unlocking-a-locked-personal-account/ - - /articles/unlocking-a-locked-organization-account/ - - /articles/unlocking-a-locked-account -versions: - free-pro-team: '*' ---- - -You can unlock and access your account by updating your organization's payment method and resuming paid status. We do not ask you to pay for the time elapsed in locked mode. - -You can downgrade your organization to {% data variables.product.prodname_free_team %} to continue with the same advanced features in public repositories. For more information, see "[Downgrading your {% data variables.product.product_name %} subscription](/github/setting-up-and-managing-billing-and-payments-on-github/downgrading-your-github-subscription)." - -### Unlocking an organization's features due to a declined payment - -If your organization's advanced features are locked due to a declined payment, you'll need to update your billing information to trigger a newly authorized charge. For more information, see "[Adding or editing a payment method](/articles/adding-or-editing-a-payment-method)." - -If the new billing information is approved, we will immediately charge you for the paid product you chose. The organization will automatically unlock when a successful payment has been made. diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-a-sponsorship.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-a-sponsorship.md deleted file mode 100644 index 7637a1e68b3a..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-a-sponsorship.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Upgrading a sponsorship -intro: You can upgrade your sponsorship to a higher tier. -redirect_from: - - /articles/upgrading-a-sponsorship -versions: - free-pro-team: '*' ---- - -When you upgrade your sponsorship tier, the change will become effective immediately. {% data reusables.sponsors.prorated-sponsorship %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.sponsors.change-tier %} -4. On the right side of the page, next to your selected tier, click **Edit**. - ![Edit tier button](/assets/images/help/billing/edit-tier-button.png) -{% data reusables.sponsors.select-a-tier %} -{% data reusables.sponsors.update-sponsorship %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-git-large-file-storage.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-git-large-file-storage.md deleted file mode 100644 index 19dd20d6d311..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-git-large-file-storage.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Upgrading Git Large File Storage -intro: 'You can purchase additional data packs to increase your monthly bandwidth quota and total storage capacity for {% data variables.large_files.product_name_short %}.' -redirect_from: - - /articles/purchasing-additional-storage-and-bandwidth-for-a-personal-account/ - - /articles/purchasing-additional-storage-and-bandwidth-for-an-organization/ - - /articles/upgrading-git-large-file-storage -versions: - free-pro-team: '*' ---- - -### Purchasing additional storage and bandwidth for a personal account - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.dotcom_billing.lfs-add-data %} -{% data reusables.large_files.pack_selection %} -{% data reusables.large_files.pack_confirm %} - -### Purchasing additional storage and bandwidth for an organization - -{% data reusables.dotcom_billing.org-billing-perms %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.dotcom_billing.lfs-add-data %} -{% data reusables.large_files.pack_selection %} -{% data reusables.large_files.pack_confirm %} - -### Further reading - -- "[About billing for {% data variables.large_files.product_name_long %}](/articles/about-billing-for-git-large-file-storage)" -- "[About storage and bandwidth usage](/articles/about-storage-and-bandwidth-usage)" -- "[Viewing your {% data variables.large_files.product_name_long %} usage](/articles/viewing-your-git-large-file-storage-usage)" -- "[Versioning large files](/articles/versioning-large-files)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-or-downgrading-your-clients-paid-organization.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-or-downgrading-your-clients-paid-organization.md deleted file mode 100644 index a92f60b0396a..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-or-downgrading-your-clients-paid-organization.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Upgrading or downgrading your client's paid organization -intro: Billing managers can upgrade or downgrade a client's paid organization at any time. -redirect_from: - - /articles/upgrading-or-downgrading-your-client-s-paid-organization - - /articles/upgrading-or-downgrading-your-clients-paid-organization -versions: - free-pro-team: '*' ---- - -{% data reusables.organizations.reseller-ask-to-become-billing-manager %} - -{% tip %} - -**Tips**: -- Before you upgrade your client's organization, you can [view or update the payment method on file for the organization](/articles/adding-or-editing-a-payment-method). -- These instructions are for upgrading and downgrading organizations on the *per-seat subscription*. If your client pays for {% data variables.product.product_name %} using a *legacy per-repository* plan, you can upgrade or [downgrade](/articles/downgrading-your-github-subscription) their legacy plan, or [switch their organization to per-seat pricing](/articles/upgrading-your-github-subscription). - -{% endtip %} - -### Upgrading an organization's number of paid seats - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.dotcom_billing.add-seats %} -{% data reusables.dotcom_billing.number-of-seats %} -{% data reusables.dotcom_billing.confirm-add-seats %} - -After you add seats, the payment method on file for the organization will be charged a pro-rated amount based on the number of seats you're adding and the amount of time left in your billing cycle. - -### Downgrading an organization's number of paid seats to free - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.dotcom_billing.downgrade-org-to-free %} -{% data reusables.dotcom_billing.confirm_cancel_org_plan %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-the-billing-plan-for-a-github-marketplace-app.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-the-billing-plan-for-a-github-marketplace-app.md deleted file mode 100644 index 47f0471d8d5a..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-the-billing-plan-for-a-github-marketplace-app.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Upgrading the billing plan for a GitHub Marketplace app -intro: 'You can upgrade your {% data variables.product.prodname_marketplace %} app to a different plan at any time.' -redirect_from: - - /articles/upgrading-an-app-for-your-personal-account/ - - /articles/upgrading-an-app-for-your-organization/ - - /articles/upgrading-the-billing-plan-for-a-github-marketplace-app -versions: - free-pro-team: '*' ---- - -When you upgrade an app, your payment method is charged a prorated amount based on the time remaining until your next billing date. For more information, see "[About billing for {% data variables.product.prodname_marketplace %}](/articles/about-billing-for-github-marketplace)." - -### Upgrading an app for your personal account - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.marketplace.upgrade-app-billing-settings %} -{% data reusables.marketplace.choose-new-plan %} -{% data reusables.marketplace.choose-new-quantity %} -{% data reusables.marketplace.issue-plan-changes %} - -### Upgrading an app for your organization - -{% data reusables.marketplace.marketplace-org-perms %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.marketplace.upgrade-app-billing-settings %} -{% data reusables.marketplace.choose-new-plan %} -{% data reusables.marketplace.choose-new-quantity %} -{% data reusables.marketplace.issue-plan-changes %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-your-github-subscription.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-your-github-subscription.md deleted file mode 100644 index 782a9b2f4ada..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-your-github-subscription.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Upgrading your GitHub subscription -intro: 'You can upgrade the subscription for any type of {% data variables.product.product_name %} account at any time.' -redirect_from: - - /articles/upgrading-your-personal-account-s-billing-plan/ - - /articles/upgrading-your-personal-account/ - - /articles/upgrading-your-personal-account-from-free-to-a-paid-account/ - - /articles/upgrading-your-personal-account-from-free-to-paid-with-a-credit-card/ - - /articles/upgrading-your-personal-account-from-free-to-paid-with-paypal/ - - /articles/500-error-while-upgrading/ - - /articles/upgrading-your-organization-s-billing-plan/ - - /articles/changing-your-organization-billing-plan/ - - /articles/upgrading-your-organization-account-from-free-to-paid-with-a-credit-card/ - - /articles/upgrading-your-organization-account-from-free-to-paid-with-paypal/ - - /articles/upgrading-your-organization-account/ - - /articles/switching-from-per-repository-to-per-user-pricing/ - - /articles/adding-seats-to-your-organization/ - - /articles/upgrading-your-github-billing-plan/ - - /articles/upgrading-your-github-subscription -versions: - free-pro-team: '*' ---- - -### Upgrading your personal account's subscription - -You can upgrade your personal account from {% data variables.product.prodname_free_user %} to {% data variables.product.prodname_pro %} to get advanced code review tools on private repositories. {% data reusables.gated-features.more-info %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.subscriptions-tab %} -4. Next to "{% data variables.product.prodname_free_user %}", click **Upgrade**. - ![Upgrade button](/assets/images/help/billing/settings_billing_user_upgrade.png) -{% data reusables.dotcom_billing.choose-monthly-or-yearly-billing %} -{% data reusables.dotcom_billing.show-plan-details %} -{% data reusables.dotcom_billing.enter-payment-info %} -{% data reusables.dotcom_billing.finish_upgrade %} - -### Upgrading your organization's subscription - -You can upgrade your organization from {% data variables.product.prodname_free_team %} for an organization to {% data variables.product.prodname_team %} to access advanced collaboration and management tools for teams, or upgrade your organization to {% data variables.product.prodname_ghe_cloud %} for additional security, compliance, and deployment controls. {% data reusables.gated-features.more-info-org-products %} - -{% data reusables.dotcom_billing.org-billing-perms %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.dotcom_billing.upgrade_org %} -{% data reusables.dotcom_billing.choose_org_plan %} -{% data reusables.dotcom_billing.choose-monthly-or-yearly-billing %} -{% data reusables.dotcom_billing.show-plan-details %} -{% data reusables.dotcom_billing.enter-payment-info %} -{% data reusables.dotcom_billing.owned_by_business %} -{% data reusables.dotcom_billing.finish_upgrade %} - -#### Next steps for organizations using {% data variables.product.prodname_ghe_cloud %} - -If you upgraded your organization to {% data variables.product.prodname_ghe_cloud %}, you can set up identity and access management for your organization. For more information, see "[Managing SAML single sign-on for your organization](/articles/managing-saml-single-sign-on-for-your-organization)." - -If you'd like to use an enterprise account with {% data variables.product.prodname_ghe_cloud %}, contact {% data variables.contact.contact_enterprise_sales %}. For more information, see "[About enterprise accounts](/articles/about-enterprise-accounts)." - -### Adding seats to your organization - -If you'd like additional users to have access to your {% data variables.product.prodname_team %} organization's private repositories, you can purchase more seats anytime. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.dotcom_billing.add-seats %} -{% data reusables.dotcom_billing.number-of-seats %} -{% data reusables.dotcom_billing.confirm-add-seats %} - -### Switching your organization from per-repository to per-user pricing - -{% data reusables.dotcom_billing.switch-legacy-billing %} For more information, see "[About per-user pricing](/articles/about-per-user-pricing)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -5. To the right of your plan name, use the **Edit** drop-down menu, and select **Edit plan**. - ![Edit drop-down menu](/assets/images/help/billing/per-user-upgrade-button.png) -6. To the right of "Advanced tools for teams", click **Upgrade now**. - ![Upgrade now button](/assets/images/help/billing/per-user-upgrade-now-button.png) -{% data reusables.dotcom_billing.choose_org_plan %} -{% data reusables.dotcom_billing.choose-monthly-or-yearly-billing %} -{% data reusables.dotcom_billing.owned_by_business %} -{% data reusables.dotcom_billing.finish_upgrade %} - -### Troubleshooting a 500 error when upgrading - -{% data reusables.dotcom_billing.500-error %} - -### Further reading - -- "[{% data variables.product.prodname_dotcom %}'s products](/articles/github-s-products)" -- "[How does upgrading or downgrading affect the billing process?](/articles/how-does-upgrading-or-downgrading-affect-the-billing-process)" -- "[About billing on {% data variables.product.prodname_dotcom %}](/articles/about-billing-on-github)." diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-and-managing-pending-changes-to-your-subscription.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-and-managing-pending-changes-to-your-subscription.md deleted file mode 100644 index 260b634f81f7..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-and-managing-pending-changes-to-your-subscription.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Viewing and managing pending changes to your subscription -intro: You can view and cancel pending changes to your subscriptions before they take effect on your next billing date. -redirect_from: - - /articles/viewing-and-managing-pending-changes-to-your-personal-account-s-billing-plan/ - - /articles/viewing-and-managing-pending-changes-to-your-organization-s-billing-plan/ - - /articles/viewing-and-managing-pending-changes-to-your-billing-plan/ - - /articles/viewing-and-managing-pending-changes-to-your-subscription -versions: - free-pro-team: '*' ---- - -You can cancel pending changes to your account's subscription as well as pending changes to your subscriptions to other paid features and products. - -When you cancel a pending change, your subscription will not change on your next billing date (unless you make a subsequent change to your subscription before your next billing date). - -### Viewing and managing pending changes to your personal account's subscription - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.dotcom_billing.review-pending-changes %} -{% data reusables.dotcom_billing.cancel-pending-changes %} -{% data reusables.dotcom_billing.confirm-cancel-pending-changes %} - -### Viewing and managing pending changes to your organization's subscription - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.dotcom_billing.review-pending-changes %} -{% data reusables.dotcom_billing.cancel-pending-changes %} -{% data reusables.dotcom_billing.confirm-cancel-pending-changes %} - -### Further reading - -- "[{% data variables.product.prodname_dotcom %}'s products](/articles/github-s-products)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-git-large-file-storage-usage.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-git-large-file-storage-usage.md deleted file mode 100644 index 10f786b60db2..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-git-large-file-storage-usage.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Viewing your Git Large File Storage usage -intro: 'You can audit your account''s monthly bandwidth quota and remaining storage for {% data variables.large_files.product_name_short %}.' -redirect_from: - - /articles/viewing-storage-and-bandwidth-usage-for-a-personal-account/ - - /articles/viewing-storage-and-bandwidth-usage-for-an-organization/ - - /articles/viewing-your-git-large-file-storage-usage -versions: - free-pro-team: '*' ---- - -{% data reusables.large_files.owner_quota_only %} {% data reusables.large_files.does_not_carry %} - -### Viewing storage and bandwidth usage for a personal account - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.dotcom_billing.lfs-data %} - -### Viewing storage and bandwidth usage for an organization - -{% data reusables.dotcom_billing.org-billing-perms %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.user_settings.subscriptions-tab %} -{% data reusables.dotcom_billing.lfs-data %} - -### Further reading - -- "[About storage and bandwidth usage](/articles/about-storage-and-bandwidth-usage)" -- "[Upgrading {% data variables.large_files.product_name_long %}](/articles/upgrading-git-large-file-storage/)" diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-actions-usage.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-actions-usage.md deleted file mode 100644 index 1c16ae50efe0..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-actions-usage.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Viewing your GitHub Actions usage -intro: 'You can view details of your usage of minutes and storage for {% data variables.product.prodname_actions %}.' -product: '{% data reusables.gated-features.actions %}' -versions: - free-pro-team: '*' ---- - -You can also view the billable job execution minutes for an individual workflow run. For more information, see "[Viewing job execution time](/actions/managing-workflow-runs/viewing-job-execution-time)." - -### Viewing {% data variables.product.prodname_actions %} usage for your user account - -Anyone can view {% data variables.product.prodname_actions %} usage for their own user account. - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.dotcom_billing.actions-minutes %} -{% data reusables.dotcom_billing.actions-packages-storage %} -{% data reusables.dotcom_billing.actions-packages-report-download %} - -### Viewing {% data variables.product.prodname_actions %} usage for your organization - -Organization owners and billing managers can view {% data variables.product.prodname_actions %} usage for an organization. For organizations managed by an enterprise account, only the organization owners can view {% data variables.product.prodname_actions %} usage in the organization billing page. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.dotcom_billing.actions-minutes %} -{% data reusables.dotcom_billing.actions-packages-storage %} -{% data reusables.dotcom_billing.actions-packages-report-download %} - -### Viewing {% data variables.product.prodname_actions %} usage for your enterprise account - -Enterprise owners and billing managers can view {% data variables.product.prodname_actions %} usage for an enterprise account. - -{% note %} - -**Note:** Billing details for enterprise accounts don't summarize the usage minutes for each operating system. {% data reusables.github-actions.enterprise-billing-details %} - -{% endnote %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.billing-tab %} -1. Under "{% data variables.product.prodname_actions %}", view details of usage of data transfer by each organization in your enterprise account. - ![Details of usage of minutes](/assets/images/help/billing/actions-minutes-enterprise.png) -{% data reusables.dotcom_billing.actions-packages-storage-enterprise-account %} -{% data reusables.enterprise-accounts.actions-packages-report-download-enterprise-accounts %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-packages-usage.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-packages-usage.md deleted file mode 100644 index fcf65f1adaef..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-packages-usage.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Viewing your GitHub Packages usage -intro: 'You can view details of your usage of storage and data transfer for {% data variables.product.prodname_registry %}.' -product: '{% data reusables.gated-features.packages %}' -versions: - free-pro-team: '*' ---- - -### Viewing {% data variables.product.prodname_registry %} usage for your user account - -Anyone can view {% data variables.product.prodname_registry %} usage for their own user account. - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.dotcom_billing.packages-data %} -{% data reusables.dotcom_billing.actions-packages-storage %} -{% data reusables.dotcom_billing.actions-packages-report-download %} - -### Viewing {% data variables.product.prodname_registry %} usage for your organization - -Organization owners and billing managers can view {% data variables.product.prodname_registry %} usage for an organization. For organizations managed by an enterprise account, only the organization owners can view {% data variables.product.prodname_registry %} usage in the organization billing page. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.dotcom_billing.packages-data %} -{% data reusables.dotcom_billing.actions-packages-storage %} -{% data reusables.dotcom_billing.actions-packages-report-download %} - -### Viewing {% data variables.product.prodname_registry %} usage for your enterprise account - -Enterprise owners and billing managers can view {% data variables.product.prodname_registry %} usage for an enterprise account. - -{% note %} - -**Note:** Billing details for enterprise accounts only summarize the storage data usage per organization. {% data reusables.github-actions.enterprise-billing-details %} - -{% endnote %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.billing-tab %} -1. Under "{% data variables.product.prodname_registry %}", view details of usage of data transfer by each organization in your enterprise account. - ![Details of usage of data transfer](/assets/images/help/billing/packages-data-enterprise.png) -{% data reusables.dotcom_billing.actions-packages-storage-enterprise-account %} -{% data reusables.enterprise-accounts.actions-packages-report-download-enterprise-accounts %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-payment-history-and-receipts.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-payment-history-and-receipts.md deleted file mode 100644 index 7f939cf84cc6..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-payment-history-and-receipts.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Viewing your payment history and receipts -intro: You can view your account's payment history and download past receipts at any time. -redirect_from: - - /articles/downloading-receipts/ - - /articles/downloading-receipts-for-personal-accounts/ - - /articles/downloading-receipts-for-organizations/ - - /articles/viewing-your-payment-history-and-receipts -versions: - free-pro-team: '*' ---- - -### Viewing receipts for your personal account - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.dotcom_billing.view-payment-history %} -{% data reusables.dotcom_billing.download_receipt %} - -### Viewing receipts for your organization - -{% data reusables.dotcom_billing.org-billing-perms %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.dotcom_billing.view-payment-history %} -{% data reusables.dotcom_billing.download_receipt %} diff --git a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-subscriptions-and-billing-date.md b/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-subscriptions-and-billing-date.md deleted file mode 100644 index 71591f0aefe8..000000000000 --- a/content/github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-subscriptions-and-billing-date.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Viewing your subscriptions and billing date -intro: 'You can view your account''s subscription, your other paid features and products, and your next billing date in your account''s billing settings.' -redirect_from: - - /articles/finding-your-next-billing-date/ - - /articles/finding-your-personal-account-s-next-billing-date/ - - /articles/finding-your-organization-s-next-billing-date/ - - /articles/viewing-your-plans-and-billing-date/ - - /articles/viewing-your-subscriptions-and-billing-date -versions: - free-pro-team: '*' ---- - -### Finding your personal account's next billing date - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.billing %} -{% data reusables.dotcom_billing.next_billing_date %} - -### Finding your organization's next billing date - -{% data reusables.dotcom_billing.org-billing-perms %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -{% data reusables.dotcom_billing.next_billing_date %} - -### Further reading - -- "[About billing for {% data variables.product.product_name %} accounts](/articles/about-billing-for-github-accounts)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/about-identity-and-access-management-with-saml-single-sign-on.md b/content/github/setting-up-and-managing-organizations-and-teams/about-identity-and-access-management-with-saml-single-sign-on.md deleted file mode 100644 index 6a63cdaa869c..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/about-identity-and-access-management-with-saml-single-sign-on.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: About identity and access management with SAML single sign-on -intro: 'If you centrally manage your users'' identities and applications with an identity provider (IdP), you can configure Security Assertion Markup Language (SAML) single sign-on (SSO) to protect your organization''s resources on {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.saml-sso %}' -redirect_from: - - /articles/about-identity-and-access-management-with-saml-single-sign-on -versions: - free-pro-team: '*' ---- - -### About SAML SSO - -{% data reusables.saml.dotcom-saml-explanation %} - -After you configure SAML SSO, members of your {% data variables.product.prodname_dotcom %} organization will continue to log into their user accounts on {% data variables.product.prodname_dotcom %}. When a member accesses resources within your organization that uses SAML SSO, {% data variables.product.prodname_dotcom %} redirects the member to your IdP to authenticate. After successful authentication, your IdP redirects the member back to {% data variables.product.prodname_dotcom %}, where the member can access your organization's resources. - -Enterprise owners can also enforce SAML SSO for all organizations in an enterprise account. For more information, see "[Enforcing security settings in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account#enabling-saml-single-sign-on-for-organizations-in-your-enterprise-account)." - -{% data reusables.saml.outside-collaborators-exemption %} - -Before enabling SAML SSO for your organization, you'll need to connect your IdP to your organization. For more information, see "[Connecting your identity provider to your organization](/github/setting-up-and-managing-organizations-and-teams/connecting-your-identity-provider-to-your-organization)." - -For an organization, SAML SSO can be disabled, enabled but not enforced, or enabled and enforced. After you enable SAML SSO for your organization and your organization's members successfully authenticate with your IdP, you can enforce the SAML SSO configuration. For more information about enforcing SAML SSO for your {% data variables.product.prodname_dotcom %} organization, see "[Enforcing SAML single sign-on for your organization](/articles/enforcing-saml-single-sign-on-for-your-organization)." - -Members must periodically authenticate with your IdP to authenticate and gain access to your organization's resources. The duration of this login period is specified by your IdP and is generally 24 hours. This periodic login requirement limits the length of access and requires users to re-identify themselves to continue. - -To access the organization's protected resources using the API and Git on the command line, members must authorize and authenticate with a personal access token or SSH key. For more information, see "[Authorizing a personal access token for use with SAML single sign-on](/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on)" and "[Authorizing an SSH key for use with SAML single sign-on](/github/authenticating-to-github/authorizing-an-ssh-key-for-use-with-saml-single-sign-on)." - -The first time a member uses SAML SSO to access your organization, {% data variables.product.prodname_dotcom %} automatically creates a record that links your organization, the member's {% data variables.product.prodname_dotcom %} account, and the member's account on your IdP. You can view and revoke the linked SAML identity, active sessions, and authorized credentials for members of your organization or enterprise account. For more information, see "[Viewing and managing a member's SAML access to your organization](/github/setting-up-and-managing-organizations-and-teams/viewing-and-managing-a-members-saml-access-to-your-organization)" and "[Viewing and managing a user's SAML access to your enterprise account](/github/setting-up-and-managing-your-enterprise-account/viewing-and-managing-a-users-saml-access-to-your-enterprise-account)." - -If members are signed in with a SAML SSO session when they create a new repository, the default visibility of that repository is private. Otherwise, the default visibility is public. For more information on repository visibility, see "[About repository visibility](/github/creating-cloning-and-archiving-repositories/about-repository-visibility)." - -Organization members must also have an active SAML session to authorize an {% data variables.product.prodname_oauth_app %}. You can opt out of this requirement by contacting {% data variables.contact.contact_support %}. {% data variables.product.product_name %} does not recommend opting out of this requirement, which will expose your organization to a higher risk of account takeovers and potential data loss. - -### Supported SAML services - -{% data reusables.saml.saml-supported-idps %} - -Some IdPs support provisioning access to a {% data variables.product.prodname_dotcom %} organization via SCIM. For more information, see "[About SCIM](/github/setting-up-and-managing-organizations-and-teams/about-scim)." - -### Adding members to an organization using SAML SSO - -After you enable SAML SSO, there are multiple ways you can add new members to your organization. Organization owners can invite new members manually on {% data variables.product.product_name %} or using the API. For more information, see "[Inviting users to join your organization](/articles/inviting-users-to-join-your-organization)" and "[Members](/v3/orgs/members/#add-or-update-organization-membership)." - -{% data reusables.organizations.team-synchronization %} - -To provision new users without an invitation from an organization owner, you can use the URL `https://github.com/orgs/ORGANIZATION/sso/sign_up`, replacing _ORGANIZATION_ with the name of your organization. For example, you can configure your IdP so that anyone with access to the IdP can click a link on the IdP's dashboard to join your {% data variables.product.prodname_dotcom %} organization. - -If your IdP supports SCIM, {% data variables.product.prodname_dotcom %} can automatically invite members to join your organization when you grant access on your IdP. If you remove a member's access to your {% data variables.product.prodname_dotcom %} organization on your SAML IdP, the member will be automatically removed from the {% data variables.product.prodname_dotcom %} organization. For more information, see "[About SCIM](/github/setting-up-and-managing-organizations-and-teams/about-scim)." - -{% data reusables.saml.saml-single-logout-not-supported %} - -### Further reading - -- "[About two-factor authentication and SAML single sign-on ](/articles/about-two-factor-authentication-and-saml-single-sign-on)" -- "[About authentication with SAML single sign-on](/github/authenticating-to-github/about-authentication-with-saml-single-sign-on)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/about-oauth-app-access-restrictions.md b/content/github/setting-up-and-managing-organizations-and-teams/about-oauth-app-access-restrictions.md deleted file mode 100644 index 5da63c8dc825..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/about-oauth-app-access-restrictions.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: About OAuth App access restrictions -intro: 'Organizations can choose which {% data variables.product.prodname_oauth_app %}s have access to their repositories and other resources by enabling {% data variables.product.prodname_oauth_app %} access restrictions.' -redirect_from: - - /articles/about-third-party-application-restrictions/ - - /articles/about-oauth-app-access-restrictions -versions: - free-pro-team: '*' ---- - -When {% data variables.product.prodname_oauth_app %} access restrictions are enabled, organization members cannot authorize {% data variables.product.prodname_oauth_app %} access to organization resources. Organization members can request owner approval for {% data variables.product.prodname_oauth_app %}s they'd like to use, and organization owners receive a notification of pending requests. - -{% data reusables.organizations.oauth_app_restrictions_default %} - -{% tip %} - -**Tip**: When an organization has not set up {% data variables.product.prodname_oauth_app %} access restrictions, any {% data variables.product.prodname_oauth_app %} authorized by an organization member can also access the organization's private resources. - -{% endtip %} - -### Setting up {% data variables.product.prodname_oauth_app %} access restrictions - -When an organization owner sets up {% data variables.product.prodname_oauth_app %} access restrictions for the first time: - -- **Applications that are owned by the organization** are automatically given access to the organization's resources. -- **{% data variables.product.prodname_oauth_app %}s** immediately lose access to the organization's resources. -- **SSH keys created before February 2014** immediately lose access to the organization's resources (this includes user and deploy keys). -- **SSH keys created by {% data variables.product.prodname_oauth_app %}s during or after February 2014** immediately lose access to the organization's resources. -- **Hook deliveries from private organization repositories** will no longer be sent to unapproved {% data variables.product.prodname_oauth_app %}s. -- **API access** to private organization resources is not available for unapproved {% data variables.product.prodname_oauth_app %}s. In addition, there are no privileged create, update, or delete actions on public organization resources. -- **Hooks created by users and hooks created before May 2014** will not be affected. -- **Private forks of organization-owned repositories** are subject to the organization's access restrictions. - -### Resolving SSH access failures - -When an SSH key created before February 2014 loses access to an organization with {% data variables.product.prodname_oauth_app %} access restrictions enabled, subsequent SSH access attempts will fail. Users will encounter an error message directing them to a URL where they can approve the key or upload a trusted key in its place. - -### Webhooks - -When an {% data variables.product.prodname_oauth_app %} is granted access to the organization after restrictions are enabled, any pre-existing webhooks created by that {% data variables.product.prodname_oauth_app %} will resume dispatching. - -When an organization removes access from a previously-approved {% data variables.product.prodname_oauth_app %}, any pre-existing webhooks created by that application will no longer be dispatched (these hooks will be disabled, but not deleted). - -### Re-enabling access restrictions - -If an organization disables {% data variables.product.prodname_oauth_app %} access application restrictions, and later re-enables them, previously approved {% data variables.product.prodname_oauth_app %} are automatically granted access to the organization's resources. - -### Further reading - -- "[Enabling {% data variables.product.prodname_oauth_app %} access restrictions for your organization](/articles/enabling-oauth-app-access-restrictions-for-your-organization)" -- "[Approving {% data variables.product.prodname_oauth_app %}s for your organization](/articles/approving-oauth-apps-for-your-organization)" -- "[Reviewing your organization's installed integrations](/articles/reviewing-your-organization-s-installed-integrations)" -- "[Denying access to a previously approved {% data variables.product.prodname_oauth_app %} for your organization](/articles/denying-access-to-a-previously-approved-oauth-app-for-your-organization)" -- "[Disabling {% data variables.product.prodname_oauth_app %} access restrictions for your organization](/articles/disabling-oauth-app-access-restrictions-for-your-organization)" -- "[Requesting organization approval for {% data variables.product.prodname_oauth_app %}s](/articles/requesting-organization-approval-for-oauth-apps)" -- "[Authorizing {% data variables.product.prodname_oauth_app %}s](/articles/authorizing-oauth-apps)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/about-organizations.md b/content/github/setting-up-and-managing-organizations-and-teams/about-organizations.md deleted file mode 100644 index bd8cc042fa35..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/about-organizations.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: About organizations -intro: Organizations are shared accounts where businesses and open-source projects can collaborate across many projects at once. Owners and administrators can manage member access to the organization's data and projects with sophisticated security and administrative features. -redirect_from: - - /articles/about-organizations -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.organizations.organizations_include %} - -{% if currentVersion == "free-pro-team@latest" %} -### Organizations and enterprise accounts - -Enterprise accounts allow owners to centrally manage policy and billing for multiple {% data variables.product.prodname_dotcom_the_website %} organizations. - -For organizations that belong to an enterprise account, billing is managed at the enterprise account level, and billing settings are not available at the organization level. Enterprise owners can set policy for all organizations in the enterprise account or allow organization owners to set the policy at the organization level. Organization owners cannot change settings enforced for your organization at the enterprise account level. If you have questions about a policy or setting for your organization, contact the owner of your enterprise account. - -{% data reusables.gated-features.enterprise-accounts %} - -{% data reusables.organizations.org-ownership-recommendation %} For more information, see "[Maintaining ownership continuity for your organization](/github/setting-up-and-managing-organizations-and-teams/maintaining-ownership-continuity-for-your-organization)." - -### Terms of service and data protection for organizations - -An entity, such as a company, non-profit, or group, can agree to the Standard Terms of Service or the Corporate Terms of Service for their organization. For more information, see "[Upgrading to the Corporate Terms of Service](/articles/upgrading-to-the-corporate-terms-of-service)." - -{% endif %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/about-scim.md b/content/github/setting-up-and-managing-organizations-and-teams/about-scim.md deleted file mode 100644 index 8cabb2ee9f86..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/about-scim.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: About SCIM -intro: 'With System for Cross-domain Identity Management (SCIM), administrators can automate the exchange of user identity information between systems.' -product: '{% data reusables.gated-features.saml-sso %}' -redirect_from: - - /articles/about-scim -versions: - free-pro-team: '*' ---- - -If you use [SAML SSO](/articles/about-identity-and-access-management-with-saml-single-sign-on) in your organization, you can implement SCIM to add, manage, and remove organization members' access to {% data variables.product.product_name %}. For example, an administrator can deprovision an organization member using SCIM and automatically remove the member from the organization. - -If you use SAML SSO without implementing SCIM, you won't have automatic deprovisioning. When organization members' sessions expire after their access is removed from the IdP, they aren't automatically removed from the organization. Authorized tokens grant access to the organization even after their sessions expire. To remove access, organization administrators can either manually remove the authorized token from the organization or automate its removal with SCIM. - -These identity providers are compatible with the {% data variables.product.product_name %} SCIM API for organizations. For more information, see [SCIM](/v3/scim/) in the {% data variables.product.product_name %} API documentation. -- Azure AD -- Okta -- OneLogin - -{% data reusables.scim.enterprise-account-scim %} For more information, see "[Enforcing security settings in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account#managing-user-provisioning-for-organizations-in-your-enterprise-account)." - -### Further reading - -- "[About identity and access management with SAML single sign-on](/articles/about-identity-and-access-management-with-saml-single-sign-on)" -- "[Connecting your identity provider to your organization](/articles/connecting-your-identity-provider-to-your-organization)" -- "[Enabling and testing SAML single sign-on for your organization](/articles/enabling-and-testing-saml-single-sign-on-for-your-organization)" -- "[Viewing and managing a member's SAML access to your organization](/github/setting-up-and-managing-organizations-and-teams//viewing-and-managing-a-members-saml-access-to-your-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/about-ssh-certificate-authorities.md b/content/github/setting-up-and-managing-organizations-and-teams/about-ssh-certificate-authorities.md deleted file mode 100644 index 46796cdfe1dc..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/about-ssh-certificate-authorities.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: About SSH certificate authorities -intro: 'With an SSH certificate authority, your organization or enterprise account can provide SSH certificates that members can use to access your resources with Git.' -product: '{% data reusables.gated-features.ssh-certificate-authorities %}' -redirect_from: - - /articles/about-ssh-certificate-authorities -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -An SSH certificate is a mechanism for one SSH key to sign another SSH key. If you use an SSH certificate authority (CA) to provide your organization members with signed SSH certificates, you can add the CA to your enterprise account or organization to allow organization members to use their certificates to access organization resources. For more information, see "[Managing your organization's SSH certificate authorities](/articles/managing-your-organizations-ssh-certificate-authorities)." - -After you add an SSH CA to your organization or enterprise account, you can use the CA to sign client SSH certificates for organization members. Organization members can use the signed certificates to access your organization's repositories (and only your organization's repositories) with Git. You can require that members use SSH certificates to access organization resources.{% if currentVersion == "free-pro-team@latest" %} For more information, see "[Enforcing security settings in your enterprise account](/articles/enforcing-security-settings-in-your-enterprise-account#managing-your-enterprise-accounts-ssh-certificate-authorities)."{% endif %} - -For example, you can build an internal system that issues a new certificate to your developers every morning. Each developer can use their daily certificate to work on your organization's repositories on {% data variables.product.product_name %}. At the end of the day, the certificate can automatically expire, protecting your repositories if the certificate is later compromised. - -When you issue each certificate, you must include an extension that specifies which {% data variables.product.product_name %} user the certificate is for. For example, you can use OpenSSH's `ssh-keygen` command, replacing _KEY-IDENTITY_ with your key identity and _USERNAME_ with a {% data variables.product.product_name %} username: - -```shell -$ ssh-keygen -s ./ca-key -I KEY-IDENTITY -O extension:login@github.com=USERNAME ./user-key.pub -``` - -To issue a certificate for someone who has different usernames for {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_ghe_cloud %}, you can include two login extensions. - -```shell -$ ssh-keygen -s ./ca-key -I KEY-IDENTITY -O extension:login@github.com=CLOUD-USERNAME extension:login@HOSTNAME=SERVER-USERNAME ./user-key.pub -``` - -You can restrict the IP addresses from which an organization member can access your organization's resources by using a `source-address` extension. The extension accepts a specific IP address or a range of IP addresses using CIDR notation. You can specify multiple addresses or ranges by separating the values with commas. For more information, see "[Classless Inter-Domain Routing](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation)" on Wikipedia. - -```shell -$ ssh-keygen -s ./ca-key -I KEY-IDENTITY -O extension:login@github.com=USERNAME -O source-address=COMMA-SEPARATED-LIST-OF-IP-ADDRESSES-OR-RANGES ./user-key.pub -``` - -Organization members can use their signed certificates for authentication even if you've enforced SAML single sign-on. Unless you make SSH certificates a requirement, organization members can continue to use other means of authentication to access your organization's resources with Git, including their username and password, personal access tokens, and their own SSH keys. - -To prevent authentication errors, organization members should use a special URL that includes the organization ID to clone repositories using signed certificates. Anyone with read access to the repository can find this URL on the repository page. For more information, see "[Cloning a repository](/articles/cloning-a-repository)." diff --git a/content/github/setting-up-and-managing-organizations-and-teams/about-teams.md b/content/github/setting-up-and-managing-organizations-and-teams/about-teams.md deleted file mode 100644 index 6966ccfb8222..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/about-teams.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: About teams -intro: Teams are groups of organization members that reflect your company or group's structure with cascading access permissions and mentions. -redirect_from: - - /articles/about-teams -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -![List of teams in an organization](/assets/images/help/teams/org-list-of-teams.png) - -Organization owners and team maintainers can give teams admin, read, or write access to organization repositories. Organization members can send a notification to an entire team by mentioning the team's name. Organization members can also send a notification to an entire team by requesting a review from that team. Organization members can request reviews from specific teams with read access to the repository where the pull request is opened. Teams can be designated as owners of certain types or areas of code in a CODEOWNERS file. - -For more information, see: -- "[Managing team access to an organization repository](/articles/managing-team-access-to-an-organization-repository)" -- "[Mentioning people and teams](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams)" -- "[About code owners](/articles/about-code-owners/)" - -![Image of a team mention](/assets/images/help/teams/team-mention.png) - -{% if enterpriseServerVersions contains currentVersion %} - -You can also use LDAP Sync to synchronize {% data variables.product.product_location_enterprise %} team members and team roles against your established LDAP groups. This lets you establish role-based access control for users from your LDAP server instead of manually within {% data variables.product.product_location_enterprise %}. For more information, see "[Enabling LDAP Sync](/enterprise/admin/authentication/using-ldap#enabling-ldap-sync)." - -{% endif %} - -{% data reusables.organizations.team-synchronization %} - -### Team visibility - -{% data reusables.organizations.types-of-team-visibility %} - -### Team pages - -Each team has its own page within an organization. On a team's page, you can view team members, child teams, and the team's repositories. Organization owners and team maintainers can access team settings and update the team's description and profile picture from the team's page. - -Organization members can create and participate in discussions with the team. For more information, see "[About team discussions](/articles/about-team-discussions)." - -![Team page listing team members and discussions](/assets/images/help/organizations/team-page-discussions-tab.png) - -### Nested teams - -You can reflect your group or company's hierarchy within your {% data variables.product.product_name %} organization with multiple levels of nested teams. A parent team can have multiple child teams, while each child team only has one parent team. You cannot nest secret teams. - -Child teams inherit the parent's access permissions, simplifying permissions management for large groups. Members of child teams also receive notifications when the parent team is @mentioned, simplifying communication with multiple groups of people. - -For example, if your team structure is Employees > Engineering > Application Engineering > Identity, granting Engineering write access to a repository means Application Engineering and Identity also get that access. If you @mention the Identity Team or any team at the bottom of the organization hierarchy, they're the only ones who will receive a notification. - -![Teams page with a parent team and child teams](/assets/images/help/teams/nested-teams-eng-example.png) - -To easily understand who shares a parent team's permissions and mentions, you can see all of the members of a parent team's child teams on the Members tab of the parent team's page. Members of a child team are not direct members of the parent team. - -![Parent team page with all members of child teams](/assets/images/help/teams/team-and-subteam-members.png) - -You can choose a parent when you create the team, or you can move a team in your organization's hierarchy later. For more information see, "[Moving a team in your organization’s hierarchy](/articles/moving-a-team-in-your-organization-s-hierarchy)." - -{% if enterpriseServerVersions contains currentVersion %} - -{% data reusables.enterprise_user_management.ldap-sync-nested-teams %} - -{% endif %} - -### Preparing to nest teams in your organization - -If your organization already has existing teams, you should audit each team's repository access permissions before you nest teams above or below it. You should also consider the new structure you'd like to implement for your organization. - -At the top of the team hierarchy, you should give parent teams repository access permissions that are safe for every member of the parent team and its child teams. As you move toward the bottom of the hierarchy, you can grant child teams additional, more granular access to more sensitive repositories. - -1. Remove all members from existing teams -2. Audit and adjust each team's repository access permissions and give each team a parent -3. Create any new teams you'd like to, choose a parent for each new team, and give them repository access -4. Add people directly to teams - -### Further reading - -- "[Creating a team](/articles/creating-a-team)" -- "[Adding organization members to a team](/articles/adding-organization-members-to-a-team)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/about-two-factor-authentication-and-saml-single-sign-on.md b/content/github/setting-up-and-managing-organizations-and-teams/about-two-factor-authentication-and-saml-single-sign-on.md deleted file mode 100644 index d75c5114c7f0..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/about-two-factor-authentication-and-saml-single-sign-on.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: About two-factor authentication and SAML single sign-on -intro: Organizations administrators can enable both SAML single sign-on and two-factor authentication to add additional authentication measures for their organization members. -product: '{% data reusables.gated-features.saml-sso %}' -redirect_from: - - /articles/about-two-factor-authentication-and-saml-single-sign-on -versions: - free-pro-team: '*' ---- - -Two-factor authentication (2FA) provides basic authentication for organization members. By enabling 2FA, organization administrators limit the likelihood that a member's {% data variables.product.product_name %} account could be compromised. For more information on 2FA, see "[About two-factor authentication](/articles/about-two-factor-authentication)." - -To add additional authentication measures, organization administrators can also [enable SAML single sign-on (SSO)](/articles/enabling-and-testing-saml-single-sign-on-for-your-organization) so that organization members must use single sign-on to access an organization. For more information on SAML SSO, see "[About identity and access management with SAML single sign-on](/articles/about-identity-and-access-management-with-saml-single-sign-on)." - -If both 2FA and SAML SSO are enabled, organization members must do the following: -- Use 2FA to log in to their {% data variables.product.product_name %} account -- Use single sign-on to access the organization -- Use an authorized token for API or Git access and use single sign-on to authorize the token - -### Further reading - -- "[Enforcing SAML single sign-on for your organization](/articles/enforcing-saml-single-sign-on-for-your-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/about-your-organization-dashboard.md b/content/github/setting-up-and-managing-organizations-and-teams/about-your-organization-dashboard.md deleted file mode 100644 index 70fd57ed1ee5..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/about-your-organization-dashboard.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: About your organization dashboard -intro: 'As an organization member, you can visit your organization''s dashboard throughout the day to stay updated on recent activity and keep track of issues and pull requests you''re working on or following in the organization.' -redirect_from: - - /articles/about-your-organization-dashboard -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Accessing your organization dashboard - -{% data reusables.dashboard.access-org-dashboard %} - -### Finding your recent activity - -In the "Recent activity" section of your news feed, you can quickly find and follow up with recently updated issues and pull requests in your organization. - -{% data reusables.dashboard.recent-activity-qualifying-events %} - -### Finding repositories in your organization - -In the left sidebar of your dashboard, you can access your organization's top repositories you're active in. - -![List of repositories you're most active in from your organization](/assets/images/help/dashboard/repositories-from-organization-dashboard.png) - -### Staying updated with activity from the organization - -In the "All activity" section of your news feed, you can view updates from other teams and repositories in your organization. - -The "All activity" section shows all recent activity in the organization, including activity in repositories you're not subscribed to and of people you're not following. For more information, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}"[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications){% else %}"[Watching and unwatching repositories](/github/receiving-notifications-about-activity-on-github/watching-and-unwatching-repositories){% endif %}" and "[Following people](/articles/following-people)." - -For instance, the organization news feed shows updates when someone in the organization: - - Creates a new branch. - - Comments on an issue or pull request. - - Submits a pull request review comment. - - Forks a repository. - - Creates a wiki page. - - Pushes commits. - - Creates a public repository. - -### Further information - -- "[About your personal dashboard](/articles/about-your-personal-dashboard)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/about-your-organizations-news-feed.md b/content/github/setting-up-and-managing-organizations-and-teams/about-your-organizations-news-feed.md deleted file mode 100644 index d92f45ea2a46..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/about-your-organizations-news-feed.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: About your organization’s news feed -intro: You can use your organization's news feed to keep up with recent activity on repositories owned by that organization. -redirect_from: - - /articles/news-feed/ - - /articles/about-your-organization-s-news-feed - - /articles/about-your-organizations-news-feed -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -An organization's news feed shows other people's activity on repositories owned by that organization. You can use your organization's news feed to see when someone opens, closes, or merges an issue or pull request, creates or deletes a branch, creates a tag or release, comments on an issue, pull request, or commit, or pushes new commits to {% data variables.product.product_name %}. - -### Accessing your organization's news feed - -1. {% data variables.product.signin_link %} to your {% data variables.product.product_name %} account. -2. Open your {% data reusables.user_settings.personal_dashboard %}. -3. Click the account context switcher in the upper-left corner of the page. - ![Context switcher button in Enterprise](/assets/images/help/organizations/account_context_switcher.png) -4. Select an organization from the drop-down menu.{% if currentVersion == "free-pro-team@latest" %} - ![Context switcher menu in dotcom](/assets/images/help/organizations/account-context-switcher-selected-dotcom.png){% else %} - ![Context switcher menu in Enterprise](/assets/images/help/organizations/account_context_switcher.png){% endif %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/accessing-your-organization-if-your-identity-provider-is-unavailable.md b/content/github/setting-up-and-managing-organizations-and-teams/accessing-your-organization-if-your-identity-provider-is-unavailable.md deleted file mode 100644 index 684e4a4f3170..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/accessing-your-organization-if-your-identity-provider-is-unavailable.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Accessing your organization if your identity provider is unavailable -intro: 'Organization administrators can sign into {% data variables.product.product_name %} even if their identity provider is unavailable by bypassing single sign-on and using their recovery codes.' -product: '{% data reusables.gated-features.saml-sso %}' -redirect_from: - - /articles/accessing-your-organization-if-your-identity-provider-is-unavailable -versions: - free-pro-team: '*' ---- - -Organization administrators can use [one of their downloaded or saved recovery codes](/articles/downloading-your-organization-s-saml-single-sign-on-recovery-codes) to bypass single sign-on. You may have saved these to a password manager, such as [LastPass](https://lastpass.com/), [1Password](https://1password.com/), or [Keeper](https://keepersecurity.com/). - -{% note %} - -**Note:** You can only use recovery codes once and you must use them in consecutive order. Recovery codes grant access for 24 hours. - -{% endnote %} - -1. At the bottom of the single sign-on dialog, click **Use a recovery code** to bypass single sign-on. -![Link to enter your recovery code](/assets/images/help/saml/saml_use_recovery_code.png) -2. In the "Recovery Code" field, type your recovery code. -![Field to enter your recovery code](/assets/images/help/saml/saml_recovery_code_entry.png) -3. Click **Verify**. -![Button to verify your recovery code](/assets/images/help/saml/saml_verify_recovery_codes.png) - -After you've used a recovery code, make sure to note that it's no longer valid. You will not be able to reuse the recovery code. - -### Further reading - -- "[About identity and access management with SAML SSO](/articles/about-identity-and-access-management-with-saml-single-sign-on)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/accessing-your-organizations-settings.md b/content/github/setting-up-and-managing-organizations-and-teams/accessing-your-organizations-settings.md deleted file mode 100644 index 51ceb1e8f1f9..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/accessing-your-organizations-settings.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Accessing your organization's settings -redirect_from: - - /articles/who-can-access-organization-billing-information-and-account-settings/ - - /articles/managing-the-organization-s-settings/ - - /articles/who-can-see-billing-information-account-settings/ - - /articles/who-can-see-billing-information-and-access-account-settings/ - - /articles/managing-an-organization-s-settings/ - - /articles/accessing-your-organization-s-settings - - /articles/accessing-your-organizations-settings -intro: 'The organization account settings page provides several ways to manage the account, such as billing, team membership, and repository settings.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% if currentVersion == "free-pro-team@latest" %} - -{% tip %} - -**Tip:** Only organization owners and billing managers can see and change the billing information and account settings for an organization. {% data reusables.organizations.new-org-permissions-more-info %} - -{% endtip %} - -{% endif %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/adding-a-billing-manager-to-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/adding-a-billing-manager-to-your-organization.md deleted file mode 100644 index 7a1580b75f49..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/adding-a-billing-manager-to-your-organization.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Adding a billing manager to your organization -intro: 'A *billing manager* is a user who manages the billing settings for your organization, such as updating payment information. This is a great option if regular members of your organization don''t typically have access to billing resources.' -redirect_from: - - /articles/adding-a-billing-manager-to-your-organization -versions: - free-pro-team: '*' ---- - -Members of your organization's Owners team can give *billing manager* permissions to people. Once a person accepts their invitation to become a billing manager for your organization, they can invite additional people to be billing managers. - -{% note %} - -**Note:** Billing managers do not use paid licenses in your organization's subscription. - -{% endnote %} - -### Permissions for billing managers - -Billing managers can: - -- Upgrade or downgrade the account -- Add, update, or remove payment methods -- View payment history -- Download receipts -- View, invite, and remove billing managers - -In addition, all billing managers will receive billing receipts by email on the organization's billing date. - -Billing managers **are not** able to: - -- Create or access repositories in your organizations -- See private members of your organization -- Be seen in the list of organization members -- Purchase, edit, or cancel subscriptions for {% data variables.product.prodname_marketplace %} apps - -{% tip %} - -**Tip:** If your organization [requires members, billing managers, and outside collaborators to use two-factor authentication](/articles/requiring-two-factor-authentication-in-your-organization), the user must enable two-factor authentication before they can accept your invitation to become a billing manager for the organization. - -{% endtip %} - -### Inviting a billing manager - -The invited person will receive an invitation email asking them to become a billing manager for your organization. Once the invited person clicks the accept link in their invitation email, they will automatically be added to the organization as a billing manager. If they don't already have a GitHub account, they will be directed to sign up for one, and they will be automatically added to the organization as a billing manager after they create an account. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -5. Next to Billing managers, click **Add a billing manager**. - ![Invite billing manager](/assets/images/help/billing/settings_billing_managers_list.png) -6. Type the username or email address of the person you want to add and click **Send invitation**. - ![Invite billing manager page](/assets/images/help/billing/billing_manager_invite.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/adding-an-outside-collaborator-to-a-project-board-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/adding-an-outside-collaborator-to-a-project-board-in-your-organization.md deleted file mode 100644 index 29f601444880..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/adding-an-outside-collaborator-to-a-project-board-in-your-organization.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Adding an outside collaborator to a project board in your organization -intro: 'As an organization owner or project board admin, you can add an outside collaborator and customize their permissions to a project board.' -redirect_from: - - /articles/adding-an-outside-collaborator-to-a-project-board-in-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -An outside collaborator is a person who isn't explicitly a member of your organization, but who has permissions to a project board in your organization. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.organization-wide-project %} -{% data reusables.project-management.select-project %} -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.access-collaboration-settings %} -{% data reusables.project-management.collaborator-option %} -9. Under "Search by username, full name or email address", type the outside collaborator's name, username, or {% data variables.product.prodname_dotcom %} email. - ![The Collaborators section with the Octocat's username entered in the search field](/assets/images/help/projects/org-project-collaborators-find-name.png) -{% data reusables.project-management.add-collaborator %} -{% data reusables.project-management.collaborator-permissions %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/adding-github-app-managers-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/adding-github-app-managers-in-your-organization.md deleted file mode 100644 index 89eb7a381184..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/adding-github-app-managers-in-your-organization.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Adding GitHub App managers in your organization -intro: 'Organization owners can grant users the ability to manage some or all {% data variables.product.prodname_github_app %}s owned by the organization.' -redirect_from: - - /articles/adding-github-app-managers-in-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -For more information about {% data variables.product.prodname_github_app %} manager permissions, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization#github-app-managers)." - -### Giving someone the ability to manage all {% data variables.product.prodname_github_app %}s owned by the organization - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.github-apps-settings-sidebar %} -1. Under "Management", type the username of the person you want to designate as a {% data variables.product.prodname_github_app %} manager in the organization, and click **Grant**. -![Add a {% data variables.product.prodname_github_app %} manager](/assets/images/help/organizations/add-github-app-manager.png) - -### Giving someone the ability to manage an individual {% data variables.product.prodname_github_app %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.github-apps-settings-sidebar %} -1. Under "{% data variables.product.prodname_github_app %}s", click on the avatar of the app you'd like to add a {% data variables.product.prodname_github_app %} manager for. -![Select {% data variables.product.prodname_github_app %}](/assets/images/help/organizations/select-github-app.png) -{% data reusables.organizations.app-managers-settings-sidebar %} -1. Under "App managers", type the username of the person you want to designate as a GitHub App manager for the app, and click **Grant**. -![Add a {% data variables.product.prodname_github_app %} manager for a specific app](/assets/images/help/organizations/add-github-app-manager-for-app.png) - -{% if currentVersion == "free-pro-team@latest" %} -### Further reading - -- "[About {% data variables.product.prodname_dotcom %} Marketplace](/articles/about-github-marketplace/)" -{% endif %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/adding-organization-members-to-a-team.md b/content/github/setting-up-and-managing-organizations-and-teams/adding-organization-members-to-a-team.md deleted file mode 100644 index 6b112565b6de..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/adding-organization-members-to-a-team.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Adding organization members to a team -intro: 'People with owner or team maintainer permissions can add organization members to teams. People with owner permissions can also {% if currentVersion == "free-pro-team@latest" %}invite non-members to join{% else %}add non-members to{% endif %} a team and the organization.' -redirect_from: - - /articles/adding-organization-members-to-a-team-early-access-program/ - - /articles/adding-organization-members-to-a-team -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.organizations.team-synchronization %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team_members_tab %} -6. Above the list of team members, click **Add a member**. -![Add member button](/assets/images/help/teams/add-member-button.png) -{% data reusables.organizations.invite_to_team %} -{% data reusables.organizations.review-team-repository-access %} - -{% if currentVersion == "free-pro-team@latest" %}{% data reusables.organizations.cancel_org_invite %}{% endif %} - -### Further reading - -- "[About teams](/articles/about-teams)" -- "[Managing team access to an organization repository](/articles/managing-team-access-to-an-organization-repository)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/adding-outside-collaborators-to-repositories-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/adding-outside-collaborators-to-repositories-in-your-organization.md deleted file mode 100644 index cc2d31754829..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/adding-outside-collaborators-to-repositories-in-your-organization.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Adding outside collaborators to repositories in your organization -intro: 'An *outside collaborator* is a person who isn''t explicitly a member of your organization, but who has Read, Write, or Admin permissions to one or more repositories in your organization.' -redirect_from: - - /articles/adding-outside-collaborators-to-repositories-in-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.organizations.owners-and-admins-can %} add outside collaborators to a repository, unless an organization owner has restricted the ability to invite collaborators. For more information, see "[Setting permissions for adding outside collaborators](/articles/setting-permissions-for-adding-outside-collaborators)." - -{% data reusables.organizations.outside-collaborators-use-seats %} - -If your organization [requires members and outside collaborators to use two-factor authentication](/articles/requiring-two-factor-authentication-in-your-organization), they must enable two-factor authentication before they can accept your invitation to collaborate on an organization repository. - -{% data reusables.organizations.outside_collaborator_forks %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.repositories.navigate-to-manage-access %} -{% data reusables.organizations.invite-teams-or-people %} -5. In the search field, start typing the name of person you want to invite, then click a name in the list of matches. - ![Search field for typing the name of a person to invite to the repository](/assets/images/help/repository/manage-access-invite-search-field.png) -6. Under "Choose a role", select the permissions to grant to the person, then click **Add NAME to REPOSITORY**. - ![Selecting permissions for the person](/assets/images/help/repository/manage-access-invite-choose-role-add.png) -{% else %} -5. In the left sidebar, click **Collaborators & teams**. - ![Repository settings sidebar with Collaborators & teams highlighted](/assets/images/help/repository/org-repo-settings-collaborators-and-teams.png) -6. Under "Collaborators", type the name of the person you'd like to give access to the repository, then click **Add collaborator**. -![The Collaborators section with the Octocat's username entered in the search field](/assets/images/help/repository/org-repo-collaborators-find-name.png) -7. Next to the new collaborator's name, choose the appropriate permission level: *Write*, *Read*, or *Admin*. -![The repository permissions picker](/assets/images/help/repository/org-repo-collaborators-choose-permissions.png) -{% endif %} - -### Further reading - -- "[Converting an organization member to an outside collaborator](/articles/converting-an-organization-member-to-an-outside-collaborator)" -- "[Removing an outside collaborator from an organization repository](/articles/removing-an-outside-collaborator-from-an-organization-repository)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/adding-people-to-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/adding-people-to-your-organization.md deleted file mode 100644 index a850f1ebfe63..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/adding-people-to-your-organization.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Adding people to your organization -intro: 'You can make anyone a member of your organization using their {% data variables.product.product_name %} username or email address.' -redirect_from: - - /articles/adding-people-to-your-organization -versions: - enterprise-server: '*' ---- - -{% tip %} - -**Tips**: -- Only organization owners can add users to an organization. For more information, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization)." -- If your organization [requires members to use two-factor authentication](/articles/requiring-two-factor-authentication-in-your-organization), users must [enable two-factor authentication](/articles/securing-your-account-with-two-factor-authentication-2fa) before you can add them to the organization. - -{% endtip %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -{% data reusables.organizations.invite_member_from_people_tab %} -{% data reusables.organizations.invite_to_org %} -{% data reusables.organizations.choose-to-restore-privileges %} -{% data reusables.organizations.choose-user-role %} -{% data reusables.organizations.choose-user-license %} -{% data reusables.organizations.add-user-to-teams %} -{% data reusables.organizations.send-invitation %} - -### Further reading -- "[Adding organization members to a team](/articles/adding-organization-members-to-a-team)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/allowing-people-to-delete-issues-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/allowing-people-to-delete-issues-in-your-organization.md deleted file mode 100644 index cdbf9737821b..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/allowing-people-to-delete-issues-in-your-organization.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Allowing people to delete issues in your organization -intro: Organization owners can allow certain people to delete issues in repositories owned by your organization. -redirect_from: - - /articles/allowing-people-to-delete-issues-in-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -By default, issues cannot be deleted in an organization's repositories. An organization owner must enable this feature for all of the organization's repositories first. - -Once enabled, organization owners and people with admin permissions in an organization-owned repository can delete issues. People with admin permissions in a repository include organization members and outside collaborators with admin privileges. For more information, see "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization/)" and "[Deleting an issue](/articles/deleting-an-issue)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.member-privileges %} -5. Under "Issue deletion", select **Allow members to delete issues for this organization**. -![Checkbox to allow people to delete issues](/assets/images/help/settings/issue-deletion.png) -6. Click **Save**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/approving-oauth-apps-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/approving-oauth-apps-for-your-organization.md deleted file mode 100644 index 8396a30e6491..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/approving-oauth-apps-for-your-organization.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Approving OAuth Apps for your organization -intro: 'When an organization member requests {% data variables.product.prodname_oauth_app %} access to organization resources, organization owners can approve or deny the request.' -redirect_from: - - /articles/approving-third-party-applications-for-your-organization/ - - /articles/approving-oauth-apps-for-your-organization -versions: - free-pro-team: '*' ---- -When {% data variables.product.prodname_oauth_app %} access restrictions are enabled, organization members must [request approval](/articles/requesting-organization-approval-for-oauth-apps) from an organization owner before they can authorize an {% data variables.product.prodname_oauth_app %} that has access to the organization's resources. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.oauth_app_access %} -5. Next to the application you'd like to approve, click **Review**. -![Review request link](/assets/images/help/settings/settings-third-party-approve-review.png) -6. After you review the information about the requested application, click **Grant access**. -![Grant access button](/assets/images/help/settings/settings-third-party-approve-grant.png) - -### Further reading - -- "[About {% data variables.product.prodname_oauth_app %} access restrictions](/articles/about-oauth-app-access-restrictions)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/can-i-create-accounts-for-people-in-my-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/can-i-create-accounts-for-people-in-my-organization.md deleted file mode 100644 index 6e719b47eddb..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/can-i-create-accounts-for-people-in-my-organization.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Can I create accounts for people in my organization? -redirect_from: - - /articles/can-i-create-accounts-for-those-in-my-organization/ - - /articles/can-i-create-accounts-for-people-in-my-organization -intro: 'While you can add users to an organization you''ve created, you can''t create personal user accounts on behalf of another person.' -versions: - free-pro-team: '*' ---- - -Because you access an organization by logging in to a personal account, each of your team members needs a personal account. Once you have user names for each person you'd like to add to your organization, you can add them to teams. - -### Adding users to your organization - -1. Provide each person instructions to [create a personal account](/articles/signing-up-for-a-new-github-account). -2. Ask for the username of each person you want to give organization membership to. -3. [Invite the new personal accounts to join](/articles/inviting-users-to-join-your-organization) your organization. Use [organization roles](/articles/permission-levels-for-an-organization) and [repository permissions](/articles/repository-permission-levels-for-an-organization) to limit the access of each account. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/canceling-an-invitation-to-become-an-outside-collaborator-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/canceling-an-invitation-to-become-an-outside-collaborator-in-your-organization.md deleted file mode 100644 index 1e00613e6774..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/canceling-an-invitation-to-become-an-outside-collaborator-in-your-organization.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Canceling an invitation to become an outside collaborator in your organization -intro: You can cancel all invitations for a person to become an outside collaborator on repositories owned by your organization. -permissions: Organization owners can cancel an invitation to become an outside collaborator in the organization. -versions: - free-pro-team: '*' ---- - -You can view a list of all people with pending invitations to become an outside collaborator on any repository owned by your organization. - -For each pending collaborator, you can cancel all invitations to join organization repositories at the same time. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -{% data reusables.organizations.people_tab_outside_collaborators %} -5. Click **X pending collaborators**. - !["Pending collaborators" button](/assets/images/help/organizations/pending-collaborator-list.png) -6. To the right of the person you want to cancel invitations for, click **Cancel invitations**. - !["Cancel invitation" button](/assets/images/help/organizations/cancel-pending-collaborators.png) -7. Click **Cancel invitations for pending collaborators**. - ![Button to confirm cancelation](/assets/images/help/organizations/confirm-cancelation-of-pending-collaborators.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/canceling-or-editing-an-invitation-to-join-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/canceling-or-editing-an-invitation-to-join-your-organization.md deleted file mode 100644 index 81cb2611c51a..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/canceling-or-editing-an-invitation-to-join-your-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Canceling or editing an invitation to join your organization -intro: Organization owners can edit or cancel an invitation to become a member of your organization any time before the user accepts. -redirect_from: - - /articles/canceling-or-editing-an-invitation-to-join-your-organization -versions: - free-pro-team: '*' ---- - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -4. On the People tab, click **Pending invitation**. - ![Pending invitation link](/assets/images/help/organizations/pending-invitation-link.png) -5. Next to the username or email address of the person whose invitation you'd like to edit or cancel, click **Edit invitation**. -![Edit invitation button](/assets/images/help/organizations/edit-invitation-button.png) - - You may need to click **View all invitations** at the bottom of the window to find the person you're looking for. -6. Decide whether to edit or cancel the user's invitation to join your organization. - ![Update invitation and cancel invitation buttons](/assets/images/help/organizations/update-cancel-invitation-buttons-for-dotcom-and-2.8.png) - - To edit the user's invitation, select a different role or team, then click **Update invitation**. - - To cancel the user's invitation to join your organization, click **Cancel invitation**. - -### Further reading - -{% if currentVersion == "free-pro-team@latest" %} -- "[Inviting users to join your organization](/articles/inviting-users-to-join-your-organization)" -{% endif %} -- "[Adding organization members to a team](/articles/adding-organization-members-to-a-team)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/changing-team-visibility.md b/content/github/setting-up-and-managing-organizations-and-teams/changing-team-visibility.md deleted file mode 100644 index f1fa1db05e77..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/changing-team-visibility.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Changing team visibility -intro: Team maintainers and organization owners can determine whether a team is *visible* or *secret*. -redirect_from: - - /articles/changing-team-visibility -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.organizations.types-of-team-visibility %} - -{% tip %} - -**Tip:** If a team has [child or parent teams](/articles/about-teams), you cannot make it a secret team. - -{% endtip %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.teams %} -3. Select the team or teams whose visibility you'd like to change. - ![List of teams with two teams selected](/assets/images/help/teams/list-of-teams-selected.png) -4. Above the list of teams, use the drop-down menu and click **Change visibility**. - ![Drop-down menu with option to change team visibility](/assets/images/help/teams/team-bulk-management-options.png) -5. Choose whether to make the team or teams visible or secret, then click **Change visibility**. - ![Radio buttons for making a team visible or secret and Change visibility button](/assets/images/help/teams/select-and-confirm-new-visibility.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/changing-the-visibility-of-your-organizations-dependency-insights.md b/content/github/setting-up-and-managing-organizations-and-teams/changing-the-visibility-of-your-organizations-dependency-insights.md deleted file mode 100644 index 1db374fdc180..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/changing-the-visibility-of-your-organizations-dependency-insights.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Changing the visibility of your organization's dependency insights -intro: You can allow all organization members to view dependency insights for your organization or limit viewing to organization owners. -product: '{% data reusables.gated-features.org-insights %}' -redirect_from: - - /articles/changing-the-visibility-of-your-organizations-dependency-insights -versions: - free-pro-team: '*' ---- - -Organization owners can set limitations for viewing organization dependency insights. All members of an organization can view organization dependency insights by default. - -Enterprise owners can set limitations for viewing organization dependency insights on all organizations in your enterprise account. For more information, see "[Enforcing a policy on dependency insights in your enterprise account](/articles/enforcing-a-policy-on-dependency-insights-in-your-enterprise-account)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.member-privileges %} -5. Under "Member organization permissions", select or unselect **Allow members to view dependency insights**. -![Checkbox to allow members to view insights](/assets/images/help/organizations/allow-members-to-view-insights.png) -6. Click **Save**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/collaborating-with-groups-in-organizations.md b/content/github/setting-up-and-managing-organizations-and-teams/collaborating-with-groups-in-organizations.md deleted file mode 100644 index 68ca7cf9e997..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/collaborating-with-groups-in-organizations.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Collaborating with groups in organizations -intro: Groups of people can collaborate across many projects at the same time in organization accounts. -redirect_from: - - /articles/creating-a-new-organization-account/ - - /articles/collaborating-with-groups-in-organizations -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/configuring-saml-single-sign-on-and-scim-using-okta.md b/content/github/setting-up-and-managing-organizations-and-teams/configuring-saml-single-sign-on-and-scim-using-okta.md deleted file mode 100644 index c9d2a68b163c..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/configuring-saml-single-sign-on-and-scim-using-okta.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Configuring SAML single sign-on and SCIM using Okta -intro: 'You can use Security Assertion Markup Language (SAML) single sign-on (SSO) and System for Cross-domain Identity Management (SCIM) with Okta to automatically manage access to your organization on {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.saml-sso %}' -permissions: Organization owners can configure SAML SSO and SCIM using Okta for an organization. -versions: - free-pro-team: '*' ---- - -### About SAML and SCIM with Okta - -You can control access to your {% data variables.product.prodname_dotcom %} organization and other web applications from one central interface by configuring the organization to use SAML SSO and SCIM with Okta, an Identity Provider (IdP). - -SAML SSO controls and secures access to organization resources like repositories, issues, and pull requests. SCIM automatically adds, manages, and removes members' access to your {% data variables.product.prodname_dotcom %} organization when you make changes in Okta. For more information, see "[About identity and access management with SAML single sign-on](/github/setting-up-and-managing-organizations-and-teams/about-identity-and-access-management-with-saml-single-sign-on)" and "[About SCIM](/github/setting-up-and-managing-organizations-and-teams/about-scim)." - -After you enable SCIM, the following provisioning features are available for any users that you assign your {% data variables.product.prodname_ghe_cloud %} application to in Okta. - -| Feature | Description | -| --- | --- | -| Push New Users | When you create a new user in Okta, the user will receive an email to join your {% data variables.product.prodname_dotcom %} organization. | -| Push User Deactivation | When you deactivate a user in Okta, Okta will remove the user from your {% data variables.product.prodname_dotcom %} organization. | -| Push Profile Updates | When you update a user's profile in Okta, Okta will update the metadata for the user's membership in your {% data variables.product.prodname_dotcom %} organization. | -| Reactivate Users | When you reactivate a user in Okta, Okta will send an email invitation for the user to rejoin your {% data variables.product.prodname_dotcom %} organization. | - -### Prerequisites - -{% data reusables.saml.use-classic-ui %} - -### Adding the {% data variables.product.prodname_ghe_cloud %} application in Okta - -{% data reusables.saml.okta-dashboard-click-applications %} -{% data reusables.saml.add-okta-application %} -{% data reusables.saml.search-ghec-okta %} -4. To the right of "Github Enterprise Cloud - Organization", click **Add**. - ![Clicking "Add" for the {% data variables.product.prodname_ghe_cloud %} application](/assets/images/help/saml/okta-add-ghec-application.png) - -5. In the **GitHub Organization** field, type the name of your {% data variables.product.prodname_dotcom %} organization. For example, if your organization's URL is https://github.com/octo-org, the organization name would be `octo-org`. - ![Type GitHub organization name](/assets/images/help/saml/okta-github-organization-name.png) - -6. Click **Done**. - -### Enabling and testing SAML SSO - -{% data reusables.saml.okta-dashboard-click-applications %} -{% data reusables.saml.okta-applications-click-ghec-application-label %} -{% data reusables.saml.assign-yourself-to-okta %} -{% data reusables.saml.okta-sign-on-tab %} -{% data reusables.saml.okta-view-setup-instructions %} -6. Enable and test SAML SSO on {% data variables.product.prodname_dotcom %} using the sign on URL, issuer URL, and public certificates from the "How to Configure SAML 2.0" guide. For more information, see "[Enabling and testing SAML single sign-on for your organization](/github/setting-up-and-managing-organizations-and-teams/enabling-and-testing-saml-single-sign-on-for-your-organization)." - -### Configuring access provisioning with SCIM in Okta - -{% data reusables.saml.okta-dashboard-click-applications %} -{% data reusables.saml.okta-applications-click-ghec-application-label %} -{% data reusables.saml.okta-provisioning-tab %} -{% data reusables.saml.okta-configure-api-integration %} -{% data reusables.saml.okta-enable-api-integration %} - - -6. Click **Authenticate with Github Enterprise Cloud - Organization**. - !["Authenticate with Github Enterprise Cloud - Organization" button for Okta application](/assets/images/help/saml/okta-authenticate-with-ghec-organization.png) - -7. To the right of your organization's name, click **Grant**. - !["Grant" button for authorizing Okta SCIM integration to access organization](/assets/images/help/saml/okta-scim-integration-grant-organization-access.png) - - {% note %} - - **Note**: If you don't see your organization in the list, go to `https://github.com/orgs/ORGANIZATION-NAME/sso` in your browser and authenticate with your organization via SAML SSO using your administrator account on the IdP. For example, if your organization's name is `octo-org`, the URL would be `https://github.com/orgs/octo-org/sso`. For more information, see "[About authentication with SAML single sign-on](/github/authenticating-to-github/about-authentication-with-saml-single-sign-on)." - - {% endnote %} -1. Click **Authorize OktaOAN**. - !["Authorize OktaOAN" button for authorizing Okta SCIM integration to access organization](/assets/images/help/saml/okta-scim-integration-authorize-oktaoan.png) -{% data reusables.saml.okta-save-provisioning %} -{% data reusables.saml.okta-edit-provisioning %} - -### Further reading - -- "[Configuring SAML single sign-on and SCIM for your enterprise account using Okta](/github/setting-up-and-managing-your-enterprise-account/configuring-saml-single-sign-on-and-scim-for-your-enterprise-account-using-okta)" -- "[Managing team synchronization for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-team-synchronization-for-your-organization#enabling-team-synchronization-for-okta)" -- [Understanding SAML](https://developer.okta.com/docs/concepts/saml/) in the Okta documentation -- [Understanding SCIM](https://developer.okta.com/docs/concepts/scim/) in the Okta documentation diff --git a/content/github/setting-up-and-managing-organizations-and-teams/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization.md deleted file mode 100644 index 5934c0738154..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Configuring the retention period for GitHub Actions artifacts and logs in your organization -intro: 'You can configure the retention period for {% data variables.product.prodname_actions %} artifacts and logs in your organization.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.23' ---- - -{% data reusables.actions.about-artifact-log-retention %} - -## Setting the retention period for an organization - -{% data reusables.organizations.navigate-to-org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.settings-sidebar-actions %} -{% data reusables.github-actions.change-retention-period-for-artifacts-logs %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/connecting-your-identity-provider-to-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/connecting-your-identity-provider-to-your-organization.md deleted file mode 100644 index ab1ebbef7450..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/connecting-your-identity-provider-to-your-organization.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Connecting your identity provider to your organization -intro: 'To use SAML single sign-on and SCIM, you must connect your identity provider to your {% data variables.product.product_name %} organization.' -product: '{% data reusables.gated-features.saml-sso %}' -redirect_from: - - /articles/connecting-your-identity-provider-to-your-organization -versions: - free-pro-team: '*' ---- - -Before [enabling SAML SSO](/articles/enabling-and-testing-saml-single-sign-on-for-your-organization) in your {% data variables.product.product_name %} organization, you'll need to connect your identity provider (IdP) to your organization. - -You can find the SAML and SCIM implementation details for your IdP in their documentation: -- Active Directory Federation Services (AD FS) [SAML](https://docs.microsoft.com/windows-server/identity/active-directory-federation-services) -- Azure Active Directory (Azure AD) [SAML](https://docs.microsoft.com/azure/active-directory/active-directory-saas-github-tutorial) and [SCIM](https://docs.microsoft.com/azure/active-directory/active-directory-saas-github-provisioning-tutorial) -- Okta [SAML](http://saml-doc.okta.com/SAML_Docs/How-to-Configure-SAML-2.0-for-Github-com.html) and [SCIM](http://developer.okta.com/standards/SCIM/) -- OneLogin [SAML](https://onelogin.service-now.com/support?id=kb_article&sys_id=2929ddcfdbdc5700d5505eea4b9619c6) and [SCIM](https://onelogin.service-now.com/support?id=kb_article&sys_id=5aa91d03db109700d5505eea4b96197e) -- PingOne [SAML](https://support.pingidentity.com/s/marketplace-integration/a7i1W0000004ID3QAM/github-connector) -- Shibboleth [SAML](https://wiki.shibboleth.net/confluence/display/IDP30/Home) - -{% note %} - -**Note:** {% data variables.product.product_name %} supported identity providers for SCIM are Azure AD, Okta, and OneLogin. For more information about SCIM, see "[About SCIM](/articles/about-scim)." - -{% endnote %} - -### Further reading - -- "[About identity and access management with SAML single sign-on](/articles/about-identity-and-access-management-with-saml-single-sign-on)" -- "[Enforcing SAML single sign-on for your organization](/articles/enforcing-saml-single-sign-on-for-your-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/converting-an-admin-team-to-improved-organization-permissions.md b/content/github/setting-up-and-managing-organizations-and-teams/converting-an-admin-team-to-improved-organization-permissions.md deleted file mode 100644 index ebda3d0ae055..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/converting-an-admin-team-to-improved-organization-permissions.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Converting an admin team to improved organization permissions -intro: 'If your organization was created after September 2015, your organization has improved organization permissions by default. Organizations created before September 2015 may need to migrate older Owners and Admin teams to the improved permissions model. Members of legacy admin teams automatically retain the ability to create repositories until those teams are migrated to the improved organization permissions model.' -redirect_from: - - /articles/converting-your-previous-admin-team-to-the-improved-organization-permissions/ - - /articles/converting-an-admin-team-to-improved-organization-permissions -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can remove the ability for members of legacy admin teams to create repositories by creating a new team for these members, ensuring that the team has necessary access to the organization's repositories, then deleting the legacy admin team. - -For more information, see "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization/)." - -{% warning %} - -**Warnings:** -- If there are members of your legacy Admin team who are not members of other teams, deleting the team will remove those members from the organization. Before deleting the team, ensure members are already direct members of the organization, or have collaborator access to necessary repositories. -- To prevent the loss of private forks made by members of the legacy Admin team, you must follow steps 1-3 below before deleting the legacy Admin team. -- Because "admin" is a term for organization members with specific [access to certain repositories](/articles/repository-permission-levels-for-an-organization) in the organization, we recommend you avoid that term in any team name you decide on. - -{% endwarning %} - -1. [Create a new team](/articles/creating-a-team). -2. [Add each of the members](/articles/adding-organization-members-to-a-team) of your legacy admin team to the new team. -3. [Give the new team equivalent access](/articles/managing-team-access-to-an-organization-repository) to each of the repositories the legacy team could access. -4. [Delete the legacy admin team](/articles/deleting-a-team). diff --git a/content/github/setting-up-and-managing-organizations-and-teams/converting-an-organization-into-a-user.md b/content/github/setting-up-and-managing-organizations-and-teams/converting-an-organization-into-a-user.md deleted file mode 100644 index f06589eb3397..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/converting-an-organization-into-a-user.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Converting an organization into a user -intro: 'It''s not possible to convert an organization into a personal user account, but you can create a new user account and transfer the organization''s repositories to it.' -redirect_from: - - /articles/converting-an-organization-into-a-user -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% if currentVersion == "free-pro-team@latest" %} - -1. [Sign up](/articles/signing-up-for-a-new-github-account) for a new GitHub user account. -2. [Have the user's role changed to an owner](/articles/changing-a-person-s-role-to-owner). -3. {% data variables.product.signin_link %} to the new user account. -4. [Transfer each organization repository](/articles/how-to-transfer-a-repository) to the new user account. -5. [Delete the organization](/articles/deleting-an-organization-account). -6. [Rename the user](/articles/changing-your-github-username) to the organization's name. - -{% else %} - -1. Sign up for a new GitHub Enterprise user account. -2. [Have the user's role changed to an owner](/articles/changing-a-person-s-role-to-owner). -3. {% data variables.product.signin_link %} to the new user account. -4. [Transfer each organization repository](/articles/how-to-transfer-a-repository) to the new user account. -5. [Delete the organization](/articles/deleting-an-organization-account). -6. [Rename the user](/articles/changing-your-github-username) to the organization's name. - -{% endif %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/converting-an-organization-member-to-an-outside-collaborator.md b/content/github/setting-up-and-managing-organizations-and-teams/converting-an-organization-member-to-an-outside-collaborator.md deleted file mode 100644 index 730865c88648..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/converting-an-organization-member-to-an-outside-collaborator.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Converting an organization member to an outside collaborator -intro: 'If a current member of your organization only needs access to certain repositories, such as consultants or temporary employees, you can convert them to an *outside collaborator*.' -redirect_from: - - /articles/converting-an-organization-member-to-an-outside-collaborator -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.organizations.owners-and-admins-can %} convert organization members into outside collaborators. - -{% data reusables.organizations.outside-collaborators-use-seats %} {% data reusables.organizations.outside_collaborator_forks %} - -After converting an organization member to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The person will no longer be an explicit member of the organization, and will no longer be able to: - -- Create teams -- See all organization members and teams -- @mention any visible team -- Be a team maintainer - -For more information, see "[Permission levels for an organization](/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization)." - -We recommend reviewing the organization member's access to repositories to ensure their access is as you expect. For more information, see "[Managing an individual's access to an organization repository](/articles/managing-an-individual-s-access-to-an-organization-repository)." - -When you convert an organization member to an outside collaborator, their privileges as organization members are saved for three months so that you can restore their membership privileges if you{% if currentVersion == "free-pro-team@latest" %} invite them to rejoin{% else %} add them back to{% endif %} your organization within that time frame. For more information, see "[Reinstating a former member of your organization](/articles/reinstating-a-former-member-of-your-organization)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -4. Select the person or people you'd like to convert to outside collaborators. - ![List of members with two members selected](/assets/images/help/teams/list-of-members-selected-bulk.png) -5. Above the list of members, use the drop-down menu and click **Convert to outside collaborator**. - ![Drop-down menu with option to convert members to outside collaborators](/assets/images/help/teams/user-bulk-management-options.png) -6. Read the information about converting members to outside collaborators, then click **Convert to outside collaborator**. - ![Information on outside collaborators permissions and Convert to outside collaborators button](/assets/images/help/teams/confirm-outside-collaborator-bulk.png) - -### Further reading - -- "[Adding outside collaborators to repositories in your organization](/articles/adding-outside-collaborators-to-repositories-in-your-organization)" -- "[Removing an outside collaborator from an organization repository](/articles/removing-an-outside-collaborator-from-an-organization-repository)" -- "[Converting an outside collaborator to an organization member](/articles/converting-an-outside-collaborator-to-an-organization-member)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/converting-an-outside-collaborator-to-an-organization-member.md b/content/github/setting-up-and-managing-organizations-and-teams/converting-an-outside-collaborator-to-an-organization-member.md deleted file mode 100644 index be985f927923..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/converting-an-outside-collaborator-to-an-organization-member.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Converting an outside collaborator to an organization member -intro: 'If you would like to give an outside collaborator on your organization''s repositories broader permissions within your organization, you can {% if currentVersion == "free-pro-team@latest" %}invite them to become a member of{% else %}make them a member of{% endif %} the organization.' -redirect_from: - - /articles/converting-an-outside-collaborator-to-an-organization-member -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tips**: -- Only organization owners can {% if currentVersion == "free-pro-team@latest" %}invite users to join{% else %}add users to{% endif %} an organization. For more information, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization)."{% if currentVersion == "free-pro-team@latest" %} -- If your organization is on a paid per-user subscription, an unused license must be available before you can invite a new member to join the organization or reinstate a former organization member. For more information, see "[About per-user pricing](/articles/about-per-user-pricing)." {% data reusables.organizations.org-invite-expiration %}{% endif %} -- If your organization [requires members to use two-factor authentication](/articles/requiring-two-factor-authentication-in-your-organization), users {% if currentVersion == "free-pro-team@latest" %}you invite must [enable two-factor authentication](/articles/securing-your-account-with-two-factor-authentication-2fa) before they can accept the invitation.{% else %}must [enable two-factor authentication](/articles/securing-your-account-with-two-factor-authentication-2fa) before you can add them to the organization.{% endif %} - -{% endtip %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -{% data reusables.organizations.people_tab_outside_collaborators %} -{% if currentVersion == "free-pro-team@latest" %} -5. To the right of the name of the outside collaborator you want to become a member, use the {% octicon "gear" aria-label="The gear icon" %} drop-down menu and click **Invite to organization**.![Invite outside collaborators to organization](/assets/images/help/organizations/invite_outside_collaborator_to_organization.png) -{% else %} -5. To the right of the name of the outside collaborator you want to become a member, click **Invite to organization**.![Invite outside collaborators to organization](/assets/images/enterprise/orgs-and-teams/invite_outside_collabs_to_org.png) -{% endif %} -{% data reusables.organizations.choose-to-restore-privileges %} -{% data reusables.organizations.choose-user-role-send-invitation %} -{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.organizations.user_must_accept_invite_email %} {% data reusables.organizations.cancel_org_invite %} -{% endif %} - -### Further reading - -- "[Converting an organization member to an outside collaborator](/articles/converting-an-organization-member-to-an-outside-collaborator)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/converting-an-owners-team-to-improved-organization-permissions.md b/content/github/setting-up-and-managing-organizations-and-teams/converting-an-owners-team-to-improved-organization-permissions.md deleted file mode 100644 index 544e7396b580..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/converting-an-owners-team-to-improved-organization-permissions.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Converting an Owners team to improved organization permissions -intro: 'If your organization was created after September 2015, your organization has improved organization permissions by default. Organizations created before September 2015 may need to migrate older Owners and Admin teams to the improved permissions model. The "Owner" is now an administrative role given to individual members of your organization. Members of your legacy Owners team are automatically given owner privileges.' -redirect_from: - - /articles/converting-your-previous-owners-team-to-the-improved-organization-permissions-early-access-program/ - - /articles/converting-your-previous-owners-team-to-the-improved-organization-permissions/ - - /articles/converting-an-owners-team-to-improved-organization-permissions -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You have a few options to convert your legacy Owners team: - -- Give the team a new name that denotes the members have a special status in the organization. -- Delete the team after ensuring all members have been added to teams that grant necessary access to the organization's repositories. - -### Give the Owners team a new name - -{% tip %} - - **Note:** Because "admin" is a term for organization members with specific [access to certain repositories](/articles/repository-permission-levels-for-an-organization) in the organization, we recommend you avoid that term in any team name you decide on. - -{% endtip %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.owners-team %} -{% data reusables.organizations.convert-owners-team-confirm %} -5. In the team name field, choose a new name for the Owners team. For example: - - If very few members of your organization were members of the Owners team, you might name the team "Core". - - If all members of your organization were members of the Owners team so that they could [@mention teams](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams), you might name the team "Employees". - ![The team name field, with the Owners team renamed to Core](/assets/images/help/teams/owners-team-new-name.png) -6. Under the team description, click **Save and continue**. -![The Save and continue button](/assets/images/help/teams/owners-team-save-and-continue.png) -7. Optionally, [make the team *public*](/articles/changing-team-visibility). - -### Delete the legacy Owners team - -{% warning %} - -**Warning:** If there are members of your Owners team who are not members of other teams, deleting the team will remove those members from the organization. Before deleting the team, ensure members are already direct members of the organization, or have collaborator access to necessary repositories. - -{% endwarning %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.owners-team %} -{% data reusables.organizations.convert-owners-team-confirm %} -5. At the bottom of the page, review the warning and click **Delete the Owners team**. - ![Link for deleting the Owners team](/assets/images/help/teams/owners-team-delete.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/creating-a-new-organization-from-scratch.md b/content/github/setting-up-and-managing-organizations-and-teams/creating-a-new-organization-from-scratch.md deleted file mode 100644 index 71ac9d38cbad..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/creating-a-new-organization-from-scratch.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Creating a new organization from scratch -intro: Create an organization to apply fine-grained access permissions to repositories. -redirect_from: - - /articles/creating-a-new-organization-from-scratch -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When you create a new organization from scratch, it doesn't have any repositories associated with it. For more information on adding repositories to your organization, see "[Creating a new repository](/articles/creating-a-new-repository)" and "[Transferring a repository](/articles/transferring-a-repository)." - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.organizations %} -{% data reusables.organizations.new-organization %} -4. Follow the prompts to create your organization. {% if currentVersion == "free-pro-team@latest" %}For more information about the plans available for your team, see "[{% data variables.product.prodname_dotcom %}'s products](/articles/githubs-products)."{% endif %} - -### Further reading - -{% if currentVersion == "free-pro-team@latest" %} -- "[Setting your billing email](/articles/setting-your-billing-email)"{% endif %} -- "[About organizations](/articles/about-organizations)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/creating-a-team.md b/content/github/setting-up-and-managing-organizations-and-teams/creating-a-team.md deleted file mode 100644 index fa876319a47f..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/creating-a-team.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Creating a team -intro: You can create independent or nested teams to manage repository permissions and mentions for groups of people. -redirect_from: - - /articles/creating-a-team-early-access-program/ - - /articles/creating-a-team -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Only organization owners and maintainers of a parent team can create a new child team under a parent. Owners can also restrict creation permissions for all teams in an organization. For more information, see "[Setting team creation permissions in your organization](/articles/setting-team-creation-permissions-in-your-organization)." - -{% data reusables.organizations.team-synchronization %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.new_team %} -{% data reusables.organizations.team_name %} -{% data reusables.organizations.team_description %} -{% data reusables.organizations.create-team-choose-parent %} -{% if currentVersion == "free-pro-team@latest" %} -1. Optionally, if your organization or enterprise account uses team synchronization, to connect an identity provider group to your team, use the "Identity Provider Groups" drop-down menu, and select up to 5 identity provider groups. For more information, see "[Synchronizing a team with an identity provider group](/github/setting-up-and-managing-organizations-and-teams/synchronizing-a-team-with-an-identity-provider-group)." - ![Drop-down menu to choose identity provider groups](/assets/images/help/teams/choose-an-idp-group.png) -{% endif %} -{% data reusables.organizations.team_visibility %} -{% data reusables.organizations.create_team %} -9. Optionally, [give the team access to organization repositories](/articles/managing-team-access-to-an-organization-repository). - -### Further reading - -- "[About teams](/articles/about-teams)" -- "[Changing team visibility](/articles/changing-team-visibility)" -- "[Moving a team in your organization's hierarchy](/articles/moving-a-team-in-your-organization-s-hierarchy)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/deleting-a-team.md b/content/github/setting-up-and-managing-organizations-and-teams/deleting-a-team.md deleted file mode 100644 index e92b38617fe3..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/deleting-a-team.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Deleting a team -intro: Organization owners can delete teams at any time from the team's settings page. -redirect_from: - - /articles/deleting-a-team -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tip:** Only organization owners can delete parent teams. For more information, see "[About teams](/articles/about-teams)." - -{% endtip %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.teams %} -4. Select the team or teams you'd like to delete. - ![List of teams with two teams selected](/assets/images/help/teams/list-of-teams-selected.png) -5. Above the list of teams, use the drop-down menu and click **Delete**. - ![Drop-down menu with option to change team visibility](/assets/images/help/teams/team-bulk-management-options.png) -6. Review the team or teams that will be deleted, then click **I understand, delete teams**. - ![List of teams that will be deleted and Delete teams button](/assets/images/help/teams/confirm-delete-teams-bulk.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/deleting-an-organization-account.md b/content/github/setting-up-and-managing-organizations-and-teams/deleting-an-organization-account.md deleted file mode 100644 index fdc78e09405e..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/deleting-an-organization-account.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Deleting an organization account -intro: 'When you delete an organization, all repositories, forks of private repositories, wikis, issues, pull requests, and Project or Organization Pages are deleted as well. {% if currentVersion == "free-pro-team@latest" %}The organization name becomes available for use on a new user or organization account, and your billing will end.{% endif %}' -redirect_from: - - /articles/deleting-an-organization-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% if currentVersion == "free-pro-team@latest" %} -{% tip %} - -**Tip**: If you want to cancel your paid subscription, you can [downgrade your organization to {% data variables.product.prodname_free_team %}](/articles/downgrading-your-github-subscription) instead of deleting the organization and its content. - -{% endtip %} - -{% endif %} - -### 1. Back up your organization content - -Once you delete an organization, GitHub **cannot restore your content**. Therefore, before you delete your organization, make sure you have a copy of all repositories, wikis, and issues from the account. - -### 2. Delete the organization - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -4. Near the bottom of the organization's settings page, click **Delete this Organization**. - ![Delete this organization button](/assets/images/help/settings/settings-organization-delete.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/denying-access-to-a-previously-approved-oauth-app-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/denying-access-to-a-previously-approved-oauth-app-for-your-organization.md deleted file mode 100644 index 0463ce5199d4..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/denying-access-to-a-previously-approved-oauth-app-for-your-organization.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Denying access to a previously approved OAuth App for your organization -intro: 'If an organization no longer requires a previously authorized {% data variables.product.prodname_oauth_app %}, owners can remove the application''s access to the organization''s resources.' -redirect_from: - - /articles/denying-access-to-a-previously-approved-application-for-your-organization/ - - /articles/denying-access-to-a-previously-approved-oauth-app-for-your-organization -versions: - free-pro-team: '*' ---- - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.oauth_app_access %} -5. Next to the application you'd like to disable, click {% octicon "pencil" aria-label="The edit icon" %}. - ![Edit icon](/assets/images/help/settings/settings-third-party-deny-edit.png) -6. Click **Deny access**. - ![Deny confirmation button](/assets/images/help/settings/settings-third-party-deny-confirm.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/disabling-oauth-app-access-restrictions-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/disabling-oauth-app-access-restrictions-for-your-organization.md deleted file mode 100644 index a7c2a1bb2a90..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/disabling-oauth-app-access-restrictions-for-your-organization.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Disabling OAuth App access restrictions for your organization -intro: 'Organization owners can disable restrictions on the {% data variables.product.prodname_oauth_app %}s that have access to the organization''s resources.' -redirect_from: - - /articles/disabling-third-party-application-restrictions-for-your-organization/ - - /articles/disabling-oauth-app-access-restrictions-for-your-organization -versions: - free-pro-team: '*' ---- - -{% danger %} - -**Warning**: When you disable {% data variables.product.prodname_oauth_app %} access restrictions for your organization, any organization member will automatically authorize {% data variables.product.prodname_oauth_app %} access to the organization's private resources when they approve an application for use in their personal account settings. - -{% enddanger %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.oauth_app_access %} -5. Click **Remove restrictions**. - ![Remove restrictions button](/assets/images/help/settings/settings-third-party-remove-restrictions.png) -6. After you review the information about disabling third-party application restrictions, click **Yes, remove application restrictions**. - ![Remove confirmation button button](/assets/images/help/settings/settings-third-party-confirm-disable.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/disabling-or-limiting-github-actions-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/disabling-or-limiting-github-actions-for-your-organization.md deleted file mode 100644 index 5d9013c74b28..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/disabling-or-limiting-github-actions-for-your-organization.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Disabling or limiting GitHub Actions for your organization -intro: 'Organization owners can disable, enable, and limit GitHub Actions for an organization.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.actions.enterprise-beta %} -{% data reusables.actions.enterprise-github-hosted-runners %} - -### About {% data variables.product.prodname_actions %} permissions for your organization - -{% data reusables.github-actions.disabling-github-actions %} For more information about {% data variables.product.prodname_actions %}, see "[About {% data variables.product.prodname_actions %}](/actions/getting-started-with-github-actions/about-github-actions)." - -You can enable {% data variables.product.prodname_actions %} for all repositories in your organization. {% data reusables.github-actions.enabled-actions-description %} You can disable {% data variables.product.prodname_actions %} for all repositories in your organization. {% data reusables.github-actions.disabled-actions-description %} - -Alternatively, you can enable {% data variables.product.prodname_actions %} for all repositories in your organization but limit the actions a workflow can run. {% data reusables.github-actions.enabled-local-github-actions %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.23" %} - -### Managing {% data variables.product.prodname_actions %} permissions for your organization - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.settings-sidebar-actions %} -1. Under **Local and third-party Actions**, select an option. - ![Enable, disable, or limit actions for this organization](/assets/images/help/repository/enable-org-actions.png) -1. Click **Save**. - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} - -### Managing {% data variables.product.prodname_actions %} permissions for your organization - -You can disable all workflows for an organization or set a policy that configures which actions can be used in an organization. - -{% data reusables.actions.actions-use-policy-settings %} - -{% note %} - -**Note:** You might not be able to manage these settings if your organization is managed by an enterprise that has overriding policy. For more information, {% if currentVersion == "free-pro-team@latest" %}"[Enforcing {% data variables.product.prodname_actions %} policies in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-github-actions-policies-in-your-enterprise-account)."{% else %}"[Enforcing {% data variables.product.prodname_actions %} policies for your enterprise](/enterprise/admin/github-actions/enforcing-github-actions-policies-for-your-enterprise)."{% endif %} - -{% endnote %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.settings-sidebar-actions %} -1. Under **Policies**, select an option. - ![Set actions policy for this organization](/assets/images/help/organizations/actions-policy.png) -1. Click **Save**. - -### Allowing specific actions to run - -{% data reusables.actions.allow-specific-actions-intro %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.settings-sidebar-actions %} -1. Under **Policies**, select **Allow specific actions** and add your required actions to the list. - ![Add actions to allow list](/assets/images/help/organizations/actions-policy-allow-list.png) -1. Click **Save**. - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -### Enabling workflows for private repository forks - -{% data reusables.github-actions.private-repository-forks-overview %} - -#### Configuring the private fork policy for an organization - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.settings-sidebar-actions %} -{% data reusables.github-actions.private-repository-forks-configure %} -{% endif %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/disabling-publication-of-github-pages-sites-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/disabling-publication-of-github-pages-sites-for-your-organization.md deleted file mode 100644 index 51ef231c91ee..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/disabling-publication-of-github-pages-sites-for-your-organization.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Disabling publication of GitHub Pages sites for your organization -intro: 'You can prevent members of your organization from publishing {% data variables.product.prodname_pages %} sites from repositories in the organization.' -permissions: 'Organization owners can disable publication of {% data variables.product.prodname_pages %} sites from repositories in the organization.' -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' - enterprise-server: '>2.22' ---- - -### About restrictions on publication of {% data variables.product.prodname_pages %} sites - -You can control whether members of your organization can publish websites from repositories in your organization using {% data variables.product.prodname_pages %}. For more information about {% data variables.product.prodname_pages %}, see "[About {% data variables.product.prodname_pages %}](/github/working-with-github-pages/about-github-pages)." - -{% if enterpriseServerVersions contains currentVersion %}If your site administrator has enabled Public Pages, {% endif %}{% data variables.product.prodname_pages %} sites are publicly available on the internet, even if the repository for the site is private{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} or internal{% endif %}. For more information, see{% if enterpriseServerVersions contains currentVersion %} "[Configuring {% data variables.product.prodname_pages %} on your appliance](/enterprise/admin/installation/configuring-github-pages-on-your-appliance#making-github-pages-publicly-accessible)" and{% endif %} "[About repository visibility](/github/creating-cloning-and-archiving-repositories/about-repository-visibility)." - -### Disabling publication of {% data variables.product.prodname_pages %} sites - -After you disable publication of {% data variables.product.prodname_pages %} sites, any published site will remain published. You can manually unpublish the site. For more information, see "[Unpublishing a {% data variables.product.prodname_pages %} site](/github/working-with-github-pages/unpublishing-a-github-pages-site)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.member-privileges %} -1. Under "Pages creation", unselect **Allow members to publish sites**. - ![Unselected checkbox for "Allow members to publish sites" option](/assets/images/help/organizations/org-settings-pages-disable-publication-checkbox.png) -1. Click **Save**. - !["Save" button for "Allow members to publish sites" option](/assets/images/help/organizations/org-settings-pages-disable-publication-save-button.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/disabling-team-discussions-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/disabling-team-discussions-for-your-organization.md deleted file mode 100644 index 2651918af97f..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/disabling-team-discussions-for-your-organization.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Disabling team discussions for your organization -intro: Organization owners can choose to disable or enable team discussions across the organization. -redirect_from: - - /articles/disabling-team-discussions-for-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.organizations.team-discussions-default %} For more information on team discussions, see "[About team discussions](/articles/about-team-discussions)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.teams_sidebar %} -5. Under "Team discussions", unselect **Enable team discussions for this organization**. - ![Checkbox to enable or disable team discussions for an organization](/assets/images/help/settings/enable-team-discussions-for-org-checkbox.png) -6. Click **Save**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/downloading-your-organizations-saml-single-sign-on-recovery-codes.md b/content/github/setting-up-and-managing-organizations-and-teams/downloading-your-organizations-saml-single-sign-on-recovery-codes.md deleted file mode 100644 index bebfbbc2d9aa..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/downloading-your-organizations-saml-single-sign-on-recovery-codes.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Downloading your organization's SAML single sign-on recovery codes -intro: 'Organization administrators should download their organization''s SAML single sign-on recovery codes to ensure that they can access {% data variables.product.product_name %} even if the identity provider for the organization is unavailable.' -redirect_from: - - /articles/downloading-your-organization-s-saml-single-sign-on-recovery-codes - - /articles/downloading-your-organizations-saml-single-sign-on-recovery-codes -product: '{% data reusables.gated-features.saml-sso %}' -versions: - free-pro-team: '*' ---- - -Recovery codes should not be shared or distributed. We recommend saving them with a password manager such as [LastPass](https://lastpass.com/), [1Password](https://1password.com/), or [Keeper](https://keepersecurity.com/). - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security %} -5. Under "SAML single sign-on", in the note about recovery codes, click **Save your recovery codes**. -![Link to view and save your recovery codes](/assets/images/help/saml/saml_recovery_codes.png) -6. Save your recovery codes by clicking **Download**, **Print**, or **Copy**. -![Buttons to download, print, or copy your recovery codes](/assets/images/help/saml/saml_recovery_code_options.png) - - {% note %} - - **Note:** Your recovery codes will help get you back into {% data variables.product.product_name %} if your IdP is unavailable. If you generate new recovery codes the recovery codes displayed on the "Single sign-on recovery codes" page are automatically updated. - - {% endnote %} - -7. Once you use a recovery code to regain access to {% data variables.product.product_name %}, it cannot be reused. Access to {% data variables.product.product_name %} will only be available for 24 hours before you'll be asked to sign in using single sign-on. - -### Further reading - -- "[About identity and access management with SAML single sign-on](/articles/about-identity-and-access-management-with-saml-single-sign-on)" -- "[Accessing your organization if your identity provider is unavailable](/articles/accessing-your-organization-if-your-identity-provider-is-unavailable)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/enabling-and-testing-saml-single-sign-on-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/enabling-and-testing-saml-single-sign-on-for-your-organization.md deleted file mode 100644 index 7de1e9bcd780..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/enabling-and-testing-saml-single-sign-on-for-your-organization.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Enabling and testing SAML single sign-on for your organization -intro: Organization owners and admins can enable SAML single sign-on to add an extra layer of security to their organization. -product: '{% data reusables.gated-features.saml-sso %}' -redirect_from: - - /articles/enabling-and-testing-saml-single-sign-on-for-your-organization -versions: - free-pro-team: '*' ---- - -You can enable SAML SSO in your organization without requiring all members to use it. Enabling but not enforcing SAML SSO in your organization can help smooth your organization's SAML SSO adoption. Once a majority of your organization's members use SAML SSO, you can enforce it within your organization. - -If you enable but don't enforce SAML SSO, organization members who choose not to use SAML SSO can still be members of the organization. For more information on enforcing SAML SSO, see "[Enforcing SAML single sign-on for your organization](/articles/enforcing-saml-single-sign-on-for-your-organization)." - -{% data reusables.saml.outside-collaborators-exemption %} - -Prior to enforcing SAML SSO in your organization, ensure that you've set up your identity provider (IdP). For more information, see "[Preparing to enforce SAML single sign-on in your organization](/articles/preparing-to-enforce-saml-single-sign-on-in-your-organization)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security %} -5. Under "SAML single sign-on", select **Enable SAML authentication**. -![Checkbox for enabling SAML SSO](/assets/images/help/saml/saml_enable.png) - - {% note %} - - **Note:** After enabling SAML SSO, you can download your single sign-on recovery codes so that you can access your organization even if your IdP is unavailable. For more information, see "[Downloading your organization's SAML single sign-on recovery codes](/articles/downloading-your-organization-s-saml-single-sign-on-recovery-codes)." - - {% endnote %} - -6. In the "Sign on URL" field, type the HTTPS endpoint of your IdP for single sign-on requests. This value is available in your IdP configuration. -![Field for the URL that members will be forwarded to when signing in](/assets/images/help/saml/saml_sign_on_url.png) -7. Optionally, in the "Issuer" field, type your SAML issuer's name. This verifies the authenticity of sent messages. -![Field for the SAML issuer's name](/assets/images/help/saml/saml_issuer.png) -8. Under "Public Certificate," paste a certificate to verify SAML responses. -![Field for the public certificate from your identity provider](/assets/images/help/saml/saml_public_certificate.png) -9. Click {% octicon "pencil" aria-label="The edit icon" %} and then in the Signature Method and Digest Method drop-downs, choose the hashing algorithm used by your SAML issuer to verify the integrity of the requests. -![Drop-downs for the Signature Method and Digest method hashing algorithms used by your SAML issuer](/assets/images/help/saml/saml_hashing_method.png) -10. Before enabling SAML SSO for your organization, click **Test SAML configuration** to ensure that the information you've entered is correct. ![Button to test SAML configuration before enforcing](/assets/images/help/saml/saml_test.png) - - {% tip %} - - **Tip:** {% data reusables.saml.testing-saml-sso %} - - {% endtip %} -11. To enforce SAML SSO and remove all organization members who haven't authenticated via your IdP, select **Require SAML SSO authentication for all members of the _organization name_ organization**. For more information on enforcing SAML SSO, see "[Enforcing SAML single sign-on for your organization](/articles/enforcing-saml-single-sign-on-for-your-organization)." -![Checkbox to require SAML SSO for your organization ](/assets/images/help/saml/saml_require_saml_sso.png) -12. Click **Save**. -![Button to save SAML SSO settings](/assets/images/help/saml/saml_save.png) - -### Further reading - -- "[About identity and access management with SAML single sign-on](/articles/about-identity-and-access-management-with-saml-single-sign-on)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/enabling-oauth-app-access-restrictions-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/enabling-oauth-app-access-restrictions-for-your-organization.md deleted file mode 100644 index afb7f66b0cd9..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/enabling-oauth-app-access-restrictions-for-your-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Enabling OAuth App access restrictions for your organization -intro: 'Organization owners can enable {% data variables.product.prodname_oauth_app %} access restrictions to prevent untrusted apps from accessing the organization''s resources while allowing organization members to use {% data variables.product.prodname_oauth_app %}s for their personal accounts.' -redirect_from: - - /articles/enabling-third-party-application-restrictions-for-your-organization/ - - /articles/enabling-oauth-app-access-restrictions-for-your-organization -versions: - free-pro-team: '*' ---- - -{% data reusables.organizations.oauth_app_restrictions_default %} - -{% warning %} - -**Warnings**: -- Enabling {% data variables.product.prodname_oauth_app %} access restrictions will revoke organization access for all previously authorized {% data variables.product.prodname_oauth_app %}s and SSH keys. For more information, see "[About {% data variables.product.prodname_oauth_app %} access restrictions](/articles/about-oauth-app-access-restrictions)." -- Once you've set up {% data variables.product.prodname_oauth_app %} access restrictions, make sure to re-authorize any {% data variables.product.prodname_oauth_app %} that require access to the organization's private data on an ongoing basis. All organization members will need to create new SSH keys, and the organization will need to create new deploy keys as needed. -- When {% data variables.product.prodname_oauth_app %} access restrictions are enabled, applications can use an OAuth token to access information about {% data variables.product.prodname_marketplace %} transactions. - -{% endwarning %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.oauth_app_access %} -5. Under "Third-party application access policy," click **Setup application access restrictions**. - ![Set up restrictions button](/assets/images/help/settings/settings-third-party-set-up-restrictions.png) -6. After you review the information about third-party access restrictions, click **Restrict third-party application access**. - ![Restriction confirmation button](/assets/images/help/settings/settings-third-party-restrict-confirm.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/enforcing-saml-single-sign-on-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/enforcing-saml-single-sign-on-for-your-organization.md deleted file mode 100644 index 1c1d291769df..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/enforcing-saml-single-sign-on-for-your-organization.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Enforcing SAML single sign-on for your organization -intro: Organization owners and admins can enforce SAML SSO so that all organization members must authenticate via an identity provider. -product: '{% data reusables.gated-features.saml-sso %}' -redirect_from: - - /articles/enforcing-saml-single-sign-on-for-your-organization -versions: - free-pro-team: '*' ---- - -If you enforce SAML SSO in your organization, any members, including admins who have not authenticated via your SAML identity provider (IdP), will be removed from the organization and will receive an email notifying them about the removal. Bots and service accounts that do not have external identities set up in your organization's IdP will also be removed. For more information on bots and service accounts, see "[Managing bots and service accounts with SAML single sign-on](/articles/managing-bots-and-service-accounts-with-saml-single-sign-on)." You can restore organization members once they successfully complete single sign-on. - -If your organization is owned by an enterprise account, enabling SAML for the enterprise account will override your organization-level SAML configuration. For more information, see "[Enforcing security settings in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account)." - -{% tip %} - -**Tip:** {% data reusables.saml.testing-saml-sso %} - -{% endtip %} - -1. Enable and test SAML SSO for your organization. For more information on this process, see "[Enabling and testing SAML single sign-on for your organization](/articles/enabling-and-testing-saml-single-sign-on-for-your-organization)." -2. After you select **Require SAML SSO authentication for all members of the SAML SSO Org organization**, organization members who haven't authenticated via your IdP will be shown. If you enforce SAML SSO, these members will be removed from the organization. -3. Click **Enforce SAML SSO** to enforce SAML SSO and remove the listed organization members. - -### Further reading - -- "[About identity and access management with SAML single sign-on](/articles/about-identity-and-access-management-with-saml-single-sign-on)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/giving-team-maintainer-permissions-to-an-organization-member.md b/content/github/setting-up-and-managing-organizations-and-teams/giving-team-maintainer-permissions-to-an-organization-member.md deleted file mode 100644 index 47f1c3add97c..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/giving-team-maintainer-permissions-to-an-organization-member.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Giving "team maintainer" permissions to an organization member -intro: 'An organization owner can promote any member of the organization to *team maintainer* for a team, giving them a subset of privileges available to organization owners.' -redirect_from: - - /articles/giving-team-maintainer-permissions-to-an-organization-member-early-access-program/ - - /articles/giving-team-maintainer-permissions-to-an-organization-member -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.organizations.team_maintainers_can %} - -### Promoting an organization member to team maintainer - -Before promoting an organization member to team maintainer, the person must already be a member of the team. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team_members_tab %} -4. Select the person or people you'd like to promote to team maintainer. -![Check box next to organization member](/assets/images/help/teams/team-member-check-box.png) -5. Above the list of team members, use the drop-down menu and click **Change role...**. -![Drop-down menu with option to change role](/assets/images/help/teams/bulk-edit-drop-down.png) -6. Select a new role and click **Change role**. -![Radio buttons for Maintainer or Member roles](/assets/images/help/teams/team-role-modal.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/granting-access-to-your-organization-with-saml-single-sign-on.md b/content/github/setting-up-and-managing-organizations-and-teams/granting-access-to-your-organization-with-saml-single-sign-on.md deleted file mode 100644 index c0353de939ba..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/granting-access-to-your-organization-with-saml-single-sign-on.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Granting access to your organization with SAML single sign-on -intro: 'Organization administrators can grant access to their organization with SAML single sign-on. This access can be granted to organization members, bots, and service accounts.' -mapTopic: true -redirect_from: - - /articles/granting-access-to-your-organization-with-saml-single-sign-on -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/index.md b/content/github/setting-up-and-managing-organizations-and-teams/index.md deleted file mode 100644 index b4da2b12e378..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/index.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: Setting up and managing organizations and teams -shortTitle: Organizations and teams -intro: Collaborate across many projects while managing access to projects and data and customizing settings for your organization. -redirect_from: - - /articles/about-improved-organization-permissions/ - - /categories/setting-up-and-managing-organizations-and-teams -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /collaborating-with-groups-in-organizations %} - {% link_in_list /about-organizations %} - {% link_in_list /about-your-organization-dashboard %} - {% link_in_list /creating-a-new-organization-from-scratch %} - {% link_in_list /accessing-your-organizations-settings %} - {% link_in_list /about-your-organizations-news-feed %} - - {% link_in_list /viewing-insights-for-your-organization %} - -{% topic_link_in_list /managing-membership-in-your-organization %} - - {% link_in_list /inviting-users-to-join-your-organization %} - {% link_in_list /canceling-or-editing-an-invitation-to-join-your-organization %} - - {% link_in_list /adding-people-to-your-organization %} - - {% link_in_list /removing-a-member-from-your-organization %} - {% link_in_list /reinstating-a-former-member-of-your-organization %} - - {% link_in_list /can-i-create-accounts-for-people-in-my-organization %} - -{% topic_link_in_list /managing-peoples-access-to-your-organization-with-roles %} - {% link_in_list /permission-levels-for-an-organization %} - {% link_in_list /maintaining-ownership-continuity-for-your-organization %} - {% link_in_list /giving-team-maintainer-permissions-to-an-organization-member %} - - {% link_in_list /adding-a-billing-manager-to-your-organization %} - {% link_in_list /removing-a-billing-manager-from-your-organization %} - -{% topic_link_in_list /organizing-members-into-teams %} - {% link_in_list /about-teams %} - {% link_in_list /creating-a-team %} - {% link_in_list /setting-your-teams-profile-picture %} - {% link_in_list /adding-organization-members-to-a-team %} - - {% link_in_list /managing-code-review-assignment-for-your-team %} - - {% link_in_list /renaming-a-team %} - {% link_in_list /changing-team-visibility %} - - {% link_in_list /synchronizing-a-team-with-an-identity-provider-group %} - - {% link_in_list /moving-a-team-in-your-organizations-hierarchy %} - {% link_in_list /requesting-to-add-a-child-team %} - {% link_in_list /requesting-to-add-or-change-a-parent-team %} - {% link_in_list /removing-organization-members-from-a-team %} - {% link_in_list /disabling-team-discussions-for-your-organization %} - {% link_in_list /managing-scheduled-reminders-for-your-team %} - {% link_in_list /deleting-a-team %} -{% topic_link_in_list /managing-access-to-your-organizations-repositories %} - {% link_in_list /repository-permission-levels-for-an-organization %} - {% link_in_list /setting-base-permissions-for-an-organization %} - - {% link_in_list /viewing-people-with-access-to-your-repository %} - - {% link_in_list /managing-an-individuals-access-to-an-organization-repository %} - {% link_in_list /managing-team-access-to-an-organization-repository %} - {% link_in_list /adding-outside-collaborators-to-repositories-in-your-organization %} - {% link_in_list /canceling-an-invitation-to-become-an-outside-collaborator-in-your-organization %} - {% link_in_list /removing-an-outside-collaborator-from-an-organization-repository %} - {% link_in_list /converting-an-organization-member-to-an-outside-collaborator %} - {% link_in_list /converting-an-outside-collaborator-to-an-organization-member %} - {% link_in_list /reinstating-a-former-outside-collaborators-access-to-your-organization %} -{% topic_link_in_list /managing-access-to-your-organizations-project-boards %} - {% link_in_list /project-board-permissions-for-an-organization %} - {% link_in_list /managing-access-to-a-project-board-for-organization-members %} - {% link_in_list /managing-team-access-to-an-organization-project-board %} - {% link_in_list /managing-an-individuals-access-to-an-organization-project-board %} - {% link_in_list /adding-an-outside-collaborator-to-a-project-board-in-your-organization %} - {% link_in_list /removing-an-outside-collaborator-from-an-organization-project-board %} - -{% topic_link_in_list /managing-access-to-your-organizations-apps %} - {% link_in_list /adding-github-app-managers-in-your-organization %} - {% link_in_list /removing-github-app-managers-from-your-organization %} - -{% topic_link_in_list /managing-organization-settings %} - - {% link_in_list /verifying-your-organizations-domain %} - - {% link_in_list /renaming-an-organization %} - {% link_in_list /transferring-organization-ownership %} - {% link_in_list /restricting-repository-creation-in-your-organization %} - {% link_in_list /setting-permissions-for-deleting-or-transferring-repositories %} - {% link_in_list /restricting-repository-visibility-changes-in-your-organization %} - {% link_in_list /managing-the-forking-policy-for-your-organization %} - - {% link_in_list /disabling-or-limiting-github-actions-for-your-organization %} - {% link_in_list /configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization %} - - - {% link_in_list /setting-permissions-for-adding-outside-collaborators %} - {% link_in_list /allowing-people-to-delete-issues-in-your-organization %} - - - {% link_in_list /setting-team-creation-permissions-in-your-organization %} - - - {% link_in_list /managing-scheduled-reminders-for-your-organization %} - - - {% link_in_list /managing-the-default-branch-name-for-repositories-in-your-organization %} - - - {% link_in_list /managing-default-labels-for-repositories-in-your-organization %} - - - {% link_in_list /changing-the-visibility-of-your-organizations-dependency-insights %} - - - {% link_in_list /managing-the-display-of-member-names-in-your-organization %} - - {% link_in_list /disabling-publication-of-github-pages-sites-for-your-organization %} - {% link_in_list /deleting-an-organization-account %} - {% link_in_list /converting-an-organization-into-a-user %} - - {% link_in_list /integrating-jira-with-your-organization-project-board %} - - - {% link_in_list /upgrading-to-the-corporate-terms-of-service %} - -{% topic_link_in_list /migrating-to-improved-organization-permissions %} - {% link_in_list /converting-an-owners-team-to-improved-organization-permissions %} - {% link_in_list /converting-an-admin-team-to-improved-organization-permissions %} - {% link_in_list /migrating-admin-teams-to-improved-organization-permissions %} - -{% topic_link_in_list /restricting-access-to-your-organizations-data %} - {% link_in_list /about-oauth-app-access-restrictions %} - {% link_in_list /enabling-oauth-app-access-restrictions-for-your-organization %} - {% link_in_list /disabling-oauth-app-access-restrictions-for-your-organization %} - {% link_in_list /approving-oauth-apps-for-your-organization %} - {% link_in_list /denying-access-to-a-previously-approved-oauth-app-for-your-organization %} - -{% topic_link_in_list /keeping-your-organization-secure %} - {% link_in_list /viewing-whether-users-in-your-organization-have-2fa-enabled %} - {% link_in_list /preparing-to-require-two-factor-authentication-in-your-organization %} - {% link_in_list /requiring-two-factor-authentication-in-your-organization %} - - {% link_in_list /managing-security-and-analysis-settings-for-your-organization %} - {% link_in_list /managing-secret-scanning-for-your-organization %} - - {% link_in_list /managing-allowed-ip-addresses-for-your-organization %} - - {% link_in_list /restricting-email-notifications-to-an-approved-domain %} - - {% link_in_list /reviewing-the-audit-log-for-your-organization %} - {% link_in_list /reviewing-your-organizations-installed-integrations %} - -{% topic_link_in_list /managing-saml-single-sign-on-for-your-organization %} - {% link_in_list /about-identity-and-access-management-with-saml-single-sign-on %} - {% link_in_list /about-scim %} - {% link_in_list /connecting-your-identity-provider-to-your-organization %} - {% link_in_list /configuring-saml-single-sign-on-and-scim-using-okta %} - {% link_in_list /enabling-and-testing-saml-single-sign-on-for-your-organization %} - {% link_in_list /preparing-to-enforce-saml-single-sign-on-in-your-organization %} - {% link_in_list /enforcing-saml-single-sign-on-for-your-organization %} - {% link_in_list /downloading-your-organizations-saml-single-sign-on-recovery-codes %} - - {% link_in_list /managing-team-synchronization-for-your-organization %} - - {% link_in_list /accessing-your-organization-if-your-identity-provider-is-unavailable %} -{% topic_link_in_list /granting-access-to-your-organization-with-saml-single-sign-on %} - {% link_in_list /managing-bots-and-service-accounts-with-saml-single-sign-on %} - {% link_in_list /viewing-and-managing-a-members-saml-access-to-your-organization %} - {% link_in_list /about-two-factor-authentication-and-saml-single-sign-on %} - - -{% topic_link_in_list /managing-git-access-to-your-organizations-repositories %} - {% link_in_list /about-ssh-certificate-authorities %} - {% link_in_list /managing-your-organizations-ssh-certificate-authorities %} - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/integrating-jira-with-your-organization-project-board.md b/content/github/setting-up-and-managing-organizations-and-teams/integrating-jira-with-your-organization-project-board.md deleted file mode 100644 index 64bca57a0782..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/integrating-jira-with-your-organization-project-board.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Integrating Jira with your organization project board -intro: 'You can integrate Jira Cloud with your organization account to scan commits and pull requests, creating relevant metadata and hyperlinks in any mentioned Jira issues.' -redirect_from: - - /articles/integrating-jira-with-your-organization-project-board -versions: - enterprise-server: '*' ---- -{% data reusables.user_settings.access_settings %} -2. In the left sidebar under **Organization settings**, click the name of your organization. -![Sidebar organization name](/assets/images/help/settings/organization-settings-from-sidebar.png) -3. In the left sidebar under **Developer settings**, click **OAuth applications**. - ![OAuth applications tab in the left sidebar](/assets/images/help/organizations/org-oauth-applications-ghe.png) -4. Click **Register a new application**. -5. Under **Application name**, type "Jira". -6. Under **Homepage URL**, type the full URL to your Jira instance. -7. Under **Authorization callback URL**, type the full URL to your Jira instance. -8. Click **Register application**. -![Register application button](/assets/images/help/oauth/register-application-button.png) -9. Under **Organization owned applications**, note the "Client ID" and "Client Secret" values. -![Client ID and Client Secret](/assets/images/help/oauth/client-id-and-secret.png) -{% data reusables.user_settings.jira_help_docs %} - -### Further reading - -- ["Integrating Jira with your personal projects"](/articles/integrating-jira-with-your-personal-projects) -- Connect Jira Cloud to GitHub (Atlassian documentation) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/inviting-users-to-join-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/inviting-users-to-join-your-organization.md deleted file mode 100644 index 0c7304d050bc..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/inviting-users-to-join-your-organization.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Inviting users to join your organization -intro: 'You can invite anyone to become a member of your organization using their {% data variables.product.product_name %} username or email address.' -permissions: Organization owners can invite users to join an organization. -redirect_from: - - /articles/adding-or-inviting-members-to-a-team-in-an-organization/ - - /articles/inviting-users-to-join-your-organization -versions: - free-pro-team: '*' ---- - -{% tip %} - -**Tips**: -- If your organization has a paid per-user subscription, an unused license must be available before you can invite a new member to join the organization or reinstate a former organization member. For more information, see "[About per-user pricing](/articles/about-per-user-pricing)." {% data reusables.organizations.org-invite-expiration %} -- If your organization requires members to use two-factor authentication, users that you invite must enable two-factor authentication before accepting the invitation. For more information, see "[Requiring two-factor authentication in your organization](/github/setting-up-and-managing-organizations-and-teams/requiring-two-factor-authentication-in-your-organization)" and "[Securing your account with two-factor authentication (2FA)](/github/authenticating-to-github/securing-your-account-with-two-factor-authentication-2fa)." - -{% endtip %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -{% data reusables.organizations.invite_member_from_people_tab %} -{% data reusables.organizations.invite_to_org %} -{% data reusables.organizations.choose-to-restore-privileges %} -{% data reusables.organizations.choose-user-role %} -{% data reusables.organizations.add-user-to-teams %} -{% data reusables.organizations.send-invitation %} -{% data reusables.organizations.user_must_accept_invite_email %} {% data reusables.organizations.cancel_org_invite %} - -### Further reading -- "[Adding organization members to a team](/articles/adding-organization-members-to-a-team)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/keeping-your-organization-secure.md b/content/github/setting-up-and-managing-organizations-and-teams/keeping-your-organization-secure.md deleted file mode 100644 index 16e6d269417b..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/keeping-your-organization-secure.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Keeping your organization secure -redirect_from: - - /articles/preventing-unauthorized-access-to-organization-information/ - - /articles/keeping-your-organization-secure -intro: 'Organization owners have several features to help them keep their projects and data secure. If you''re the owner of an organization, you should regularly review your organization''s audit log, member 2FA status, and application settings to ensure that no unauthorized or malicious activity has occurred.' -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/maintaining-ownership-continuity-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/maintaining-ownership-continuity-for-your-organization.md deleted file mode 100644 index b16c0a751b84..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/maintaining-ownership-continuity-for-your-organization.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Maintaining ownership continuity for your organization -intro: Organizations can have more than one organization owner to avoid lapses in ownership. -redirect_from: - - /articles/changing-a-person-s-role-to-owner - - /articles/changing-a-persons-role-to-owner - - /github/setting-up-and-managing-organizations-and-teams/changing-a-persons-role-to-owner -permissions: Organization owners can promote any member of an organization to an organization owner. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About maintaining ownership continuity for your organization - -{% data reusables.organizations.org-ownership-recommendation %} - -Organization owners have full administrative access to the organization. {% data reusables.organizations.new-org-permissions-more-info %} - -### Appointing an organization owner - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -4. Select the person or people you'd like to promote to owner. - ![List of members with two members selected](/assets/images/help/teams/list-of-members-selected-bulk.png) -5. Above the list of members, use the drop-down menu and click **Change role**. - ![Drop-down menu with option to remove members](/assets/images/help/teams/user-bulk-management-options.png) -6. Select a new role for the person or people, then click **Change role**. - ![Radio buttons with owner and member roles and Change role button](/assets/images/help/teams/select-and-confirm-new-role-bulk.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-access-to-a-project-board-for-organization-members.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-access-to-a-project-board-for-organization-members.md deleted file mode 100644 index 12a3f78bf309..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-access-to-a-project-board-for-organization-members.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Managing access to a project board for organization members -intro: 'As an organization owner or project board admin, you can set a default permission level for a project board for all organization members.' -redirect_from: - - /articles/managing-access-to-a-project-board-for-organization-members -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -By default, organization members have write access to their organization's project boards unless organization owners or project board admins set different permissions for specific project boards. - -### Setting a baseline permission level for all organization members - -{% tip %} - -**Tip:** You can give an organization member higher permissions to project board. For more information, see "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)." - -{% endtip %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.organization-wide-project %} -{% data reusables.project-management.select-project %} -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.access-collaboration-settings %} -8. Under "Organization member permission", choose a baseline permission level for all organization members: **Read**, **Write**, **Admin**, or **None**. -![Baseline project board permission options for all organization members](/assets/images/help/projects/baseline-project-permissions-for-organization-members.png) -9. Click **Save**. - -### Further reading - -- "[Managing an individual’s access to an organization project board](/articles/managing-an-individual-s-access-to-an-organization-project-board)" -- "[Managing team access to an organization project board](/articles/managing-team-access-to-an-organization-project-board)" -- "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-access-to-your-organizations-apps.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-access-to-your-organizations-apps.md deleted file mode 100644 index 9624dfacdcb3..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-access-to-your-organizations-apps.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Managing access to your organization's apps -intro: 'As an organization owner, you can allow individual organization members to manage {% data variables.product.prodname_github_app %}s in your organization.' -redirect_from: - - /articles/managing-access-to-your-organization-s-apps - - /articles/managing-access-to-your-organizations-apps -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-access-to-your-organizations-project-boards.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-access-to-your-organizations-project-boards.md deleted file mode 100644 index 8fbdd7b7b735..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-access-to-your-organizations-project-boards.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Managing access to your organization’s project boards -intro: 'As an organization owner or project board admin, you can give organization members, teams, and outside collaborators different levels of access to project boards owned by your organization.' -redirect_from: - - /articles/managing-access-to-your-organization-s-project-boards - - /articles/managing-access-to-your-organizations-project-boards -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-access-to-your-organizations-repositories.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-access-to-your-organizations-repositories.md deleted file mode 100644 index 7cc178b24266..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-access-to-your-organizations-repositories.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Managing access to your organization's repositories -intro: Organization owners can manage individual and team access to the organization's repositories. Team maintainers can also manage a team's repository access. -redirect_from: - - /articles/permission-levels-for-an-organization-repository/ - - /articles/managing-access-to-your-organization-s-repositories - - /articles/managing-access-to-your-organizations-repositories -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-allowed-ip-addresses-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-allowed-ip-addresses-for-your-organization.md deleted file mode 100644 index fcef2f8ad171..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-allowed-ip-addresses-for-your-organization.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Managing allowed IP addresses for your organization -intro: You can restrict access to your organization's assets by configuring a list of IP addresses that are allowed to connect. -product: '{% data reusables.gated-features.allowed-ip-addresses %}' -versions: - free-pro-team: '*' ---- - -Organization owners can manage allowed IP addresses for an organization. - -### About allowed IP addresses - -You can restrict access to organization assets by configuring an allow list for specific IP addresses. {% data reusables.identity-and-permissions.ip-allow-lists-example-and-restrictions %} - -{% data reusables.identity-and-permissions.ip-allow-lists-cidr-notation %} - -{% data reusables.identity-and-permissions.ip-allow-lists-enable %} - -You can also configure allowed IP addresses for the organizations in an enterprise account. For more information, see "[Enforcing security settings in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account#managing-allowed-ip-addresses-for-organizations-in-your-enterprise-account)." - -### Adding an allowed IP address - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security %} -{% data reusables.identity-and-permissions.ip-allow-lists-add-ip %} -{% data reusables.identity-and-permissions.ip-allow-lists-add-description %} -{% data reusables.identity-and-permissions.ip-allow-lists-add-entry %} - -### Enabling allowed IP addresses - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security %} -3. Under "IP allow list", select **Enable IP allow list**. - ![Checkbox to allow IP addresses](/assets/images/help/security/enable-ip-allowlist-organization-checkbox.png) -4. Click **Save**. - -### Editing an allowed IP address - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security %} -{% data reusables.identity-and-permissions.ip-allow-lists-edit-entry %} -{% data reusables.identity-and-permissions.ip-allow-lists-edit-ip %} -{% data reusables.identity-and-permissions.ip-allow-lists-edit-description %} -8. Click **Update**. - -### Deleting an allowed IP address - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security %} -{% data reusables.identity-and-permissions.ip-allow-lists-delete-entry %} -{% data reusables.identity-and-permissions.ip-allow-lists-confirm-deletion %} - -### Using {% data variables.product.prodname_actions %} with an IP allow list - -{% data reusables.github-actions.ip-allow-list-self-hosted-runners %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-an-individuals-access-to-an-organization-project-board.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-an-individuals-access-to-an-organization-project-board.md deleted file mode 100644 index fec9591097f5..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-an-individuals-access-to-an-organization-project-board.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Managing an individual’s access to an organization project board -intro: 'As an organization owner or project board admin, you can manage an individual member''s access to a project board owned by your organization.' -redirect_from: - - /articles/managing-an-individual-s-access-to-an-organization-project-board - - /articles/managing-an-individuals-access-to-an-organization-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% note %} - -**Note:** {% data reusables.project-management.cascading-permissions %} For more information, see "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)." - -{% endnote %} - -### Giving an organization member access to a project board - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.organization-wide-project %} -{% data reusables.project-management.select-project %} -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.access-collaboration-settings %} -{% data reusables.project-management.collaborator-option %} -9. Under "Search by username, full name or email address", type the collaborator's name, username, or {% data variables.product.prodname_dotcom %} email. - ![The Collaborators section with the Octocat's username entered in the search field](/assets/images/help/projects/org-project-collaborators-find-name.png) -{% data reusables.project-management.add-collaborator %} -{% data reusables.project-management.collaborator-permissions %} - -### Changing an organization member's access to a project board - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.organization-wide-project %} -{% data reusables.project-management.select-project %} -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.access-collaboration-settings %} -{% data reusables.project-management.collaborator-option %} -{% data reusables.project-management.collaborator-permissions %} - -### Removing an organization member's access to a project board - -When you remove a collaborator from a project board, they may still retain access to the board based on the permissions they have for other roles. To completely remove access to a project board, you must remove access for each role the person has. For instance, a person may have access to the project board as an organization member or team member. For more information, see "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.organization-wide-project %} -{% data reusables.project-management.select-project %} -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.access-collaboration-settings %} -{% data reusables.project-management.collaborator-option %} -{% data reusables.project-management.remove-collaborator %} - -### Further reading - -- "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-an-individuals-access-to-an-organization-repository.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-an-individuals-access-to-an-organization-repository.md deleted file mode 100644 index a7be27aeaa12..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-an-individuals-access-to-an-organization-repository.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Managing an individual's access to an organization repository -intro: You can manage a person's access to a repository owned by your organization. -redirect_from: - - /articles/managing-an-individual-s-access-to-an-organization-repository-early-access-program/ - - /articles/managing-an-individual-s-access-to-an-organization-repository - - /articles/managing-an-individuals-access-to-an-organization-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -People with admin permissions can manage the access of organization members and outside collaborators to an organization repository. - -### Removing access to repositories - -When you remove a collaborator from a repository in your organization, the collaborator loses read and write access to the repository. If the repository is private and the collaborator has forked the repository, then their fork is also deleted, but the collaborator will still retain any local clones of your repository. - -{% data reusables.repositories.deleted_forks_from_private_repositories_warning %} - -### Managing an individual's access to an organization repository - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -4. Click either **Members** or **Outside collaborators** to manage people with different types of access. ![Button to invite members or outside collaborators to an organization](/assets/images/help/organizations/select-outside-collaborators.png) -5. To the right of the name of the person you'd like to manage, use the {% octicon "gear" aria-label="The Settings gear" %} drop-down menu, and click **Manage**. - ![The manage access link](/assets/images/help/organizations/member-manage-access.png) -6. On the "Manage access" page, next to the repository, click **Manage access**. -![Manage access button for a repository](/assets/images/help/organizations/repository-manage-access.png) -7. Review the person's access to a given repository, such as whether they're a collaborator or have access to the repository via team membership. -![Repository access matrix for the user](/assets/images/help/organizations/repository-access-matrix-for-user.png) - -### Further reading - -{% if currentVersion == "free-pro-team@latest" %}- "[Limiting interactions with your repository](/articles/limiting-interactions-with-your-repository)"{% endif %} -- "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-bots-and-service-accounts-with-saml-single-sign-on.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-bots-and-service-accounts-with-saml-single-sign-on.md deleted file mode 100644 index 4cd31df71aeb..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-bots-and-service-accounts-with-saml-single-sign-on.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Managing bots and service accounts with SAML single sign-on -intro: Organizations that have enabled SAML single sign-on can retain access for bots and service accounts. -product: '{% data reusables.gated-features.saml-sso %}' -redirect_from: - - /articles/managing-bots-and-service-accounts-with-saml-single-sign-on -versions: - free-pro-team: '*' ---- - -To retain access for bots and service accounts, organization administrators can [enable](/articles/enabling-and-testing-saml-single-sign-on-for-your-organization), but **not** [enforce](/articles/enforcing-saml-single-sign-on-for-your-organization) SAML single sign-on for their organization. If you need to enforce SAML single sign-on for your organization, you can create an external identity for the bot or service account with your identity provider (IdP). - -{% warning %} - -**Note:** If you enforce SAML single sign-on for your organization and **do not** have external identities set up for bots and service accounts with your IdP, they will be removed from your organization. - -{% endwarning %} - -### Further reading - -- "[About identity and access management with SAML single sign-on](/articles/about-identity-and-access-management-with-saml-single-sign-on)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-code-review-assignment-for-your-team.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-code-review-assignment-for-your-team.md deleted file mode 100644 index e14c832cbc4e..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-code-review-assignment-for-your-team.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Managing code review assignment for your team -intro: Code review assignments clearly indicate which members of a team are expected to submit a review for a pull request. -product: '{% data reusables.gated-features.code-review-assignment %}' -versions: - free-pro-team: '*' - enterprise-server: '>=2.20' ---- - -Team maintainers and organization owners can configure code review assignments. - -### About code review assignments - -By using code review assignments, any time your team has been requested to review a pull request, the team is removed as a reviewer and a specified subset of team members are assigned in the team's place. Code review assignments allow you to decide whether the whole team or just a subset of team members are notified when a team is requested for review. - -When code owners are automatically requested for review, the team is still removed and replaced with individuals. The individual approvals don't satisfy the requirement for code owner approval in a protected branch. For more information, see "[About code owners](/github/creating-cloning-and-archiving-repositories/about-code-owners)." - -### Routing algorithms - -Code review assignments automatically choose and assign reviewers based on one of two possible alogrithms. - -The round robin algorithm chooses reviewers based on who's received the least recent review request, focusing on alternating between all members of the team regardless of the number of outstanding reviews they currently have. - -The load balance algorithm chooses reviewers based on each member's total number of recent review requests and considers the number of outstanding reviews for each member. The load balance algorithm tries to ensure that each team member reviews an equal number of pull requests in any 30 day period. - -### Configuring code review assignment -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team_settings %} -5. In the left sidebar, click **Code review assignment** -![Code review assignment button](/assets/images/help/teams/review-assignment-button.png) -6. Select **Enable auto assignment**. -![Code review assignment button](/assets/images/help/teams/review-assignment-enable.png) -7. Under "How many team members should be assigned to review?", use the drop-down menu and choose a number of reviewers to be assigned to each pull request. -![Number of reviewers dropdown](/assets/images/help/teams/review-assignment-number.png) -8. Under "Routing algorithm", use the drop-down menu and choose which algorithm you'd like to use. For more information, see "[Routing algorithms](#routing-algorithms)." -![Routing algorithm dropdown](/assets/images/help/teams/review-assignment-algorithm.png) -9. Optionally, to always skip certain members of the team, select **Never assign certain team members**. Then, select one or more team members you'd like to always skip. -![Never assign certain team members checkbox and dropdown](/assets/images/help/teams/review-assignment-skip-members.png) -10. Optionally, to only notify the team members chosen by code review assignment for each pull review request, under "Notifications" select **If assigning team members, don't notify the entire team.** -![Code review assignment notifications](/assets/images/help/teams/review-assignment-notifications.png) -11. Click **Save changes**. - -### Disabling code review assignment -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team_settings %} -5. Select **Enable auto assignment** to remove the checkmark. -![Code review assignment button](/assets/images/help/teams/review-assignment-enable.png) -6. Click **Save changes**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-default-labels-for-repositories-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-default-labels-for-repositories-in-your-organization.md deleted file mode 100644 index f17ef2a497c3..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-default-labels-for-repositories-in-your-organization.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Managing default labels for repositories in your organization -intro: You can customize the labels that are included in every new repository in your organization. -redirect_from: - - /articles/managing-default-labels-for-repositories-in-your-organization -versions: - free-pro-team: '*' - enterprise-server: '>=2.20' ---- - -Organization owners can manage default labels for repositories in the organization. - -Default labels are included in every new repository in your organization, but anyone with write access to the repository can edit or delete the labels in that repository later. Adding, editing, or deleting a default label does not add, edit, or delete the label from existing repositories. - -### Creating a default label - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -{% data reusables.organizations.repository-defaults %} -{% else %} -{% data reusables.organizations.repository-labels %} -{% endif %} -5. Under "Repository labels", click **New label**. - ![New label button](/assets/images/help/organizations/new-label-button.png) -{% data reusables.project-management.name-label %} -{% data reusables.project-management.label-description %} -{% data reusables.project-management.label-color-randomizer %} -{% data reusables.project-management.create-label %} - -### Editing a default label - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -{% data reusables.organizations.repository-defaults %} -{% else %} -{% data reusables.organizations.repository-labels %} -{% endif %} -{% data reusables.project-management.edit-label %} -{% data reusables.project-management.name-label %} -{% data reusables.project-management.label-description %} -{% data reusables.project-management.label-color-randomizer %} -{% data reusables.project-management.save-label %} - -### Deleting a default label - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -{% data reusables.organizations.repository-defaults %} -{% else %} -{% data reusables.organizations.repository-labels %} -{% endif %} -{% data reusables.project-management.delete-label %} -{% data reusables.project-management.confirm-label-deletion %} - -### Further reading - -- "[About labels](/articles/about-labels)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-git-access-to-your-organizations-repositories.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-git-access-to-your-organizations-repositories.md deleted file mode 100644 index 30b828ded294..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-git-access-to-your-organizations-repositories.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Managing Git access to your organization's repositories -intro: You can add an SSH certificate authority (CA) to your organization and allow members to access the organization's repositories over Git using keys signed by the SSH CA. -mapTopic: true -product: '{% data reusables.gated-features.ssh-certificate-authorities %}' -redirect_from: - - /articles/managing-git-access-to-your-organizations-repositories-using-ssh-certificate-authorities/ - - /articles/managing-git-access-to-your-organizations-repositories -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-membership-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-membership-in-your-organization.md deleted file mode 100644 index 5d6389602507..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-membership-in-your-organization.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Managing membership in your organization -intro: 'After you create your organization, you can {% if currentVersion == "free-pro-team@latest" %}invite people to become{% else %}add people as{% endif %} members of the organization. You can also remove members of the organization, and reinstate former members.' -redirect_from: - - /articles/removing-a-user-from-your-organization/ - - /articles/managing-membership-in-your-organization -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-organization-settings.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-organization-settings.md deleted file mode 100644 index 2c62f0dc8492..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-organization-settings.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing organization settings -intro: 'Organization administrators can change several settings, including the names of repositories that belong to the organization and Owners team membership. In addition, organization admins can delete the organization and all of its repositories.' -mapTopic: true -redirect_from: - - /articles/managing-organization-settings -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-peoples-access-to-your-organization-with-roles.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-peoples-access-to-your-organization-with-roles.md deleted file mode 100644 index 8028809214dc..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-peoples-access-to-your-organization-with-roles.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Managing people's access to your organization with roles -intro: 'A person''s role in your organization defines their level of access to your organization, its settings, and your data. You can make people owners, members, or billing managers for your organization, or you can give them team maintainer permissions.' -redirect_from: - - /articles/managing-people-s-access-to-your-organization-with-roles - - /articles/managing-peoples-access-to-your-organization-with-roles -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-saml-single-sign-on-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-saml-single-sign-on-for-your-organization.md deleted file mode 100644 index 99753ae9e23d..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-saml-single-sign-on-for-your-organization.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing SAML single sign-on for your organization -intro: Organization administrators can manage organization members' identities and access to the organization with SAML single sign-on (SSO). -mapTopic: true -redirect_from: - - /articles/managing-member-identity-and-access-in-your-organization-with-saml-single-sign-on/ - - /articles/managing-saml-single-sign-on-for-your-organization -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-your-organization.md deleted file mode 100644 index b9516adbe441..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-your-organization.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Managing scheduled reminders for your organization -intro: You can get reminders in Slack for all pull requests that teams in your organization have been requested to review. -versions: - free-pro-team: '*' ---- - -### About scheduled reminders for pull requests - -{% data reusables.reminders.about-scheduled-reminders-teams-orgs %} - -Organization owners can schedule a reminder for one or more teams in their organization, for all pull requests the team or teams have been requested to review. - -### Creating a scheduled reminder for an organization -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.reminders.scheduled-reminders %} -![Scheduled reminders button](/assets/images/help/organizations/scheduled-reminders-org.png) -{% data reusables.reminders.add-reminder %} -{% data reusables.reminders.authorize-slack %} -{% data reusables.reminders.slack-channel %} -{% data reusables.reminders.days-dropdown %} -{% data reusables.reminders.times-dropdowns %} -{% data reusables.reminders.tracked-repos %} -11. Under "Filter by team assigned to review code", click the **Add a team** dropdown and choose one or more teams. You can add up to 100 teams. If the team you select doesn't have access to the "Tracked repositories" selected above, you won't be able to create the scheduled reminder. -![Add a team dropdown](/assets/images/help/organizations/scheduled-reminders-add-teams.png) -{% data reusables.reminders.ignore-drafts %} -{% data reusables.reminders.no-review-requests %} -{% data reusables.reminders.author-reviews %} -{% data reusables.reminders.approved-prs %} -{% data reusables.reminders.min-age %} -{% data reusables.reminders.min-staleness %} -{% data reusables.reminders.ignored-terms %} -{% data reusables.reminders.ignored-labels %} -{% data reusables.reminders.required-labels %} -{% data reusables.reminders.create-reminder %} - -### Managing a scheduled reminder for an organization -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.reminders.scheduled-reminders %} -![Scheduled reminders button](/assets/images/help/organizations/scheduled-reminders-org.png) -{% data reusables.reminders.edit-existing %} -{% data reusables.reminders.edit-page %} -{% data reusables.reminders.update-buttons %} - -### Deleting a scheduled reminder for an organization -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.reminders.scheduled-reminders %} -![Scheduled reminders button](/assets/images/help/organizations/scheduled-reminders-org.png) -{% data reusables.reminders.delete %} - -### Further reading - -- "[Managing your scheduled reminders](/github/setting-up-and-managing-your-github-user-account/managing-your-scheduled-reminders)" -- "[Managing scheduled reminders for your team](/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-your-team)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-your-team.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-your-team.md deleted file mode 100644 index 566264beaf6e..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-your-team.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Managing scheduled reminders for your team -intro: You can get reminders in Slack when your team has pull requests waiting for review. -redirect_from: - - /github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-pull-requests -versions: - free-pro-team: '*' ---- - -### About scheduled reminders for teams - -{% data reusables.reminders.about-scheduled-reminders-teams-orgs %} - -Team maintainers and organization owners can set scheduled reminders for any pull requests that a team has been requested to review. Before you can create a scheduled reminder for your team, an organization owner must authorize your Slack workspace. For more information, see "[Managing scheduled reminders for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-your-organization)." - -### Creating a scheduled reminder for a team -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team_settings %} -{% data reusables.reminders.scheduled-reminders %} -![Scheduled reminders button](/assets/images/help/teams/scheduled-reminders-teams.png) -{% data reusables.reminders.add-reminder %} -{% data reusables.reminders.authorize-slack %} -{% data reusables.reminders.slack-channel %} -{% data reusables.reminders.days-dropdown %} -{% data reusables.reminders.times-dropdowns %} -{% data reusables.reminders.tracked-repos %} -{% data reusables.reminders.ignore-drafts %} -{% data reusables.reminders.no-review-requests %} -{% data reusables.reminders.author-reviews %} -{% data reusables.reminders.approved-prs %} -{% data reusables.reminders.min-age %} -{% data reusables.reminders.min-staleness %} -{% data reusables.reminders.ignored-terms %} -{% data reusables.reminders.ignored-labels %} -{% data reusables.reminders.required-labels %} -{% data reusables.reminders.create-reminder %} - -### Managing a scheduled reminder for a team -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team_settings %} -{% data reusables.reminders.scheduled-reminders %} -![Scheduled reminders button](/assets/images/help/teams/scheduled-reminders-teams.png) -{% data reusables.reminders.edit-existing %} -{% data reusables.reminders.edit-page %} -{% data reusables.reminders.update-buttons %} - -### Deleting a scheduled reminder for a team -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team_settings %} -{% data reusables.reminders.scheduled-reminders %} -![Scheduled reminders button](/assets/images/help/teams/scheduled-reminders-teams.png) -{% data reusables.reminders.delete %} - -### Further reading - -- "[Managing scheduled reminders for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-your-organization)" -- "[Managing your scheduled reminders](/github/setting-up-and-managing-your-github-user-account/managing-your-scheduled-reminders)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-secret-scanning-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-secret-scanning-for-your-organization.md deleted file mode 100644 index c9a49f15911c..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-secret-scanning-for-your-organization.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Managing secret scanning for your organization -intro: 'You can control which repositories in your organization {% data variables.product.product_name %} will scan for secrets.' -permissions: 'Organization owners can manage {% data variables.product.prodname_secret_scanning %} for repositories in the organization.' -versions: - free-pro-team: '*' ---- - -{% data reusables.secret-scanning.beta %} - -### About management of {% data variables.product.prodname_secret_scanning %} - -{% data variables.product.prodname_secret_scanning_caps %} can help you mitigate the impact of leaked secrets in your organization's repositories. For more information, see "[About {% data variables.product.prodname_secret_scanning %}](/github/administering-a-repository/about-secret-scanning)." - -You can manage how {% data variables.product.prodname_dotcom %} scans for secrets in existing repositories in your organization. You can also enable or disable {% data variables.product.prodname_secret_scanning %} by default for any new repositories that members create in your organization. - -{% data reusables.security.security-and-analysis-features-enable-read-only %} - -{% note %} - -**Note**: {% data variables.product.prodname_secret_scanning_caps %} is enabled by default for public repositories in your organization and can't be disabled. For more information, see "[About secret scanning for public repositories](/github/administering-a-repository/about-secret-scanning#about-secret-scanning-for-public-repositories)." - -{% endnote %} - -### Enabling or disabling {% data variables.product.prodname_secret_scanning %} for existing private repositories - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security-and-analysis %} -5. To the right of "Secret scanning", click **Disable all** or **Enable all**. - !["Enable all" or "Disable all" button for secret scanning](/assets/images/help/organizations/security-and-analysis-disable-or-enable-secret-scanning.png) -6. Optionally, enable {% data variables.product.prodname_secret_scanning %} by default for new private repositories in your organization. - !["Enable by default" option for new repositories](/assets/images/help/organizations/security-and-analysis-secret-scanning-enable-by-default.png) -7. Click **Disable secret scanning** or **Enable secret scanning** to disable or enable the feature for all the repositories in your organization. - ![Button to disable or enable {% data variables.product.prodname_secret_scanning %} ](/assets/images/help/organizations/security-and-analysis-enable-secret-scanning.png) - -### Enabling or disabling {% data variables.product.prodname_secret_scanning %} for new private repositories - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security-and-analysis %} -5. To the right of "Secret scanning", enable or disable the feature by default for new private repositories in your organization. - ![Checkbox for enabling or disabling a feature for new repositoris](/assets/images/help/organizations/security-and-analysis-enable-or-disable-secret-scanning-checkbox.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization.md deleted file mode 100644 index 95208a04275f..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Managing security and analysis settings for your organization -intro: 'You can control features that secure and analyze the code in your organization''s projects on {% data variables.product.prodname_dotcom %}.' -permissions: Organization owners can manage security and analysis settings for repositories in the organization. -versions: - free-pro-team: '*' ---- - -### About management of security and analysis settings - -{% data variables.product.prodname_dotcom %} can help secure the repositories in your organization. You can manage the security and analysis features for all existing or new repositories that members create in your organization. - -{% data reusables.security.some-security-and-analysis-features-are-enabled-by-default %} - -{% if currentVersion == "free-pro-team@latest" %}{% data reusables.security.security-and-analysis-features-enable-read-only %} -{% endif %} - -### Enabling or disabling features for existing repositories - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security-and-analysis %} -5. Under "Configure security and analysis features", to the right of the feature, click **Disable all** or **Enable all**. - !["Enable all" or "Disable all" button for "Configure security and analysis" features](/assets/images/help/organizations/security-and-analysis-disable-or-enable-all.png) -6. Optionally, enable the feature by default for new repositories in your organization. - !["Enable by default" option for new repositories](/assets/images/help/organizations/security-and-analysis-enable-by-default-in-modal.png) -7. Click **Disable FEATURE** or **Enable FEATURE** to disable or enable the feature for all the repositories in your organization. - ![Button to disable or enable feature](/assets/images/help/organizations/security-and-analysis-enable-dependency-graph.png) - -### Enabling or disabling features for new repositories - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security-and-analysis %} -5. Under "Configure security and analysis features", to the right of the feature, enable or disable the feature by default for new repositories in your organization. - ![Checkbox for enabling or disabling a feature for new repositories](/assets/images/help/organizations/security-and-analysis-enable-or-disable-feature-checkbox.png) - -### Further reading - -{% if currentVersion == "free-pro-team@latest" %}- "[About securing your repository](/github/administering-a-repository/about-securing-your-repository)" -- "[About secret scanning](/github/administering-a-repository/about-secret-scanning)" -- "[Keeping your dependencies updated automatically](/github/administering-a-repository/keeping-your-dependencies-updated-automatically)" -{% endif %} -- "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)" -- "[Managing vulnerabilities in your project's dependencies](/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-team-access-to-an-organization-project-board.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-team-access-to-an-organization-project-board.md deleted file mode 100644 index a46a39d99933..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-team-access-to-an-organization-project-board.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Managing team access to an organization project board -intro: 'As an organization owner or project board admin, you can give a team access to a project board owned by your organization.' -redirect_from: - - /articles/managing-team-access-to-an-organization-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% warning %} - -**Warnings:** -- You can change a team's permission level if the team has direct access to a project board. If the team's access to the project board is inherited from a parent team, you must change the parent team's access to the project board. -- If you add or remove project board access for a parent team, each of that parent's child teams will also receive or lose access to the project board. For more information, see "[About teams](/articles/about-teams)." - -{% endwarning %} - -### Giving a team access to a project board - -You can give an entire team the same permission level to a project board. - -{% note %} - -**Note:** {% data reusables.project-management.cascading-permissions %} For example, if an organization owner has given a team read permissions to a project board, and a project board admin gives one of the team members admin permissions to that board as an individual collaborator, that person would have admin permissions to the project board. For more information see, "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)." - -{% endnote %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.organization-wide-project %} -{% data reusables.project-management.select-project %} -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.access-collaboration-settings %} -8. In the left sidebar, click **Teams**. -9. To add a team, click **Add a team: Select team**. Then, choose a team from the drop-down menu or search for the team you'd like to add. - ![Add a team drop-down menu with list of teams in organization](/assets/images/help/projects/add-a-team.png) -10. Next to the team name, use the drop-down menu to select the desired permission level: **Read**, **Write**, or **Admin**. - ![Team permissions drop-down menu with read, write, and admin options](/assets/images/help/projects/org-project-team-choose-permissions.png) - -### Configuring a team's access to a project board - -If a team's access to a project board is inherited from a parent team, you must change the parent team's access to the project board to update access to the child teams. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -4. Above the team's conversation, click {% octicon "project" aria-label="The Projects icon" %} **Projects**. - ![The team repositories tab](/assets/images/help/organizations/team-project-board-button.png) -5. To change permissions levels, to the right of the project board you want to update, use the drop-down. To remove a project board, click **{% octicon "trashcan" aria-label="The trashcan icon" %}**. - ![Remove a project board from your team trash button](/assets/images/help/organizations/trash-button.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-team-access-to-an-organization-repository.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-team-access-to-an-organization-repository.md deleted file mode 100644 index 8fcbd4e96a41..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-team-access-to-an-organization-repository.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Managing team access to an organization repository -intro: 'You can give a team access to a repository, remove a team''s access to a repository, or change a team''s permission level for a repository.' -redirect_from: - - /articles/managing-team-access-to-an-organization-repository-early-access-program/ - - /articles/managing-team-access-to-an-organization-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -People with admin access to a repository can manage team access to the repository. Team maintainers can remove a team's access to a repository. - -{% warning %} - -**Warnings:** -- You can change a team's permission level if the team has direct access to a repository. If the team's access to the repository is inherited from a parent team, you must change the parent team's access to the repository. -- If you add or remove repository access for a parent team, each of that parent's child teams will also receive or lose access to the repository. For more information, see "[About teams](/articles/about-teams)." - -{% endwarning %} - -### Giving a team access to a repository - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team-repositories-tab %} -5. Above the list of repositories, click **Add repository**. - ![The Add repository button](/assets/images/help/organizations/add-repositories-button.png) -6. Type the name of a repository, then click **Add repository to team**. - ![Repository search field](/assets/images/help/organizations/team-repositories-add.png) -7. Optionally, to the right of the repository name, use the drop-down menu and choose a different permission level for the team. - ![Repository access level dropdown](/assets/images/help/organizations/team-repositories-change-permission-level.png) - -### Removing a team's access to a repository - -You can remove a team's access to a repository if the team has direct access to a repository. If a team's access to the repository is inherited from a parent team, you must remove the repository from the parent team in order to remove the repository from child teams. - -{% data reusables.repositories.deleted_forks_from_private_repositories_warning %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team-repositories-tab %} -5. Select the repository or repositories you'd like to remove from the team. - ![List of team repositories with the checkboxes for some repositories selected](/assets/images/help/teams/select-team-repositories-bulk.png) -6. Above the list of repositories, use the drop-down menu, and click **Remove from team**. - ![Drop-down menu with the option to remove a repository from a team](/assets/images/help/teams/remove-team-repo-dropdown.png) -7. Review the repository or repositories that will be removed from the team, then click **Remove repositories**. - ![Modal box with a list of repositories that the team will no longer have access to](/assets/images/help/teams/confirm-remove-team-repos.png) - -### Further reading - -- "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-team-synchronization-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-team-synchronization-for-your-organization.md deleted file mode 100644 index 82303b3532c0..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-team-synchronization-for-your-organization.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Managing team synchronization for your organization -intro: 'You can enable and disable team synchronization between your identity provider (IdP) and your organization on {% data variables.product.product_name %}.' -product: '{% data reusables.gated-features.team-synchronization %}' -redirect_from: - - /articles/synchronizing-teams-between-your-identity-provider-and-github - - /github/setting-up-and-managing-organizations-and-teams/synchronizing-teams-between-your-identity-provider-and-github - - /github/articles/synchronizing-teams-between-okta-and-github -permissions: Organization owners can manage team synchronization for an organization. -miniTocMaxHeadingLevel: 4 -versions: - free-pro-team: '*' ---- - -{% data reusables.gated-features.okta-team-sync %} - -### About team synchronization - -You can enable team synchronization between your IdP and {% data variables.product.product_name %} to allow organization owners and team maintainers to connect teams in your organization with IdP groups. - -{% data reusables.identity-and-permissions.about-team-sync %} - -{% data reusables.identity-and-permissions.supported-idps-team-sync %} - -{% data reusables.identity-and-permissions.sync-team-with-idp-group %} - -You can also enable team synchronization for organizations owned by an enterprise account. For more information, see "[Enforcing security settings in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account)." - -### Enabling team synchronization - -The steps to enable team synchronization depend on the IdP you want to use. There are prerequisites to enable team synchronization that apply to every IdP. Each individual IdP has additional prerequisites. - -#### Prerequisites - -{% data reusables.identity-and-permissions.team-sync-required-permissions %} - -You must enable SAML single sign-on for your organization and your supported IdP. For more information, see "[Enforcing SAML single sign-on for your organization](/articles/enforcing-saml-single-sign-on-for-your-organization)." - -You must authenticate to your organization using SAML SSO and the supported IdP. For more information, see "[Authenticating with SAML single sign-on](/articles/authenticating-with-saml-single-sign-on)." - -#### Enabling team synchronization for Azure AD - -{% data reusables.identity-and-permissions.team-sync-azure-permissions %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security %} -{% data reusables.identity-and-permissions.team-sync-confirm-saml %} -{% data reusables.identity-and-permissions.enable-team-sync-azure %} -{% data reusables.identity-and-permissions.team-sync-confirm %} -6. Review the identity provider tenant information you want to connect to your organization, then click **Approve**. - ![Pending request to enable team synchronization to a specific IdP tenant with option to approve or cancel request](/assets/images/help/teams/approve-team-synchronization.png) - -#### Enabling team synchronization for Okta - -{% data reusables.identity-and-permissions.team-sync-okta-requirements %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security %} -{% data reusables.identity-and-permissions.team-sync-confirm-saml %} -{% data reusables.identity-and-permissions.enable-team-sync-okta %} -7. Under your organization's name, type a valid SSWS token and the URL to your Okta instance. - ![Enable team synchronization Okta organization form](/assets/images/help/teams/confirm-team-synchronization-okta-organization.png) -6. Review the identity provider tenant information you want to connect to your organization, then click **Create**. - ![Enable team synchronization create button](/assets/images/help/teams/confirm-team-synchronization-okta.png) - -### Disabling team synchronization - -{% data reusables.identity-and-permissions.team-sync-disable %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security %} -5. Under "Team synchronization", click **Disable team synchronization**. - ![Disable team synchronization](/assets/images/help/teams/disable-team-synchronization.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-the-default-branch-name-for-repositories-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-the-default-branch-name-for-repositories-in-your-organization.md deleted file mode 100644 index 8e70772f5bf0..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-the-default-branch-name-for-repositories-in-your-organization.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Managing the default branch name for repositories in your organization -intro: 'You can set the default branch name for repositories that members create in your organization on {% data variables.product.product_location %}.' -permissions: Organization owners can manage the default branch name for new repositories in the organization. -versions: - free-pro-team: '*' - enterprise-server: '>=2.23' ---- - -### About management of the default branch name - -When a member of your organization creates a new repository in your organization, the repository contains one branch, which is the default branch. You can change the name that {% data variables.product.product_name %} uses for the default branch in new repositories that members of your organization create. For more information about the default branch, see "[About branches](/github/collaborating-with-issues-and-pull-requests/about-branches#about-the-default-branch)." - -{% data reusables.branches.change-default-branch %} - -### Setting the default branch name - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.repository-defaults %} -3. Under "Repository default branch", click **Change default branch name now**. - ![Override button](/assets/images/help/organizations/repo-default-name-button.png) - {% note %} - - **Note:** If your enterprise owner has enforced a policy for the default name, you won't be able to change it here. You will be able to set the default branch on individual repositories. For more information, see "[Enforcing a policy on the default branch name](/github/setting-up-and-managing-your-enterprise-account/enforcing-repository-management-policies-in-your-enterprise-account#enforcing-a-policy-on-the-default-branch-name)" and "[Changing the default branch](/github/administering-a-repository/changing-the-default-branch)." - - {% endnote %} -4. Type the default name that you would like to use for new branches. - ![Text box for entering default name](/assets/images/help/organizations/repo-default-name-text.png) -5. Click **Update**. - ![Update button](/assets/images/help/organizations/repo-default-name-update.png) - -### Further reading - -- "[Managing the default branch name for your repositories](/github/setting-up-and-managing-your-github-user-account/managing-the-default-branch-name-for-your-repositories)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-the-display-of-member-names-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-the-display-of-member-names-in-your-organization.md deleted file mode 100644 index 23999ecf84d4..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-the-display-of-member-names-in-your-organization.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Managing the display of member names in your organization -intro: You can allow members of your organization to see a comment author's profile name in private repositories in the organization. -product: '{% data reusables.gated-features.display-names %}' -redirect_from: - - /articles/managing-the-display-of-member-names-in-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Organization owners can manage the display of member names in an organization. - -![Commenter's profile name displayed in comment](/assets/images/help/issues/commenter-full-name.png) - -Each organization member chooses their own profile name in their settings. For more information, see "[Personalizing your profile](/github/setting-up-and-managing-your-github-profile/personalizing-your-profile#changing-your-profile-name)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.member-privileges %} -5. Under "Admin repository permissions", select or unselect **Allow members to see comment author's profile name in private repositories**. -![Checkbox to allow members to see comment author's full name in private repositories](/assets/images/help/organizations/allow-members-to-view-full-names.png) -6. Click **Save**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-the-forking-policy-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-the-forking-policy-for-your-organization.md deleted file mode 100644 index e277c6966d39..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-the-forking-policy-for-your-organization.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Managing the forking policy for your organization -intro: 'You can can allow or prevent the forking of any private{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} and internal{% endif %} repositories owned by your organization.' -redirect_from: - - /articles/allowing-people-to-fork-private-repositories-in-your-organization - - /github/setting-up-and-managing-organizations-and-teams/allowing-people-to-fork-private-repositories-in-your-organization -permissions: Organization owners can manage the forking policy for an organization. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -By default, new organizations are configured to disallow the forking of private{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} and internal{% endif %} repositories. - -If you allow forking of private{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} and internal{% endif %} repositories at the organization level, you can also configure the ability to fork a specific private{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} or internal{% endif %} repository. For more information, see "[Managing the forking policy for your repository](/github/administering-a-repository/managing-the-forking-policy-for-your-repository)." - -{% data reusables.organizations.internal-repos-enterprise %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.member-privileges %} -5. Under "Repository forking", select **Allow forking of private repositories** or **Allow forking of private and internal repositories**. - ![Checkbox to allow or disallow forking in the organization](/assets/images/help/repository/allow-disable-forking-organization.png) -6. Click **Save**. - -### Further reading - -- "[About forks](/articles/about-forks)" -- "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-your-organizations-ssh-certificate-authorities.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-your-organizations-ssh-certificate-authorities.md deleted file mode 100644 index b62b548e7bf7..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-your-organizations-ssh-certificate-authorities.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Managing your organization's SSH certificate authorities -intro: You can add or delete SSH certificate authorities from your organization. -product: '{% data reusables.gated-features.ssh-certificate-authorities %}' -redirect_from: - - /articles/managing-your-organizations-ssh-certificate-authorities -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Organization owners can manage an organization's SSH certificate authorities (CA). - -You can allow members to access your organization's repositories using SSH certificates you provide by adding an SSH CA to your organization. {% data reusables.organizations.can-require-ssh-cert %} For more information, see "[About SSH certificate authorities](/articles/about-ssh-certificate-authorities)." - -### Adding an SSH certificate authority - -{% data reusables.organizations.add-extension-to-cert %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security %} -{% data reusables.organizations.new-ssh-ca %} -{% data reusables.organizations.require-ssh-cert %} - -### Deleting an SSH certificate authority - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security %} -{% data reusables.organizations.delete-ssh-ca %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/migrating-admin-teams-to-improved-organization-permissions.md b/content/github/setting-up-and-managing-organizations-and-teams/migrating-admin-teams-to-improved-organization-permissions.md deleted file mode 100644 index 3a9dfef8fdf7..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/migrating-admin-teams-to-improved-organization-permissions.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Migrating admin teams to improved organization permissions -intro: 'If your organization was created after September 2015, your organization has improved organization permissions by default. Organizations created before September 2015 may need to migrate older Owners and Admin teams to the improved permissions model. Members of legacy admin teams automatically retain the ability to create repositories until those teams are migrated to the improved organization permissions model.' -redirect_from: - - /articles/migrating-your-previous-admin-teams-to-the-improved-organization-permissions/ - - /articles/migrating-admin-teams-to-improved-organization-permissions -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -By default, all organization members can create repositories. If you restrict [repository creation permissions](/articles/restricting-repository-creation-in-your-organization) to organization owners, and your organization was created under the legacy organization permissions structure, members of legacy admin teams will still be able to create repositories. - -Legacy admin teams are teams that were created with the admin permission level under the legacy organization permissions structure. Members of these teams were able to create repositories for the organization, and we've preserved this ability in the improved organization permissions structure. - -You can remove this ability by migrating your legacy admin teams to the improved organization permissions. - -For more information, see "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)." - -{% warning %} - -**Warning:** If your organization has disabled [repository creation permissions](/articles/restricting-repository-creation-in-your-organization) for all members, some members of legacy admin teams may lose repository creation permissions. If your organization has enabled member repository creation, migrating legacy admin teams to improved organization permissions will not affect team members' ability to create repositories. - -{% endwarning %} - -### Migrating all of your organization's legacy admin teams - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.teams_sidebar %} -1. Review your organization's legacy admin teams, then click **Migrate all teams**. - ![Migrate all teams button](/assets/images/help/teams/migrate-all-legacy-admin-teams.png) -1. Read the information about possible permissions changes for members of these teams, then click **Migrate all teams.** - ![Confirm migration button](/assets/images/help/teams/confirm-migrate-all-legacy-admin-teams.png) - -### Migrating a single admin team - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -1. In the team description box, click **Migrate team**. - ![Migrate team button](/assets/images/help/teams/migrate-a-legacy-admin-team.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/migrating-to-improved-organization-permissions.md b/content/github/setting-up-and-managing-organizations-and-teams/migrating-to-improved-organization-permissions.md deleted file mode 100644 index 7941a9989c33..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/migrating-to-improved-organization-permissions.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Migrating to improved organization permissions -intro: 'If your organization was created after September 2015, your organization includes improved organization permissions by default. Organizations created before September 2015 may need to migrate older Owners and Admin teams to the improved organization permissions model.' -mapTopic: true -redirect_from: - - /articles/improved-organization-permissions/ - - /articles/github-direct-organization-membership-pre-release-guide/ - - /articles/migrating-your-organization-to-improved-organization-permissions/ - - /articles/migrating-to-improved-organization-permissions -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/moving-a-team-in-your-organizations-hierarchy.md b/content/github/setting-up-and-managing-organizations-and-teams/moving-a-team-in-your-organizations-hierarchy.md deleted file mode 100644 index 0607f850faf1..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/moving-a-team-in-your-organizations-hierarchy.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Moving a team in your organization’s hierarchy -intro: 'Team maintainers and organization owners can nest a team under a parent team, or change or remove a nested team''s parent.' -redirect_from: - - /articles/changing-a-team-s-parent/ - - /articles/moving-a-team-in-your-organization-s-hierarchy - - /articles/moving-a-team-in-your-organizations-hierarchy -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Organization owners can change the parent of any team. Team maintainers can change a team's parent if they are maintainers in both the child team and the parent team. Team maintainers without maintainer permissions in the child team can request to add a parent or child team. For more information, see "[Requesting to add or change a parent team](/articles/requesting-to-add-or-change-a-parent-team)" and "[Requesting to add a child team](/articles/requesting-to-add-a-child-team)." - -{% data reusables.organizations.child-team-inherits-permissions %} - -{% tip %} - -**Tips:** -- You cannot change a team's parent to a secret team. For more information, see "[About teams](/articles/about-teams)." -- You cannot nest a parent team beneath one of its child teams. - -{% endtip %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.teams %} -4. In the list of teams, click the name of the team whose parent you'd like to change. - ![List of the organization's teams](/assets/images/help/teams/click-team-name.png) -{% data reusables.organizations.team_settings %} -6. Use the drop-down menu to choose a parent team, or to remove an existing parent, select **Clear selected value**. - ![Drop-down menu listing the organization's teams](/assets/images/help/teams/choose-parent-team.png) -7. Click **Update**. -{% data reusables.repositories.changed-repository-access-permissions %} -9. Click **Confirm new parent team**. - ![Modal box with information about the changes in repository access permissions](/assets/images/help/teams/confirm-new-parent-team.png) - -### Further reading - -- "[About teams](/articles/about-teams)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/organizing-members-into-teams.md b/content/github/setting-up-and-managing-organizations-and-teams/organizing-members-into-teams.md deleted file mode 100644 index 81b9a2716ef8..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/organizing-members-into-teams.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Organizing members into teams -intro: You can group organization members into teams that reflect your company or group's structure with cascading access permissions and mentions. -redirect_from: - - /articles/setting-up-teams-improved-organization-permissions/ - - /articles/setting-up-teams-for-accessing-organization-repositories/ - - /articles/creating-teams/ - - /articles/adding-people-to-teams-in-an-organization/ - - /articles/removing-a-member-from-a-team-in-your-organization/ - - /articles/setting-up-teams/ - - /articles/maintaining-teams-improved-organization-permissions/ - - /articles/maintaining-teams/ - - /articles/organizing-members-into-teams -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization.md deleted file mode 100644 index 92257d168271..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Permission levels for an organization -intro: 'After you [create an organization](/articles/creating-a-new-organization-account), you should give Owner permissions to a small group of people who will manage the organization account.' -redirect_from: - - /articles/permission-levels-for-an-organization-early-access-program/ - - /articles/permission-levels-for-an-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Permission levels for an organization - -Organization members can have *owner*{% if currentVersion == "free-pro-team@latest" %}, *billing manager*,{% endif %} or *member* roles: - -- **Owners** have complete administrative access to your organization. This role should be limited, but to no less than two people, in your organization. For more information, see "[Maintaining ownership continuity for your organization](/github/setting-up-and-managing-organizations-and-teams/maintaining-ownership-continuity-for-your-organization)." -{% if currentVersion == "free-pro-team@latest" %} -- **Billing managers** allow a person to manage billing settings. For more information, see "[Adding a billing manager to your organization](/articles/adding-a-billing-manager-to-your-organization)". -{% endif %} -- **Members** are the default role for everyone else. - -{% if currentVersion == "free-pro-team@latest" %} - - -| Organization action | Owners | Members | Billing managers | -|:--------------------|:------:|:-------:|:----------------:| -| Create repositories (see "[Restricting repository creation in your organization](/articles/restricting-repository-creation-in-your-organization)" for details) | **X** | **X** | | -| View and edit billing information | **X** | | **X** | -| Invite people to join the organization | **X** | | | -| Edit and cancel invitations to join the organization | **X** | | | -| Remove members from the organization | **X** | | | -| Reinstate former members to the organization | **X** | | | -| Add and remove people from **all teams** | **X** | | | -| Promote organization members to *team maintainer* | **X** | | | -| Configure code review assignments (see "[Managing code review assignment for your team](/github/setting-up-and-managing-organizations-and-teams/managing-code-review-assignment-for-your-team)") | **X** | | | -| Set scheduled reminders (see "[Managing scheduled reminders for pull requests](/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-pull-requests)") | **X** | | | -| Add collaborators to **all repositories** | **X** | | | -| Access the organization audit log | **X** | | | -| Edit the organization's profile page (see "[About your organization's profile](/articles/about-your-organization-s-profile)" for details) | **X** | | | -| Verify the organization's domains (see "[Verifying your organization's domain](/articles/verifying-your-organization-s-domain)" for details) | **X** | | | -| Delete **all teams** | **X** | | | -| Delete the organization account, including all repositories | **X** | | | -| Create teams (see "[Setting team creation permissions in your organization](/articles/setting-team-creation-permissions-in-your-organization)" for details) | **X** | **X** | | -| [Move teams in an organization's hierarchy](/articles/moving-a-team-in-your-organization-s-hierarchy) | **X** | | | -| Create project boards (see "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)" for details) | **X** | **X** | | -| See all organization members and teams | **X** | **X** | | -| @mention any visible team | **X** | **X** | | -| Can be made a *team maintainer* | **X** | **X** | | -| View organization insights (see "[Viewing insights for your organization](/articles/viewing-insights-for-your-organization)" for details) | **X** | **X** | | -| View and post public team discussions to **all teams** (see "[About team discussions](/articles/about-team-discussions)" for details) | **X** | **X** | | -| View and post private team discussions to **all teams** (see "[About team discussions](/articles/about-team-discussions)" for details) | **X** | | | -| Edit and delete team discussions in **all teams** (see "[Managing disruptive comments](/articles/managing-disruptive-comments)" for details) | **X** | | | -| Hide comments on commits, pull requests, and issues (see "[Managing disruptive comments](/articles/managing-disruptive-comments/#hiding-a-comment)" for details) | **X** | **X** | | -| Disable team discussions for an organization (see "[Disabling team discussions for your organization](/articles/disabling-team-discussions-for-your-organization)" for details) | **X** | | |{% if currentVersion == "free-pro-team@latest" %} -| Manage viewing of organization dependency insights (see "[Changing the visibility of your organization's dependency insights](/articles/changing-the-visibility-of-your-organizations-dependency-insights)" for details) | **X** | | |{% endif %} -| Set a team profile picture in **all teams** (see "[Setting your team's profile picture](/articles/setting-your-team-s-profile-picture)" for details) | **X** | | | -| Disable publication of {% data variables.product.prodname_pages %} sites from repositories in the organization (see "[Disabling publication of {% data variables.product.prodname_pages %} sites for your organization](/github/setting-up-and-managing-organizations-and-teams/disabling-publication-of-github-pages-sites-for-your-organization)" for details) | **X** | | | -| Manage security and analysis settings (see "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)" for details) | **X** | | | -| Enable and enforce [SAML single sign-on](/articles/about-identity-and-access-management-with-saml-single-sign-on) | **X** | | | -| [Manage a user's SAML access to your organization](/github/setting-up-and-managing-organizations-and-teams/viewing-and-managing-a-members-saml-access-to-your-organization) | **X** | | | -| Manage an organization's SSH certificate authorities (see "[Managing your organization's SSH certificate authorities](/articles/managing-your-organizations-ssh-certificate-authorities)" for details) | **X** | | | -| Transfer repositories | **X** | | | -| Purchase, install, manage billing for, and cancel {% data variables.product.prodname_marketplace %} apps | **X** | | | -| List apps in {% data variables.product.prodname_marketplace %} | **X** | | | -| Receive [{% data variables.product.prodname_dependabot_alerts %} about vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies) for all of an organization's repositories | **X** | | | -| Manage {% data variables.product.prodname_dependabot_security_updates %} (see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-github-dependabot-security-updates)") | **X** | | | -| [Manage the forking policy](/github/setting-up-and-managing-organizations-and-teams/managing-the-forking-policy-for-your-organization) | **X** | | | -| [Limit activity in public repositories in an organization](/articles/limiting-interactions-in-your-organization) | **X** | | | -| Pull (read), push (write), and clone (copy) *all repositories* in the organization | **X** | | | -| Convert organization members to [outside collaborators](#outside-collaborators) | **X** | | | -| [View people with access to an organization repository](/articles/viewing-people-with-access-to-your-repository) | **X** | | | -| [Export a list of people with access to an organization repository](/articles/viewing-people-with-access-to-your-repository/#exporting-a-list-of-people-with-access-to-your-repository) | **X** | | | -| Manage the default branch name (see "[Managing the default branch name for repositories in your organization](/github/setting-up-and-managing-organizations-and-teams/managing-the-default-branch-name-for-repositories-in-your-organization)") | **X** | | | -| Manage default labels (see "[Managing default labels for repositories in your organization](/articles/managing-default-labels-for-repositories-in-your-organization)") | **X** | | | -| Enable team synchronization (see "[Managing team synchronization for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-team-synchronization-for-your-organization)" for details) | **X** | | | - -{% else %} - - -| Organization action | Owners | Members | -|:--------------------|:------:|:-------:| -| Invite people to join the organization | **X** | | -| Edit and cancel invitations to join the organization | **X** | | -| Remove members from the organization | **X** | | | -| Reinstate former members to the organization | **X** | | | -| Add and remove people from **all teams** | **X** | | -| Promote organization members to *team maintainer* | **X** | |{% if currentVersion ver_gt "enterprise-server@2.19" %} -| Configure code review assignments (see "[Managing code review assignment for your team](/github/setting-up-and-managing-organizations-and-teams/managing-code-review-assignment-for-your-team)") | **X** | |{% endif %} -| Add collaborators to **all repositories** | **X** | | -| Access the organization audit log | **X** | | -| Edit the organization's profile page (see "[About your organization's profile](/articles/about-your-organization-s-profile)" for details) | **X** | | | -| Delete **all teams** | **X** | | -| Delete the organization account, including all repositories | **X** | | -| Create teams (see "[Setting team creation permissions in your organization](/articles/setting-team-creation-permissions-in-your-organization)" for details) | **X** | **X** | -| See all organization members and teams | **X** | **X** | -| @mention any visible team | **X** | **X** | -| Can be made a *team maintainer* | **X** | **X** | -| Transfer repositories | **X** | | -| Manage an organization's SSH certificate authorities (see "[Managing your organization's SSH certificate authorities](/articles/managing-your-organizations-ssh-certificate-authorities)" for details) | **X** | | -| Create project boards (see "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)" for details) | **X** | **X** | | -| View and post public team discussions to **all teams** (see "[About team discussions](/articles/about-team-discussions)" for details) | **X** | **X** | | -| View and post private team discussions to **all teams** (see "[About team discussions](/articles/about-team-discussions)" for details) | **X** | | | -| Edit and delete team discussions in **all teams** (for more information, see "[Managing disruptive comments](/articles/managing-disruptive-comments) | **X** | | | -| Hide comments on commits, pull requests, and issues (see "[Managing disruptive comments](/articles/managing-disruptive-comments/#hiding-a-comment)" for details) | **X** | **X** | **X** | -| Disable team discussions for an organization (see "[Disabling team discussions for your organization](/articles/disabling-team-discussions-for-your-organization)" for details) | **X** | | | -| Set a team profile picture in **all teams** (see "[Setting your team's profile picture](/articles/setting-your-team-s-profile-picture)" for details) | **X** | | |{% if currentVersion ver_gt "enterprise-server@2.22" %} -| Disable publication of {% data variables.product.prodname_pages %} sites from repositories in the organization (see "[Disabling publication of {% data variables.product.prodname_pages %} sites for your organization](/github/setting-up-and-managing-organizations-and-teams/disabling-publication-of-github-pages-sites-for-your-organization)" for details) | **X** | | |{% endif %} -| [Move teams in an organization's hierarchy](/articles/moving-a-team-in-your-organization-s-hierarchy) | **X** | | | -| Pull (read), push (write), and clone (copy) *all repositories* in the organization | **X** | | -| Convert organization members to [outside collaborators](#outside-collaborators) | **X** | | -| [View people with access to an organization repository](/articles/viewing-people-with-access-to-your-repository) | **X** | | -| [Export a list of people with access to an organization repository](/articles/viewing-people-with-access-to-your-repository/#exporting-a-list-of-people-with-access-to-your-repository) | **X** | |{% if currentVersion ver_gt "enterprise-server@2.19" %} -| Manage default labels (see "[Managing default labels for repositories in your organization](/articles/managing-default-labels-for-repositories-in-your-organization)") | **X** | |{% endif %} - -{% endif %} - -### {% data variables.product.prodname_github_app %} managers - -By default, only organization owners can manage the settings of {% data variables.product.prodname_github_app %}s owned by an organization. To allow additional users to manage {% data variables.product.prodname_github_app %}s owned by an organization, an owner can grant them {% data variables.product.prodname_github_app %} manager permissions. - -When you designate a user as a {% data variables.product.prodname_github_app %} manager in your organization, you can grant them access to manage the settings of some or all {% data variables.product.prodname_github_app %}s owned by the organization. For more information, see: - -- "[Adding GitHub App managers in your organization](/articles/adding-github-app-managers-in-your-organization)" -- "[Removing GitHub App managers from your organization](/articles/removing-github-app-managers-from-your-organization)" - -### Outside collaborators - -To keep your organization data secure while allowing access to repositories, you can add *outside collaborators*. {% data reusables.organizations.outside_collaborators_description %} - -### Further reading - -- "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)" -- "[About teams](/articles/about-teams)" -- "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/preparing-to-enforce-saml-single-sign-on-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/preparing-to-enforce-saml-single-sign-on-in-your-organization.md deleted file mode 100644 index 8302c0736736..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/preparing-to-enforce-saml-single-sign-on-in-your-organization.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Preparing to enforce SAML single sign-on in your organization -intro: 'Before you enforce SAML single sign-on in your organization, you should verify your organization''s membership and configure the connection settings to your identity provider.' -product: '{% data reusables.gated-features.saml-sso %}' -redirect_from: - - /articles/preparing-to-enforce-saml-single-sign-on-in-your-organization -versions: - free-pro-team: '*' ---- - -When you [enforce SAML single sign-on](/articles/enabling-and-testing-saml-single-sign-on-for-your-organization) in your organization, members that haven't authenticated via your identity provider (IdP) will be removed from the organization and will receive an email notifying them about the removal. - -Before enforcing SAML SSO in your organization, you should: - -- [Add](/articles/inviting-users-to-join-your-organization) or [remove](/articles/removing-a-member-from-your-organization) members from your organization if needed. -- If you haven't already, connect your IdP to your organization. For more information, see "[Connecting your identity provider to your organization](/articles/connecting-your-identity-provider-to-your-organization)." -- Ensure that your organization members have signed in and linked their accounts with the IdP. - -{% data reusables.saml.outside-collaborators-exemption %} - -### Further reading - -- "[About identity and access management with SAML single sign-on](/articles/about-identity-and-access-management-with-saml-single-sign-on)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/preparing-to-require-two-factor-authentication-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/preparing-to-require-two-factor-authentication-in-your-organization.md deleted file mode 100644 index 4faf9c67987d..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/preparing-to-require-two-factor-authentication-in-your-organization.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Preparing to require two-factor authentication in your organization -intro: 'Before requiring two-factor authentication (2FA), you can notify users about the upcoming change and verify who already uses 2FA.' -redirect_from: - - /articles/preparing-to-require-two-factor-authentication-in-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -We recommend that you notify {% if currentVersion == "free-pro-team@latest" %}organization members, outside collaborators, and billing managers{% else %}organization members and outside collaborators{% endif %} at least one week before you require 2FA in your organization. - -When you require use of two-factor authentication for your organization, members, outside collaborators, and billing managers (including bot accounts) who do not use 2FA will be removed from the organization and lose access to its repositories. They will also lose access to their forks of the organization's private repositories. - -Before requiring 2FA in your organization, we recommend that you: - - [Enable 2FA](/articles/securing-your-account-with-two-factor-authentication-2fa/) on your personal account - - Ask the people in your organization to set up 2FA for their accounts - - See whether [users in your organization have 2FA enabled](/articles/viewing-whether-users-in-your-organization-have-2fa-enabled/) - - Warn users that once 2FA is enabled, those without 2FA are automatically removed from the organization diff --git a/content/github/setting-up-and-managing-organizations-and-teams/project-board-permissions-for-an-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/project-board-permissions-for-an-organization.md deleted file mode 100644 index 02b275cc4c3a..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/project-board-permissions-for-an-organization.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Project board permissions for an organization -intro: 'Organization owners and people with project board admin permissions can customize who has read, write, and admin permissions to your organization’s project boards.' -redirect_from: - - /articles/project-board-permissions-for-an-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Permissions overview - -There are three levels of permissions to a project board for people and teams: - -{% data reusables.project-management.project-board-permissions %} - -Organization owners and people with admin permissions can give a person access to an organization project board individually, as an outside collaborator or organization member, or through their membership in a team or organization. An outside collaborator is someone who is not an organization member but given permissions to collaborate in your organization. - -Organization owners and people with admin permissions to a project board can also: -- Set default project board permissions for all organization members. -- Manage access to the project board for organization members, teams, and outside collaborators. For more information, see "[Managing team access to an organization project board](/articles/managing-team-access-to-an-organization-project-board)", "[Managing an individual’s access to an organization project board](/articles/managing-an-individual-s-access-to-an-organization-project-board)", or "[Managing access to a project board for organization members](/articles/managing-access-to-a-project-board-for-organization-members)." -- Manage project board visibility. For more information, see "[Managing access to a project board for organization members](/articles/managing-access-to-a-project-board-for-organization-members)." - -### Cascading permissions for project boards - -{% data reusables.project-management.cascading-permissions %} - -For example, if an organization owner has given all organization members read permissions to a project board, and a project board admin gives an organization member write permissions to that board as an individual collaborator, that person would have write permissions to the project board. - -### Project board visibility - -{% data reusables.project-management.project-board-visibility %} You can change the project board's visibility from private to public and back again. For more information, see "[Changing project board visibility](/articles/changing-project-board-visibility)." - -### Further reading - -- "[Changing project board visibility](/articles/changing-project-board-visibility)" -- "[Managing an individual’s access to an organization project board](/articles/managing-an-individual-s-access-to-an-organization-project-board)" -- "[Managing team access to an organization project board](/articles/managing-team-access-to-an-organization-project-board)" -- "[Managing access to a project board for organization members](/articles/managing-access-to-a-project-board-for-organization-members)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/reinstating-a-former-member-of-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/reinstating-a-former-member-of-your-organization.md deleted file mode 100644 index 2db5ef11c624..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/reinstating-a-former-member-of-your-organization.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Reinstating a former member of your organization -intro: 'Organization owners can {% if currentVersion == "free-pro-team@latest" %}invite former organization members to rejoin{% else %}add former members to{% endif%} your organization, and choose whether to restore the person''s former role, access permissions, forks, and settings.' -redirect_from: - - /articles/reinstating-a-former-member-of-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If you [remove a user from your organization](/articles/removing-a-member-from-your-organization), [convert an organization member to an outside collaborator](/articles/converting-an-organization-member-to-an-outside-collaborator), or a user is removed from your organization because you've [required members and outside collaborators to enable two-factor authentication (2FA)](/articles/requiring-two-factor-authentication-in-your-organization), the user's access privileges and settings are saved for three months. You can restore the user's privileges if you {% if currentVersion =="free-pro-team@latest" %}invite{% else %}add{% endif %} them back to the organization within that time frame. - -{% data reusables.two_fa.send-invite-to-reinstate-user-before-2fa-is-enabled %} - -When you reinstate a former organization member, you can restore: - - The user's role in the organization - - Any private forks of repositories owned by the organization - - Membership in the organization's teams - - Previous access and permissions for the organization's repositories - - Stars for organization repositories - - Issue assignments in the organization - - Repository subscriptions (notification settings for watching, not watching, or ignoring a repository's activity) - - {% tip %} - - {% if currentVersion == "free-pro-team@latest" %} - **Tips**: - - If an organization member was removed from the organization because they did not use two-factor authentication and your organization still requires members to use 2FA, the former member must enable two-factor authentication before you can reinstate their membership. - - Only organization owners can invite users to join an organization. For more information, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization)." - - If your organization has a paid per-user subscription, an unused license must be available before you can reinstate a former organization member. For more information, see "[About per-user pricing](/articles/about-per-user-pricing)." {% data reusables.organizations.org-invite-expiration %} - - {% else %} - **Tips**: - - If an organization member was removed from the organization because they did not use two-factor authentication and your organization still requires members to use 2FA, the former member must enable two-factor authentication before you can reinstate their membership. - - Only organization owners can add users to an organization. For more information, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization)." - {% endif %} - - {% endtip %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -{% data reusables.organizations.invite_member_from_people_tab %} -{% data reusables.organizations.reinstate-user-type-username %} -{% if currentVersion == "free-pro-team@latest" %} -6. Choose whether to restore that person's previous privileges in the organization or clear their previous privileges and set new access permissions, then click **Invite and reinstate** or **Invite and start fresh**. - ![Choose to restore info or not](/assets/images/help/organizations/choose_whether_to_restore_org_member_info.png) -{% else %} -6. Choose whether to restore that person's previous privileges in the organization or clear their previous privileges and set new access permissions, then click **Add and reinstate** or **Add and start fresh**. - ![Choose whether to restore privileges](/assets/images/help/organizations/choose_whether_to_restore_org_member_info_ghe.png) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -7. If you cleared the previous privileges for a former organization member, choose a role for the user, and optionally add them to some teams, then click **Send invitation**. - ![Role and team options and send invitation button](/assets/images/help/organizations/add-role-send-invitation.png) -{% else %} -7. If you cleared the previous privileges for a former organization member, choose a role for the user, and optionally add them to some teams, then click **Add member**. - ![Role and team options and add member button](/assets/images/help/organizations/add-role-add-member.png) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.organizations.user_must_accept_invite_email %} {% data reusables.organizations.cancel_org_invite %} -{% endif %} - -### Further reading - -- "[Converting an organization member to an outside collaborator](/articles/converting-an-organization-member-to-an-outside-collaborator)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/reinstating-a-former-outside-collaborators-access-to-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/reinstating-a-former-outside-collaborators-access-to-your-organization.md deleted file mode 100644 index 90f63f350be0..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/reinstating-a-former-outside-collaborators-access-to-your-organization.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Reinstating a former outside collaborator's access to your organization -intro: 'If you required two-factor authentication in your organization and an outside collaborator was removed from the organization for not having 2FA enabled, you can reinstate a former outside collaborator''s access permissions for organization repositories, forks, and settings.' -redirect_from: - - /articles/reinstating-a-former-outside-collaborator-s-access-to-your-organization - - /articles/reinstating-a-former-outside-collaborators-access-to-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If an outside collaborator's access to your organization's private repositories is removed because you've [required members and outside collaborators to enable two-factor authentication](/articles/requiring-two-factor-authentication-in-your-organization), the user's access privileges and settings are saved for three months. You can restore the user's privileges if you {% if currentVersion == "free-pro-team@latest" %}invite{% else %}add{% endif %} them back to the organization within that time frame. - -{% data reusables.two_fa.send-invite-to-reinstate-user-before-2fa-is-enabled %} - -When you reinstate a former outside collaborator, you can restore: - - The user's former access to organization repositories - - Any private forks of repositories owned by the organization - - Membership in the organization's teams - - Previous access and permissions for the organization's repositories - - Stars for organization repositories - - Issue assignments in the organization - - Repository subscriptions (notification settings for watching, not watching, or ignoring a repository's activity) - -{% tip %} - -**Tips**: - - Only organization owners can reinstate outside collaborators' access to an organization. For more information, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization)." - - The reinstating a member flow on {% data variables.product.product_location %} may use the term "member" to describe reinstating an outside collaborator but if you reinstate this person and keep their previous privileges, they will only have their previous [outside collaborator permissions](/articles/permission-levels-for-an-organization/#outside-collaborators).{% if currentVersion == "free-pro-team@latest" %} - - If your organization has a paid per-user subscription, an unused license must be available before you can invite a new member to join the organization or reinstate a former organization member. For more information, see "[About per-user pricing](/articles/about-per-user-pricing)."{% endif %} - -{% endtip %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -{% data reusables.organizations.invite_member_from_people_tab %} -{% data reusables.organizations.reinstate-user-type-username %} -{% if currentVersion == "free-pro-team@latest" %} -6. Choose to restore the outside collaborator's previous privileges in the organization by clicking **Invite and reinstate** or choose to clear their previous privileges and set new access permissions by clicking **Invite and start fresh**. - - {% warning %} - - **Warning:** If you want to upgrade the outside collaborator to a member of your organization, then choose **Invite and start fresh** and choose a new role for this person. Note, however, that this person's private forks of your organization's repositories will be lost if you choose to start fresh. To make the former outside collaborator a member of your organization *and* keep their private forks, choose **Invite and reinstate** instead. Once this person accepts the invitation, you can convert them to an organization member by [inviting them to join the organization as a member](/articles/converting-an-outside-collaborator-to-an-organization-member). - - {% endwarning %} - - ![Choose to restore settings or not](/assets/images/help/organizations/choose_whether_to_restore_org_member_info.png) -{% else %} -6. Choose to restore the outside collaborator's previous privileges in the organization by clicking **Add and reinstate** or choose to clear their previous privileges and set new access permissions by clicking **Add and start fresh**. - - {% warning %} - - **Warning:** If you want to upgrade the outside collaborator to a member of your organization, then choose **Add and start fresh** and choose a new role for this person. Note, however, that this person's private forks of your organization's repositories will be lost if you choose to start fresh. To make the former outside collaborator a member of your organization *and* keep their private forks, choose **Add and reinstate** instead. Then, you can convert them to an organization member by [adding them to the organization as a member](/articles/converting-an-outside-collaborator-to-an-organization-member). - - {% endwarning %} - - ![Choose to restore settings or not](/assets/images/help/organizations/choose_whether_to_restore_org_member_info_ghe.png) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -7. If you cleared the previous privileges for a former outside collaborator, choose a role for the user and optionally add them to some teams, then click **Send invitation**. - ![Role and team options and send invitation button](/assets/images/help/organizations/add-role-send-invitation.png) -{% else %} -7. If you cleared the previous privileges for a former outside collaborator, choose a role for the user and optionally add them to some teams, then click **Add member**. - ![Role and team options and add member button](/assets/images/help/organizations/add-role-add-member.png) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -8. The invited person will receive an email inviting them to the organization. They will need to accept the invitation before becoming an outside collaborator in the organization. {% data reusables.organizations.cancel_org_invite %} -{% endif %} - -### Further Reading - -- "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/removing-a-billing-manager-from-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/removing-a-billing-manager-from-your-organization.md deleted file mode 100644 index 16b4fb64bbb2..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/removing-a-billing-manager-from-your-organization.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Removing a billing manager from your organization -intro: 'If a person with the *billing manager* role no longer needs to view or change your organization''s billing information, you can remove their access to the organization.' -redirect_from: - - /articles/removing-a-billing-manager-from-your-organization -versions: - free-pro-team: '*' ---- - -{% warning %} - -**Note:** {% data reusables.dotcom_billing.org-billing-perms %} - -{% endwarning %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.billing %} -5. In the Billing managers list, next to the name of the person you want to remove, click {% octicon "x" aria-label="X symbol" %}. -![Remove billing manager](/assets/images/help/billing/settings_billing_managers_remove_manager.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/removing-a-member-from-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/removing-a-member-from-your-organization.md deleted file mode 100644 index b6d5f8539bdd..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/removing-a-member-from-your-organization.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Removing a member from your organization -intro: 'If members of your organization no longer require access to any repositories owned by the organization, you can remove them from the organization.' -redirect_from: - - /articles/removing-a-member-from-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Only organization owners can remove members from an organization. - -{% if currentVersion == "free-pro-team@latest" %} - -{% warning %} - -**Warning:** When you remove members from an organization: -- The paid license count does not automatically downgrade. To pay for fewer licenses after removing users from your organization, follow the steps in "[Downgrading your organization's paid seats](/articles/downgrading-your-organization-s-paid-seats)." -- Removed members will lose access to private forks of your organization's private repositories, but they may still have local copies. However, they cannot sync local copies with your organization's repositories. Their private forks can be restored if the user is [reinstated as an organization member](/articles/reinstating-a-former-member-of-your-organization) within three months of being removed from the organization. Ultimately, you are responsible for ensuring that people who have lost access to a repository delete any confidential information or intellectual property. -- Any organization invitations sent by a removed member, that have not been accepted, are cancelled and will not be accessible. - -{% endwarning %} - -{% else %} - -{% warning %} - -**Warning:** When you remove members from an organization: - - Removed members will lose access to private forks of your organization's private repositories, but may still have local copies. However, they cannot sync local copies with your organization's repositories. Their private forks can be restored if the user is [reinstated as an organization member](/articles/reinstating-a-former-member-of-your-organization) within three months of being removed from the organization. Ultimately, you are responsible for ensuring that people who have lost access to a repository delete any confidential information or intellectual property. - - Any organization invitations sent by the removed user, that have not been accepted, are cancelled and will not be accessible. - -{% endwarning %} - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} - -To help the person you're removing from your organization transition and help ensure they delete confidential information or intellectual property, we recommend sharing a checklist of best practices for leaving your organization. For an example, see "[Best practices for leaving your company](/articles/best-practices-for-leaving-your-company/)." - -{% endif %} - -{% data reusables.organizations.data_saved_for_reinstating_a_former_org_member %} - -### Revoking the user's membership - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -4. Select the member or members you'd like to remove from the organization. - ![List of members with two members selected](/assets/images/help/teams/list-of-members-selected-bulk.png) -5. Above the list of members, use the drop-down menu, and click **Remove from organization**. - ![Drop-down menu with option to remove members](/assets/images/help/teams/user-bulk-management-options.png) -6. Review the member or members who will be removed from the organization, then click **Remove members**. - ![List of members who will be removed and Remove members button](/assets/images/help/teams/confirm-remove-members-bulk.png) - -### Further reading - -- "[Removing organization members from a team](/articles/removing-organization-members-from-a-team)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/removing-an-outside-collaborator-from-an-organization-project-board.md b/content/github/setting-up-and-managing-organizations-and-teams/removing-an-outside-collaborator-from-an-organization-project-board.md deleted file mode 100644 index f5f7470a9b3b..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/removing-an-outside-collaborator-from-an-organization-project-board.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Removing an outside collaborator from an organization project board -intro: 'As an organization owner or project board admin, you can remove an outside collaborator''s access to a project board.' -redirect_from: - - /articles/removing-an-outside-collaborator-from-an-organization-project-board -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.organization-wide-project %} -{% data reusables.project-management.select-project %} -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.access-collaboration-settings %} -{% data reusables.project-management.collaborator-option %} -{% data reusables.project-management.remove-collaborator %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/removing-an-outside-collaborator-from-an-organization-repository.md b/content/github/setting-up-and-managing-organizations-and-teams/removing-an-outside-collaborator-from-an-organization-repository.md deleted file mode 100644 index 512109d464a2..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/removing-an-outside-collaborator-from-an-organization-repository.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Removing an outside collaborator from an organization repository -intro: Owners and repository admins can remove an outside collaborator's access to a repository. -redirect_from: - - /articles/removing-an-outside-collaborator-from-an-organization-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% if currentVersion == "free-pro-team@latest" %} - -{% warning %} - -**Warning:** -- When removing an outside collaborator from a private repository, the paid license count does not automatically downgrade. To pay for fewer licenses after removing users from your organization, follow the steps in "[Downgrading your organization's paid seats](/articles/downgrading-your-organization-s-paid-seats)." - -- You are responsible for ensuring that people who have lost access to a repository delete any confidential information or intellectual property. - -{% endwarning %} - -{% endif %} - -While forks of private repositories are deleted when a collaborator is removed, the person will still retain any local clones of your repository. - -### Removing outside collaborators from all repositories in an organization - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -{% data reusables.organizations.people_tab_outside_collaborators %} -5. Select the outside collaborator or outside collaborators you'd like to remove from the organization. -![List of outside collaborators with two outside collaborators selected](/assets/images/help/teams/list-of-outside-collaborators-selected-bulk.png) -6. Above the list of outside collaborators, use the drop-down menu, and click **Remove from all repositories**. -![Drop-down menu with option to remove outside collaborators ](/assets/images/help/teams/user-bulk-management-options-for-outside-collaborators.png) -7. Review the outside collaborator or outside collaborators who will be removed from the organization, then click **Remove outside collaborators**. - ![List of outside collaborators who will be removed and Remove outside collaborators button](/assets/images/help/teams/confirm-remove-outside-collaborators-bulk.png) - -### Removing an outside collaborator from a particular repository in an organization - -If you only want to remove an outside collaborator from certain repositories in your organization, you can remove this person's access to one specific repository at a time. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -{% data reusables.organizations.people_tab_outside_collaborators %} -5. To the right of the username of the person you want to remove, use the {% octicon "gear" aria-label="The Settings gear" %} drop-down menu, and click **Manage**. - ![Manage access button](/assets/images/help/organizations/member-manage-access.png) -6. To the right of the repository that you want to remove the outside collaborator from, click **Manage access**. -![Select manage access button next to a repository the outside collaborator has access to](/assets/images/help/organizations/second-manage-access-selection-for-collaborator.png) -7. To completely remove the outside collaborator's access to the repository, in the upper right corner, click **Remove access to this repository**. -![Remove access to this repository button](/assets/images/help/organizations/remove-access-to-this-repository.png) -8. To confirm, click **Remove access**. -![Confirm outside collaborator who will be removed from the repository](/assets/images/help/teams/confirm-remove-outside-collaborator-from-a-repository.png) - -### Further reading - -- "[Adding outside collaborators to repositories in your organization](/articles/adding-outside-collaborators-to-repositories-in-your-organization)" -- "[Converting an organization member to an outside collaborator](/articles/converting-an-organization-member-to-an-outside-collaborator)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/removing-github-app-managers-from-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/removing-github-app-managers-from-your-organization.md deleted file mode 100644 index 877dcba70816..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/removing-github-app-managers-from-your-organization.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Removing GitHub App managers from your organization -intro: 'Organization owners can revoke {% data variables.product.prodname_github_app %} manager permissions that were granted to a member of the organization.' -redirect_from: - - /articles/removing-github-app-managers-from-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -For more information about {% data variables.product.prodname_github_app %} manager permissions, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization#github-app-managers)." - -### Removing a {% data variables.product.prodname_github_app %} manager's permissions for the entire organization - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.github-apps-settings-sidebar %} -1. Under "Management", find the username of the person you want to remove {% data variables.product.prodname_github_app %} manager permissions from, and click **Revoke**. -![Revoke {% data variables.product.prodname_github_app %} manager permissions](/assets/images/help/organizations/github-app-manager-revoke-permissions.png) - -### Removing a {% data variables.product.prodname_github_app %} manager's permissions for an individual {% data variables.product.prodname_github_app %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.github-apps-settings-sidebar %} -1. Under "{% data variables.product.prodname_github_app %}s", click on the avatar of the app you'd like to remove a {% data variables.product.prodname_github_app %} manager from. -![Select {% data variables.product.prodname_github_app %}](/assets/images/help/organizations/select-github-app.png) -{% data reusables.organizations.app-managers-settings-sidebar %} -1. Under "App managers", find the username of the person you want to remove {% data variables.product.prodname_github_app %} manager permissions from, and click **Revoke**. -![Revoke {% data variables.product.prodname_github_app %} manager permissions](/assets/images/help/organizations/github-app-manager-revoke-permissions-individual-app.png) - -{% if currentVersion == "free-pro-team@latest" %} -### Further reading - -- "[About {% data variables.product.prodname_dotcom %} Marketplace](/articles/about-github-marketplace/)" -{% endif %} diff --git a/content/github/setting-up-and-managing-organizations-and-teams/removing-organization-members-from-a-team.md b/content/github/setting-up-and-managing-organizations-and-teams/removing-organization-members-from-a-team.md deleted file mode 100644 index 603eefba506c..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/removing-organization-members-from-a-team.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Removing organization members from a team -intro: 'People with *owner* or *team maintainer* permissions can remove team members from a team. This may be necessary if a person no longer needs access to a repository the team grants, or if a person is no longer focused on a team''s projects.' -redirect_from: - - /articles/removing-organization-members-from-a-team-early-access-program/ - - /articles/removing-organization-members-from-a-team -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.deleted_forks_from_private_repositories_warning %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -4. Select the person or people you'd like to remove. - ![Check box next to organization member](/assets/images/help/teams/team-member-check-box.png) -5. Above the list of team members, use the drop-down menu and click **Remove from team**. - ![Drop-down menu with option to change role](/assets/images/help/teams/bulk-edit-drop-down.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/renaming-a-team.md b/content/github/setting-up-and-managing-organizations-and-teams/renaming-a-team.md deleted file mode 100644 index 82ca81f4d002..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/renaming-a-team.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Renaming a team -intro: Team maintainers and organization owners can edit the name and description of a team. -redirect_from: - - /articles/renaming-a-team -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team_settings %} -5. Type a new name or description for the team. - ![Fields for team name and description](/assets/images/help/teams/team-name-description.png) -6. Click **Update**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/renaming-an-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/renaming-an-organization.md deleted file mode 100644 index 4208f6d3efbf..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/renaming-an-organization.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Renaming an organization -intro: 'If your project or company has changed names, you can update the name of your organization to match.' -redirect_from: - - /articles/what-happens-when-i-change-my-organization-s-name/ - - /articles/renaming-an-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tip:** Only organization owners can rename an organization. {% data reusables.organizations.new-org-permissions-more-info %} - -{% endtip %} - -### What happens when I change my organization's name? - -After changing your organization's name, your old organization name becomes available for someone else to claim. When you change your organization's name, most references to your repositories under the old organization name automatically change to the new name. However, some links to your profile won't automatically redirect. - -#### Changes that occur automatically - -- {% data variables.product.prodname_dotcom %} automatically redirects references to your repositories. Web links to your organization's existing **repositories** will continue to work. This can take a few minutes to complete after you initiate the change. -- You can continue pushing your local repositories to the old remote tracking URL without updating it. However, we recommend you update all existing remote repository URLs after changing your organization name. Because your old organization name is available for use by anyone else after you change it, the new organization owner can create repositories that override the redirect entries to your repository. For more information, see "[Changing a remote's URL](/articles/changing-a-remote-s-url)." -- Previous Git commits will also be correctly attributed to users within your organization. - -#### Changes that aren't automatic - -After changing your organization's name: -- Links to your previous organization profile page, such as `https://{% data variables.command_line.backticks %}/previousorgname`, will return a 404 error. We recommend you update links to your organization from other sites{% if currentVersion == "free-pro-team@latest" %}, such as your LinkedIn or Twitter profiles{% endif %}. -- API requests that use the old organization's name will return a 404 error. We recommend you update the old organization name in your API requests. -- There are no automatic [@mention](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams) redirects for teams that use the old organization's name. - -### Changing your organization's name - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -4. Near the bottom of the settings page, under "Rename organization", click **Rename Organization**. - ![Rename organization button](/assets/images/help/settings/settings-rename-organization.png) - -### Further reading - -* "[Changing a remote's URL](/articles/changing-a-remote-s-url)" -* "[Why are my commits linked to the wrong user?](/articles/why-are-my-commits-linked-to-the-wrong-user)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization.md deleted file mode 100644 index 6c1cde5ff864..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Repository permission levels for an organization -intro: 'You can customize access to each repository in your organization with granular permission levels, giving people access to the features and tasks they need.' -redirect_from: - - /articles/repository-permission-levels-for-an-organization-early-access-program/ - - /articles/repository-permission-levels-for-an-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -People with admin permissions can manage individual and team access to an organization-owned repository. - -### Permission levels for repositories owned by an organization - -You can give organization members, outside collaborators, and teams of people different levels of access to repositories owned by an organization. Each permission level progressively increases access to a repository's content and settings. Choose the level that best fits each person or team's role in your project without giving people more access to the project than they need. - -From least access to most access, the permission levels for an organization repository are: -- **Read**: Recommended for non-code contributors who want to view or discuss your project -- **Triage**: Recommended for contributors who need to proactively manage issues and pull requests without write access -- **Write**: Recommended for contributors who actively push to your project -- **Maintain**: Recommended for project managers who need to manage the repository without access to sensitive or destructive actions -- **Admin**: Recommended for people who need full access to the project, including sensitive and destructive actions like managing security or deleting a repository - -{% if currentVersion == "free-pro-team@latest" %} - -{% endif %} - -For more information about giving people and teams access to repositories, see "[Managing access to your organization's repositories](/articles/managing-access-to-your-organizations-repositories)." - -Organization owners can set base permissions that apply to all members of an organization when accessing any of the organization's repositories. For more information, see "[Setting base permissions for an organization](/github/setting-up-and-managing-organizations-and-teams/setting-base-permissions-for-an-organization#setting-base-permissions)." - -Organization owners can also choose to further limit access to certain settings and actions across the organization. For more information on options for specific settings, see "[Managing organization settings](/articles/managing-organization-settings)." - -In addition to managing organization-level settings, organization owners have admin permissions for every repository owned by the organization. For more information, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization)." - -{% warning %} - -**Warning:** When someone adds a deploy key to a repository, any user who has the private key can read from or write to the repository (depending on the key settings), even if they're later removed from the organization. - -{% endwarning %} - -### Repository access for each permission level - -| Repository action | Read | Triage | Write | Maintain | Admin | -|:---|:---:|:---:|:---:|:---:|:---:| -| Pull from the person or team's assigned repositories | **X** | **X** | **X** | **X** | **X** | -| Fork the person or team's assigned repositories | **X** | **X** | **X** | **X** | **X** | -| Edit and delete their own comments | **X** | **X** | **X** | **X** | **X** | -| Open issues | **X** | **X** | **X** | **X** | **X** | -| Close issues they opened themselves | **X** | **X** | **X** | **X** | **X** | -| Reopen issues they closed themselves | **X** | **X** | **X** | **X** | **X** | -| Have an issue assigned to them | **X** | **X** | **X** | **X** | **X** | -| Send pull requests from forks of the team's assigned repositories | **X** | **X** | **X** | **X** | **X** | -| Submit reviews on pull requests | **X** | **X** | **X** | **X** | **X** | -| View published releases | **X** | **X** | **X** | **X** | **X** |{% if currentVersion == "free-pro-team@latest" %} -| View [GitHub Actions workflow runs](/actions/automating-your-workflow-with-github-actions/managing-a-workflow-run) | **X** | **X** | **X** | **X** | **X** |{% endif %} -| Edit wikis | **X** | **X** | **X** | **X** | **X** |{% if currentVersion == "free-pro-team@latest" %} -| [Report abusive or spammy content](/articles/reporting-abuse-or-spam) | **X** | **X** | **X** | **X** | **X** |{% endif %} -| Apply labels | | **X** | **X** | **X** | **X** | -| Close, reopen, and assign all issues and pull requests | | **X** | **X** | **X** | **X** | -| Apply milestones | | **X** | **X** | **X** | **X** | -| Mark [duplicate issues and pull requests](/articles/about-duplicate-issues-and-pull-requests)| | **X** | **X** | **X** | **X** | -| Request [pull request reviews](/articles/requesting-a-pull-request-review) | | **X** | **X** | **X** | **X** | -| Push to (write) the person or team's assigned repositories | | | **X** | **X** | **X** | -| Edit and delete anyone's comments on commits, pull requests, and issues | | | **X** | **X** | **X** | -| [Hide anyone's comments](/articles/managing-disruptive-comments) | | | **X** | **X** | **X** | -| [Lock conversations](/articles/locking-conversations) | | | **X** | **X** | **X** | -| Transfer issues (see "[Transferring an issue to another repository](/articles/transferring-an-issue-to-another-repository)" for details) | | | **X** | **X** | **X** | -| [Act as a designated code owner for a repository](/articles/about-code-owners) | | | **X** | **X** | **X** | -| [Mark a draft pull request as ready for review](/articles/changing-the-stage-of-a-pull-request) | | | **X** | **X** | **X** |{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -| [Convert a pull request to a draft](/articles/changing-the-stage-of-a-pull-request) | | | **X** | **X** | **X** |{% endif %} -| Submit reviews that affect a pull request's mergeability | | | **X** | **X** | **X** | -| [Apply suggested changes](/articles/incorporating-feedback-in-your-pull-request) to pull requests | | | **X** | **X** | **X** | -| Create [status checks](/articles/about-status-checks) | | | **X** | **X** | **X** |{% if currentVersion == "free-pro-team@latest" %} -| Create, edit, run, re-run, and cancel [GitHub Actions workflows](/actions/automating-your-workflow-with-github-actions/) | | | **X** | **X** | **X** |{% endif %} -| Create and edit releases | | | **X** | **X** | **X** | -| View draft releases | | | **X** | **X** | **X** | -| Edit a repository's description | | | | **X** | **X** |{% if currentVersion == "free-pro-team@latest" %} -| [View and install packages](/packages/publishing-and-managing-packages) | **X** | **X** | **X** | **X** | **X** | -| [Publish packages](/packages/publishing-and-managing-packages/publishing-a-package) | | | **X** | **X** | **X** | -| [Delete packages](/packages/publishing-and-managing-packages/deleting-a-package) | | | | | **X** | {% endif %} -| Manage [topics](/articles/classifying-your-repository-with-topics) | | | | **X** | **X** | -| Enable wikis and restrict wiki editors | | | | **X** | **X** | -| Enable project boards | | | | **X** | **X** | -| Configure [pull request merges](/articles/configuring-pull-request-merges) | | | | **X** | **X** | -| Configure [a publishing source for {% data variables.product.prodname_pages %}](/articles/configuring-a-publishing-source-for-github-pages) | | | | **X** | **X** | -| [Push to protected branches](/articles/about-protected-branches) | | | | **X** | **X** | -| [Create and edit repository social cards](/articles/customizing-your-repositorys-social-media-preview) | | | | **X** | **X** |{% if currentVersion == "free-pro-team@latest" %} -| Limit [interactions in a repository](/github/building-a-strong-community/limiting-interactions-in-your-repository)| | | | **X** | **X** |{% endif %} -| Delete an issue (see "[Deleting an issue](/articles/deleting-an-issue)") | | | | | **X** | -| Merge pull requests on protected branches, even if there are no approving reviews | | | | | **X** | -| [Define code owners for a repository](/articles/about-code-owners) | | | | | **X** | -| Add a repository to a team (see "[Managing team access to an organization repository](/github/setting-up-and-managing-organizations-and-teams/managing-team-access-to-an-organization-repository#giving-a-team-access-to-a-repository)" for details) | | | | | **X** | -| [Manage outside collaborator access to a repository](/articles/adding-outside-collaborators-to-repositories-in-your-organization) | | | | | **X** | -| [Change a repository's visibility](/articles/restricting-repository-visibility-changes-in-your-organization) | | | | | **X** | -| Make a repository a template (see "[Creating a template repository](/articles/creating-a-template-repository)") | | | | | **X** | -| Change a repository's settings | | | | | **X** | -| Manage team and collaborator access to the repository | | | | | **X** | -| Edit the repository's default branch | | | | | **X** | -| Manage webhooks and deploy keys | | | | | **X** |{% if currentVersion == "free-pro-team@latest" %} -| [Enable the dependency graph](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-and-dependents-of-a-repository) for a private repository | | | | | **X** | -| Receive [{% data variables.product.prodname_dependabot_alerts %} for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies) in a repository | | | | | **X** | -| [Dismiss {% data variables.product.prodname_dependabot_alerts %}](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository) | | | | | **X** | -| [Designate additional people or teams to receive {% data variables.product.prodname_dependabot_alerts %}](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository) for vulnerable dependencies | | | | | **X** | -| [Manage data use settings for your private repository](/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository) | | | | | **X** |{% endif %}{% if currentVersion == "free-pro-team@latest" %}| Create [security advisories](/github/managing-security-vulnerabilities/about-github-security-advisories) | | | | | **X** | {% endif %} -| [Manage the forking policy for a repository](/github/administering-a-repository/managing-the-forking-policy-for-your-repository) | | | | | **X** | -| [Transfer repositories into the organization](/articles/restricting-repository-creation-in-your-organization) | | | | | **X** | -| [Delete or transfer repositories out of the organization](/articles/setting-permissions-for-deleting-or-transferring-repositories) | | | | | **X** | -| [Archive repositories](/articles/about-archiving-repositories) | | | | | **X** |{% if currentVersion == "free-pro-team@latest" %} -| Display a sponsor button (see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)") | | | | | **X** |{% endif %} -| Create autolink references to external resources, like JIRA or Zendesk (see "[Configuring autolinks to reference external resources](/articles/configuring-autolinks-to-reference-external-resources)") | | | | | **X** | - -### Further reading - -- "[Managing access to your organization's repositories](/articles/managing-access-to-your-organization-s-repositories)" -- "[Adding outside collaborators to repositories in your organization](/articles/adding-outside-collaborators-to-repositories-in-your-organization)" -- "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/requesting-to-add-a-child-team.md b/content/github/setting-up-and-managing-organizations-and-teams/requesting-to-add-a-child-team.md deleted file mode 100644 index 1bd763c85513..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/requesting-to-add-a-child-team.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Requesting to add a child team -intro: 'If you have maintainer permissions in a team, you can request to nest an existing team under your team in your organization’s hierarchy.' -redirect_from: - - /articles/requesting-to-add-a-child-team -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When you request to add a team as a child, a request is sent to the maintainers of the child team. Once a maintainer of the child team approves your request, the child team is nested under the parent team in your organization's hierarchy. - -If you're an organization owner or you have team maintainer permissions in both the child team and the parent team, you can add the child team without requesting approval or change the child team's parent from the child team's settings page. For more information, see "[Moving a team in your organization's hierarchy](/articles/moving-a-team-in-your-organization-s-hierarchy)." - -{% data reusables.organizations.child-team-inherits-permissions %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.teams %} -4. In the list of teams, click the name of the team where you'd like to add the child team. - ![List of the organization's teams](/assets/images/help/teams/click-team-name.png) -5. At the top of the team page, click {% octicon "people" aria-label="The people icon" %} **Teams**. - ![Teams tab on a team page](/assets/images/help/teams/team-teams-tab.png) -6. Click **Add a team**. - ![Add a team button on a team page](/assets/images/help/teams/add-a-team.png) -7. Type the name of the team you'd like to add as a child team, and select it from the drop-down list. - ![Text box to type and drop-down menu to select the name of the child team](/assets/images/help/teams/type-child-team-name.png) -{% data reusables.repositories.changed-repository-access-permissions %} -9. Click **Confirm changes** to send a request to add the child team. - ![Modal box with information about the changes in repository access permissions](/assets/images/help/teams/confirm-new-parent-team.png) - -### Further reading - -- "[About teams](/articles/about-teams)" -- "[Moving a team in your organization’s hierarchy](/articles/moving-a-team-in-your-organization-s-hierarchy)" -- "[Requesting to add or change a parent team](/articles/requesting-to-add-or-change-a-parent-team)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/requesting-to-add-or-change-a-parent-team.md b/content/github/setting-up-and-managing-organizations-and-teams/requesting-to-add-or-change-a-parent-team.md deleted file mode 100644 index f3cd52274ad7..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/requesting-to-add-or-change-a-parent-team.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Requesting to add or change a parent team -intro: 'If you have maintainer permissions in a team, you can request to nest your team under a parent team in your organization''s hierarchy.' -redirect_from: - - /articles/requesting-to-add-or-change-a-parent-team -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When you request to add or change your team's parent, a request is sent to the maintainers of the parent team. When a maintainer of the new parent team approves your request, your team is nested as a child team under the parent team in your organization's hierarchy. - -If you're an organization owner or you have team maintainer permissions in the child team and the parent team, you can add the parent team without requesting approval or change your team's parent from your team's settings page. For more information, see "[Moving a team in your organization's hierarchy](/articles/moving-a-team-in-your-organization-s-hierarchy)." - -{% data reusables.organizations.child-team-inherits-permissions %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.teams %} -4. In the list of teams, click the name of the team you'd like to nest under a parent. - ![List of the organization's teams](/assets/images/help/teams/click-team-name.png) -{% data reusables.organizations.team_settings %} -6. Under "Parent team", use the "Select parent team" drop-down menu and click the name of the new parent team. - ![Drop-down menu listing the organization's teams](/assets/images/help/teams/choose-parent-team.png) -7. Click **Save changes**. -{% data reusables.repositories.changed-repository-access-permissions %} -9. Click **Confirm changes** to send a request to add or change your team's parent. - ![Modal box with information about the changes in repository access permissions](/assets/images/help/teams/confirm-new-parent-team.png) - -### Further reading - -- "[About teams](/articles/about-teams)" -- "[Moving a team in your organization’s hierarchy](/articles/moving-a-team-in-your-organization-s-hierarchy)" -- "[Requesting to add a child team](/articles/requesting-to-add-a-child-team)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/requiring-two-factor-authentication-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/requiring-two-factor-authentication-in-your-organization.md deleted file mode 100644 index 62557ec9b2e5..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/requiring-two-factor-authentication-in-your-organization.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Requiring two-factor authentication in your organization -intro: 'Organization owners can require {% if currentVersion == "free-pro-team@latest" %}organization members, outside collaborators, and billing managers{% else %}organization members and outside collaborators{% endif %} to enable two-factor authentication for their personal accounts, making it harder for malicious actors to access an organization''s repositories and settings.' -redirect_from: - - /articles/requiring-two-factor-authentication-in-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About two-factor authentication for organizations - -{% data reusables.two_fa.about-2fa %} You can require all {% if currentVersion == "free-pro-team@latest" %}members, outside collaborators, and billing managers{% else %}members and outside collaborators{% endif %} in your organization to enable two-factor authentication on {% data variables.product.product_name %}. For more information about two-factor authentication, see "[Securing your account with two-factor authentication (2FA)](/github/authenticating-to-github/securing-your-account-with-two-factor-authentication-2fa)." - -{% if currentVersion == "free-pro-team@latest" %} - -You can also require two-factor authentication for organizations in an enterprise. For more information, see "[Enforcing security settings in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account#requiring-two-factor-authentication-for-organizations-in-your-enterprise-account)." - -{% endif %} - -{% warning %} - -**Warnings:** - -- When you require use of two-factor authentication for your organization, {% if currentVersion == "free-pro-team@latest" %}members, outside collaborators, and billing managers{% else %}members and outside collaborators{% endif %} (including bot accounts) who do not use 2FA will be removed from the organization and lose access to its repositories. They will also lose access to their forks of the organization's private repositories. You can [reinstate their access privileges and settings](/articles/reinstating-a-former-member-of-your-organization) if they enable two-factor authentication for their personal account within three months of their removal from your organization. -- If an organization owner, member,{% if currentVersion == "free-pro-team@latest" %} billing manager,{% endif %} or outside collaborator disables 2FA for their personal account after you've enabled required two-factor authentication, they will automatically be removed from the organization. -- If you're the sole owner of an organization that requires two-factor authentication, you won't be able to disable 2FA for your personal account without disabling required two-factor authentication for the organization. - -{% endwarning %} - -{% data reusables.two_fa.auth_methods_2fa %} - -### Prerequisites - -Before you can require {% if currentVersion == "free-pro-team@latest" %}organization members, outside collaborators, and billing managers{% else %}organization members and outside collaborators{% endif %} to use two-factor authentication, you must enable two-factor authentication for your account on {% data variables.product.product_name %}. For more information, see "[Securing your account with two-factor authentication (2FA)](/github/authenticating-to-github/securing-your-account-with-two-factor-authentication-2fa)." - -Before you require use of two-factor authentication, we recommend notifying {% if currentVersion == "free-pro-team@latest" %}organization members, outside collaborators, and billing managers{% else %}organization members and outside collaborators{% endif %} and asking them to set up 2FA for their accounts. You can see if members and outside collaborators already use 2FA. For more information, see "[Viewing whether users in your organization have 2FA enabled](/github/setting-up-and-managing-organizations-and-teams/viewing-whether-users-in-your-organization-have-2fa-enabled)." - -### Requiring two-factor authentication in your organization - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.security %} -{% data reusables.organizations.require_two_factor_authentication %} -{% data reusables.organizations.removed_outside_collaborators %} -{% if currentVersion == "free-pro-team@latest" %} -8. If any members or outside collaborators are removed from the organization, we recommend sending them an invitation that can reinstate their former privileges and access to your organization. They must enable two-factor authentication before they can accept your invitation. -{% endif %} - -### Viewing people who were removed from your organization - -To view people who were automatically removed from your organization for non-compliance when you required two-factor authentication, you can [search your organization's audit log](/articles/reviewing-the-audit-log-for-your-organization/#accessing-the-audit-log) for people removed from your organization. The audit log event will show if a person was removed for 2FA non-compliance. - -![Audit log event showing a user removed for 2FA non-compliance](/assets/images/help/2fa/2fa_noncompliance_audit_log_search.png) - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.audit_log.audit_log_sidebar_for_org_admins %} -4. Enter your search query. To search for: - - Organization members removed, use `action:org.remove_member` in your search query - - Outside collaborators removed, use `action:org.remove_outside_collaborator` in your search query{% if currentVersion == "free-pro-team@latest" %} - - Billing managers removed, use `action:org.remove_billing_manager`in your search query{% endif %} - - You can also view people who were removed from your organization by using a [time frame](/articles/reviewing-the-audit-log-for-your-organization/#search-based-on-time-of-action) in your search. - -### Helping removed members and outside collaborators rejoin your organization - -If any members or outside collaborators are removed from the organization when you enable required use of two-factor authentication, they'll receive an email notifying them that they've been removed. They should then enable 2FA for their personal account, and contact an organization owner to request access to your organization. - -### Further reading - -- "[Viewing whether users in your organization have 2FA enabled](/articles/viewing-whether-users-in-your-organization-have-2fa-enabled)" -- "[Securing your account with two-factor authentication (2FA)](/articles/securing-your-account-with-two-factor-authentication-2fa)" -- "[Reinstating a former member of your organization](/articles/reinstating-a-former-member-of-your-organization)" -- "[Reinstating a former outside collaborator's access to your organization](/articles/reinstating-a-former-outside-collaborator-s-access-to-your-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/restricting-access-to-your-organizations-data.md b/content/github/setting-up-and-managing-organizations-and-teams/restricting-access-to-your-organizations-data.md deleted file mode 100644 index a5156b07c5d5..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/restricting-access-to-your-organizations-data.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Restricting access to your organization's data -intro: '{% data variables.product.prodname_oauth_app %} access restrictions allow organization owners to restrict an untrusted app''s access to the organization''s data. Organization members can then use {% data variables.product.prodname_oauth_app %}s for their personal user accounts while keeping organization data safe.' -redirect_from: - - /articles/restricting-access-to-your-organization-s-data - - /articles/restricting-access-to-your-organizations-data -mapTopic: true -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-organizations-and-teams/restricting-email-notifications-to-an-approved-domain.md b/content/github/setting-up-and-managing-organizations-and-teams/restricting-email-notifications-to-an-approved-domain.md deleted file mode 100644 index d4606e3d2054..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/restricting-email-notifications-to-an-approved-domain.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Restricting email notifications to an approved domain -intro: 'To prevent organization information from leaking into personal accounts, organization owners can restrict email notifications about organization activity to a verified domain.' -product: '{% data reusables.gated-features.restrict-email-domain %}' -redirect_from: - - /articles/restricting-email-notifications-about-organization-activity-to-an-approved-email-domain/ - - /articles/restricting-email-notifications-to-an-approved-domain -versions: - free-pro-team: '*' ---- - -When restricted email notifications are enabled in an organization, members can only receive email notifications about organization activity at an email address associated with the organization's verified domain. For more information, see "[Verifying your organization's domain](/articles/verifying-your-organization-s-domain)." - -Outside collaborators are not subject to restrictions on email notifications for verified domains. For more information on outside collaborators, see "[Permission levels for an organization](/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization#outside-collaborators)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.verified-domains %} -5. Under "Enforcement preferences", select **Restrict email notifications to domain email**. - ![Checkbox to restrict email notifications to verified domain emails](/assets/images/help/organizations/restrict-email-notifications-to-domain.png) -6. Click **Save**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization.md deleted file mode 100644 index 9cee2b1023ca..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/restricting-repository-creation-in-your-organization.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Restricting repository creation in your organization -intro: 'To protect your organization''s data, you can configure permissions for creating repositories in your organization.' -redirect_from: - - /articles/restricting-repository-creation-in-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can choose whether members can create repositories in your organization. If you allow members to create repositories, you can choose which types of repositories members can create.{% if currentVersion == "free-pro-team@latest" %} To allow members to create private repositories only, your organization must use {% data variables.product.prodname_ghe_cloud %}.{% endif %} For more information, see "[About repository visibility](/github/creating-cloning-and-archiving-repositories/about-repository-visibility)." - -Organization owners can always create any type of repository. - -{% if currentVersion == "free-pro-team@latest" %}Enterprise owners{% else %}Site administrators{% endif %} can restrict the options you have available for your organization's repository creation policy. For more information, see {% if currentVersion == "free-pro-team@latest" %}"[Enforcing repository management policies in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-repository-management-policies-in-your-enterprise-account)."{% else %}"[Restricting repository creation in your instance](/enterprise/admin/user-management/restricting-repository-creation-in-your-instance)."{% endif %} - -{% warning %} - -**Warning**: This setting only restricts the visibility options available when repositories are created and does not restrict the ability to change repository visibility at a later time. For more information about restricting changes to existing repositories' visibilities, see "[Restricting repository visibility changes in your organization](/github/setting-up-and-managing-organizations-and-teams/restricting-repository-visibility-changes-in-your-organization)." - -{% endwarning %} - -{% data reusables.organizations.internal-repos-enterprise %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.member-privileges %} -5. Under "Repository creation", select one or more options. - ![Repository creation options](/assets/images/help/organizations/repo-creation-perms-radio-buttons.png) -6. Click **Save**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/restricting-repository-visibility-changes-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/restricting-repository-visibility-changes-in-your-organization.md deleted file mode 100644 index 0af34b884ef1..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/restricting-repository-visibility-changes-in-your-organization.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Restricting repository visibility changes in your organization -intro: 'To protect your organization''s data, you can configure permissions for changing repository visibility in your organization.' -redirect_from: - - /articles/restricting-repository-visibility-changes-in-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can restrict the ability to change repository visibility to organization owners only, or allow members with admin privileges for a repository to also change visibility from private to public or public to private. - -{% warning %} - -**Warning**: If enabled, this setting allows people with admin permissions to change an existing repository to any visibility, even if you do not allow that type of repository to be created. For more information about restricting the visibility of repositories during creation, see "[Restricting repository creation in your organization](/articles/restricting-repository-creation-in-your-organization)." - -{% endwarning %} - - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.member-privileges %} -5. Under "Repository visibility change", deselect **Allow members to change repository visibilities for this organization**. -![Checkbox to allow members to change repository visibility](/assets/images/help/organizations/disallow-members-to-change-repo-visibility.png) -6. Click **Save**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization.md deleted file mode 100644 index 66375ea0900f..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization.md +++ /dev/null @@ -1,440 +0,0 @@ ---- -title: Reviewing the audit log for your organization -intro: 'The audit log allows organization admins to quickly review the actions performed by members of your organization. It includes details such as who performed the action, what the action was, and when it was performed.' -redirect_from: - - /articles/reviewing-the-audit-log-for-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Accessing the audit log - -The audit log lists actions performed within the last 90 days. Only owners can access an organization's audit log. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.audit_log.audit_log_sidebar_for_org_admins %} - -### Searching the audit log - -{% data reusables.audit_log.audit-log-search %} - -#### Search based on the action performed - -To search for specific events, use the `action` qualifier in your query. Actions listed in the audit log are grouped within the following categories: - -| Category Name | Description -|------------------|-------------------{% if currentVersion == "free-pro-team@latest" %} -| `account` | Contains all activities related to your organization account.{% endif %}{% if currentVersion == "free-pro-team@latest" %} -| `billing` | Contains all activities related to your organization's billing.{% endif %} -| `discussion_post` | Contains all activities related to discussions posted to a team page. -| `discussion_post_reply` | Contains all activities related to replies to discussions posted to a team page. -| `hook` | Contains all activities related to webhooks. -| `integration_installation_request` | Contains all activities related to organization member requests for owners to approve integrations for use in the organization. |{% if currentVersion == "free-pro-team@latest" %} -| `marketplace_agreement_signature` | Contains all activities related to signing the {% data variables.product.prodname_marketplace %} Developer Agreement. -| `marketplace_listing` | Contains all activities related to listing apps in {% data variables.product.prodname_marketplace %}.{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -| `members_can_create_pages` | Contains all activities related to disabling the publication of {% data variables.product.prodname_pages %} sites for repositories in the organization. For more information, see "[Restricting publication of {% data variables.product.prodname_pages %} sites for your organization](/github/setting-up-and-managing-organizations-and-teams/disabling-publication-of-github-pages-sites-for-your-organization)." | {% endif %} -| `org` | Contains all activities related to organization membership{% if currentVersion == "free-pro-team@latest" %} -| `org_credential_authorization` | Contains all activities related to authorizing credentials for use with SAML single sign-on.{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -| `organization_label` | Contains all activities related to default labels for repositories in your organization.{% endif %}{% if currentVersion == "free-pro-team@latest" %} -| `payment_method` | Contains all activities related to how your organization pays for GitHub.{% endif %} -| `profile_picture` | Contains all activities related to your organization's profile picture. -| `project` | Contains all activities related to project boards. -| `protected_branch` | Contains all activities related to protected branches. -| `repo` | Contains all activities related to the repositories owned by your organization.{% if currentVersion == "free-pro-team@latest" %} -| `repository_content_analysis` | Contains all activities related to [enabling or disabling data use for a private repository](/articles/about-github-s-use-of-your-data). -| `repository_dependency_graph` | Contains all activities related to [enabling or disabling the dependency graph for a private repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-and-dependents-of-a-repository).{% endif %} -| `repository_vulnerability_alert` | Contains all activities related to [{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_short %}{% else %}security{% endif %} alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies).{% if currentVersion == "free-pro-team@latest" %} -| `sponsors` | Contains all events related to sponsor buttons (see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)"){% endif %}{% if enterpriseServerVersions contains currentVersion %} -| `team` | Contains all activities related to teams in your organization.{% endif %} -| `team_discussions` | Contains activities related to managing team discussions for an organization. - -You can search for specific sets of actions using these terms. For example: - - * `action:team` finds all events grouped within the team category. - * `-action:hook` excludes all events in the webhook category. - -Each category has a set of associated events that you can filter on. For example: - - * `action:team.create` finds all events where a team was created. - * `-action:hook.events_changed` excludes all events where the events on a webhook have been altered. - -This list describes the available categories and associated events: - -{% if currentVersion == "free-pro-team@latest" %}- [The `account` category](#the-account-category) -- [The `billing` category](#the-billing-category){% endif %} -- [The `discussion_post` category](#the-discussion_post-category) -- [The `discussion_post_reply` category](#the-discussion_post_reply-category) -- [The `hook` category](#the-hook-category) -- [The `integration_installation_request` category](#the-integration_installation_request-category) -- [The `issue` category](#the-issue-category){% if currentVersion == "free-pro-team@latest" %} -- [The `marketplace_agreement_signature` category](#the-marketplace_agreement_signature-category) -- [The `marketplace_listing` category](#the-marketplace_listing-category){% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -- [The `members_can_create_pages` category](#the-members_can_create_pages-category){% endif %} -- [The `org` category](#the-org-category){% if currentVersion == "free-pro-team@latest" %} -- [The `org_credential_authorization` category](#the-org_credential_authorization-category){% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -- [The `organization_label` category](#the-organization_label-category){% endif %} -- [The `oauth_application` category](#the-oauth_application-category){% if currentVersion == "free-pro-team@latest" %} -- [The `payment_method` category](#the-payment_method-category){% endif %} -- [The `profile_picture` category](#the-profile_picture-category) -- [The `project` category](#the-project-category) -- [The `protected_branch` category](#the-protected_branch-category) -- [The `repo` category](#the-repo-category){% if currentVersion == "free-pro-team@latest" %} -- [The `repository_content_analysis` category](#the-repository_content_analysis-category) -- [The `repository_dependency_graph` category](#the-repository_dependency_graph-category){% endif %} -- [The `repository_vulnerability_alert` category](#the-repository_vulnerability_alert-category){% if currentVersion == "free-pro-team@latest" %} -- [The `sponsors` category](#the-sponsors-category){% endif %}{% if enterpriseServerVersions contains currentVersion %} -- [The `team` category](#the-team-category){% endif %} -- [The `team_discussions` category](#the-team_discussions-category) - -{% if currentVersion == "free-pro-team@latest" %} - -##### The `account` category - -| Action | Description -|------------------|------------------- -| `billing_plan_change` | Triggered when an organization's [billing cycle](/articles/changing-the-duration-of-your-billing-cycle) changes. -| `plan_change` | Triggered when an organization's [subscription](/articles/about-billing-for-github-accounts) changes. -| `pending_plan_change` | Triggered when an organization owner or billing manager [cancels or downgrades a paid subscription](/articles/how-does-upgrading-or-downgrading-affect-the-billing-process/). -| `pending_subscription_change` | Triggered when a [{% data variables.product.prodname_marketplace %} free trial starts or expires](/articles/about-billing-for-github-marketplace/). - -##### The `billing` category - -| Action | Description -|------------------|------------------- -| `change_billing_type` | Triggered when your organization [changes how it pays for {% data variables.product.prodname_dotcom %}](/articles/adding-or-editing-a-payment-method). -| `change_email` | Triggered when your organization's [billing email address](/articles/setting-your-billing-email) changes. - -{% endif %} - -##### The `discussion_post` category - -| Action | Description -|------------------|------------------- -| `update` | Triggered when [a team discussion post is edited](/articles/managing-disruptive-comments/#editing-a-comment). -| `destroy` | Triggered when [a team discussion post is deleted](/articles/managing-disruptive-comments/#deleting-a-comment). - -##### The `discussion_post_reply` category - -| Action | Description -|------------------|------------------- -| `update` | Triggered when [a reply to a team discussion post is edited](/articles/managing-disruptive-comments/#editing-a-comment). -| `destroy` | Triggered when [a reply to a team discussion post is deleted](/articles/managing-disruptive-comments/#deleting-a-comment). - -##### The `hook` category - -| Action | Description -|------------------|------------------- -| `create` | Triggered when [a new hook was added](/articles/creating-webhooks) to a repository owned by your organization. -| `config_changed` | Triggered when an existing hook has its configuration altered. -| `destroy` | Triggered when an existing hook was removed from a repository. -| `events_changed` | Triggered when the events on a hook have been altered. - -##### The `integration_installation_request` category - -| Action | Description -|------------------|------------------- -| `create` | Triggered when an organization member requests that an organization owner install an integration for use in the organization. -| `close` | Triggered when a request to install an integration for use in an organization is either approved or denied by an organization owner, or canceled by the organization member who opened the request. - -##### The `issue` category - -| Action | Description -|------------------|------------------- -| `destroy` | Triggered when an organization owner or someone with admin permissions in a repository deletes an issue from an organization-owned repository. - -{% if currentVersion == "free-pro-team@latest" %} - -##### The `marketplace_agreement_signature` category - -| Action | Description -|------------------|------------------- -| `create` | Triggered when you sign the {% data variables.product.prodname_marketplace %} Developer Agreement. - -##### The `marketplace_listing` category - -| Action | Description -|------------------|------------------- -| `approve` | Triggered when your listing is approved for inclusion in {% data variables.product.prodname_marketplace %}. -| `create` | Triggered when you create a listing for your app in {% data variables.product.prodname_marketplace %}. -| `delist` | Triggered when your listing is removed from {% data variables.product.prodname_marketplace %}. -| `redraft` | Triggered when your listing is sent back to draft state. -| `reject` | Triggered when your listing is not accepted for inclusion in {% data variables.product.prodname_marketplace %}. - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} - -##### The `members_can_create_pages` category - -For more information, see "[Restricting publication of {% data variables.product.prodname_pages %} sites for your organization](/github/setting-up-and-managing-organizations-and-teams/disabling-publication-of-github-pages-sites-for-your-organization)." - -| Action | Description | -| :- | :- | -| `enable` | Triggered when an organization owner enables publication of {% data variables.product.prodname_pages %} sites for repositories in the organization. | -| `disable` | Triggered when an organization owner disables publication of {% data variables.product.prodname_pages %} sites for repositories in the organization. | - -{% endif %} - -##### The `org` category - -| Action | Description -|------------------|-------------------{% if currentVersion == "free-pro-team@latest"%} -| `audit_log_export` | Triggered when an organization admin [creates an export of the organization audit log](#exporting-the-audit-log). If the export included a query, the log will list the query used and the number of audit log entries matching that query. -| `block_user` | Triggered when an organization owner [blocks a user from accessing the organization's repositories](/articles/blocking-a-user-from-your-organization). -| `cancel_invitation` | Triggered when an organization invitation has been revoked. {% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -| `create_actions_secret` | Triggered when a organization admin [creates a {% data variables.product.prodname_actions %} secret](/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-an-organization).{% endif %} {% if currentVersion == "free-pro-team@latest"%} -| `disable_oauth_app_restrictions` | Triggered when an owner [disables {% data variables.product.prodname_oauth_app %} access restrictions](/articles/disabling-oauth-app-access-restrictions-for-your-organization) for your organization. -| `disable_saml` | Triggered when an organization admin disables SAML single sign-on for an organization.{% endif %} -| `disable_member_team_creation_permission` | Triggered when an organization owner limits team creation to owners. For more information, see "[Setting team creation permissions in your organization](/articles/setting-team-creation-permissions-in-your-organization)." | -| `disable_two_factor_requirement` | Triggered when an owner disables a two-factor authentication requirement for all members{% if currentVersion == "free-pro-team@latest" %}, billing managers,{% endif %} and outside collaborators in an organization.{% if currentVersion == "free-pro-team@latest" %} -| `enable_oauth_app_restrictions` | Triggered when an owner [enables {% data variables.product.prodname_oauth_app %} access restrictions](/articles/enabling-oauth-app-access-restrictions-for-your-organization) for your organization. -| `enable_saml` | Triggered when an organization admin [enables SAML single sign-on](/articles/enabling-and-testing-saml-single-sign-on-for-your-organization) for an organization.{% endif %} -| `enable_member_team_creation_permission` | Triggered when an organization owner allows members to create teams. For more information, see "[Setting team creation permissions in your organization](/articles/setting-team-creation-permissions-in-your-organization)." | -| `enable_two_factor_requirement` | Triggered when an owner requires two-factor authentication for all members{% if currentVersion == "free-pro-team@latest" %}, billing managers,{% endif %} and outside collaborators in an organization. -| `invite_member` | Triggered when [a new user was invited to join your organization](/articles/adding-organization-members-to-a-team).{% if currentVersion == "free-pro-team@latest" %} -| `oauth_app_access_approved` | Triggered when an owner [grants organization access to an {% data variables.product.prodname_oauth_app %}](/articles/approving-oauth-apps-for-your-organization/). -| `oauth_app_access_denied` | Triggered when an owner [disables a previously approved {% data variables.product.prodname_oauth_app %}'s access](/articles/denying-access-to-a-previously-approved-oauth-app-for-your-organization) to your organization. -| `oauth_app_access_requested` | Triggered when an organization member requests that an owner grant an {% data variables.product.prodname_oauth_app %} access to your organization.{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -| `register_self_hosted_runner` | Triggered when an organization owner [registers a new self-hosted runner](/actions/hosting-your-own-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-an-organization). -| `remove_actions_secret` | Triggered when a organization admin removes a {% data variables.product.prodname_actions %} secret.{% endif %}{% if currentVersion == "free-pro-team@latest"%} -| `remove_billing_manager` | Triggered when an [owner removes a billing manager from an organization](/articles/removing-a-billing-manager-from-your-organization/) or when [two-factor authentication is required in an organization](/articles/requiring-two-factor-authentication-in-your-organization) and a billing manager doesn't use 2FA or disables 2FA. |{% endif %} -| `remove_member` | Triggered when an [owner removes a member from an organization](/articles/removing-a-member-from-your-organization/) or when [two-factor authentication is required in an organization](/articles/requiring-two-factor-authentication-in-your-organization) and an organization member doesn't use 2FA or disables 2FA. Also triggered when an [organization member removes themselves](/articles/removing-yourself-from-an-organization/) from an organization.| -| `remove_outside_collaborator` | Triggered when an owner removes an outside collaborator from an organization or when [two-factor authentication is required in an organization](/articles/requiring-two-factor-authentication-in-your-organization) and an outside collaborator does not use 2FA or disables 2FA. |{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -| `remove_self_hosted_runner` | Triggered when an organization owner [removes a self-hosted runner](/actions/hosting-your-own-runners/removing-self-hosted-runners#removing-a-runner-from-an-organization). {% endif %}{% if currentVersion == "free-pro-team@latest" %} -| `revoke_external_identity` | Triggered when an organization owner revokes a member's linked identity. For more information, see "[Viewing and managing a member's SAML access to your organization](/github/setting-up-and-managing-organizations-and-teams/viewing-and-managing-a-members-saml-access-to-your-organization#viewing-and-revoking-a-linked-identity)." -| `revoke_sso_session` | Triggered when an organization owner revokes a member's SAML session. For more information, see "[Viewing and managing a member's SAML access to your organization](/github/setting-up-and-managing-organizations-and-teams/viewing-and-managing-a-members-saml-access-to-your-organization#viewing-and-revoking-a-linked-identity)." {% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -| `runner_group_created` | Triggered when an organization admin [creates a self-hosted runner group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#creating-a-self-hosted-runner-group-for-an-organization). -| `runner_group_removed` | Triggered when an organization admin removes a self-hosted runner group. -| `runner_group_renamed` | Triggered when an organization admin renames a self-hosted runner group. -| `runner_group_runners_added` | Triggered when an organization admin [adds a self-hosted runner to a group](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group). -| `runner_group_runners_removed` | Triggered when an organization admin removes a self-hosted runner from a group. {% endif %}{% if currentVersion == "free-pro-team@latest"%} -| `unblock_user` | Triggered when an organization owner [unblocks a user from an organization](/articles/unblocking-a-user-from-your-organization).{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -| `update_actions_secret` | Triggered when a organization admin updates a {% data variables.product.prodname_actions %} secret.{% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -| `update_new_repository_default_branch_setting` | Triggered when an owner changes the name of the default branch for new repositories in the organization. For more information, see "[Managing the default branch name for repositories in your organization](/github/setting-up-and-managing-organizations-and-teams/managing-the-default-branch-name-for-repositories-in-your-organization)."{% endif %} -| `update_default_repository_permission` | Triggered when an owner changes the default repository permission level for organization members. -| `update_member` | Triggered when an owner changes a person's role from owner to member or member to owner. -| `update_member_repository_creation_permission` | Triggered when an owner changes the create repository permission for organization members.{% if currentVersion == "free-pro-team@latest" %} -| `update_saml_provider_settings` | Triggered when an organization's SAML provider settings are updated. -| `update_terms_of_service` | Triggered when an organization changes between the Standard Terms of Service and the Corporate Terms of Service. For more information, see "[Upgrading to the Corporate Terms of Service](/articles/upgrading-to-the-corporate-terms-of-service)."{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -##### The `org_credential_authorization` category - -| Action | Description -|------------------|------------------- -| `grant` | Triggered when a member [authorizes credentials for use with SAML single sign-on](/github/authenticating-to-github/authenticating-with-saml-single-sign-on). -| `deauthorized` | Triggered when a member [deauthorizes credentials for use with SAML single sign-on](/github/authenticating-to-github/authenticating-with-saml-single-sign-on). -| `revoke` | Triggered when an owner [revokes authorized credentials](/github/setting-up-and-managing-organizations-and-teams/viewing-and-managing-a-members-saml-access-to-your-organization). - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -##### The `organization_label` category - -| Action | Description -|------------------|------------------- -| `create` | Triggered when a default label is created. -| `update` | Triggered when a default label is edited. -| `destroy` | Triggered when a default label is deleted. - -{% endif %} - -##### The `oauth_application` category - -| Action | Description -|------------------|------------------- -| `create` | Triggered when a new {% data variables.product.prodname_oauth_app %} is created. -| `destroy` | Triggered when an existing {% data variables.product.prodname_oauth_app %} is deleted. -| `reset_secret` | Triggered when an {% data variables.product.prodname_oauth_app %}'s client secret is reset. -| `revoke_tokens` | Triggered when an {% data variables.product.prodname_oauth_app %}'s user tokens are revoked. -| `transfer` | Triggered when an existing {% data variables.product.prodname_oauth_app %} is transferred to a new organization. - -{% if currentVersion == "free-pro-team@latest" %} - -##### The `payment_method` category - -| Action | Description -|------------------|------------------- -| `clear` | Triggered when a payment method on file is [removed](/articles/removing-a-payment-method). -| `create` | Triggered when a new payment method is added, such as a new credit card or PayPal account. -| `update` | Triggered when an existing payment method is updated. - -{% endif %} - -##### The `profile_picture` category -| Action | Description -|------------------|------------------- -| update | Triggered when you set or update your organization's profile picture. - -##### The `project` category - -| Action | Description -|--------------------|--------------------- -| `create` | Triggered when a project board is created. -| `link` | Triggered when a repository is linked to a project board. -| `rename` | Triggered when a project board is renamed. -| `update` | Triggered when a project board is updated. -| `delete` | Triggered when a project board is deleted. -| `unlink` | Triggered when a repository is unlinked from a project board. -| `update_org_permission` | Triggered when the base-level permission for all organization members is changed or removed. | -| `update_team_permission` | Triggered when a team's project board permission level is changed or when a team is added or removed from a project board. | -| `update_user_permission` | Triggered when an organization member or outside collaborator is added to or removed from a project board or has their permission level changed.| - -##### The `protected_branch` category - -| Action | Description -|--------------------|--------------------- -| `create ` | Triggered when branch protection is enabled on a branch. -| `destroy` | Triggered when branch protection is disabled on a branch. -| `update_admin_enforced ` | Triggered when branch protection is enforced for repository administrators. -| `update_require_code_owner_review ` | Triggered when enforcement of required Code Owner review is updated on a branch. -| `dismiss_stale_reviews ` | Triggered when enforcement of dismissing stale pull requests is updated on a branch. -| `update_signature_requirement_enforcement_level ` | Triggered when enforcement of required commit signing is updated on a branch. -| `update_pull_request_reviews_enforcement_level ` | Triggered when enforcement of required pull request reviews is updated on a branch. -| `update_required_status_checks_enforcement_level ` | Triggered when enforcement of required status checks is updated on a branch. -| `update_strict_required_status_checks_policy` | Triggered when the requirement for a branch to be up to date before merging is changed. -| `rejected_ref_update ` | Triggered when a branch update attempt is rejected. -| `policy_override ` | Triggered when a branch protection requirement is overridden by a repository administrator.{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -| `update_allow_force_pushes_enforcement_level ` | Triggered when force pushes are enabled or disabled for a protected branch. -| `update_allow_deletions_enforcement_level ` | Triggered when branch deletion is enabled or disabled for a protected branch. -| `update_linear_history_requirement_enforcement_level ` | Triggered when required linear commit history is enabled or disabled for a protected branch. -{% endif %} - -##### The `repo` category - -| Action | Description -|------------------|------------------- -| `access` | Triggered when a repository owned by an organization is [switched from "private" to "public"](/articles/making-a-private-repository-public) (or vice versa). -| `add_member` | Triggered when a user accepts an [invitation to have collaboration access to a repository](/articles/inviting-collaborators-to-a-personal-repository). -| `add_topic` | Triggered when a repository admin [adds a topic](/articles/classifying-your-repository-with-topics) to a repository. -| `archived` | Triggered when a repository admin [archives a repository](/articles/about-archiving-repositories).{% if enterpriseServerVersions contains currentVersion %} -| `config.disable_anonymous_git_access` | Triggered when [anonymous Git read access is disabled](/enterprise/{{ currentVersion }}/user/articles/enabling-anonymous-git-read-access-for-a-repository) in a public repository. -| `config.enable_anonymous_git_access` | Triggered when [anonymous Git read access is enabled](/enterprise/{{ currentVersion }}/user/articles/enabling-anonymous-git-read-access-for-a-repository) in a public repository. -| `config.lock_anonymous_git_access` | Triggered when a repository's [anonymous Git read access setting is locked](/enterprise/{{ currentVersion }}/admin/guides/user-management/preventing-users-from-changing-anonymous-git-read-access). -| `config.unlock_anonymous_git_access` | Triggered when a repository's [anonymous Git read access setting is unlocked](/enterprise/{{ currentVersion }}/admin/guides/user-management/preventing-users-from-changing-anonymous-git-read-access).{% endif %} -| `create` | Triggered when [a new repository is created](/articles/creating-a-new-repository).{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -| `create_actions_secret` | Triggered when a repository admin [creates a {% data variables.product.prodname_actions %} secret](/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository).{% endif %} -| `destroy` | Triggered when [a repository is deleted](/articles/deleting-a-repository).{% if currentVersion == "free-pro-team@latest" %} -| `disable` | Triggered when a repository is disabled (e.g., for [insufficient funds](/articles/unlocking-a-locked-account)).{% endif %} -| `enable` | Triggered when a repository is reenabled.{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -| `remove_actions_secret` | Triggered when a repository admin removes a {% data variables.product.prodname_actions %} secret.{% endif %} -| `remove_member` | Triggered when a user is [removed from a repository as a collaborator](/articles/removing-a-collaborator-from-a-personal-repository).{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -| `register_self_hosted_runner` | Triggered when a repository admin [registers a new self-hosted runner](/actions/hosting-your-own-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-a-repository). -| `remove_self_hosted_runner` | Triggered when a repository admin [removes a self-hosted runner](/actions/hosting-your-own-runners/removing-self-hosted-runners#removing-a-runner-from-a-repository). {% endif %} -| `remove_topic` | Triggered when a repository admin removes a topic from a repository. -| `rename` | Triggered when [a repository is renamed](/articles/renaming-a-repository). -| `transfer` | Triggered when [a repository is transferred](/articles/how-to-transfer-a-repository). -| `transfer_start` | Triggered when a repository transfer is about to occur. -| `unarchived` | Triggered when a repository admin unarchives a repository.{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -| `update_actions_secret` | Triggered when a repository admin updates a {% data variables.product.prodname_actions %} secret.{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} - -##### The `repository_content_analysis` category - -| Action | Description -|------------------|------------------- -| `enable` | Triggered when an organization owner or person with admin access to the repository [enables data use settings for a private repository](/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository). -| `disable` | Triggered when an organization owner or person with admin access to the repository [disables data use settings for a private repository](/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository). - -##### The `repository_dependency_graph` category - -| Action | Description -|------------------|------------------- -| `enable` | Triggered when a repository owner or person with admin access to the repository [enables the dependency graph for a private repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-and-dependents-of-a-repository). -| `disable` | Triggered when a repository owner or person with admin access to the repository [disables the dependency graph for a private repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-and-dependents-of-a-repository). - -{% endif %} -##### The `repository_vulnerability_alert` category - -| Action | Description -|------------------|------------------- -| `create` | Triggered when {% data variables.product.product_name %} creates a [{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_short %}{% else %}security{% endif %} alert for a vulnerable dependency](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies) in a particular repository. -| `resolve` | Triggered when someone with write access to a repository [pushes changes to update and resolve a vulnerability](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies) in a project dependency. -| `dismiss` | Triggered when an organization owner or person with admin access to the repository dismisses a {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_short %}{% else %}security{% endif %} alert about a vulnerable dependency.{% if currentVersion == "free-pro-team@latest" %} -| `authorized_users_teams` | Triggered when an organization owner or a member with admin permissions to the repository [updates the list of people or teams authorized to receive {% data variables.product.prodname_dependabot_short %} alerts](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository#granting-access-to-github-dependabot-alerts) for vulnerable dependencies in the repository.{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -##### The `sponsors` category - -| Action | Description -|------------------|------------------- -| repo_funding_link_button_toggle | Triggered when you enable or disable a sponsor button in your repository (see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)") -| repo_funding_links_file_action | Triggered when you change the FUNDING file in your repository (see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)") -{% endif %} - -{% if enterpriseServerVersions contains currentVersion %} -##### The `team` category - -| Action | Description -|------------------|------------------- -| `add_member` | Triggered when a member of an organization is [added to a team](/articles/adding-organization-members-to-a-team). -| `add_repository` | Triggered when a team is given control of a repository. -| `change_parent_team` | Triggered when a child team is created or [a child team's parent is changed](/articles/moving-a-team-in-your-organization-s-hierarchy). -| `change_privacy` | Triggered when a team's privacy level is changed. -| `create` | Triggered when a new team is created. -| `destroy` | Triggered when a team is deleted from the organization. -| `remove_member` | Triggered when a member of an organization is [removed from a team](/articles/removing-organization-members-from-a-team). -| `remove_repository` | Triggered when a repository is no longer under a team's control. -{% endif %} - -##### The `team_discussions` category - -| Action | Description -|---|---| -| `disable` | Triggered when an organization owner disables team discussions for an organization. For more information, see "[Disabling team discussions for your organization](/articles/disabling-team-discussions-for-your-organization)." -| `enable` | Triggered when an organization owner enables team discussions for an organization. - -#### Search based on time of action - -Use the `created` qualifier to filter actions in the audit log based on when they occurred. {% data reusables.time_date.date_format %} {% data reusables.time_date.time_format %} - -{% data reusables.search.date_gt_lt %} For example: - - * `created:2014-07-08` finds all events that occurred on July 8th, 2014. - * `created:>=2014-07-08` finds all events that occurred on or after July 8th, 2014. - * `created:<=2014-07-08` finds all events that occurred on or before July 8th, 2014. - * `created:2014-07-01..2014-07-31` finds all events that occurred in the month of July 2014. - -The audit log contains data for the past 90 days, but you can use the `created` qualifier to search for events earlier than that. - -#### Search based on location - -Using the qualifier `country`, you can filter actions in the audit log based on the originating country. You can use a country's two-letter short code or its full name. Keep in mind that countries with spaces in their name will need to be wrapped in quotation marks. For example: - - * `country:de` finds all events that occurred in Germany. - * `country:Mexico` finds all events that occurred in Mexico. - * `country:"United States"` all finds events that occurred in the United States. - -{% if currentVersion == "free-pro-team@latest" %} -### Exporting the audit log - -{% data reusables.audit_log.export-log %} -{% data reusables.audit_log.exported-log-keys-and-values %} -{% endif %} - -### Using the Audit log API - -{% note %} - -**Note**: The Audit log API is available for organizations using {% data variables.product.prodname_enterprise %}. {% data reusables.gated-features.more-info-org-products %} - -{% endnote %} - -To ensure a secure IP and maintain compliance for your organization, you can use the Audit log API to keep copies of your audit log data and monitor: -* Access to your organization or repository settings. -* Changes in permissions. -* Added or removed users in an organization, repository, or team. -* Users being promoted to admin. -* Changes to permissions of a GitHub App. - -The GraphQL response can include data for up to 90 to 120 days. - -For example, you can make a GraphQL request to see all the new organization members added to your organization. For more information, see the "[GraphQL API Audit Log](/graphql/reference/interfaces#auditentry/)." - -### Further reading - -- "[Keeping your organization secure](/articles/keeping-your-organization-secure)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/reviewing-your-organizations-installed-integrations.md b/content/github/setting-up-and-managing-organizations-and-teams/reviewing-your-organizations-installed-integrations.md deleted file mode 100644 index 83bcbe3dd4f6..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/reviewing-your-organizations-installed-integrations.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Reviewing your organization's installed integrations -intro: You can review the permission levels for your organization's installed integrations and configure each integration's access to organization repositories. -redirect_from: - - /articles/reviewing-your-organization-s-installed-integrations - - /articles/reviewing-your-organizations-installed-integrations -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -4. In the left sidebar, click **Installed {% data variables.product.prodname_github_app %}s**. - ![Installed {% data variables.product.prodname_github_app %}s tab in the organization settings sidebar](/assets/images/help/organizations/org-settings-installed-github-apps.png) -5. Next to the {% data variables.product.prodname_github_app %} you'd like to review, click **Configure**. - ![Configure button](/assets/images/help/organizations/configure-installed-integration-button.png) -6. Review the {% data variables.product.prodname_github_app %}'s permissions and repository access. - ![Option to give the {% data variables.product.prodname_github_app %} access to all repositories or specific repositories](/assets/images/help/organizations/toggle-integration-repo-access.png) - - To give the {% data variables.product.prodname_github_app %} access to all of your organization's repositories, select **All repositories**. - - To choose specific repositories to give the application access to, select **Only select repositories**, then type a repository name. -7. Click **Save**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/setting-base-permissions-for-an-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/setting-base-permissions-for-an-organization.md deleted file mode 100644 index 78b830743ef4..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/setting-base-permissions-for-an-organization.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Setting base permissions for an organization -intro: You can set base permissions for the repositories that an organization owns. -permissions: Organization owners can set base permissions for an organization. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About base permissions for an organization - -You can set base permissions that apply to all members of an organization when accessing any of the organization's repositories. Base permissions do not apply to outside collaborators. - -{% if currentVersion == "free-pro-team@latest" %}By default, members of an organization will have **Read** permissions to the organization's repositories.{% endif %} - -If someone with admin permissions to an organization's repository grants a member a higher level of permission for the repository, the higher level of permission overrides the base permission. - -### Setting base permissions - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.member-privileges %} -5. Under "Base permissions", use the drop-down to select new base permissions. - ![Selecting new permission level from base permissions drop-down](/assets/images/help/organizations/base-permissions-drop-down.png) -6. Review the changes. To confirm, click **Change default permission to PERMISSION**. - ![Reviewing and confirming change of base permissions](/assets/images/help/organizations/base-permissions-confirm.png) - -### Further reading - -- "[Repository permission levels for an organization](/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)" -- "[Adding outside collaborators to repositories in your organization](/github/setting-up-and-managing-organizations-and-teams/adding-outside-collaborators-to-repositories-in-your-organization)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/setting-permissions-for-adding-outside-collaborators.md b/content/github/setting-up-and-managing-organizations-and-teams/setting-permissions-for-adding-outside-collaborators.md deleted file mode 100644 index 9f038f84ec7b..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/setting-permissions-for-adding-outside-collaborators.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Setting permissions for adding outside collaborators -intro: 'To protect your organization''s data and the number of paid licenses used in your organization, you can allow only owners to invite outside collaborators to organization repositories.' -product: '{% data reusables.gated-features.restict-add-collaborator %}' -redirect_from: - - /articles/restricting-the-ability-to-add-outside-collaborators-to-organization-repositories/ - - /articles/setting-permissions-for-adding-outside-collaborators -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Organization owners, and members with admin privileges for a repository, can invite outside collaborators to work on the repository. You can also restrict outside collaborator invite permissions to only organization owners. - -{% data reusables.organizations.outside-collaborators-use-seats %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.member-privileges %} -5. Under "Repository invitations", select **Allow members to invite outside collaborators to repositories for this organization**.{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} - ![Checkbox to allow members to invite outside collaborators to organization repositories](/assets/images/help/organizations/repo-invitations-checkbox-updated.png){% else %} - ![Checkbox to allow members to invite outside collaborators to organization repositories](/assets/images/help/organizations/repo-invitations-checkbox.png){% endif %} -6. Click **Save**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/setting-permissions-for-deleting-or-transferring-repositories.md b/content/github/setting-up-and-managing-organizations-and-teams/setting-permissions-for-deleting-or-transferring-repositories.md deleted file mode 100644 index 9558d46a870a..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/setting-permissions-for-deleting-or-transferring-repositories.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Setting permissions for deleting or transferring repositories -intro: 'You can allow organization members with admin permissions to a repository to delete or transfer the repository, or limit the ability to delete or transfer repositories to organization owners only.' -redirect_from: - - /articles/setting-permissions-for-deleting-or-transferring-repositories-in-your-organization/ - - /articles/setting-permissions-for-deleting-or-transferring-repositories -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Owners can set permissions for deleting or transferring repositories in an organization. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.member-privileges %} -5. Under "Repository deletion and transfer", select or deselect **Allow members to delete or transfer repositories for this organization**. -![Checkbox to allow members to delete repositories](/assets/images/help/organizations/disallow-members-to-delete-repositories.png) -6. Click **Save**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/setting-team-creation-permissions-in-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/setting-team-creation-permissions-in-your-organization.md deleted file mode 100644 index e03a18920cd2..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/setting-team-creation-permissions-in-your-organization.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Setting team creation permissions in your organization -intro: You can allow all organization members to create teams or limit team creation to organization owners. -redirect_from: - - /articles/setting-team-creation-permissions-in-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Organization owners can set team creation permissions. - -If you do not set team creation permissions, all organization members will be able to create teams by default. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.member-privileges %} -5. Under "Team creation rules", select or deselect **Allow members to create teams**. -![Checkbox to allow members to create teams](/assets/images/help/organizations/allow-members-to-create-teams.png) -6. Click **Save**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/setting-your-teams-profile-picture.md b/content/github/setting-up-and-managing-organizations-and-teams/setting-your-teams-profile-picture.md deleted file mode 100644 index 0e6723cfd81e..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/setting-your-teams-profile-picture.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Setting your team's profile picture -intro: 'Team maintainers and organization owners can set a profile picture for a team, which is displayed on the team''s page.' -redirect_from: - - /articles/setting-your-team-s-profile-picture - - /articles/setting-your-teams-profile-picture -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -Unless you set a profile picture for a team, the team profile picture will match the organization's profile picture. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team_settings %} -5. Click **Upload new picture** and select your desired profile picture. -![Upload new picture](/assets/images/help/teams/org-team-profile-picture-upload.png) -6. Click and drag to crop the image as needed, then click **Set new team avatar**. -![Set new team avatar](/assets/images/help/teams/org-team-set-new-team-avatar.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/synchronizing-a-team-with-an-identity-provider-group.md b/content/github/setting-up-and-managing-organizations-and-teams/synchronizing-a-team-with-an-identity-provider-group.md deleted file mode 100644 index bc310f396946..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/synchronizing-a-team-with-an-identity-provider-group.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Synchronizing a team with an identity provider group -intro: 'You can synchronize a {% data variables.product.prodname_dotcom %} team with an identity provider (IdP) group to automatically add and remove team members.' -product: '{% data reusables.gated-features.team-synchronization %}' -permissions: 'Organization owners and team maintainers can synchronize a {% data variables.product.prodname_dotcom %} team with an IdP group.' -versions: - free-pro-team: '*' ---- - -{% data reusables.gated-features.okta-team-sync %} - -### About team synchronization - -{% data reusables.identity-and-permissions.about-team-sync %} - -You can connect up to five IdP groups to a {% data variables.product.prodname_dotcom %} team. An IdP group can be assigned to multiple {% data variables.product.prodname_dotcom %} teams without restriction. - -Once a {% data variables.product.prodname_dotcom %} team is connected to an IdP group, your IdP administrator must make team membership changes through the identity provider. You cannot manage team membership on {% data variables.product.product_name %} or using the API. - -All team membership changes made through your IdP will appear in the audit log on {% data variables.product.product_name %} as changes made by the team synchronization bot. Your IdP will send team membership data to {% data variables.product.prodname_dotcom %} once every hour. -Connecting a team to an IdP group may remove some team members. For more information, see "[Requirements for members of synchronized teams](#requirements-for-members-of-synchronized-teams)." - -Parent teams cannot synchronize with IdP groups. If the team you want to connect to an IdP group is a parent team, we recommend creating a new team or removing the nested relationships that make your team a parent team. For more information, see "[About teams](/articles/about-teams#nested-teams)," "[Creating a team](/github/setting-up-and-managing-organizations-and-teams/creating-a-team)," and "[Moving a team in your organization's hierarchy](/articles/moving-a-team-in-your-organizations-hierarchy)." - -To manage repository access for any {% data variables.product.prodname_dotcom %} team, including teams connected to an IdP group, you must make changes with {% data variables.product.product_name %}. For more information, see "[About teams](/articles/about-teams)" and "[Managing team access to an organization repository](/articles/managing-team-access-to-an-organization-repository)." - -You can also manage team synchronization with the API. For more information, see "[Team synchronization](/v3/teams/team_sync/)." - -### Requirements for members of synchronized teams - -After you connect a team to an IdP group, membership data for each team member will synchronize if the person continues to authenticate using SAML SSO with the same SSO identity on {% data variables.product.prodname_dotcom %}, and if the person remains a member of the connected IdP group. - -Existing teams or group members can be automatically removed from the team on {% data variables.product.prodname_dotcom %}. Any existing teams or group members not authenticating to the organization or enterprise account using SSO may lose access to repositories. Any existing teams or group members not in the connected IdP group may potentially lose access to repositories. - -A removed team member can be added back to a team automatically once they have authenticated to the organization or enterprise account using SSO and are moved to the connected IdP group. - -To avoid unintentionally removing team members, we recommend enforcing SAML SSO in your organization or enterprise account, creating new teams to synchronize membership data, and checking IdP group membership before synchronizing existing teams. For more information, see "[Enforcing SAML single sign-on for your organization](/articles/enforcing-saml-single-sign-on-for-your-organization)." - -If your organization is owned by an enterprise account, enabling team synchronization for the enterprise account will override your organization-level team synchronization settings. For more information, see "[Enforcing security settings in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account#managing-team-synchronization-for-organizations-in-your-enterprise-account)." - -### Prerequisites - -Before you can connect a team with an identity provider group, an organization or enterprise owner must enable team synchronization for your organization or enterprise account. For more information, see "[Managing team synchronization for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-team-synchronization-for-your-organization)" and "[Enforcing security settings in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account#managing-team-synchronization-for-organizations-in-your-enterprise-account)." - -To avoid unintentionally removing team members, visit the administrative portal for your IdP and confirm that each current team member is also in the IdP groups that you want to connect to this team. If you don't have this access to your identity provider, you can reach out to your IdP administrator. - -You must authenticate using SAML SSO. For more information, see "[Authenticating with SAML single sign-on](/articles/authenticating-with-saml-single-sign-on)." - -### Connecting an IdP group to a team - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team_settings %} -5. Under "Identity Provider Groups", use the drop-down menu, and select up to 5 identity provider groups. - ![Drop-down menu to choose identity provider groups](/assets/images/help/teams/choose-an-idp-group.png) -6. Click **Save changes**. - -### Disconnecting an IdP group from a team - -If you disconnect an IdP group from a {% data variables.product.prodname_dotcom %} team, team members that were assigned to the {% data variables.product.prodname_dotcom %} team through the IdP group will be removed from the team. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.specific_team %} -{% data reusables.organizations.team_settings %} -6. Under "Identity Provider Groups", to the right of the IdP group you want to disconnect, click {% octicon "x" aria-label="X symbol" %}. - ![Unselect a connected IdP group from the GitHub team](/assets/images/help/teams/unselect-idp-group.png) -7. Click **Save changes**. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/transferring-organization-ownership.md b/content/github/setting-up-and-managing-organizations-and-teams/transferring-organization-ownership.md deleted file mode 100644 index 3a88bb32cd1a..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/transferring-organization-ownership.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Transferring organization ownership -redirect_from: - - /articles/needs-polish-how-do-i-give-ownership-to-an-organization-to-someone-else/ - - /articles/transferring-organization-ownership -intro: 'To make someone else the owner of an organization account, you must add a new owner{% if currentVersion == "free-pro-team@latest" %}, ensure that the billing information is updated,{% endif %} and then remove yourself from the account.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -1. If you're the only member with *owner* privileges, give another organization member the owner role. For more information, see "[Appointing an organization owner](/github/setting-up-and-managing-organizations-and-teams/maintaining-ownership-continuity-for-your-organization#appointing-an-organization-owner)." -2. Contact the new owner and make sure he or she is able to [access the organization's settings](/articles/accessing-your-organization-s-settings). -{% if currentVersion == "free-pro-team@latest" %} -3. If you are currently responsible for paying for GitHub in your organization, you'll also need to have the new owner or a [billing manager](/articles/adding-a-billing-manager-to-your-organization/) update the organization's payment information. For more information, see "[Adding or editing a payment method](/articles/adding-or-editing-a-payment-method)." - - {% warning %} - - **Warning**: Removing yourself from the organization **does not** update the billing information on file for the organization account. The new owner or a billing manager must update the billing information on file to remove your credit card or PayPal information. - - {% endwarning %} - -{% endif %} -4. [Remove yourself](/articles/removing-yourself-from-an-organization) from the organization. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/upgrading-to-the-corporate-terms-of-service.md b/content/github/setting-up-and-managing-organizations-and-teams/upgrading-to-the-corporate-terms-of-service.md deleted file mode 100644 index 95b65b7aea3c..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/upgrading-to-the-corporate-terms-of-service.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Upgrading to the Corporate Terms of Service -intro: Organizations can upgrade from the Standard Terms of Service to the Corporate Terms of Service. -redirect_from: - - /articles/upgrading-to-the-corporate-terms-of-service -versions: - free-pro-team: '*' ---- - -The Standard Terms of Service is an agreement between {% data variables.product.prodname_dotcom %} and you as an individual. To enter into an agreement with {% data variables.product.prodname_dotcom %} on behalf of an entity, such as a company, non-profit, or group, organization owners can upgrade to the Corporate Terms of Service. - -1. Contact {% data variables.contact.contact_support %} to request an upgrade to the Corporate Terms of Service. They will enable a banner on your organization's dashboard that will allow you to accept the Corporate Terms of Service. -{% data reusables.dashboard.access-org-dashboard %} -3. At the top of the page, to the right of the Terms of Service banner, click **Sign now**. - ![Sign now button](/assets/images/help/organizations/sign-now-button.png) -4. Read the information about the Corporate Terms of Service, then select **Yes, I want to sign these terms on behalf of my business.** - ![Check box to sign on behalf of your business](/assets/images/help/organizations/sign-on-behalf-business.png) -5. Type the name of the company, non-profit, or group that owns the organization account. This is the entity that will enter into an agreement with {% data variables.product.prodname_dotcom %}. - ![Business name field](/assets/images/help/organizations/business-name-field.png) -6. To agree to the Corporate Terms of Service on behalf of your entity, click **Accept terms**. - ![Accept terms button](/assets/images/help/organizations/accept-terms-button.png) - -### Further reading -- "[GitHub Corporate Terms of Service](/articles/github-corporate-terms-of-service/)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/verifying-your-organizations-domain.md b/content/github/setting-up-and-managing-organizations-and-teams/verifying-your-organizations-domain.md deleted file mode 100644 index 447f9b758d9a..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/verifying-your-organizations-domain.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Verifying your organization's domain -intro: 'You can verify the domains controlled by your organization to confirm your organization''s identity on {% data variables.product.product_name %}.' -redirect_from: - - /articles/verifying-your-organization-s-domain - - /articles/verifying-your-organizations-domain -versions: - free-pro-team: '*' ---- - -To verify domains on {% data variables.product.product_name %}, you must have owner permissions in the organization. For more information, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization)." You will also need access to modify domain records with your domain hosting service. - -After verifying ownership of your organization's domains, a "Verified" badge will display on the organization's profile. If your organization is on {% data variables.product.prodname_ghe_cloud %} and has agreed to the Corporate Terms of Service, organization owners will be able to verify the identity of organization members by viewing each member's email address within the verified domain. For more information, see "[About your organization's profile page](/articles/about-your-organization-s-profile/)" and "[Upgrading to the Corporate Terms of Service](/articles/upgrading-to-the-corporate-terms-of-service)." - -To display a "Verified" badge, the website and email information shown on your organization's profile must match the verified domain or domains. If the website and email address shown on your organization's profile are hosted on different domains, you must verify both domains. - -{% note %} - -**Note:** If the email address and website shown on your organization's profile use variants of the same domain, you must verify both variants. For example, if your organization's profile shows the website `www.example.com` and the email address `info@example.com`, you would need to verify both `www.example.com` and `example.com`. - -{% endnote %} - -On {% data variables.product.prodname_ghe_cloud %}, after verifying ownership of your organization's domain, you can restrict email notifications for the organization to that domain. For more information, see "[Restricting email notifications to an approved domain](/articles/restricting-email-notifications-to-an-approved-domain)." - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.verified-domains %} -5. Click **Add a domain**. -![Add a domain button](/assets/images/help/organizations/add-a-domain-button.png) -6. In the domain field, type the domain you'd like to verify, then click **Add domain**. -![Add a domain field](/assets/images/help/organizations/add-domain-field.png) -7. Follow the instructions under **Add a DNS TXT record** to create a DNS TXT record with your domain hosting service. It may take up to 72 hours for your DNS configuration to change. Once your DNS configuration has changed, continue to the next step. -![Instructions to create a DNS txt record](/assets/images/help/organizations/create-dns-txt-record-instructions.png) - - {% tip %} - - **Tip:** You can confirm your DNS configuration has changed by running the `dig` command on the command line. In the example command, replace `ORGANIZATION` with the name of your organization, and `example.com` with the domain you'd like to verify. You should see your new TXT record listed in the command output. - - ```shell - $ dig _github-challenge-ORGANIZATION.example.com +nostats +nocomments +nocmd TXT - ``` - - {% endtip %} - -8. After confirming your TXT record is added to your DNS, navigate to the Verified domains tab in your organization's settings. You can follow steps one through four above to locate the Verified domains tab. -![Verified domains settings page with pending domain](/assets/images/help/organizations/pending-domain-verification.png) -9. Next to the domain that's pending verification, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **Continue verifying**. -![Continue verifying domain button](/assets/images/help/organizations/continue-verifying-domain.png) -10. Click **Verify domain**. -![Verify domain button](/assets/images/help/organizations/verify-domain-final-button.png) -11. Optionally, once the "Verified" badge is visible on your organization's profile page, you can delete the TXT entry from the DNS record at your domain hosting service. -![Verified badge](/assets/images/help/organizations/verified-badge.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/viewing-and-managing-a-members-saml-access-to-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/viewing-and-managing-a-members-saml-access-to-your-organization.md deleted file mode 100644 index 5806b481065f..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/viewing-and-managing-a-members-saml-access-to-your-organization.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Viewing and managing a member's SAML access to your organization -intro: 'You can view and revoke an organization member''s linked identity, active sessions, and authorized credentials.' -permissions: Organization owners can view and manage a member's SAML access to an organization. -product: '{% data reusables.gated-features.saml-sso %}' -redirect_from: - - /articles/viewing-and-revoking-organization-members-authorized-access-tokens - - /github/setting-up-and-managing-organizations-and-teams/viewing-and-revoking-organization-members-authorized-access-tokens -versions: - free-pro-team: '*' ---- - -### About SAML access to your organization - -When you enable SAML single sign-on for your organization, each organization member can link their external identity on your identity provider (IdP) to their existing {% data variables.product.product_name %} account. To access your organization's resources on {% data variables.product.product_name %}, the member must have an active SAML session in their browser. To access your organization's resources using the API or Git, the member must use a personal access token or SSH key that the member has authorized for use with your organization. - -You can view and revoke each member's linked identity, active sessions, and authorized credentials on the same page. - -### Viewing and revoking a linked identity - -{% data reusables.saml.about-linked-identities %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -{% data reusables.saml.click-person-revoke-identity %} -{% data reusables.saml.saml-identity-linked %} -{% data reusables.saml.view-sso-identity %} -{% data reusables.saml.revoke-sso-identity %} -{% data reusables.saml.confirm-revoke-identity %} - -### Viewing and revoking an active SAML session - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -{% data reusables.saml.click-person-revoke-session %} -{% data reusables.saml.saml-identity-linked %} -{% data reusables.saml.view-saml-sessions %} -{% data reusables.saml.revoke-saml-session %} - -### Viewing and revoking authorized credentials - -{% data reusables.saml.about-authorized-credentials %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -{% data reusables.saml.click-person-revoke-credentials %} -{% data reusables.saml.saml-identity-linked %} -{% data reusables.saml.view-authorized-credentials %} -{% data reusables.saml.revoke-authorized-credentials %} -{% data reusables.saml.confirm-revoke-credentials %} - -### Further reading - -- "[About identity and access management with SAML single sign-on](/articles/about-identity-and-access-management-with-saml-single-sign-on)" -- "[Viewing and managing a user's SAML access to your enterprise account](/github/setting-up-and-managing-your-enterprise-account/viewing-and-managing-a-users-saml-access-to-your-enterprise-account)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/viewing-insights-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/viewing-insights-for-your-organization.md deleted file mode 100644 index 2843057e4fc8..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/viewing-insights-for-your-organization.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Viewing insights for your organization -intro: 'Organization insights provide data about your organization''s activity, contributions, and dependencies.' -product: '{% data reusables.gated-features.org-insights %}' -redirect_from: - - /articles/viewing-insights-for-your-organization -versions: - free-pro-team: '*' ---- - -All members of an organization can view organization insights. For more information, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization)." - -You can use organization activity insights to help you better understand how members of your organization are using {% data variables.product.product_name %} to collaborate and work on code. Dependency insights can help you track, report, and act on your organization's open source usage. - -### Viewing organization activity insights - -{% note %} - -**Note:** Organization activity insights are currently in public beta and subject to change. - -{% endnote %} - -With organization activity insights you can view weekly, monthly, and yearly data visualizations of your entire organization or specific repositories, including issue and pull request activity, top languages used, and cumulative information about where your organization members spend their time. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -3. Under your organization name, click {% octicon "graph" aria-label="The bar graph icon" %} **Insights**. - ![Click the organization insights tab](/assets/images/help/organizations/org-nav-insights-tab.png) -4. Optionally, in the upper-right corner of the page, choose to view data for the last **1 week**, **1 month**, or **1 year**. - ![Choose time period to view org insights](/assets/images/help/organizations/org-insights-time-period.png) -5. Optionally, in the upper-right corner of the page, choose to view data for up to three repositories and click **Apply**. - ![Choose repositories to view org insights](/assets/images/help/organizations/org-insights-repos.png) - -### Viewing organization dependency insights -With dependency insights you can view vulnerabilities, licenses, and other important information for the open source projects your organization depends on. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -3. Under your organization name, click {% octicon "graph" aria-label="The bar graph icon" %} **Insights**. - ![Insights tab in the main organization navigation bar](/assets/images/help/organizations/org-nav-insights-tab.png) -4. To view dependencies for this organization, click **Dependencies**. - ![Dependencies tab under the main organization navigation bar](/assets/images/help/organizations/org-insights-dependencies-tab.png) -5. To view dependency insights for all your {% data variables.product.prodname_ghe_cloud %} organizations, click **My organizations**. - ![My organizations button under dependencies tab](/assets/images/help/organizations/org-insights-dependencies-my-orgs-button.png) -6. You can click the results in the **Open security advisories** and **Licenses** graphs to filter by a vulnerability status, a license, or a combination of the two. - ![My organizations vulnerabilities and licences graphs](/assets/images/help/organizations/org-insights-dependencies-graphs.png) -7. You can click on {% octicon "package" aria-label="The package icon" %} **dependents** next to each vulnerability to see which dependents in your organization are using each library. - ![My organizations vulnerable dependents](/assets/images/help/organizations/org-insights-dependencies-vulnerable-item.png) - - ### Further reading - - - "[About organizations](/github/setting-up-and-managing-organizations-and-teams/about-organizations)" - - "[Exploring the dependencies of a repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository)" - - "[Changing the visibility of your organization's dependency insights](/github/setting-up-and-managing-organizations-and-teams/changing-the-visibility-of-your-organizations-dependency-insights)" - - "[Enforcing a policy on dependency insights in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-a-policy-on-dependency-insights-in-your-enterprise-account)" diff --git a/content/github/setting-up-and-managing-organizations-and-teams/viewing-people-with-access-to-your-repository.md b/content/github/setting-up-and-managing-organizations-and-teams/viewing-people-with-access-to-your-repository.md deleted file mode 100644 index 31cae8b7d195..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/viewing-people-with-access-to-your-repository.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Viewing people with access to your repository -intro: 'Organization owners can view people’s access to a repository within an organization. Owners of organizations using {% data variables.product.prodname_ghe_cloud %} or {% data variables.product.prodname_ghe_server %} can also export a CSV list of people who have access to a repository.' -redirect_from: - - /articles/viewing-people-with-access-to-your-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Administrators can use this information to help off-board people, gather data for compliance, and other general security checkups. - -![Repository people permissions list](/assets/images/help/repository/repository-permissions-list.png) - -### Viewing people with access to your repository - -{% if currentVersion == "free-pro-team@latest" %} -{% note %} - -**Note**: You can also see a combined overview of teams and people with access to your repository. For more information, see "[Managing teams and people with access to your repository](/github/administering-a-repository/managing-teams-and-people-with-access-to-your-repository)." - -{% endnote %} -{% endif %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -{% data reusables.repositories.accessing-repository-people %} - -### Exporting a list of people with access to your repository - -Owners of organizations on {% data variables.product.prodname_ghe_cloud %} or {% data variables.product.prodname_ghe_server %} can export a CSV list of people who have access to a repository. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -{% data reusables.repositories.accessing-repository-people %} -4. Click **Export CSV**. - ![People tab in the repository sidebar](/assets/images/help/repository/export-repository-permissions.png) diff --git a/content/github/setting-up-and-managing-organizations-and-teams/viewing-whether-users-in-your-organization-have-2fa-enabled.md b/content/github/setting-up-and-managing-organizations-and-teams/viewing-whether-users-in-your-organization-have-2fa-enabled.md deleted file mode 100644 index dd257564d078..000000000000 --- a/content/github/setting-up-and-managing-organizations-and-teams/viewing-whether-users-in-your-organization-have-2fa-enabled.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Viewing whether users in your organization have 2FA enabled -intro: 'You can see which organization owners, members, and outside collaborators have enabled two-factor authentication.' -redirect_from: - - /articles/viewing-whether-users-in-your-organization-have-2fa-enabled -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% note %} - -**Note:** You can require that all members{% if currentVersion == "free-pro-team@latest" %}, including, owners, billing managers and{% else %} and{% endif %} outside collaborators in your organization have two-factor authentication enabled. For more information, see "[Requiring two-factor authentication in your organization](/articles/requiring-two-factor-authentication-in-your-organization)." - -{% endnote %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -4. To view organization members, including organization owners, who have enabled or disabled two-factor authentication, on the right, click **2FA**, and select **Enabled** or **Disabled**. - ![filter-org-members-by-2fa](/assets/images/help/2fa/filter-org-members-by-2fa.png) -5. To view outside collaborators in your organization, under the "People" tab, click **Outside collaborators**. -![select-outside-collaborators](/assets/images/help/organizations/select-outside-collaborators.png) -6. To view which outside collaborators have enabled or disabled two-factor authentication, on the right, click **2FA**, and select **Enabled** or **Disabled**. -![filter-outside-collaborators-by-2fa](/assets/images/help/2fa/filter-outside-collaborators-by-2fa.png) - -### Further reading - -- "[Viewing people's roles in an organization](/articles/viewing-people-s-roles-in-an-organization)" diff --git a/content/github/setting-up-and-managing-your-enterprise-account/about-enterprise-accounts.md b/content/github/setting-up-and-managing-your-enterprise-account/about-enterprise-accounts.md deleted file mode 100644 index 0486b796b5cc..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/about-enterprise-accounts.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: About enterprise accounts -intro: 'With {% data variables.product.prodname_ghe_cloud %}, you can create an enterprise account to enable collaboration between your organizations, while giving administrators a single point of visibility and management.' -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /articles/about-github-business-accounts/ - - /articles/about-enterprise-accounts -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About enterprise accounts - -An enterprise account allows you to manage multiple {% data variables.product.prodname_dotcom %} organizations and {% data variables.product.prodname_ghe_server %} instances. Your enterprise account must have a handle, like an organization or personal account on {% data variables.product.prodname_dotcom %}. Enterprise administrators can manage settings and preferences, like: - -- Member access and management (organization members, outside collaborators) -- Billing and usage ({% data variables.product.prodname_ghe_server %} instances, user licenses, {% data variables.large_files.product_name_short %} packs) -- Security (single sign-on, two factor authentication) -- Requests and support bundle sharing with {% data variables.contact.enterprise_support %} - -{% data reusables.enterprise-accounts.enterprise-accounts-billing %} - -For more information about the differences between {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}, see "[{% data variables.product.prodname_dotcom %}'s products](/articles/githubs-products)." To upgrade to {% data variables.product.prodname_enterprise %} or to get started with an enterprise account, contact {% data variables.contact.contact_enterprise_sales %}. - -For more information about member access and management, see "[Managing users in your enterprise account](/articles/managing-users-in-your-enterprise-account)." - -For more information about managing enterprise accounts using the GraphQL API, see "[Enterprise accounts](/v4/guides/managing-enterprise-accounts)." - -{% if currentVersion == "free-pro-team@latest" %} - -### Managing organizations linked to your enterprise account - -Organizations are shared accounts where groups of people can collaborate across many projects at once. Owners can manage member access to the organization's data and projects with sophisticated security and administrative features. For more information, see "[About organizations](/articles/about-organizations)." - -Enterprise owners can create organizations and link them to the enterprise. After you add organizations to your enterprise account, you can manage and enforce the organizations' policies. Specific enforcement options vary by setting; generally, you can choose to enforce a single policy for every organization in your enterprise account or allow owners to set policy on the organization level. - -For more information, see "[Managing organizations in your enterprise account](/articles/managing-organizations-in-your-enterprise-account)" and "[Setting policies for organizations in your enterprise account](/articles/setting-policies-for-organizations-in-your-enterprise-account)." - -{% endif %} - -### Managing {% data variables.product.prodname_ghe_server %} licenses linked to your enterprise account - -{% data reusables.enterprise-accounts.admin-managing-licenses %} diff --git a/content/github/setting-up-and-managing-your-enterprise-account/adding-organizations-to-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/adding-organizations-to-your-enterprise-account.md deleted file mode 100644 index 044a76924f5e..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/adding-organizations-to-your-enterprise-account.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Adding organizations to your enterprise account -intro: You can create new organizations to manage within your enterprise account. -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /articles/adding-organizations-to-your-enterprise-account -versions: - free-pro-team: '*' ---- - -Enterprise owners can create new organizations within an enterprise account's settings. - -To add an organization to your enterprise account, you must create the organization from within the enterprise account settings. You cannot transfer existing organizations into an enterprise account. - -### Creating an organization in your enterprise account - -New organizations you create within your enterprise account settings are included in your enterprise account's {% data variables.product.prodname_ghe_cloud %} subscription. For more information on collaborating in organizations, see "[Setting up and managing organizations and teams](/categories/setting-up-and-managing-organizations-and-teams)." - -Enterprise owners who create an organization owned by the enterprise account automatically become organization owners. For more information about organization owners, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization)." - -{% data reusables.enterprise-accounts.access-enterprise %} -2. On the **Organizations** tab, above the list of organizations, click **New organization**. - ![New organization button](/assets/images/help/business-accounts/enterprise-account-add-org.png) -3. Under "Organization name", type a name for your organization. - ![Field to type a new organization name](/assets/images/help/business-accounts/new-organization-name-field.png) -4. Click **Create organization**. -5. Under "Invite owners", type the username of a person you'd like to invite to become an organization owner, then click **Invite**. - ![Organization owner search field and Invite button](/assets/images/help/business-accounts/invite-org-owner.png) -6. Click **Finish**. diff --git a/content/github/setting-up-and-managing-your-enterprise-account/configuring-saml-single-sign-on-and-scim-for-your-enterprise-account-using-okta.md b/content/github/setting-up-and-managing-your-enterprise-account/configuring-saml-single-sign-on-and-scim-for-your-enterprise-account-using-okta.md deleted file mode 100644 index f92218422e8d..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/configuring-saml-single-sign-on-and-scim-for-your-enterprise-account-using-okta.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Configuring SAML single sign-on and SCIM for your enterprise account using Okta -intro: 'You can use Security Assertion Markup Language (SAML) single sign-on (SSO) and System for Cross-domain Identity Management (SCIM) with Okta to automatically manage access to your enterprise account on {% data variables.product.product_name %}.' -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /github/setting-up-and-managing-your-enterprise-account/configuring-single-sign-on-and-scim-for-your-enterprise-account-using-okta -versions: - free-pro-team: '*' ---- - -{% data reusables.enterprise-accounts.user-provisioning-release-stage %} - -### About SAML and SCIM with Okta - -You can control access to your enterprise account in {% data variables.product.product_name %} and other web applications from one central interface by configuring the enterprise account to use SAML SSO and SCIM with Okta, an Identity Provider (IdP). - -SAML SSO controls and secures access to enterprise account resources like organizations, repositories, issues, and pull requests. SCIM automatically adds, manages, and removes members' access to organizations owned by your enterprise account when you make changes in Okta. For more information, see "[Enforcing security settings in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account)." - -After you enable SCIM, the following provisioning features are available for any users that you assign your {% data variables.product.prodname_ghe_cloud %} application to in Okta. - -| Feature | Description | -| --- | --- | -| Push New Users | New users created in Okta will gain access to enterprise account resources, and can optionally be automatically invited to any of the organizations owned by the enterprise account | -| Push User Deactivation | Deactivating a user in Okta will revoke the user's access to the enterprise account resources and remove the user from all organizations owned by the enterprise account | -| Push Profile Updates | Updates made to the user's profile in Okta will be pushed to the user’s enterprise account metadata | -| Reactivate Users | Reactivating the user in Okta will re-enable the user's access to the enterprise account and will optionally send email invitations for the user to rejoin any of the organizations owned by the enterprise account that the user was previously a member of | - -### Prerequisites - -{% data reusables.saml.use-classic-ui %} - -### Adding the {% data variables.product.prodname_ghe_cloud %} application in Okta - -{% data reusables.saml.okta-admin-button %} -{% data reusables.saml.okta-dashboard-click-applications %} -{% data reusables.saml.add-okta-application %} -{% data reusables.saml.search-ghec-okta %} -1. Click "{% data variables.product.prodname_ghe_cloud %} - Enterprise Accounts". -1. Click **Add**. -1. Optionally, to the right of "Application label", type a descriptive name for the application. - ![Application label field](/assets/images/help/saml/okta-application-label.png) -1. To the right of "{% data variables.product.prodname_dotcom %} Enterprises", type the name of your enterprise account. For example, if your enterprise account's URL is `https://github.com/enterprises/octo-corp`, type `octo-corp`. - ![GitHub Enterprises field](/assets/images/help/saml/okta-github-enterprises.png) -1. Click **Done**. - -### Enabling and testing SAML SSO - -{% data reusables.saml.okta-admin-button %} -{% data reusables.saml.okta-dashboard-click-applications %} -{% data reusables.saml.click-enterprise-account-application %} -{% data reusables.saml.assign-yourself-to-okta %} -{% data reusables.saml.okta-sign-on-tab %} -1. To the right of Settings, click **Edit**. -1. Under "Configured SAML Attributes", to the right of "groups", use the drop-down menu and select **Matches regex**. -1. To the right of the drop-down menu, type `.*.*`. -1. Click **Save**. -{% data reusables.saml.okta-view-setup-instructions %} -1. Enable SAML for your enterprise account using the information in the setup instructions. For more information, see "[Enforcing security settings in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account#enabling-saml-single-sign-on-for-organizations-in-your-enterprise-account)." - -### Creating groups in Okta - -1. In Okta, create a group to match each organization owned by your enterprise account. The name of each group must match the account name of the organization (not the organization's display name). For example, if the URL of the organization is `https://github.com/octo-org`, name the group `octo-org`. -1. Assign the application you created for your enterprise account to each group. {% data variables.product.prodname_dotcom %} will receive all `groups` data for each user. -1. Add users to groups based on the organizations you'd like users to belong to. - -### Configuring user provisioning with SCIM in Okta - -{% data reusables.scim.enterprise-account-scim %} - -To configure user provisioning with SCIM in Okta, you must authorize an OAuth application to create a token that Okta can use to authenticate to {% data variables.product.product_name %} on your behalf. The okta-oauth application is created by Okta in partnership with {% data variables.product.prodname_dotcom %}. - -{% data reusables.saml.okta-admin-button %} -{% data reusables.saml.okta-dashboard-click-applications %} -{% data reusables.saml.click-enterprise-account-application %} -{% data reusables.saml.okta-provisioning-tab %} -{% data reusables.saml.okta-configure-api-integration %} -{% data reusables.saml.okta-enable-api-integration %} -1. Click **Authenticate with Github Enterprise Cloud - Enterprise Accounts**. - ![Button to authenticate with {% data variables.product.prodname_dotcom %}](/assets/images/help/business-accounts/authenticate-with-github-button.png) -1. To the right of your enterprise account's name, click **Grant**. -1. Click **Authorize okta-oauth**. -{% data reusables.saml.okta-save-provisioning %} -{% data reusables.saml.okta-edit-provisioning %} -1. Under the name of the application, click **Push Groups**. - ![Push Groups tab](/assets/images/help/business-accounts/okta-push-groups-tab.png) -1. Use the **Push Groups** drop-down menu, and select **Find groups by name**. - ![Push Groups drop-down menu](/assets/images/help/business-accounts/okta-push-groups-drop-down.png) -1. Add a push group for each organization in your enterprise account that you want to enable user provisioning for. - - Under "PUSH GROUPS BY NAME", search for a group that corresponds to an organization owned by your enterprise account, then click the group in the search results. - - To the right of the group name, in the "Match results & push action" drop-down menu, verify that **Create Group** is selected. - ![Match result drop-down with Create Group selected](/assets/images/help/saml/create-group-okta.png) - - Click **Save**. - - Repeat for each organization. -1. Under the name of your application, click **Assignments**. - ![Assignments tab](/assets/images/help/business-accounts/okta-assignments-tab.png) -1. If you see **Provision users**, users who were a member of an Okta group before you added a push group for that group have not been provisioned. To send SCIM data to {% data variables.product.product_name %} for these users, click **Provision users**. - -### Enabling SAML user provisioning - -After you enable SCIM provisioning and deprovisioning, you can optionally enable SAML user provisioning and deprovisioning. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.security-tab %} -1. Under "SAML User Provisioning", select **Enable SAML user provisioning**. - ![Checkbox to enable user provisioning with SAML](/assets/images/help/business-accounts/user-provisioning.png) -1. Click **Save**. -1. Optionally, enable SAML user deprovisioning. - - Select **Enable SAML user deprovisioning**, then click **Save**. - ![Checkbox to enable user deprovisioning with SAML](/assets/images/help/business-accounts/saml-deprovisioning.png) - - Read the warning, then click **Enable SAML deprovisioning**. - ![Enable SAML deprovisioning button](/assets/images/help/business-accounts/saml-deprovisioning-confirm.png) diff --git a/content/github/setting-up-and-managing-your-enterprise-account/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-enterprise-account.md deleted file mode 100644 index 7a75d8c7a30d..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-enterprise-account.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Configuring the retention period for GitHub Actions artifacts and logs in your enterprise account -intro: 'Enterprise owners can configure the retention period for {% data variables.product.prodname_actions %} artifacts and logs in an enterprise account.' -product: '{% data reusables.gated-features.enterprise-accounts %}' -miniTocMaxHeadingLevel: 4 -versions: - free-pro-team: '*' - enterprise-server: '>=2.23' ---- - -{% data reusables.actions.about-artifact-log-retention %} - -## Setting the retention period for an enterprise - -{% data reusables.enterprise_site_admin_settings.access-settings %} -{% data reusables.enterprise_site_admin_settings.business %} -{% data reusables.enterprise-accounts.policies-tab %} -{% data reusables.enterprise-accounts.actions-tab %} -{% data reusables.github-actions.change-retention-period-for-artifacts-logs %} diff --git a/content/github/setting-up-and-managing-your-enterprise-account/configuring-webhooks-for-organization-events-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/configuring-webhooks-for-organization-events-in-your-enterprise-account.md deleted file mode 100644 index a0f7833340bc..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/configuring-webhooks-for-organization-events-in-your-enterprise-account.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Configuring webhooks for organization events in your enterprise account -intro: Enterprise owners can configure webhooks for events in organizations owned by an enterprise account. -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /articles/configuring-webhooks-for-organization-events-in-your-business-account/ - - /articles/configuring-webhooks-for-organization-events-in-your-enterprise-account -versions: - free-pro-team: '*' ---- - -You can configure webhooks to receive events from organizations owned by your enterprise account. For more information about webhooks, see "[Webhooks](/webhooks/)." - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.hooks-tab %} -4. Next to "Webhooks", click **Add webhook**. - ![Add webhook button in the Webhooks sidebar](/assets/images/help/business-accounts/add-webhook-button.png) -5. Type a payload URL, then optionally customize the configuration. For more information, see "[Creating webhooks](/webhooks/creating/#creating-webhooks)." - ![Fields for payload URL and other customization options](/assets/images/help/business-accounts/webhook-payload-url-and-customization-options.png) -6. Under "Which events would you like to trigger this webhook?", select **Let me select individual events**. - ![Selecting individual events](/assets/images/help/business-accounts/webhook-let-me-select-individual-events.png) -7. Select one or more enterprise account events for your webhook to receive. For more information, see "[Event types and payloads](/webhooks/event-payloads/)." - ![Selecting individual events](/assets/images/help/business-accounts/webhook-selected-events.png) -8. To receive the selected events for triggered webhooks, select **Active**. - ![Selecting individual events](/assets/images/help/business-accounts/webhook-active.png) -9. Click **Add webhook**. diff --git a/content/github/setting-up-and-managing-your-enterprise-account/enforcing-a-policy-on-dependency-insights-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/enforcing-a-policy-on-dependency-insights-in-your-enterprise-account.md deleted file mode 100644 index 52526f6a0429..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/enforcing-a-policy-on-dependency-insights-in-your-enterprise-account.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Enforcing a policy on dependency insights in your enterprise account -intro: 'Across all organizations owned by your enterprise account, you can allow or disallow members to see dependency insights, or allow owners to administer the setting on the organization level.' -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /articles/enforcing-a-policy-on-dependency-insights/ - - /articles/enforcing-a-policy-on-dependency-insights-in-your-enterprise-account -versions: - free-pro-team: '*' ---- - -In organizations owned by an enterprise account, organization owners can set limitations for viewing organization dependency insights. For more information, see "[Changing the visibility of your organization's dependency insights](/articles/changing-the-visibility-of-your-organizations-dependency-insights)." - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -3. In the enterprise account sidebar, click **Organizations**. - ![Organizations tab in the enterprise account sidebar](/assets/images/help/business-accounts/settings-policies-org-tab.png) -4. Under "Organization policies", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -5. Under "Organization policies", use the drop-down menu and choose a policy. - ![Drop-down menu with organization policies options](/assets/images/help/business-accounts/organization-policy-drop-down.png) diff --git a/content/github/setting-up-and-managing-your-enterprise-account/enforcing-github-actions-policies-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/enforcing-github-actions-policies-in-your-enterprise-account.md deleted file mode 100644 index b41a2ff40b8d..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/enforcing-github-actions-policies-in-your-enterprise-account.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Enforcing GitHub Actions policies in your enterprise account -intro: 'Enterprise owners can disable, enable, and limit {% data variables.product.prodname_actions %} for an enterprise account.' -product: '{% data reusables.gated-features.enterprise-accounts %}' -miniTocMaxHeadingLevel: 4 -versions: - free-pro-team: '*' ---- - -### About {% data variables.product.prodname_actions %} permissions for your enterprise account - -By default, {% data variables.product.prodname_actions %} is enabled in all organizations owned by an enterprise account. You can choose to disable {% data variables.product.prodname_actions %} for all organizations owned by an enterprise account, or only allow specified organizations. You can also limit the use of public actions, so that people can only use local actions that exist in your organization. - -For more information about {% data variables.product.prodname_actions %}, see "[About {% data variables.product.prodname_actions %}](/actions/getting-started-with-github-actions/about-github-actions)." - -### Managing {% data variables.product.prodname_actions %} permissions for your enterprise account - -You can disable all workflows for an enterprise or set a policy that configures which actions can be used in an organization. - -{% data reusables.actions.actions-use-policy-settings %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -{% data reusables.enterprise-accounts.actions-tab %} -{% data reusables.actions.enterprise-actions-permissions %} -1. Click **Save**. - -### Allowing specific actions to run - -{% data reusables.actions.allow-specific-actions-intro %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -{% data reusables.enterprise-accounts.actions-tab %} -1. Under **Policies**, select **Allow specific actions** and add your required actions to the list. - ![Add actions to allow list](/assets/images/help/organizations/enterprise-actions-policy-allow-list.png) - -### Enabling workflows for private repository forks - -{% data reusables.github-actions.private-repository-forks-overview %} - -#### Configuring the private fork policy for your enterprise account - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -{% data reusables.enterprise-accounts.actions-tab %} -{% data reusables.github-actions.private-repository-forks-configure %} diff --git a/content/github/setting-up-and-managing-your-enterprise-account/enforcing-project-board-policies-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/enforcing-project-board-policies-in-your-enterprise-account.md deleted file mode 100644 index 382e0c0a2922..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/enforcing-project-board-policies-in-your-enterprise-account.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Enforcing project board policies in your enterprise account -intro: 'Enterprise owners can enforce certain project board policies for all organizations owned by an enterprise account, or allow policies to be set in each organization.' -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /articles/enforcing-project-board-settings-for-organizations-in-your-business-account/ - - /articles/enforcing-project-board-policies-for-organizations-in-your-enterprise-account/ - - /articles/enforcing-project-board-policies-in-your-enterprise-account -versions: - free-pro-team: '*' ---- - -For more information about types of project boards, see "[About project boards](/articles/about-project-boards)." - -### Enforcing a policy for organization-wide project boards - -Across all organizations owned by your enterprise account, you can enable or disable organization-wide project boards, or allow owners to administer the setting on the organization level. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -{% data reusables.enterprise-accounts.projects-tab %} -4. Under "Organization projects", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -5. Under "Organization projects", use the drop-down menu and choose a policy. - ![Drop-down menu with organization project board policy options](/assets/images/help/business-accounts/organization-projects-policy-drop-down.png) - -### Enforcing a policy for repository project boards - -Across all organizations owned by your enterprise account, you can enable or disable repository-level project boards, or allow owners to administer the setting on the organization level. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -{% data reusables.enterprise-accounts.projects-tab %} -4. Under "Repository projects", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -5. Under "Repository projects", use the drop-down menu and choose a policy. - ![Drop-down menu with repository project board policy options](/assets/images/help/business-accounts/repository-projects-policy-drop-down.png) diff --git a/content/github/setting-up-and-managing-your-enterprise-account/enforcing-repository-management-policies-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/enforcing-repository-management-policies-in-your-enterprise-account.md deleted file mode 100644 index 1dae91bd4651..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/enforcing-repository-management-policies-in-your-enterprise-account.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Enforcing repository management policies in your enterprise account -intro: 'Enterprise owners can enforce certain repository management policies for all organizations owned by an enterprise account, or allow policies to be set in each organization.' -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /articles/enforcing-repository-management-settings-for-organizations-in-your-business-account/ - - /articles/enforcing-repository-management-policies-for-organizations-in-your-enterprise-account/ - - /articles/enforcing-repository-management-policies-in-your-enterprise-account -versions: - free-pro-team: '*' ---- - -For more information, see "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)." - -### Enforcing a policy on default repository permissions - -Across all organizations owned by your enterprise account, you can set a default repository permission level (none, read, write, or admin) for organization members, or allow owners to administer the setting on the organization level. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -4. On the **Repository policies** tab, under "Default permissions", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -5. Under "Default permissions", use the drop-down menu and choose a policy. - ![Drop-down menu with repository permissions policy options](/assets/images/help/business-accounts/repository-permissions-policy-drop-down.png) - -### Enforcing a policy on creating repositories - -Across all organizations owned by your enterprise account, you can allow members to create repositories, restrict repository creation to organization owners, or allow owners to administer the setting on the organization level. If you allow members to create repositories, you can choose whether members can create any combination of public, private, and internal repositories. {% data reusables.repositories.internal-repo-default %} For more information about internal repositories, see "[Creating an internal repository](/articles/creating-an-internal-repository)." - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -3. On the **Repository policies** tab, under "Repository creation", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -{% data reusables.enterprise-accounts.repo-creation-policy %} -{% data reusables.enterprise-accounts.repo-creation-types %} -6. Click **Save**. - -### Enforcing a policy on forking private or internal repositories - -Across all organizations owned by your enterprise account, you can allow people with access to a private or internal repository to fork the repository, never allow forking of private or internal repositories, or allow owners to administer the setting on the organization level. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -3. On the **Repository policies** tab, under "Repository forking", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -4. Under "Repository forking", use the drop-down menu and choose a policy. - ![Drop-down menu with repository forking policy options](/assets/images/help/business-accounts/repository-forking-policy-drop-down.png) - -### Enforcing a policy on inviting outside collaborators to repositories - -Across all organizations owned by your enterprise account, you can allow members to invite outside collaborators to repositories, restrict outside collaborator invitations to organization owners, or allow owners to administer the setting on the organization level. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -3. On the **Repository policies** tab, under "Repository invitations", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -4. Under "Repository invitations", use the drop-down menu and choose a policy. - ![Drop-down menu with outside collaborator invitation policy options](/assets/images/help/business-accounts/repository-invitation-policy-drop-down.png) - -### Enforcing a policy on changing repository visibility - -Across all organizations owned by your enterprise account, you can allow members with admin permissions to change a repository's visibility, restrict repository visibility changes to organization owners, or allow owners to administer the setting on the organization level. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -3. On the **Repository policies** tab, under "Repository visibility change", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -{% data reusables.enterprise-accounts.repository-visibility-policy %} - -### Enforcing a policy on deleting or transferring repositories - -Across all organizations owned by your enterprise account, you can allow members with admin permissions to delete or transfer a repository, restrict repository deletion and transfers to organization owners, or allow owners to administer the setting on the organization level. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -3. On the **Repository policies** tab, under "Repository deletion and transfer", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -{% data reusables.enterprise-accounts.repository-deletion-policy %} - -### Enforcing a policy on deleting issues - -Across all organizations owned by your enterprise account, you can allow members with admin permissions to delete issues in a repository, restrict issue deletion to organization owners, or allow owners to administer the setting on the organization level. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -3. On the **Repository policies** tab, under "Repository issue deletion", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -4. Under "Repository issue deletion", use the drop-down menu and choose a policy. - ![Drop-down menu with issue deletion policy options](/assets/images/help/business-accounts/repository-issue-deletion-policy-drop-down.png) - -### Enforcing a policy on the default branch name - -Across all organizations owned by your enterprise account, you can set the default branch name for any new repositories that members create. You can choose to enforce that default branch name across all organizations or allow individual organizations to set a different one. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -3. On the **Repository policies** tab, under "Default branch name", enter the default branch name that new repositories should use. - ![Text box for entering default branch name](/assets/images/help/business-accounts/default-branch-name-text.png) -4. Optionally, to enforce the default branch name for all organizations in the enterprise, select **Enforce across this enterprise**. - ![Enforcement checkbox](/assets/images/help/business-accounts/default-branch-name-enforce.png) -5. Click **Update**. - ![Update button](/assets/images/help/business-accounts/default-branch-name-update.png) diff --git a/content/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account.md deleted file mode 100644 index 1ebfe339c816..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account.md +++ /dev/null @@ -1,214 +0,0 @@ ---- -title: Enforcing security settings in your enterprise account -intro: Enterprise owners can enforce certain security policies for all organizations owned by an enterprise account. -product: '{% data reusables.gated-features.enterprise-accounts %}' -miniTocMaxHeadingLevel: 4 -redirect_from: - - /articles/enforcing-security-settings-for-organizations-in-your-business-account/ - - /articles/enforcing-security-settings-for-organizations-in-your-enterprise-account/ - - /articles/enforcing-security-settings-in-your-enterprise-account - - /github/articles/managing-allowed-ip-addresses-for-organizations-in-your-enterprise-account -versions: - free-pro-team: '*' ---- - -### Requiring two-factor authentication for organizations in your enterprise account - -Enterprise owners can require that organization members, billing managers, and outside collaborators in all organizations owned by an enterprise account use two-factor authentication to secure their personal accounts. - -Before you can require 2FA for all organizations owned by your enterprise account, you must enable two-factor authentication for your own account. For more information, see "[Securing your account with two-factor authentication (2FA)](/articles/securing-your-account-with-two-factor-authentication-2fa/)." - -{% warning %} - -**Warnings:** - -- When you require two-factor authentication for your enterprise account, members, outside collaborators, and billing managers (including bot accounts) in all organizations owned by your enterprise account who do not use 2FA will be removed from the organization and lose access to its repositories. They will also lose access to their forks of the organization's private repositories. You can reinstate their access privileges and settings if they enable two-factor authentication for their personal account within three months of their removal from your organization. For more information, see "[Reinstating a former member of your organization](/articles/reinstating-a-former-member-of-your-organization)." -- Any organization owner, member, billing manager, or outside collaborator in any of the organizations owned by your enterprise account who disables 2FA for their personal account after you've enabled required two-factor authentication will automatically be removed from the organization. -- If you're the sole owner of a enterprise account that requires two-factor authentication, you won't be able to disable 2FA for your personal account without disabling required two-factor authentication for the enterprise account. - -{% endwarning %} - -Before you require use of two-factor authentication, we recommend notifying organization members, outside collaborators, and billing managers and asking them to set up 2FA for their accounts. Organization owners can see if members and outside collaborators already use 2FA on each organization's People page. For more information, see "[Viewing whether users in your organization have 2FA enabled](/articles/viewing-whether-users-in-your-organization-have-2fa-enabled)." - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.security-tab %} -4. Under "Two-factor authentication", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -5. Under "Two-factor authentication", select **Require two-factor authentication for all organizations in your business**, then click **Save**. - ![Checkbox to require two-factor authentication](/assets/images/help/business-accounts/require-2fa-checkbox.png) -6. If prompted, read the information about members and outside collaborators who will be removed from the organizations owned by your enterprise account. To confirm the change, type your enterprise account's name, then click **Remove members & require two-factor authentication**. - ![Confirm two-factor enforcement box](/assets/images/help/business-accounts/confirm-require-2fa.png) -7. Optionally, if any members or outside collaborators are removed from the organizations owned by your enterprise account, we recommend sending them an invitation to reinstate their former privileges and access to your organization. Each person must enable two-factor authentication before they can accept your invitation. - -### Managing allowed IP addresses for organizations in your enterprise account - -Enterprise owners can restrict access to assets owned by organizations in an enterprise account by configuring an allow list for specific IP addresses. {% data reusables.identity-and-permissions.ip-allow-lists-example-and-restrictions %} - -{% data reusables.identity-and-permissions.ip-allow-lists-cidr-notation %} - -{% data reusables.identity-and-permissions.ip-allow-lists-enable %} - -You can also configure allowed IP addresses for an individual organization. For more information, see "[Managing allowed IP addresses for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-allowed-ip-addresses-for-your-organization)." - -#### Adding an allowed IP address - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.security-tab %} -{% data reusables.identity-and-permissions.ip-allow-lists-add-ip %} -{% data reusables.identity-and-permissions.ip-allow-lists-add-description %} -{% data reusables.identity-and-permissions.ip-allow-lists-add-entry %} - -#### Enabling allowed IP addresses - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.security-tab %} -3. Under "IP allow list", select **Enable IP allow list**. - ![Checkbox to allow IP addresses](/assets/images/help/security/enable-ip-allowlist-enterprise-checkbox.png) -4. Click **Save**. - -#### Editing an allowed IP address - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.security-tab %} -{% data reusables.identity-and-permissions.ip-allow-lists-edit-entry %} -{% data reusables.identity-and-permissions.ip-allow-lists-edit-ip %} -{% data reusables.identity-and-permissions.ip-allow-lists-edit-description %} -8. Click **Update**. - -#### Deleting an allowed IP address - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.security-tab %} -{% data reusables.identity-and-permissions.ip-allow-lists-delete-entry %} -{% data reusables.identity-and-permissions.ip-allow-lists-confirm-deletion %} - -#### Using {% data variables.product.prodname_actions %} with an IP allow list - -{% data reusables.github-actions.ip-allow-list-self-hosted-runners %} - -### Enabling SAML single sign-on for organizations in your enterprise account - -{% data reusables.saml.dotcom-saml-explanation %} For more information, see "[About identity and access management with SAML single sign-on](/github/setting-up-and-managing-organizations-and-teams/about-identity-and-access-management-with-saml-single-sign-on)." - -Enterprise owners can enable SAML SSO and centralized authentication through a SAML IdP across all organizations owned by an enterprise account. After you enable SAML SSO for your enterprise account, SAML SSO is enabled by default for all organizations owned by your enterprise account. All members will be required to authenticate using SAML SSO to gain access to the organizations where they are a member, and enterprise owners will be required to authenticate using SAML SSO when accessing an enterprise account. - -{% data reusables.saml.about-saml-access-enterprise-account %} For more information, see "[Viewing and managing a user's SAML access to your enterprise account](/github/setting-up-and-managing-your-enterprise-account/viewing-and-managing-a-users-saml-access-to-your-enterprise-account)." - -{% data reusables.saml.saml-supported-idps %} - -{% data reusables.scim.enterprise-account-scim %} If you're not participating in the private beta, SCIM is not supported for enterprise accounts. For more information, see "[Managing user provisioning for organizations in your enterprise account](#managing-user-provisioning-for-organizations-in-your-enterprise-account)." - -{% note %} - -**Note:** Enabling authentication with SAML single sign-on for your enterprise account will override any existing organization-level SAML configurations. - -{% endnote %} - -For more detailed information about how to enable SAML using Okta, see "[Configuring SAML single sign-on and SCIM for your enterprise account using Okta](/github/setting-up-and-managing-your-enterprise-account/configuring-saml-single-sign-on-and-scim-for-your-enterprise-account-using-okta). - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.security-tab %} -4. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -5. Under "SAML single sign-on", select **Enable SAML authentication**. - ![Checkbox for enabling SAML SSO](/assets/images/help/business-accounts/enable-saml-auth-enterprise.png) -6. In the **Sign on URL** field, type the HTTPS endpoint of your IdP for single sign-on requests. This value is available in your IdP configuration. -![Field for the URL that members will be forwarded to when signing in](/assets/images/help/saml/saml_sign_on_url_business.png) -7. Optionally, in the **Issuer** field, type your SAML issuer's name. This verifies the authenticity of sent messages. -![Field for the SAML issuer's name](/assets/images/help/saml/saml_issuer.png) -8. Under **Public Certificate**, paste a certificate to verify SAML responses. -![Field for the public certificate from your identity provider](/assets/images/help/saml/saml_public_certificate.png) -9. To verify the integrity of the requests from your SAML issuer, click {% octicon "pencil" aria-label="The edit icon" %}. Then in the Signature Method and Digest Method drop-downs, choose the hashing algorithm used by your SAML issuer. -![Drop-downs for the Signature Method and Digest method hashing algorithms used by your SAML issuer](/assets/images/help/saml/saml_hashing_method.png) -10. Before enabling SAML SSO for your enterprise, click **Test SAML configuration** to ensure that the information you've entered is correct. ![Button to test SAML configuration before enforcing](/assets/images/help/saml/saml_test.png) -11. Click **Save**. - -### Managing user provisioning for organizations in your enterprise account - -Enterprise owners can manage organization membership in an enterprise account directly from an identity provider (IdP). - -{% data reusables.enterprise-accounts.user-provisioning-release-stage %} - -{% data reusables.saml.about-user-provisioning-enterprise-account %} - -{% data reusables.scim.enterprise-account-scim %} Optionally, you can also enable SAML provisioning and, separately, deprovisioning. - -If you configure SCIM in your IdP, each time you make changes to group membership in your IdP, your IdP will make a SCIM call to {% data variables.product.prodname_dotcom %} to update the corresponding organization's membership. If you enable SAML provisioning, each time an enterprise member accesses a resource protected by your enterprise account's SAML configuration, that SAML assertion will trigger provisioning. - -For each SCIM call or SAML assertion, {% data variables.product.product_name %} will check the IdP groups the user belongs to and perform the following operations: - -- If the user is a member of an IdP group that corresponds to an organization owned by your enterprise account, and the user is not currently a member of that organization, add the user to the organization (SAML assertion) or send the user an email invitation to join the organization (SCIM call). -- Cancel any existing invitations for the user to join an organization owned by your enterprise account. - -For each SCIM call and, if you enable SAML deprovisioning, each SAML assertion, {% data variables.product.product_name %} will also perform the following operation: - -- If the user is not a member of an IdP group that corresponds to an organization owned by your enterprise account, and the user is currently a member of that organization, remove the user from the organization. - -If deprovisioning removes the last remaining owner from an organization, the organization will become unowned. Enterprise owners can assume ownership of unowned organizations. For more information, see "[Managing unowned organizations in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/managing-unowned-organizations-in-your-enterprise-account)." - -To enable user provisioning for your enterprise account using Okta, see "[Configuring SAML single sign-on and SCIM for your enterprise account using Okta](/github/setting-up-and-managing-your-enterprise-account/configuring-saml-single-sign-on-and-scim-for-your-enterprise-account-using-okta)." - -### Managing team synchronization for organizations in your enterprise account - -Enterprise owners can enable team synchronization between an IdP and {% data variables.product.product_name %} to allow organization owners and team maintainers to connect teams in the organizations owned by your enterprise account with IdP groups. - -{% data reusables.identity-and-permissions.about-team-sync %} - -You can use team synchronization with your enterprise account with Azure AD. - -{% data reusables.identity-and-permissions.sync-team-with-idp-group %} - -{% data reusables.identity-and-permissions.team-sync-disable %} - -You can also configure and manage team synchronization for an individual organization. For more information, see "[Managing team synchronization for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-team-synchronization-for-your-organization)." - -#### Prerequisites - -Before you can enable team synchronization for your enterprise account: - - You or your Azure AD administrator must be a Global administrator or a Privileged Role administrator in Azure AD. - - You must enable SAML single sign-on for organizations in your enterprise account with your supported IdP. For more information, see "[Enabling SAML single sign-on for organizations in your enterprise account](#enabling-saml-single-sign-on-for-organizations-in-your-enterprise-account)." - - You must authenticate to your enterprise account using SAML SSO and the supported IdP. For more information, see "[Authenticating with SAML single sign-on](/articles/authenticating-with-saml-single-sign-on)." - -#### Managing team synchronization for Azure AD - -{% data reusables.identity-and-permissions.team-sync-azure-permissions %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.security-tab %} -{% data reusables.identity-and-permissions.team-sync-confirm-saml %} -{% data reusables.identity-and-permissions.enable-team-sync-azure %} -{% data reusables.identity-and-permissions.team-sync-confirm %} -7. Review the identity provider tenant information you want to connect to your enterprise account, then click **Approve**. - ![Pending request to enable team synchronization to a specific IdP tenant with option to approve or cancel request](/assets/images/help/teams/approve-team-synchronization.png) -8. To disable team synchronization, click **Disable team synchronization**. - ![Disable team synchronization](/assets/images/help/teams/disable-team-synchronization.png) - -### Managing your enterprise account's SSH certificate authorities - -Enterprise owners can add and delete an enterprise account's SSH certificate authorities (CA). - -By adding an SSH CA to your enterprise account, you can allow members of any organization owned by your enterprise account to access that organization's repositories using SSH certificates you provide. {% data reusables.organizations.can-require-ssh-cert %} For more information, see "[About SSH certificate authorities](/articles/about-ssh-certificate-authorities)." - -#### Adding an SSH certificate authority - -{% data reusables.organizations.add-extension-to-cert %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.security-tab %} -{% data reusables.organizations.new-ssh-ca %} -{% data reusables.organizations.require-ssh-cert %} - -#### Deleting an SSH certificate authority - -Deleting a CA cannot be undone. If you want to use the same CA in the future, you'll need to upload the CA again. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.security-tab %} -{% data reusables.organizations.delete-ssh-ca %} diff --git a/content/github/setting-up-and-managing-your-enterprise-account/enforcing-team-policies-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/enforcing-team-policies-in-your-enterprise-account.md deleted file mode 100644 index 008d1a211536..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/enforcing-team-policies-in-your-enterprise-account.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Enforcing team policies in your enterprise account -intro: 'Enterprise owners can enforce certain team policies for all organizations owned by an enterprise account, or allow policies to be set in each organization.' -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /articles/enforcing-team-settings-for-organizations-in-your-business-account/ - - /articles/enforcing-team-policies-for-organizations-in-your-enterprise-account/ - - /articles/enforcing-team-policies-in-your-enterprise-account -versions: - free-pro-team: '*' ---- - -### Enforcing a policy for team discussions - -Across all organizations owned by your enterprise account, you can enable or disable team discussions, or allow owners to administer the setting on the organization level. For more information, see "[About team discussions](/articles/about-team-discussions/)." - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.policies-tab %} -3. In the enterprise account sidebar, click **Teams**. - ![Teams tab in the enterprise account sidebar](/assets/images/help/business-accounts/settings-teams-tab.png) -4. Under "Team discussions", review the information about changing the setting. {% data reusables.enterprise-accounts.view-current-policy-config-orgs %} -5. Under "Team discussions", use the drop-down menu and choose a policy. - ![Drop-down menu with team discussion policy options](/assets/images/help/business-accounts/team-discussion-policy-drop-down.png) diff --git a/content/github/setting-up-and-managing-your-enterprise-account/index.md b/content/github/setting-up-and-managing-your-enterprise-account/index.md deleted file mode 100644 index 647d15530f21..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/index.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Setting up and managing your enterprise account -shortTitle: Your enterprise account -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /categories/setting-up-and-managing-your-enterprise-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /managing-your-enterprise-account %} - {% link_in_list /about-enterprise-accounts %} - {% link_in_list /viewing-the-subscription-and-usage-for-your-enterprise-account %} - {% link_in_list /managing-licenses-for-visual-studio-subscription-with-github-enterprise %} -{% topic_link_in_list /managing-users-in-your-enterprise-account %} - {% link_in_list /roles-for-an-enterprise-account %} - {% link_in_list /inviting-people-to-manage-your-enterprise-account %} - {% link_in_list /viewing-people-in-your-enterprise-account %} - {% link_in_list /viewing-and-managing-a-users-saml-access-to-your-enterprise-account %} -{% topic_link_in_list /managing-organizations-in-your-enterprise-account %} - {% link_in_list /adding-organizations-to-your-enterprise-account %} - {% link_in_list /managing-unowned-organizations-in-your-enterprise-account %} - {% link_in_list /viewing-the-audit-logs-for-organizations-in-your-enterprise-account %} - {% link_in_list /configuring-webhooks-for-organization-events-in-your-enterprise-account %} -{% topic_link_in_list /setting-policies-for-organizations-in-your-enterprise-account %} - {% link_in_list /enforcing-repository-management-policies-in-your-enterprise-account %} - {% link_in_list /enforcing-project-board-policies-in-your-enterprise-account %} - {% link_in_list /enforcing-team-policies-in-your-enterprise-account %} - {% link_in_list /enforcing-security-settings-in-your-enterprise-account %} - {% link_in_list /configuring-saml-single-sign-on-and-scim-for-your-enterprise-account-using-okta %} - {% link_in_list /enforcing-a-policy-on-dependency-insights-in-your-enterprise-account %} - {% link_in_list /enforcing-github-actions-policies-in-your-enterprise-account %} - {% link_in_list /configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-enterprise-account %} diff --git a/content/github/setting-up-and-managing-your-enterprise-account/inviting-people-to-manage-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/inviting-people-to-manage-your-enterprise-account.md deleted file mode 100644 index 8258e32fc338..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/inviting-people-to-manage-your-enterprise-account.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Inviting people to manage your enterprise account -intro: You can invite people to become enterprise owners or billing managers in your enterprise account. You can also remove enterprise owners or billing managers who no longer need access to the enterprise account. -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /articles/inviting-people-to-collaborate-in-your-business-account/ - - /articles/inviting-people-to-manage-your-enterprise-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About inviting people to manage your enterprise account - -{% data reusables.enterprise-accounts.enterprise-administrators %} For more information, see "[Roles for an enterprise account](/articles/roles-for-an-enterprise-account)." - -{% tip %} - -**Tip:** For more information on managing users within an organization owned by your enterprise account, see "[Managing membership in your organization](/articles/managing-membership-in-your-organization)" and "[Managing people's access to your organization with roles](/articles/managing-peoples-access-to-your-organization-with-roles)." - -{% endtip %} - -### Inviting an enterprise administrator to your enterprise account - -Only enterprise owners can invite other people to become enterprise administrators. - -After you invite someone to join the enterprise account, they must accept the emailed invitation before they can access the enterprise account. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.people-tab %} -3. In the left sidebar, click **Administrators**. - ![Administrators tab in the left sidebar](/assets/images/help/business-accounts/administrators-tab.png) -4. Above the list of administrators, click **Invite admin**. - ![Invite admin button above the list of enterprise owners](/assets/images/help/business-accounts/invite-admin-button.png) -5. Type the username, full name, or email address of the person you want to invite to become an enterprise administrator, then select the appropriate person from the results. - ![Modal box with field to type a person's username, full name, or email address, and Invite button](/assets/images/help/business-accounts/invite-admins-modal-button.png) -6. Select **Owner** or **Billing Manager**. - ![Modal box with role choices](/assets/images/help/business-accounts/invite-admins-roles.png) -7. Click **Send Invitation**. - ![Send invitation button](/assets/images/help/business-accounts/invite-admins-send-invitation.png) - -### Removing an enterprise administrator from your enterprise account - -Only enterprise owners can remove other enterprise administrators from the enterprise account. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.people-tab %} -3. Next to the username of the person you'd like to remove, click {% octicon "gear" aria-label="The Settings gear" %}, then click **Remove owner** or **Remove billing manager**. - ![Settings gear with menu option to remove an enterprise administrator](/assets/images/help/business-accounts/remove-admin.png) - -### Further reading - -- "[Roles for an enterprise account](/articles/roles-for-an-enterprise-account)" diff --git a/content/github/setting-up-and-managing-your-enterprise-account/managing-licenses-for-visual-studio-subscription-with-github-enterprise.md b/content/github/setting-up-and-managing-your-enterprise-account/managing-licenses-for-visual-studio-subscription-with-github-enterprise.md deleted file mode 100644 index 3df2fc4ee2bf..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/managing-licenses-for-visual-studio-subscription-with-github-enterprise.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Managing licenses for Visual Studio subscription with GitHub Enterprise -intro: 'You can manage {% data variables.product.prodname_enterprise %} licensing for {% data variables.product.prodname_vss_ghe %}.' -redirect_from: - - /github/setting-up-and-managing-your-enterprise-account/managing-licenses-for-the-github-enterprise-and-visual-studio-bundle - - /github/articles/about-the-github-and-visual-studio-bundle - - /articles/about-the-github-and-visual-studio-bundle -versions: - free-pro-team: '*' ---- - -### About {% data variables.product.prodname_vss_ghe %} - -{% data variables.product.prodname_vss_ghe %} is a combined offering from Microsoft that allows a subscriber to use both {% data variables.product.prodname_enterprise %} and {% data variables.product.prodname_vs %}. {% data variables.product.prodname_vss_ghe %} is available from Microsoft under the terms of the Microsoft Enterprise Agreement. For more information, see [{% data variables.product.prodname_vss_ghe %}](https://visualstudio.microsoft.com/subscriptions/visual-studio-github/) on the {% data variables.product.prodname_vs %} website. - -After you assign a license for {% data variables.product.prodname_vss_ghe %} to a subscriber, the subscriber will use the {% data variables.product.prodname_enterprise %} portion of the license by joining an organization in your enterprise account with a user account on {% data variables.product.prodname_dotcom_the_website %}. - -For more information about {% data variables.product.prodname_enterprise %}, see "[{% data variables.product.company_short %}'s products](/github/getting-started-with-github/githubs-products#github-enterprise)." For more information about accounts on {% data variables.product.prodname_dotcom_the_website %}, see "[Types of {% data variables.product.prodname_dotcom %} accounts](/github/getting-started-with-github/types-of-github-accounts)." - -### Prerequisites - -1. After you buy {% data variables.product.prodname_vss_ghe %}, contact {% data variables.contact.contact_enterprise_sales %} and mention "{% data variables.product.prodname_vss_ghe %}." You'll work with the Sales team to create an enterprise account on {% data variables.product.prodname_dotcom_the_website %}. If you already have an enterprise account on {% data variables.product.prodname_dotcom_the_website %}, or if you're not sure, please tell our Sales team. - -2. Assign licenses for {% data variables.product.prodname_vss_ghe %} to subscribers in {% data variables.product.prodname_vss_admin_portal_with_url %}. For more information about assigning licenses, see [Manage {% data variables.product.prodname_vs %} subscriptions with {% data variables.product.prodname_enterprise %}](https://docs.microsoft.com/en-us/visualstudio/subscriptions/assign-github) in the Microsoft Docs. - -3. On {% data variables.product.prodname_dotcom_the_website %}, create at least one organization owned by your enterprise account. For more information, see "[Adding organizations to your enterprise account](/github/setting-up-and-managing-your-enterprise-account/adding-organizations-to-your-enterprise-account)." - -4. The subscriber must create a user account on {% data variables.product.prodname_dotcom_the_website %}, and the email address for the account must be the same email address as the email address in the {% data variables.product.prodname_vs %} portal. For more information, see "[Signing up for {% data variables.product.prodname_dotcom %}](/github/getting-started-with-github/signing-up-for-github)" and "[Managing email preferences](/github/setting-up-and-managing-your-github-user-account/managing-email-preferences)." - -### Inviting a subscriber to use {% data variables.product.prodname_enterprise %} - -To use the {% data variables.product.prodname_enterprise %} portion of the license, the subscriber must join an organization owned by your enterprise account on {% data variables.product.prodname_dotcom_the_website %}. Organization owners can invite new members to an organization. For more information, see "[Inviting users to join your organization](/github/setting-up-and-managing-organizations-and-teams/inviting-users-to-join-your-organization)." - -### Viewing {% data variables.product.prodname_enterprise %} licensing - -After assigning a license for {% data variables.product.prodname_vss_ghe %} in {% data variables.product.prodname_vss_admin_portal_with_url %}, you can view the number of {% data variables.product.prodname_enterprise %} licenses available to your enterprise account. For more information, see "[Viewing the subscription and usage for your enterprise account](/github/setting-up-and-managing-your-enterprise-account/viewing-the-subscription-and-usage-for-your-enterprise-account)." - -You can also see pending {% data variables.product.prodname_enterprise %} invitations to subscribers in {% data variables.product.prodname_vss_admin_portal_with_url %}. The list of pending invitations includes subscribers who are not yet members of at least one organization in your enterprise account. For more information, see "[Viewing people in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/viewing-people-in-your-enterprise-account#viewing-members-and-outside-collaborators)." - -### Further reading - -- [Introducing Visual Studio subscriptions with GitHub Enterprise](https://docs.microsoft.com/en-us/visualstudio/subscriptions/access-github) in the Microsoft Docs diff --git a/content/github/setting-up-and-managing-your-enterprise-account/managing-organizations-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/managing-organizations-in-your-enterprise-account.md deleted file mode 100644 index 9bce247ef165..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/managing-organizations-in-your-enterprise-account.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Managing organizations in your enterprise account -product: '{% data reusables.gated-features.enterprise-accounts %}' -mapTopic: true -redirect_from: - - /articles/managing-organizations-in-your-enterprise-account -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-your-enterprise-account/managing-unowned-organizations-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/managing-unowned-organizations-in-your-enterprise-account.md deleted file mode 100644 index b25780dad298..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/managing-unowned-organizations-in-your-enterprise-account.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Managing unowned organizations in your enterprise account -intro: You can become an owner of an organization in your enterprise account that currently has no owners. -product: '{% data reusables.gated-features.enterprise-accounts %}' -permissions: Enterprise owners can manage unowned organizations in an enterprise account. -versions: - free-pro-team: '*' ---- - -If you enable user deprovisioning to manage organization membership in your enterprise account, you could end up with an organization that has no organization owners. For more information, see "[Enforcing security settings in your enterprise account](/github/setting-up-and-managing-your-enterprise-account/enforcing-security-settings-in-your-enterprise-account#managing-user-provisioning-for-organizations-in-your-enterprise-account)." - -{% data reusables.enterprise-accounts.access-enterprise %} -2. To the right of the search field, click **X unowned**. - ![Button to view unowned organizations](/assets/images/help/business-accounts/unowned-organizations-button.png) -3. To the right of the organization you want to assume ownership of, click **Become an owner**. - ![Become an owner button](/assets/images/help/business-accounts/become-an-owner-button.png) -4. Read the warning, then click **Become an owner**. - ![Become an owner button](/assets/images/help/business-accounts/become-an-owner-confirmation.png) diff --git a/content/github/setting-up-and-managing-your-enterprise-account/managing-users-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/managing-users-in-your-enterprise-account.md deleted file mode 100644 index 9db378da9d5f..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/managing-users-in-your-enterprise-account.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing users in your enterprise account -product: '{% data reusables.gated-features.enterprise-accounts %}' -mapTopic: true -redirect_from: - - /articles/managing-users-in-your-enterprise-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-your-enterprise-account/managing-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/managing-your-enterprise-account.md deleted file mode 100644 index 348926c13c18..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/managing-your-enterprise-account.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing your enterprise account -product: '{% data reusables.gated-features.enterprise-accounts %}' -mapTopic: true -redirect_from: - - /articles/managing-your-enterprise-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-your-enterprise-account/roles-for-an-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/roles-for-an-enterprise-account.md deleted file mode 100644 index 767a7cc16d1f..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/roles-for-an-enterprise-account.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Roles for an enterprise account -intro: 'To control access to your enterprise account''s settings and data, you can give different roles to people in the enterprise account.' -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /articles/permission-levels-for-a-business-account/ - - /articles/roles-for-an-enterprise-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -For more information about adding people to your enterprise account, see "[Inviting people to manage your enterprise account](/articles/inviting-people-to-manage-your-enterprise-account)." - -### About roles for an enterprise account - -Enterprise accounts come with a set of administrator roles that you can assign to users of your enterprise. Each administrator role maps to business functions and provides permissions to do specific tasks within the enterprise account. - -{% data reusables.enterprise-accounts.enterprise-administrators %} - -### Enterprise owner - -Enterprise owners have complete control over the enterprise account and can take every action, including: -- Managing administrators -- Adding and removing organizations to and from the enterprise -- Managing enterprise settings -- Enforcing policy across organizations -- Managing billing settings - -Enterprise owners cannot access organization settings or content unless they are made an organization owner or given direct access to an organization-owned repository. Similarly, owners of organizations in your enterprise account do not have access to the enterprise account itself unless you make them enterprise owners. - -You can add as many enterprise owners as you'd like to your enterprise account. Enterprise owners must have a personal account on {% data variables.product.prodname_dotcom %}. As a best practice, we recommend making only a few people in your company enterprise owners, to reduce the risk to your business. - -### Enterprise members - -Members of organizations owned by your enterprise account are also automatically members of the enterprise account. Members can collaborate in organizations and may be organization owners, but members cannot access or configure enterprise account settings, including billing settings. - -People in your enterprise account may have different levels of access to the various organizations owned by your enterprise account and to repositories within those organizations. You can view the resources that each person has access to. For more information, see "[Viewing people in your enterprise account](/articles/viewing-people-in-your-enterprise-account)." - -For more information about organization-level permissions, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization)." - -People with outside collaborator access to repositories owned by your organization are also listed in your enterprise account's People tab, but are not enterprise members and do not have any access to the enterprise account. For more information about outside collaborators, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization#outside-collaborators)." - -### Billing manager - -Billing managers only have access to your enterprise account's billing settings. Billing managers for your enterprise account can: -- View and manage user licenses, {% data variables.large_files.product_name_short %} packs and other billing settings -- View a list of billing managers -- Add or remove other billing managers - -Billing managers do not have access to organizations or repositories in your enterprise account, and cannot add or remove enterprise owners. Billing managers must have a personal account on {% data variables.product.prodname_dotcom %}. - -### Further reading - -- "[About enterprise accounts](/articles/about-enterprise-accounts)" diff --git a/content/github/setting-up-and-managing-your-enterprise-account/setting-policies-for-organizations-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/setting-policies-for-organizations-in-your-enterprise-account.md deleted file mode 100644 index 4d664620adb3..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/setting-policies-for-organizations-in-your-enterprise-account.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Setting policies for organizations in your enterprise account -product: '{% data reusables.gated-features.enterprise-accounts %}' -mapTopic: true -redirect_from: - - /articles/setting-policies-for-organizations-in-your-enterprise-account -versions: - free-pro-team: '*' ---- - diff --git a/content/github/setting-up-and-managing-your-enterprise-account/viewing-and-managing-a-users-saml-access-to-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/viewing-and-managing-a-users-saml-access-to-your-enterprise-account.md deleted file mode 100644 index 3a06b317dd32..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/viewing-and-managing-a-users-saml-access-to-your-enterprise-account.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Viewing and managing a user's SAML access to your enterprise account -intro: 'You can view and revoke an enterprise member''s linked identity, active sessions, and authorized credentials.' -permissions: Enterprise owners can view and manage a member's SAML access to an organization. -product: '{% data reusables.gated-features.enterprise-accounts %}' -versions: - free-pro-team: '*' ---- - -### About SAML access to your enterprise account - -When you enable SAML single sign-on for your enterprise account, each enterprise member can link their external identity on your identity provider (IdP) to their existing {% data variables.product.product_name %} account. {% data reusables.saml.about-saml-access-enterprise-account %} - -### Viewing and revoking a linked identity - -{% data reusables.saml.about-linked-identities %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.people-tab %} -{% data reusables.saml.click-person-revoke-identity %} -{% data reusables.saml.saml-identity-linked %} -{% data reusables.saml.view-sso-identity %} -{% data reusables.saml.revoke-sso-identity %} -{% data reusables.saml.confirm-revoke-identity %} - -### Viewing and revoking an active SAML session - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.people-tab %} -{% data reusables.saml.click-person-revoke-session %} -{% data reusables.saml.saml-identity-linked %} -{% data reusables.saml.view-saml-sessions %} -{% data reusables.saml.revoke-saml-session %} - -### Viewing and revoking authorized credentials - -{% data reusables.saml.about-authorized-credentials %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.people-tab %} -{% data reusables.saml.click-person-revoke-credentials %} -{% data reusables.saml.saml-identity-linked %} -{% data reusables.saml.view-authorized-credentials %} -{% data reusables.saml.revoke-authorized-credentials %} -{% data reusables.saml.confirm-revoke-credentials %} - -### Further reading - -- "[Viewing and managing a member's SAML access to your organization](/github/setting-up-and-managing-organizations-and-teams/viewing-and-managing-a-members-saml-access-to-your-organization)" diff --git a/content/github/setting-up-and-managing-your-enterprise-account/viewing-people-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/viewing-people-in-your-enterprise-account.md deleted file mode 100644 index 15634af8e301..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/viewing-people-in-your-enterprise-account.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Viewing people in your enterprise account -intro: 'To audit access to enterprise-owned resources or user license usage, enterprise owners can view every administrator and member of the enterprise account.' -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /articles/viewing-people-in-your-enterprise-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Viewing enterprise owners and billing managers - -You can view enterprise owners and billing managers, as well as a list of pending invitations to become owners and billing managers. You can filter the list of enterprise administrators by role. You can find a specific person by searching for their username or full name. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.people-tab %} -{% data reusables.enterprise-accounts.administrators-tab %} -1. Optionally, to view a list of pending invitations, click **_NUMBER_ pending**. - !["NUMBER pending" button to the right of search and filter options](/assets/images/help/enterprises/administrators-pending.png) - -### Viewing members and outside collaborators - -You can view the number of pending members and outside collaborators. You can filter the list of members by deployment ({% data variables.product.prodname_ghe_cloud %} or {% data variables.product.prodname_ghe_server %}), role, and organization. You can filter the list of outside collaborators by the visibility of the repositories the collaborator has access to. You can find a specific person by searching for their username or display name. - -You can view all the {% data variables.product.prodname_ghe_cloud %} organizations and {% data variables.product.prodname_ghe_server %} instances that a member belongs to, and which repositories an outside collaborator has access to, by clicking on the person's name. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.people-tab %} -1. Optionally, to view a list of outside collaborators rather than the list of members, click **Outside collaborators**. - ![Outside collaborators tab on the Organization members page](/assets/images/help/business-accounts/outside-collaborators-tab.png) -1. Optionally, to view a list of pending invitations, click **_NUMBER_ pending**. - !["NUMBER pending" button to the right of search and filter options](/assets/images/help/enterprises/members-pending.png) - -### Further reading - -- "[Roles for an enterprise account](/articles/roles-for-an-enterprise-account)" diff --git a/content/github/setting-up-and-managing-your-enterprise-account/viewing-the-audit-logs-for-organizations-in-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/viewing-the-audit-logs-for-organizations-in-your-enterprise-account.md deleted file mode 100644 index 661d9c5cb1e3..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/viewing-the-audit-logs-for-organizations-in-your-enterprise-account.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Viewing the audit logs for organizations in your enterprise account -intro: Enterprise owners can view aggregated actions from all of the organizations owned by an enterprise account in its audit log. -product: '{% data reusables.gated-features.enterprise-accounts %}' -redirect_from: - - /articles/viewing-the-audit-logs-for-organizations-in-your-business-account/ - - /articles/viewing-the-audit-logs-for-organizations-in-your-enterprise-account -versions: - free-pro-team: '*' ---- - -Each audit log entry shows applicable information about an event, such as: - -- The organization an action was performed in -- The user who performed the action -- Which repository an action was performed in -- The action that was performed -- Which country the action took place in -- The date and time the action occurred - -You can search the audit log for specific events and export audit log data. For more information on searching the audit log and on specific organization events, see "[Reviewing the audit log for your organization](/articles/reviewing-the-audit-log-for-your-organization)." - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.audit-log-tab %} diff --git a/content/github/setting-up-and-managing-your-enterprise-account/viewing-the-subscription-and-usage-for-your-enterprise-account.md b/content/github/setting-up-and-managing-your-enterprise-account/viewing-the-subscription-and-usage-for-your-enterprise-account.md deleted file mode 100644 index a439d17caeeb..000000000000 --- a/content/github/setting-up-and-managing-your-enterprise-account/viewing-the-subscription-and-usage-for-your-enterprise-account.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Viewing the subscription and usage for your enterprise account -intro: 'You can view the current subscription, license usage, invoices, payment history, and other billing information for your enterprise account.' -product: '{% data reusables.gated-features.enterprise-accounts %}' -permissions: 'Enterprise owners and billing managers can access and manage all billing settings for enterprise accounts. For more information about managing billing managers, see "[Inviting people to manage your enterprise account](/articles/inviting-people-to-manage-your-enterprise-account)."' -redirect_from: - - /articles/viewing-the-subscription-and-usage-for-your-enterprise-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About billing for enterprise accounts - -Enterprise accounts are currently available to {% data variables.product.prodname_enterprise %} customers paying by invoice. Billing for all of the organizations and {% data variables.product.prodname_ghe_server %} instances connected to your enterprise account are aggregated into a single bill charge for all of your paid {% data variables.product.prodname_dotcom_the_website %} services (including paid licenses in organizations, {% data variables.large_files.product_name_long %} data packs, and subscriptions for {% data variables.product.prodname_marketplace %} apps). - -### Viewing the subscription and usage for your enterprise account - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.license-tab %} -4. Under "User {% if currentVersion == "free-pro-team@latest" %}Licenses{% else %}licenses{% endif %}", view your total licenses, number of consumed licenses, and your subscription expiration date. - {% if currentVersion == "free-pro-team@latest" %}![License and subscription information in enterprise billing settings](/assets/images/help/business-accounts/billing-license-info.png){% else %} - ![License and subscription information in enterprise billing settings](/assets/images/enterprise/enterprises/enterprise-server-billing-license-info.png){% endif %} -5. To view details of the user licenses currently in use, click **View {% if currentVersion == "free-pro-team@latest" %}details{% else %}users{% endif %}**. diff --git a/content/github/setting-up-and-managing-your-github-profile/about-your-organizations-profile.md b/content/github/setting-up-and-managing-your-github-profile/about-your-organizations-profile.md deleted file mode 100644 index 67c9c114f191..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/about-your-organizations-profile.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: About your organization's profile -intro: Your organization's profile page shows basic information about your organization. -redirect_from: - - /articles/about-your-organization-s-profile - - /articles/about-your-organizations-profile -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can optionally choose to add a description, location, website, and email address for your organization, and pin important repositories to the top of the page. - -{% if currentVersion == "free-pro-team@latest" %}To confirm your organization's identity and display a "Verified" badge on your organization profile page, you must verify your organization's domains with {% data variables.product.product_name %}. For more information, see "[Verifying your organization's domain](/github/setting-up-and-managing-organizations-and-teams/verifying-your-organizations-domain)." - -![Sample verified organization profile page](/assets/images/help/profile/org_profile_verified.png) -{% else %} -![Sample organization profile page](/assets/images/help/profile/org_profile.png) -{% endif %} - -### Further reading - -- "[About organizations](/github/setting-up-and-managing-organizations-and-teams/about-organizations)" diff --git a/content/github/setting-up-and-managing-your-github-profile/about-your-profile.md b/content/github/setting-up-and-managing-your-github-profile/about-your-profile.md deleted file mode 100644 index e3fdb6223a22..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/about-your-profile.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: About your profile -intro: 'Your profile page tells people the story of your work through the repositories you''re interested in, the contributions you''ve made, and the conversations you''ve had.' -redirect_from: - - /articles/viewing-your-feeds/ - - /articles/profile-pages/ - - /articles/about-your-profile -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can add personal information about yourself in your bio, like previous places you've worked, projects you've contributed to, or interests you have that other people may like to know about. For more information, see "[Adding a bio to your profile](/articles/personalizing-your-profile/#adding-a-bio-to-your-profile)." - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} - -{% data reusables.profile.profile-readme %} - -![Profile README file displayed on profile](/assets/images/help/repository/profile-with-readme.png) - -{% endif %} - -People who visit your profile see a timeline of your contribution activity, like issues and pull requests you've opened, commits you've made, and pull requests you've reviewed. You can choose to display only public contributions or to also include private, anonymized contributions. For more information, see "[Viewing contributions on your profile page](/articles/viewing-contributions-on-your-profile-page)" or "[Publicizing or hiding your private contributions on your profile](/articles/publicizing-or-hiding-your-private-contributions-on-your-profile)." - -They can also see: - -- Repositories and gists you own or contribute to. You can showcase your best work by pinning repositories and gists to your profile. For more information, see "[Pinning items to your profile](/github/setting-up-and-managing-your-github-profile/pinning-items-to-your-profile)." -- Repositories you've starred. For more information, see "[Saving repositories with stars](/articles/saving-repositories-with-stars/)" -- An overview of your activity in organizations, repositories, and teams you're most active in. For more information, see "[Showing an overview of your activity on your profile](/articles/showing-an-overview-of-your-activity-on-your-profile).{% if currentVersion == "free-pro-team@latest" %} -- Badges that advertise your participation in programs like the {% data variables.product.prodname_arctic_vault %}, {% data variables.product.prodname_sponsors %}, or the {% data variables.product.company_short %} Developer Program. -- If you're using {% data variables.product.prodname_pro %}. For more information, see "[Personalizing your profile](/articles/personalizing-your-profile)."{% endif %} - -You can also set a status on your profile to provide information about your availability. For more information, see "[Setting a status](/articles/personalizing-your-profile/#setting-a-status)." - -### Further reading - -- "[How do I set up my profile picture?](/articles/how-do-i-set-up-my-profile-picture)" -- "[Pinning repositories to your profile](/articles/pinning-repositories-to-your-profile)" -- "[Publicizing or hiding your private contributions on your profile](/articles/publicizing-or-hiding-your-private-contributions-on-your-profile)" -- "[Viewing contributions on your profile](/articles/viewing-contributions-on-your-profile)" diff --git a/content/github/setting-up-and-managing-your-github-profile/customizing-your-profile.md b/content/github/setting-up-and-managing-your-github-profile/customizing-your-profile.md deleted file mode 100644 index 9f00c450b6f1..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/customizing-your-profile.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Customizing your profile -intro: You can customize your profile so that other people can get a better sense of who you are and the work you do. -mapTopic: true -redirect_from: - - /articles/customizing-your-profile -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-your-github-profile/index.md b/content/github/setting-up-and-managing-your-github-profile/index.md deleted file mode 100644 index 1d4f8bc8e85e..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/index.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Setting up and managing your GitHub profile -shortTitle: Profiles -redirect_from: - - /categories/setting-up-and-managing-your-github-profile -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /customizing-your-profile %} - {% link_in_list /about-your-profile %} - {% link_in_list /about-your-organizations-profile %} - {% link_in_list /personalizing-your-profile %} - {% link_in_list /managing-your-profile-readme %} - {% link_in_list /pinning-items-to-your-profile %} -{% topic_link_in_list /managing-contribution-graphs-on-your-profile %} - {% link_in_list /viewing-contributions-on-your-profile %} - {% link_in_list /showing-an-overview-of-your-activity-on-your-profile %} - {% link_in_list /publicizing-or-hiding-your-private-contributions-on-your-profile %} - {% link_in_list /sending-your-github-enterprise-server-contributions-to-your-githubcom-profile %} - {% link_in_list /why-are-my-contributions-not-showing-up-on-my-profile %} - {% link_in_list /troubleshooting-commits-on-your-timeline %} diff --git a/content/github/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile.md b/content/github/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile.md deleted file mode 100644 index 54b894dfc3c6..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing contribution graphs on your profile -intro: 'Your contributions, including commits, proposed pull requests, and opened issues, are displayed on your profile so people can easily see the work you''ve done.' -mapTopic: true -redirect_from: - - /articles/managing-contribution-graphs-on-your-profile -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-your-github-profile/managing-your-profile-readme.md b/content/github/setting-up-and-managing-your-github-profile/managing-your-profile-readme.md deleted file mode 100644 index 77af5575d8fb..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/managing-your-profile-readme.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Managing your profile README -intro: 'You can add a README to your {% data variables.product.prodname_dotcom %} profile to tell other people about yourself.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -### About your profile README - -You can share information about yourself with the community on {% data variables.product.prodname_dotcom %} by creating a profile README. {% data variables.product.prodname_dotcom %} shows your profile README at the top of your profile page. - -You decide what information to include in your profile README, so you have full control over how you present yourself on {% data variables.product.prodname_dotcom %}. Here are some examples of information that visitors may find interesting, fun, or useful in your profile README. - -- An "About me" section that describes your work and interests -- Contributions you're proud of, and context about those contributions -- Guidance for getting help in communities where you're involved - -![Profile README file displayed on profile](/assets/images/help/repository/profile-with-readme.png) - -You can format text and include emoji, images, and GIFs in your profile README by using {% data variables.product.company_short %} Flavored Markdown. For more information, see "[Getting started with writing and formatting on {% data variables.product.prodname_dotcom %}](/github/writing-on-github/getting-started-with-writing-and-formatting-on-github)." - -### Prerequisites - -GitHub will display your profile README on your profile page if all of the following are true. - -- You've created a repository with a name that matches your {% data variables.product.prodname_dotcom %} username. -- The repository is public. -- The repository contains a file named README.md in its root. -- The README.md file contains any content. - -{% note %} - -**Note**: If you created a public repository with the same name as your username before July 2020, {% data variables.product.prodname_dotcom %} won't automatically show the repository's README on your profile. You can manually share the repository's README to your profile by going to the repository on {% data variables.product.prodname_dotcom_the_website %} and clicking **Share to profile**. - -![Button to share README to profile](/assets/images/help/repository/share-to-profile.png) - -{% endnote %} - -### Adding a profile README - -{% data reusables.repositories.create_new %} -2. Under "Repository name", type a repository name that matches your {% data variables.product.prodname_dotcom %} username. For example, if your username is "octocat", the repository name must be "octocat". - ![Repository name field which matches username](/assets/images/help/repository/repo-username-match.png) -3. Optionally, add a description of your repository. For example, "My personal repository." - ![Field for entering a repository description](/assets/images/help/repository/create-personal-repository-desc.png) -4. Select **Public**. - ![Radio button to select visibility with public selected](/assets/images/help/repository/create-personal-repository-visibility.png) -{% data reusables.repositories.initialize-with-readme %} -{% data reusables.repositories.create-repo %} -7. Above the right sidebar, click **Edit README**. - ![Button to edit README file](/assets/images/help/repository/personal-repository-edit-readme.png) - - The generated README file is pre-populated with a template to give you some inspiration for your profile README. - ![README file with pre-populated template](/assets/images/help/repository/personal-repository-readme-template.png) - -### Removing a profile README - -The profile README is removed from your {% data variables.product.prodname_dotcom %} profile if any of the following apply: - -- The README file is empty or doesn't exist. -- The repository is private. -- The repository name no longer matches your username. - -The method you choose depends upon your needs, but if you're unsure, we recommend making your repository private. For steps on how to make your repository private, see ["Changing a repository's visibility."](/github/administering-a-repository/setting-repository-visibility#changing-a-repositorys-visibility) - -### Further reading - -- [About READMEs](/github/creating-cloning-and-archiving-repositories/about-readmes) diff --git a/content/github/setting-up-and-managing-your-github-profile/personalizing-your-profile.md b/content/github/setting-up-and-managing-your-github-profile/personalizing-your-profile.md deleted file mode 100644 index 168e6472b4a0..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/personalizing-your-profile.md +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Personalizing your profile -intro: 'You can share information about yourself with other {% data variables.product.product_name %} users by setting a profile picture and adding a bio to your profile.' -redirect_from: - - /articles/adding-a-bio-to-your-profile/ - - /articles/setting-your-profile-picture/ - - /articles/how-do-i-set-up-my-profile-picture/ - - /articles/gravatar-problems/ - - /articles/how-do-i-set-up-my-avatar/ - - /articles/personalizing-your-profile -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Changing your profile picture - -Your profile picture helps identify you across {% data variables.product.product_name %} in pull requests, comments, contributions pages, and graphs. - -When you sign up for an account, {% data variables.product.product_name %} provides you with a randomly generated "identicon". [Your identicon](https://github.com/blog/1586-identicons) generates from a hash of your user ID, so there's no way to control its color or pattern. You can replace your identicon with an image that represents you. - -{% tip %} - -**Tip**: Your profile picture should be a PNG, JPG, or GIF file under 1 MB in size. For the best quality rendering, we recommend keeping the image at about 500 by 500 pixels. - -{% endtip %} - -#### Setting a profile picture - -{% data reusables.user_settings.access_settings %} -2. Under **Profile Picture**, click {% octicon "pencil" aria-label="The edit icon" %} **Edit**. -![Edit profile picture](/assets/images/help/profile/edit-profile-photo.png) -3. Click **Upload a photo...**. -![Update profile picture](/assets/images/help/profile/edit-profile-picture-options.png) -3. Crop your picture. When you're done, click **Set new profile picture**. - ![Crop uploaded photo](/assets/images/help/profile/avatar_crop_and_save.png) - -#### Resetting your profile picture to the identicon - -{% data reusables.user_settings.access_settings %} -2. Under **Profile Picture**, click {% octicon "pencil" aria-label="The edit icon" %} **Edit**. -![Edit profile picture](/assets/images/help/profile/edit-profile-photo.png) -3. To revert to your identicon, click **Remove photo**. If your email address is associated with a [Gravatar](https://en.gravatar.com/), you cannot revert to your identicon. Click **Revert to Gravatar** instead. -![Update profile picture](/assets/images/help/profile/edit-profile-picture-options.png) - -### Changing your profile name - -You can change the name that is displayed on your profile. This name may also be displayed next to comments you make on private repositories owned by an organization. For more information, see "[Managing the display of member names in your organization](/articles/managing-the-display-of-member-names-in-your-organization)." - -{% data reusables.user_settings.access_settings %} -2. Under "Name", type the name you want to be displayed on your profile. - ![Name field in profile settings](/assets/images/help/profile/name-field.png) - -### Adding a bio to your profile - -Add a bio to your profile to share information about yourself with other {% data variables.product.product_name %} users. With the help of [@mentions](/articles/basic-writing-and-formatting-syntax) and emoji, you can include information about where you currently or have previously worked, what type of work you do, or even what kind of coffee you drink. - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} - -For a longer-form and more prominent way of displaying customized information about yourself, you can also use a profile README. For more information on the profile README, see "[Managing your profile README](/github/setting-up-and-managing-your-github-profile/managing-your-profile-readme)." - -{% endif %} - -{% note %} - -**Note:** - If you have the activity overview section enabled for your profile and you @mention an organization you're a member of in your profile bio, then that organization will be featured first in your activity overview. For more information, see "[Showing an overview of your activity on your profile](/articles/showing-an-overview-of-your-activity-on-your-profile)." - -{% endnote %} - -{% data reusables.user_settings.access_settings %} -2. Under **Bio**, add the content that you want displayed on your profile. The bio field is limited to 160 characters. - ![Update bio on profile](/assets/images/help/profile/bio-field.png) - - {% tip %} - - **Tip:** When you @mention an organization, only those that you're a member of will autocomplete. You can still @mention organizations that you're not a member of, like a previous employer, but the organization name won't autocomplete for you. - - {% endtip %} - -3. Click **Update profile**. - ![Update profile button](/assets/images/help/profile/update-profile-button.png) - -### Setting a status - -You can set a status to display information about your current availability on {% data variables.product.product_name %}. Your status will show: -- on your {% data variables.product.product_name %} profile page. -- when people hover over your username or avatar on {% data variables.product.product_name %}. -- on a team page for a team where you're a team member. For more information, see "[About teams](/articles/about-teams/#team-pages)." -- on the organization dashboard in an organization where you're a member. For more information, see "[About your organization dashboard](/articles/about-your-organization-dashboard/)." - -When you set your status, you can also let people know that you have limited availability on {% data variables.product.product_name %}. - -![At-mentioned username shows "busy" note next to username](/assets/images/help/profile/username-with-limited-availibilty-text.png) - -![Requested reviewer shows "busy" note next to username](/assets/images/help/profile/request-a-review-limited-availability-status.png) - -If you select the "Busy" option, when people @mention your username, assign you an issue or pull request, or request a pull request review from you, a note next to your username will show that you're busy. - -1. In the top right corner of {% data variables.product.product_name %}, click your profile photo, then click **Set your status** or, if you already have a status set, click your current status. - ![Button on profile to set your status](/assets/images/help/profile/set-status-on-profile.png) -2. To add custom text to your status, click in the text field and type a status message. - ![Field to type a status message](/assets/images/help/profile/type-a-status-message.png) -3. Optionally, to set an emoji status, click the smiley icon and select an emoji from the list. - ![Button to select an emoji status](/assets/images/help/profile/select-emoji-status.png) -4. Optionally, if you'd like to share that you have limited availability, select "Busy." - ![Busy option selected in Edit status options](/assets/images/help/profile/limited-availability-status.png) -5. Use the **Clear status** drop-down menu, and select when you want your status to expire. If you don't select a status expiration, you will keep your status until you clear or edit your status. - ![Drop down menu to choose when your status expires](/assets/images/help/profile/status-expiration.png) -6. Use the drop-down menu and click the organization you want your status visible to. If you don't select an organization, your status will be public. - ![Drop down menu to choose who your status is visible to](/assets/images/help/profile/status-visibility.png) -7. Click **Set status**. - ![Button to set status](/assets/images/help/profile/set-status-button.png) - -{% if currentVersion == "free-pro-team@latest" %} -### Displaying badges on your profile - -When you participate in certain programs, {% data variables.product.prodname_dotcom %} automatically displays a badge on your profile. - -| Badge | Program | Description | -| --- | --- | --- | -| {% octicon "north-star" aria-label="The North Star icon" %} | **{% data variables.product.prodname_arctic_vault %} Contributor** | If you authored any commit(s) on the default branch of a repository that was archived in the 2020 Arctic Vault program, you'll get an {% data variables.product.prodname_arctic_vault %} Contributor badge on your profile. For more information on the program, see [{% data variables.product.prodname_archive %}](https://archiveprogram.github.com). | -| {% octicon "cpu" aria-label="The Developer Program icon" %} | **Developer Program Member** | If you're a registered member of the GitHub Developer Program, building an app with the GitHub API, you'll get a Developer Program Member badge on your profile. For more information on the GitHub Developer Program, see [GitHub Developer](/program/). | -| {% octicon "heart-fill" aria-label="The GitHub Sponsor icon" %} | **GitHub Sponsor** | If you sponsored an open source contributor through {% data variables.product.prodname_sponsors %} you'll get a GitHub Sponsor badge on your profile. For more information, see "[Sponsoring open source contributors](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-open-source-contributors)." | -| {% octicon "star-fill" aria-label="The star icon" %} | **Pro** | If you use {% data variables.product.prodname_pro %} you'll get a PRO badge on your profile. For more information about {% data variables.product.prodname_pro %}, see "[{% data variables.product.prodname_dotcom %}'s products](/github/getting-started-with-github/githubs-products#github-pro)." | - -### Disabling badges on your profile - -You can disable some of the badges for {% data variables.product.prodname_dotcom %} programs you're participating in, including the PRO and {% data variables.product.prodname_arctic_vault %} badges. - -{% data reusables.user_settings.access_settings %} -2. Under "Profile settings", deselect the badge you want you disable. - ![Checkbox to no longer display a badge on your profile](/assets/images/help/profile/display-pro-badge-checkbox.png) -3. Click **Update preferences**. - -{% endif %} - -### Further reading - -- "[About your profile](/articles/about-your-profile)" diff --git a/content/github/setting-up-and-managing-your-github-profile/pinning-items-to-your-profile.md b/content/github/setting-up-and-managing-your-github-profile/pinning-items-to-your-profile.md deleted file mode 100644 index d9f24592fa98..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/pinning-items-to-your-profile.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Pinning items to your profile -intro: 'You can pin {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.16" %}gists and {% endif %}repositories to your profile so other people can quickly see your best work.' -redirect_from: - - /articles/pinning-repositories-to-your-profile/ - - /articles/pinning-items-to-your-profile -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can pin a public repository if you own the repository or you've made contributions to the repository. Commits to forks don't count as contributions, so you can't pin a fork that you don't own. For more information, see "[Why are my contributions not showing up on my profile?](/articles/why-are-my-contributions-not-showing-up-on-my-profile)" - -You can pin any public gist you own. - -Pinned items include important information about the item, like the number of stars a repository has received or the first few lines of a gist. Once you pin items to your profile, the "Pinned" section replaces the "Popular repositories" section on your profile. - -You can reorder the items in the "Pinned" section. In the upper-right corner of a pin, click {% octicon "grabber" aria-label="The grabber symbol" %} and drag the pin to a new location. - -{% data reusables.profile.access_profile %} -2. In the "Popular repositories" or "Pinned" section, click **Customize your pins**. - ![Customize your pins button](/assets/images/help/profile/customize-pinned-repositories.png) -3. To display a searchable list of items to pin, select "Repositories", "Gists", or both. - ![Checkboxes to select the types of items to display](/assets/images/help/profile/pinned-repo-picker.png) -4. Optionally, to make it easier to find a specific item, in the filter field, type the name of a user, organization, repository, or gist. - ![Filter items](/assets/images/help/profile/pinned-repo-search.png) -5. Select a combination of up to six repositories and/or gists to display. - ![Select items](/assets/images/help/profile/select-items-to-pin.png) -6. Click **Save pins**. - ![Save pins button](/assets/images/help/profile/save-pinned-repositories.png) - -### Further reading - -- "[About your profile](/articles/about-your-profile)" diff --git a/content/github/setting-up-and-managing-your-github-profile/publicizing-or-hiding-your-private-contributions-on-your-profile.md b/content/github/setting-up-and-managing-your-github-profile/publicizing-or-hiding-your-private-contributions-on-your-profile.md deleted file mode 100644 index ed167f98ec63..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/publicizing-or-hiding-your-private-contributions-on-your-profile.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Publicizing or hiding your private contributions on your profile -intro: 'Your {% data variables.product.product_name %} profile shows a graph of your repository contributions over the past year. You can choose to show anonymized activity from private repositories in addition to the activity shown from public repositories.' -redirect_from: - - /articles/publicizing-or-hiding-your-private-contributions-on-your-profile -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If you publicize your private contributions, people without access to the private repositories you work in won't be able to see the details of your private contributions. Instead, they'll see the number of private contributions you made on any given day. Your public contributions will include detailed information. For more information, see "[Viewing contributions on your profile page](/articles/viewing-contributions-on-your-profile-page)". - -### Changing the visibility of your private contributions - -By default, visitors only see public contributions on your profile. - -{% data reusables.profile.access_profile %} -2. Publicize or hide your private contributions on your profile: - - To publicize your private contributions, above your contributions graph, use the **Contribution settings** drop-down menu, and select **Private contributions**. Visitors will see your private contribution counts without further details. - ![Enable visitors to see private contributions from contribution settings drop-down menu](/assets/images/help/profile/private-contributions-on.png) - - To hide your private contributions, above your contributions graph, use the **Contribution settings** drop-down menu, and unselect **Private contributions.** Visitors will only see your public contributions. - ![Enable visitors to see private contributions from contribution settings drop-down menu](/assets/images/help/profile/private-contributions-off.png) - -### Further reading - -- "[Viewing contributions on your profile page](/articles/viewing-contributions-on-your-profile-page)" -- "[Why are my contributions not showing up on my profile?](/articles/why-are-my-contributions-not-showing-up-on-my-profile)" diff --git a/content/github/setting-up-and-managing-your-github-profile/sending-your-github-enterprise-server-contributions-to-your-githubcom-profile.md b/content/github/setting-up-and-managing-your-github-profile/sending-your-github-enterprise-server-contributions-to-your-githubcom-profile.md deleted file mode 100644 index a81413352bed..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/sending-your-github-enterprise-server-contributions-to-your-githubcom-profile.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Sending your GitHub Enterprise Server contributions to your GitHub.com profile -intro: 'You can highlight your work on {% data variables.product.prodname_ghe_server %} by sending the contribution counts to your {% data variables.product.prodname_dotcom_the_website %} profile.' -redirect_from: - - /articles/sending-your-github-enterprise-contributions-to-your-jackfan.us.kg-profile/ - - /articles/sending-your-github-enterprise-server-contributions-to-your-jackfan.us.kg-profile - - /articles/sending-your-github-enterprise-server-contributions-to-your-githubcom-profile -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% note %} - -**Notes:** -- The connection between your accounts is governed by GitHub's Privacy Statement and users enabling the connection agree to the GitHub's Terms of Service. - -- Before you can connect your {% data variables.product.prodname_ghe_server %} profile to your {% data variables.product.prodname_dotcom_the_website %} profile, a site administrator must enable {% data variables.product.prodname_github_connect %} and enable contribution sharing between the environments. For more information, contact your {% data variables.product.prodname_ghe_server %} site administrator. - -{% endnote %} - -Your {% data variables.product.prodname_dotcom_the_website %} profile shows {% data variables.product.prodname_ghe_server %} contribution counts from the past 90 days. {% data reusables.github-connect.sync-frequency %} Contribution counts from {% data variables.product.prodname_ghe_server %} are considered private contributions. The commit details will only show the contribution counts and that these contributions were made on {% data variables.product.prodname_ghe_server %}. - -If end users of {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_dotcom_the_website %} want to make their private contribution counts public, they can publicize their private contribution counts. For more information, see "[Publicizing or hiding your private contributions on your profile](/articles/publicizing-or-hiding-your-private-contributions-on-your-profile/)." - -For more information about how contributions are calculated, see "[Managing contribution graphs on your profile](/articles/managing-contribution-graphs-on-your-profile/)." - -{% data reusables.github-connect.access-dotcom-and-enterprise %} -{% data reusables.github-connect.access-profile-settings %} -{% data reusables.github-connect.github-connect-tab-user-settings %} -{% data reusables.github-connect.connect-dotcom-and-enterprise %} -{% data reusables.github-connect.authorize-connection %} -6. Under "Contributions", select **Send my contribution counts to {% data variables.product.prodname_dotcom_the_website %}**, then click **Update contributions.** -![Send contributions checkbox and update contributions button](/assets/images/help/settings/send-and-update-contributions.png) diff --git a/content/github/setting-up-and-managing-your-github-profile/showing-an-overview-of-your-activity-on-your-profile.md b/content/github/setting-up-and-managing-your-github-profile/showing-an-overview-of-your-activity-on-your-profile.md deleted file mode 100644 index 24978017454f..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/showing-an-overview-of-your-activity-on-your-profile.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Showing an overview of your activity on your profile -intro: You can enable the activity overview section on your profile to give viewers more context about the types of contributions you make. -redirect_from: - - /articles/showing-an-overview-of-your-activity-on-your-profile -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.profile.activity-overview-summary %} For more information, see "[Viewing contributions on your profile](/articles/viewing-contributions-on-your-profile)." - -![Activity overview section on profile](/assets/images/help/profile/activity-overview-section.png) - -{% data reusables.profile.access_profile %} -2. Above your contributions graph, use the **Contribution settings** drop-down menu, and select or unselect **Activity overview**. - ![Enable activity overview from contribution settings drop-down menu](/assets/images/help/profile/activity-overview.png) diff --git a/content/github/setting-up-and-managing-your-github-profile/troubleshooting-commits-on-your-timeline.md b/content/github/setting-up-and-managing-your-github-profile/troubleshooting-commits-on-your-timeline.md deleted file mode 100644 index 5dba6e8d94b2..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/troubleshooting-commits-on-your-timeline.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Troubleshooting commits on your timeline -intro: 'You can view details for commits from your profile''s timeline. If you don''t see commits you expect on your profile or can''t find commit details from your profile page, the commit date and the commit author date may be different.' -redirect_from: - - /articles/troubleshooting-commits-on-your-timeline -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Expected behavior to view commit details - -On your profile page's timeline, you can click the number of commits next to a specific repository to see more details about your commits from that time period, including a diff of specific changes made in a repository. - -![Commit link on profile timeline](/assets/images/help/profile/commit-link-on-profile-timeline.png) - -![Commit details](/assets/images/help/commits/commit-details.png) - -### Missing commit details from commits in your timeline - -If you click a commit link from your profile page and don't see all of the expected commits on the repository's commits page, then it's possible the commit history in Git was rewritten and the commit author date and the commit date are different. - -![Repository page with message that says "no commits found for octocat"](/assets/images/help/repository/no-commits-found.png) - -### How GitHub uses the Git author date and commit date - -In Git, the author date is when someone first creates a commit with `git commit`. The commit date is identical to the author date unless someone changes the commit date by using `git commit --amend`, a force push, a rebase, or other Git commands. - -On your profile page, the author date is used to calculate when a commit was made. Whereas, in a repository, the commit date is used to calculate when a commit was made in the repository. - -Most often, the author date and commit date are the same but you may notice that your commit sequence is out of order if the commit history is changed. For more information, see "[Why are my contributions not showing up on my profile?](/articles/why-are-my-contributions-not-showing-up-on-my-profile)" - -### Viewing missing commit details from commits in your timeline - -You can use the `git show` command with the `--pretty=fuller` flag to check if the commit author date and commit date are different. - -```shell -$ git show Your commit SHA number --pretty=fuller -commit Your commit SHA number -Author: octocat user email -AuthorDate: Wed Jul 13 02:02:30 2016 +0900 -Commit: Sally Johnson user email -CommitDate: Wed Jul 20 06:25:08 2016 +0900 -``` - -If the author and commit date are different, you can manually change the commit date in the URL to see the commit details. - -For example: -- This URL uses the author date of `2016-07-13`: - - `https://github.com/your-organization-or-personal-account/your-repository/commits?author=octocat&since=2016-07-13T00:00:00Z&until=2016-07-13T23:59:59Z` -- This URL uses the commit date of `2016-07-19`: - - `https://github.com/your-organization-or-personal-account/your-repository/commits?author=octocat&since=2016-07-19T00:00:00Z&until=2016-07-19T23:59:59Z` - -When you open the URL with the modified commit date, you can see the commit details. - -![Commit details](/assets/images/help/commits/commit-details.png) - -### Expected commits missing in your timeline - -If you're not seeing expected commits on your timeline, it's possible the commit history in Git was rewritten and the commit author date and the commit date are different. For other possibilities, see "[Why are my contributions not showing up on my profile?](/articles/why-are-my-contributions-not-showing-up-on-my-profile)" diff --git a/content/github/setting-up-and-managing-your-github-profile/viewing-contributions-on-your-profile.md b/content/github/setting-up-and-managing-your-github-profile/viewing-contributions-on-your-profile.md deleted file mode 100644 index 0402491d91f4..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/viewing-contributions-on-your-profile.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Viewing contributions on your profile -intro: 'Your {% data variables.product.product_name %} profile shows off your pinned repositories as well as a graph of your repository contributions over the past year.' -redirect_from: - - /articles/viewing-contributions/ - - /articles/viewing-contributions-on-your-profile-page/ - - /articles/viewing-contributions-on-your-profile -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Your contribution graph shows activity from public repositories. You can choose to show activity from both public and private repositories, with specific details of your activity in private repositories anonymized. For more information, see "[Publicizing or hiding your private contributions on your profile](/articles/publicizing-or-hiding-your-private-contributions-on-your-profile)." - -{% note %} - -**Note:** Commits will only appear on your contributions graph if you have [added the email address you used for your local Git configuration to your {% data variables.product.product_name %} email settings](/articles/adding-an-email-address-to-your-github-account). For more information, see "[Why are my contributions not showing up on my profile?](/articles/why-are-my-contributions-not-showing-up-on-my-profile#you-havent-added-your-local-git-commit-email-to-your-profile)" - -{% endnote %} - -### What counts as a contribution - -On your profile page, certain actions count as contributions: - -- Committing to a repository's default branch or `gh-pages` branch -- Opening an issue -- Proposing a pull request -- Submitting a pull request review{% if enterpriseServerVersions contains currentVersion %} -- Co-authoring commits in a repository's default branch or `gh-pages` branch{% endif %} - -{% data reusables.pull_requests.pull_request_merges_and_contributions %} - -### Popular repositories - -This section displays your repositories with the most watchers. Once you [pin repositories to your profile](/articles/pinning-repositories-to-your-profile), this section will change to "Pinned repositories." - -![Popular repositories](/assets/images/help/profile/profile_popular_repositories.png) - -### Pinned repositories - -This section displays up to six public repositories and can include your repositories as well as repositories you've contributed to. To easily see important details about the repositories you've chosen to feature, each repository in this section includes a summary of the work being done, the number of [stars](/articles/saving-repositories-with-stars/) the repository has received, and the main programming language used in the repository. For more information, see "[Pinning repositories to your profile](/articles/pinning-repositories-to-your-profile)." - -![Pinned repositories](/assets/images/help/profile/profile_pinned_repositories.png) - -### Contributions calendar - -Your contributions calendar shows your contribution activity. - -#### Viewing contributions from specific times - -- Click on a day's square to show the contributions made during that 24-hour period. -- Press *Shift* and click on another day's square to show contributions made during that timespan. - -{% note %} - -**Note:** You can select up to a one-month range on your contributions calendar. If you select a larger timespan, we will only display one month of contributions. - -{% endnote %} - -![Your contributions graph](/assets/images/help/profile/contributions_graph.png) - -#### How contribution event times are calculated - -Timestamps are calculated differently for commits and pull requests: -- **Commits** use the time zone information in the commit timestamp. For more information, see "[Troubleshooting commits on your timeline](/articles/troubleshooting-commits-on-your-timeline)." -- **Pull requests** and **issues** opened on {% data variables.product.product_name %} use your browser's time zone. Those opened via the API use the timestamp or time zone [specified in the API call](https://developer.github.com/changes/2014-03-04-timezone-handling-changes). - -### Activity overview - -{% data reusables.profile.activity-overview-summary %} For more information, see "[Showing an overview of your activity on your profile](/articles/showing-an-overview-of-your-activity-on-your-profile)." - -![Activity overview section on profile](/assets/images/help/profile/activity-overview-section.png) - -The organizations featured in the activity overview are prioritized according to how active you are in the organization. If you @mention an organization in your profile bio, and you’re an organization member, then that organization is prioritized first in the activity overview. For more information, see “[Mentioning people and teams](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams)” or "[Adding a bio to your profile](/articles/adding-a-bio-to-your-profile/)." - -### Contribution activity - -The contribution activity section includes a detailed timeline of your work, including commits you've made or co-authored, pull requests you've proposed, and issues you've opened. You can see your contributions over time by either clicking **Show more activity** at the bottom of your contribution activity or by clicking the year you're interested in viewing on the right side of the page. Important moments, like the date you joined an organization, proposed your first pull request, or opened a high-profile issue, are highlighted in your contribution activity. If you can't see certain events in your timeline, check to make sure you still have access to the organization or repository where the event happened. - -![Contribution activity time filter](/assets/images/help/profile/contributions_activity_time_filter.png) - -### Viewing contributions from {% data variables.product.product_location_enterprise %} on {% data variables.product.prodname_dotcom_the_website %} - -If your site administrator has enabled {% data variables.product.prodname_unified_contributions %}, you can send {% data variables.product.prodname_enterprise %} contribution counts to your {% data variables.product.prodname_dotcom_the_website %} profile. For more information, see "[Sending your {% data variables.product.prodname_ghe_server %} contributions to your {% data variables.product.prodname_dotcom_the_website %}](/articles/sending-your-github-enterprise-server-contributions-to-your-jackfan.us.kg-profile)." - -### Further reading - -- "[Viewing contributions on your profile page](/articles/viewing-contributions-on-your-profile-page)" -- "[Why are my contributions not showing up on my profile?](/articles/why-are-my-contributions-not-showing-up-on-my-profile)" -- "[Publicizing or hiding your private contributions on your profile](/articles/publicizing-or-hiding-your-private-contributions-on-your-profile)" -- "[Showing an overview of your activity on your profile](/articles/showing-an-overview-of-your-activity-on-your-profile)" diff --git a/content/github/setting-up-and-managing-your-github-profile/why-are-my-contributions-not-showing-up-on-my-profile.md b/content/github/setting-up-and-managing-your-github-profile/why-are-my-contributions-not-showing-up-on-my-profile.md deleted file mode 100644 index 46921fa50740..000000000000 --- a/content/github/setting-up-and-managing-your-github-profile/why-are-my-contributions-not-showing-up-on-my-profile.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Why are my contributions not showing up on my profile? -intro: 'Your profile contributions graph is a record of contributions you''ve made to {% data variables.product.product_name %} repositories. Contributions are timestamped according to Coordinated Universal Time (UTC) rather than your local time zone. Contributions are only counted if they meet certain criteria. In some cases, we may need to rebuild your graph in order for contributions to appear.' -redirect_from: - - /articles/why-are-my-contributions-not-showing-up-on-my-profile -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Contributions that are counted - -#### Issues and pull requests - -Issues and pull requests will appear on your contribution graph if they were opened in a standalone repository, not a fork. - -#### Commits -Commits will appear on your contributions graph if they meet **all** of the following conditions: -- The email address used for the commits is associated with your {% data variables.product.product_name %} account. -- The commits were made in a standalone repository, not a fork. -- The commits were made: - - In the repository's default branch - - In the `gh-pages` branch (for repositories with project sites) - -For more information on project sites, see "[About {% data variables.product.prodname_pages %}](/github/working-with-github-pages/about-github-pages#types-of-github-pages-sites)." - -In addition, **at least one** of the following must be true: -- You are a collaborator on the repository or are a member of the organization that owns the repository. -- You have forked the repository. -- You have opened a pull request or issue in the repository. -- You have starred the repository. - -### Common reasons that contributions are not counted - -{% data reusables.pull_requests.pull_request_merges_and_contributions %} - -#### Commit was made less than 24 hours ago - -After making a commit that meets the requirements to count as a contribution, you may need to wait for up to 24 hours to see the contribution appear on your contributions graph. - -#### You haven't added your local Git commit email to your profile - -Commits must be made with an email address that has been added to your {% data variables.product.product_name %} account{% if currentVersion == "free-pro-team@latest" %}, or the {% data variables.product.product_name %}-provided `noreply` email address provided to you in your email settings,{% endif %} in order to appear on your contributions graph.{% if currentVersion == "free-pro-team@latest" %} For more information about `noreply` email addresses, see "[Setting your commit email address](/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address#about-commit-email-addresses)."{% endif %} - -You can check the email address used for a commit by adding `.patch` to the end of a commit URL, e.g. https://github.com/octocat/octocat.github.io/commit/67c0afc1da354d8571f51b6f0af8f2794117fd10.patch: - -``` -From 67c0afc1da354d8571f51b6f0af8f2794117fd10 Mon Sep 17 00:00:00 2001 -From: The Octocat -Date: Sun, 27 Apr 2014 15:36:39 +0530 -Subject: [PATCH] updated index for better welcome message -``` - -The email address in the `From:` field is the address that was set in the [local git config settings](/articles/set-up-git). In this example, the email address used for the commit is `octocat@nowhere.com`. - -If the email address used for the commit hasn't been added to your {% data variables.product.product_name %} profile, you must [add the email address](/articles/adding-an-email-address-to-your-github-account) to your {% data variables.product.product_name %} account. Your contributions graph will be rebuilt automatically when you add the new address. - -{% warning %} - -Generic email addresses--such as `jane@computer.local`--cannot be added to {% data variables.product.product_name %} accounts. If you use such an email for your commits, the commits will not be linked to your {% data variables.product.product_name %} profile and will not show up in your contributions graph. - -{% endwarning %} - -#### Commit was not made in the default or `gh-pages` branch - -Commits are only counted if they are made in the default branch or the `gh-pages` branch (for repositories with project sites). For more information, see "[About {% data variables.product.prodname_pages %}](/github/working-with-github-pages/about-github-pages#types-of-github-pages-sites)." - -If your commits are in a non-default or non-`gh-pages` branch and you'd like them to count toward your contributions, you will need to do one of the following: -- [Open a pull request](/articles/creating-a-pull-request) to have your changes merged into the default branch or the `gh-pages` branch. -- [Change the default branch](/github/administering-a-repository/changing-the-default-branch) of the repository. - -{% warning %} - -Changing the default branch of the repository will change it for all repository collaborators. Only do this if you want the new branch to become the base against which all future pull requests and commits will be made. - -{% endwarning %} - -#### Commit was made in a fork - -Commits made in a fork will not count toward your contributions. To make them count, you must do one of the following: -- [Open a pull request](/articles/creating-a-pull-request) to have your changes merged into the parent repository. -- To detach the fork and turn it into a standalone repository on {% data variables.product.product_name %}, contact {% data variables.contact.contact_support %}. If the fork has forks of its own, let {% data variables.contact.github_support %} know if the forks should move with your repository into a new network or remain in the current network. For more information, see "[About forks](/articles/about-forks/)." - -### Further reading - -- "[Publicizing or hiding your private contributions on your profile](/articles/publicizing-or-hiding-your-private-contributions-on-your-profile)" -- "[Viewing contributions on your profile page](/articles/viewing-contributions-on-your-profile-page)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/about-organization-membership.md b/content/github/setting-up-and-managing-your-github-user-account/about-organization-membership.md deleted file mode 100644 index 580ab54a5938..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/about-organization-membership.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: About organization membership -intro: You can become a member of an organization to collaborate with coworkers or open-source contributors across many repositories at once. -redirect_from: - - /articles/about-organization-membership -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -An organization owner can invite you to join their organization as a member, billing manager, or owner. An organization owner or member with admin privileges for a repository can invite you to collaborate in one or more repositories as an outside collaborator. For more information, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization)." - -You can access organizations you're a member of on your profile page. For more information, see "[Accessing an organization](/articles/accessing-an-organization)." - -When you accept an invitation to join an organization, the organization owners may be able to see: - -- Your public profile information -- Your email address -- If you have two-factor authorization enabled -- Repositories you have access to within the organization, and your access level -- Certain activity within the organization -- Country of request origin -- Your IP address - -For more information, see the {% data variables.product.prodname_dotcom %} Privacy Statement. - - {% note %} - - **Note:** Owners are not able to view member IP addresses in the organization's audit log. In the event of a security incident, such as an account compromise or inadvertent sharing of sensitive data, organization owners may request details of access to private repositories. The information we return may include your IP address. - - {% endnote %} - -By default, your organization membership visibility is set to private. You can choose to publicize individual organization memberships on your profile. For more information, see "[Publicizing or hiding organization membership](/articles/publicizing-or-hiding-organization-membership)." - -{% if currentVersion == "free-pro-team@latest" %} - -If your organization belongs to an enterprise account, you are automatically a member of the enterprise account and visible to enterprise account owners. For more information, see "[About enterprise accounts](/articles/about-enterprise-accounts)." - -{% endif %} - -You can leave an organization at any time. For more information, see "[Removing yourself from an organization](/articles/removing-yourself-from-an-organization)." - -### Further reading - -- "[About organizations](/articles/about-organizations)" -- "[Managing your membership in organizations](/articles/managing-your-membership-in-organizations)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/about-your-personal-dashboard.md b/content/github/setting-up-and-managing-your-github-user-account/about-your-personal-dashboard.md deleted file mode 100644 index bb4bc6bfd6be..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/about-your-personal-dashboard.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: About your personal dashboard -redirect_from: - - /hidden/about-improved-navigation-to-commonly-accessed-pages-on-github/ - - /articles/opting-into-the-public-beta-for-a-new-dashboard/ - - /articles/about-your-personal-dashboard -intro: 'You can visit your personal dashboard to keep track of issues and pull requests you''re working on or following, navigate to your top repositories and team pages, stay updated on recent activities in organizations and repositories you''re subscribed to, and explore recommended repositories.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Accessing your personal dashboard - -Your personal dashboard is the first page you'll see when you sign in on {% data variables.product.product_name %}. - -To access your personal dashboard once you're signed in, click the {% octicon "mark-github" aria-label="The github octocat logo" %} in the upper-left corner of any page on {% data variables.product.product_url %}. - -### Finding your recent activity - -In the "Recent activity" section of your news feed, you can quickly find and follow up with recently updated issues and pull requests you're working on. Under "Recent activity", you can preview up to 12 recent updates made in the last two weeks. - -{% data reusables.dashboard.recent-activity-qualifying-events %} - -### Finding your top repositories and teams - -In the left sidebar of your dashboard, you can access the top repositories and teams you use. - -![list of repositories and teams from different organizations](/assets/images/help/dashboard/repositories-and-teams-from-personal-dashboard.png) - -You can also find a list of your recently visited repositories, teams, and project boards when you click into the search bar at the top of any page on {% data variables.product.product_name %}. - -### Staying updated with activity from the community - -In the "All activity" section of your news feed, you can view updates from repositories you're subscribed to and people you follow. The "All activity" section shows updates from repositories you watch or have starred, and from users you follow. - -You'll see updates in your news feed when a user you follow: -- Stars a repository. -- Follows another user. -- Creates a public repository. -- Opens an issue or pull request with "help wanted" or "good first issue" label on a repository you're watching. -- Pushes commits to a repository you watch. -- Forks a public repository. - -For more information about starring repositories and following people, see "[Saving repositories with stars](/articles/saving-repositories-with-stars/)" and "[Following people](/articles/following-people)." - -### Exploring recommended repositories - -In the "Explore repositories" section on the right side of your dashboard, you can explore recommended repositories in your communities. Recommendations are based on repositories you've starred or visited, the people you follow, and activity within repositories that you have access to.{% if currentVersion == "free-pro-team@latest" %} For more information, see "[Finding ways to contribute to open source on {% data variables.product.prodname_dotcom %}](/github/getting-started-with-github/finding-ways-to-contribute-to-open-source-on-github)."{% endif %} - -### Further reading - -- "[About your organization dashboard](/articles/about-your-organization-dashboard)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/accessing-an-organization.md b/content/github/setting-up-and-managing-your-github-user-account/accessing-an-organization.md deleted file mode 100644 index 4a8ceebe1893..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/accessing-an-organization.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Accessing an organization -intro: 'To access an organization that you''re a member of, you must sign in to your personal user account.' -redirect_from: - - /articles/error-cannot-log-in-that-account-is-an-organization/ - - /articles/cannot-log-in-that-account-is-an-organization/ - - /articles/how-do-i-access-my-organization-account/ - - /articles/accessing-an-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% tip %} - -**Tip:** Only organization owners can see and change the account settings for an organization. - -{% endtip %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} diff --git a/content/github/setting-up-and-managing-your-github-user-account/adding-an-email-address-to-your-github-account.md b/content/github/setting-up-and-managing-your-github-user-account/adding-an-email-address-to-your-github-account.md deleted file mode 100644 index c72f08f6d589..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/adding-an-email-address-to-your-github-account.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Adding an email address to your GitHub account -intro: '{% data variables.product.product_name %} allows you to add as many email addresses to your account as you like. If you set an email address in your local Git configuration, you will need to add it to your account settings in order to connect your commits to your account. For more information about your email address and commits, see "[Setting your commit email address](/articles/setting-your-commit-email-address/)."' -redirect_from: - - /articles/adding-an-email-address-to-your-github-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% if currentVersion == "free-pro-team@latest" %} - -{% note %} - -**Note**: {% data reusables.user_settings.no-verification-disposable-emails %} - -{% endnote %} - -{% endif %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.emails %} -{% data reusables.user_settings.add_and_verify_email %} -{% data reusables.user_settings.select_primary_email %} - -### Further reading - -- "[Managing email preferences](/articles/managing-email-preferences/)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/best-practices-for-leaving-your-company.md b/content/github/setting-up-and-managing-your-github-user-account/best-practices-for-leaving-your-company.md deleted file mode 100644 index 923402231ba4..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/best-practices-for-leaving-your-company.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Best practices for leaving your company -intro: 'Changing jobs is a fact of life. If you use your GitHub user account for both personal *and* work purposes, there are a few things to keep in mind when you leave your company or organization.' -redirect_from: - - /articles/best-practices-for-leaving-your-company -versions: - free-pro-team: '*' ---- - -Before you leave your company, make sure you update the following information in your user account: - -- Unverify your company email address by [deleting it in your Email settings](/articles/changing-your-primary-email-address). You can then re-add it without verifying to keep any associated commits linked to your account. -- [Change your primary email address](/articles/changing-your-primary-email-address) from your company email to your personal email. -{% if currentVersion == "free-pro-team@latest" %} -- [Verify your new primary email address](/articles/verifying-your-email-address). -{% endif %} -- [Change your GitHub username](/articles/changing-your-github-username) to remove any references to your company or organization, if necessary. - -## Leaving organizations - -If you've been working with repositories that belong to an organization, you'll want to [remove yourself as a member of the organization](/articles/removing-yourself-from-an-organization). Note that if you are the organization owner, you should first [transfer ownership of the organization](/articles/transferring-organization-ownership) to another person. - -## Removing professional associations with personal repositories - -If you've been collaborating professionally with another person on repositories that belong to their personal user account, you'll want to [remove yourself as a collaborator](/articles/removing-yourself-from-a-collaborator-s-repository) from those repositories. - -- [Stop watching repositories](https://github.com/watching) related to your work. You won't want those notifications anymore! -- [Transfer repositories you own](/articles/how-to-transfer-a-repository) that others may need to continue working on after you leave. -- [Delete forks that belong to you](/articles/deleting-a-repository) that are related to the work you were doing. Don't worry, deleting a fork doesn't delete the upstream repository. -- Delete local copies of your forks that may exist on your computer: - -```shell -$ rm -rf work_directory -``` diff --git a/content/github/setting-up-and-managing-your-github-user-account/blocking-command-line-pushes-that-expose-your-personal-email-address.md b/content/github/setting-up-and-managing-your-github-user-account/blocking-command-line-pushes-that-expose-your-personal-email-address.md deleted file mode 100644 index a61ec05adb01..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/blocking-command-line-pushes-that-expose-your-personal-email-address.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Blocking command line pushes that expose your personal email address -intro: 'If you''ve chosen to keep your email address private when performing web-based operations, you can also choose to block command line pushes that may expose your personal email address.' -redirect_from: - - /articles/blocking-command-line-pushes-that-expose-your-personal-email-address -versions: - free-pro-team: '*' ---- - -When you push commits from the command line, the email address that you've [set in Git](/articles/setting-your-commit-email-address) is associated with your commits. This setting blocks you from pushing commits on the command line that use your personal email address. - -{% data reusables.user_settings.about-commit-email-addresses %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.emails %} -{% data reusables.user_settings.keeping_your_email_address_private %} -4. To keep your email address private in commits you push from the command line, select **Block command line pushes that expose my email**. -![Option to block command line pushes that expose your emails](/assets/images/help/settings/email_privacy_block_command_line_pushes.png) - -### Further reading - -- "[Setting your commit email address](/articles/setting-your-commit-email-address)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/changing-your-github-username.md b/content/github/setting-up-and-managing-your-github-user-account/changing-your-github-username.md deleted file mode 100644 index 8140f491016e..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/changing-your-github-username.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Changing your GitHub username -intro: 'You can change your {% data variables.product.product_name %} username at any time.' -redirect_from: - - /articles/how-to-change-your-username/ - - /articles/changing-your-github-user-name/ - - /articles/renaming-a-user/ - - /articles/what-happens-when-i-change-my-username/ - - /articles/changing-your-github-username -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About username changes - -You can change your username to another username that is not currently in use.{% if currentVersion == "free-pro-team@latest" %} If the username you want is not available, you'll see information about whether you can request the username to be released when you type in the desired username. - -If the username is not eligible for release and you don't hold a trademark for the username, you can choose another username or keep your current username. {% data variables.contact.github_support %} cannot release the unavailable username for you. For more information, see "[Changing your username](#changing-your-username)."{% endif %} - -After changing your username, your old username becomes available for anyone else to claim. Most references to your repositories under the old username automatically change to the new username. However, some links to your profile won't automatically redirect. - -{% data variables.product.product_name %} cannot set up redirects for: -- [@mentions](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams) using your old username -- Links to [gists](/articles/creating-gists) that include your old username - -### Repository references - -After you change your username, {% data variables.product.product_name %} will automatically redirect references to your repositories. -- Web links to your existing repositories will continue to work. This can take a few minutes to complete after you make the change. -- Command line pushes from your local repository clones to the old remote tracking URLs will continue to work. - -If the new owner of your old username creates a repository with the same name as your repository, that will override the redirect entry and your redirect will stop working. Because of this possibility, we recommend you update all existing remote repository URLs after changing your username. For more information, see "[Changing a remote's URL](/articles/changing-a-remote-s-url)." - -### Links to your previous profile page - -After changing your username, links to your previous profile page, such as `https://{% data variables.command_line.backticks %}/previoususername`, will return a 404 error. We recommend updating any links to your {% data variables.product.product_name %} account from elsewhere{% if currentVersion == "free-pro-team@latest" %}, such as your LinkedIn or Twitter profile{% endif %}. - -### Your Git commits - -{% if currentVersion == "free-pro-team@latest"%}Git commits that were associated with your {% data variables.product.product_name %}-provided `noreply` email address won't be attributed to your new username and won't appear in your contributions graph.{% endif %} If your Git commits are associated with another email address you've [added to your GitHub account](/articles/adding-an-email-address-to-your-github-account), {% if currentVersion == "free-pro-team@latest"%}including the ID-based {% data variables.product.product_name %}-provided `noreply` email address, {% endif %}they'll continue to be attributed to you and appear in your contributions graph after you've changed your username. For more information on setting your email address, see "[Setting your commit email address](/articles/setting-your-commit-email-address)." - -### Changing your username - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.account_settings %} -3. In the "Change username" section, click **Change username**. - ![Change Username button](/assets/images/help/settings/settings-change-username.png){% if currentVersion == "free-pro-team@latest" %} -4. Read the warnings about changing your username. If you still want to change your username, click **I understand, let's change my username**. - ![Change Username warning button](/assets/images/help/settings/settings-change-username-warning-button.png) -5. Type a new username. - ![New username field](/assets/images/help/settings/settings-change-username-enter-new-username.png) -6. If the username you've chosen is available, click **Change my username**. If the username you've chosen is unavailable, you can try a different username or one of the suggestions you see. - ![Change Username warning button](/assets/images/help/settings/settings-change-my-username-button.png) -{% endif %} - -### Further reading - -- "[Changing a remote's URL](/articles/changing-a-remote-s-url)" -- "[Why are my commits linked to the wrong user?](/articles/why-are-my-commits-linked-to-the-wrong-user)"{% if currentVersion == "free-pro-team@latest" %} -- "[{% data variables.product.prodname_dotcom %} Username Policy](/articles/github-username-policy)"{% endif %} diff --git a/content/github/setting-up-and-managing-your-github-user-account/changing-your-primary-email-address.md b/content/github/setting-up-and-managing-your-github-user-account/changing-your-primary-email-address.md deleted file mode 100644 index 7704249f86b5..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/changing-your-primary-email-address.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Changing your primary email address -intro: You can change the email address associated with your user account at any time. -redirect_from: - - /articles/changing-your-primary-email-address -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% note %} - -**Note:** You cannot change your primary email address to an email that is already set to be your backup email address. - -{% endnote %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.emails %} -3. If you'd like to add a new email address to set as your primary email address, under "Add email address", type a new email address and click **Add**. - ![Add another email address button](/assets/images/help/settings/add_another_email_address.png) -4. Under "Primary email address", use the drop-down menu to click the email address you'd like to set as your primary email address, and click **Save**. - ![Set as primary button](/assets/images/help/settings/set_as_primary_email.png) -5. To remove the old email address from your account, next to the old email, click {% octicon "trashcan" aria-label="The trashcan symbol" %}. -{% if currentVersion == "free-pro-team@latest" %} -6. Verify your new primary email address. Without a verified email address, you won't be able to use all of {% data variables.product.product_name %}'s features. For more information, see "[Verifying your email address](/articles/verifying-your-email-address)." -{% endif %} - -### Further reading - -- "[Managing email preferences](/articles/managing-email-preferences/)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/converting-a-user-into-an-organization.md b/content/github/setting-up-and-managing-your-github-user-account/converting-a-user-into-an-organization.md deleted file mode 100644 index 9094888eaddf..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/converting-a-user-into-an-organization.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Converting a user into an organization -redirect_from: - - /articles/what-is-the-difference-between-create-new-organization-and-turn-account-into-an-organization/ - - /articles/explaining-the-account-transformation-warning/ - - /articles/converting-a-user-into-an-organization -intro: You can convert your user account into an organization. This allows more granular permissions for repositories that belong to the organization. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% warning %} - -**Warning**: Before converting a user into an organization, keep these points in mind: - - - You will **no longer** be able to sign into the converted user account. - - You will **no longer** be able to create or modify gists owned by the converted user account. - - An organization **cannot** be converted back to a user. - - The SSH keys, OAuth tokens, job profile, reactions, and associated user information, **will not** be transferred to the organization. This is only true for the user account that's being converted, not any of the user account's collaborators. - - Any commits made with the converted user account **will no longer be linked** to that account. The commits themselves **will** remain intact. - -{% endwarning %} - -### Keep your personal user account and create a new organization manually - -If you want your organization to have the same name that you are currently using for your personal account, or if you want to keep your personal user account's information intact, then you must create a new organization and transfer your repositories to it instead of converting your user account into an organization. - -1. To retain your current user account name for your personal use, [change the name of your personal user account](/articles/changing-your-github-username) to something new and wonderful. -2. [Create a new organization](/articles/creating-a-new-organization-from-scratch) with the original name of your personal user account. -3. [Transfer your repositories](/articles/transferring-a-repository) to your new organization account. - -### Convert your personal account into an organization automatically - -You can also convert your personal user account directly into an organization. Converting your account: - - Preserves the repositories as they are without the need to transfer them to another account manually - - Automatically invites collaborators to teams with permissions equivalent to what they had before - {% if currentVersion == "free-pro-team@latest" %}- For user accounts on {% data variables.product.prodname_pro %}, automatically transitions billing to [the paid {% data variables.product.prodname_team %}](/articles/about-billing-for-github-accounts) without the need to re-enter payment information, adjust your billing cycle, or double pay at any time{% endif %} - -1. Create a new personal account, which you'll use to sign into GitHub and access the organization and your repositories after you convert. -2. [Leave any organizations](/articles/removing-yourself-from-an-organization) the user account you're converting has joined. -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.organizations %} -5. Under "Transform account", click **Turn into an organization**. - ![Organization conversion button](/assets/images/help/settings/convert-to-organization.png) -6. In the Account Transformation Warning dialog box, review and confirm the conversion. Note that the information in this box is the same as the warning at the top of this article. - ![Conversion warning](/assets/images/help/organizations/organization-account-transformation-warning.png) -7. On the "Transform your user into an organization" page, under "Choose an organization owner", choose either the secondary personal account you created in the previous section or another user you trust to manage the organization. - ![Add organization owner page](/assets/images/help/organizations/organization-add-owner.png) -8. Choose your new organization's subscription and enter your billing information if prompted. -9. Click **Create Organization**. -10. Sign in to the new user account you created in step one, then use the context switcher to access your new organization. - -{% tip %} - -**Tip**: When you convert a user account into an organization, we'll add collaborators on repositories that belong to the account to the new organization as *outside collaborators*. You can then invite *outside collaborators* to become members of your new organization if you wish. For more information, see "[Permission levels for an organization](/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization#outside-collaborators)." - -{% endtip %} - -### Further reading -- "[Setting up teams](/articles/setting-up-teams)" -{% if currentVersion == "free-pro-team@latest" %}- "[Inviting users to join your organization](/articles/inviting-users-to-join-your-organization)"{% endif %} -- "[Accessing an organization](/articles/accessing-an-organization)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/deleting-your-user-account.md b/content/github/setting-up-and-managing-your-github-user-account/deleting-your-user-account.md deleted file mode 100644 index 2073ac5e5ea9..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/deleting-your-user-account.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Deleting your user account -intro: 'You can delete your {% data variables.product.product_name %} user account at any time.' -redirect_from: - - /articles/deleting-a-user-account/ - - /articles/deleting-your-user-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Deleting your user account removes all repositories, forks of private repositories, wikis, issues, pull requests, and pages owned by your account. {% if currentVersion == "free-pro-team@latest" %} Issues and pull requests you've created and comments you've made in repositories owned by other users will not be deleted - instead, they'll be associated with our [Ghost user](https://github.com/ghost).{% else %}Issues and pull requests you've created and comments you've made in repositories owned by other users will not be deleted.{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} The account name also becomes available to anyone else to use on a new account, and we stop billing you. The email address associated with the account becomes available for use with a different {% data variables.product.product_name %} account. {% endif %} - -If you’re the only owner of an organization, you must transfer ownership to another person or delete the organization before you can delete your user account. If there are other owners in the organization, you must remove yourself from the organization before you can delete your user account. - -For more information, see: -- "[Transferring organization ownership](/articles/transferring-organization-ownership)" -- "[Deleting an organization account](/articles/deleting-an-organization-account)" -- "[Removing yourself from an organization](/articles/removing-yourself-from-an-organization/)" - -### Back up your account data - -Before you delete your user account, make a copy of all repositories, private forks, wikis, issues, and pull requests owned by your account. - -{% warning %} - -**Warning:** Once your user account has been deleted, GitHub cannot restore your content. - -{% endwarning %} - -### Delete your user account - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.account_settings %} -3. At the bottom of the Account Settings page, under "Delete account", click **Delete your account**. Before you can delete your user account: - - If you're the only owner in the organization, you must transfer ownership to another person or delete your organization. - - If there are other organization owners in the organization, you must remove yourself from the organization. - ![Account deletion button](/assets/images/help/settings/settings-account-delete.png) -4. In the "Make sure you want to do this" dialog box, complete the steps to confirm you understand what happens when your account is deleted: - ![Delete account confirmation dialog](/assets/images/help/settings/settings-account-deleteconfirm.png) - {% if currentVersion == "free-pro-team@latest" %}- Recall that all repositories, forks of private repositories, wikis, issues, pull requests and pages owned by your account will be deleted, your billing will end, and your username will be available to anyone for use on {% data variables.product.product_name %}. - {% else %}- Recall that all repositories, forks of private repositories, wikis, issues, pull requests and pages owned by your account will be deleted, and your username will be available for use on {% data variables.product.product_name %}. - {% endif %}- In the first field, type your {% data variables.product.product_name %} username or email. - - In the second field, type the phrase from the prompt. diff --git a/content/github/setting-up-and-managing-your-github-user-account/index.md b/content/github/setting-up-and-managing-your-github-user-account/index.md deleted file mode 100644 index 5ea0fb1d8b82..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/index.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Setting up and managing your GitHub user account -shortTitle: User accounts -redirect_from: - - /categories/setting-up-and-managing-your-github-user-account -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /managing-user-account-settings %} - {% link_in_list /about-your-personal-dashboard %} - {% link_in_list /changing-your-github-username %} - - {% link_in_list /merging-multiple-user-accounts %} - {% link_in_list /converting-a-user-into-an-organization %} - - {% link_in_list /deleting-your-user-account %} - {% link_in_list /permission-levels-for-a-user-account-repository %} - {% link_in_list /permission-levels-for-user-owned-project-boards %} - {% link_in_list /managing-the-default-branch-name-for-your-repositories %} - {% link_in_list /managing-security-and-analysis-settings-for-your-user-account %} - {% link_in_list /managing-access-to-your-user-accounts-project-boards %} - - {% link_in_list /integrating-jira-with-your-personal-projects %} - - - {% link_in_list /best-practices-for-leaving-your-company %} - - - {% link_in_list /what-does-the-available-for-hire-checkbox-do %} - -{% topic_link_in_list /managing-email-preferences %} - {% link_in_list /adding-an-email-address-to-your-github-account %} - {% link_in_list /changing-your-primary-email-address %} - {% link_in_list /setting-a-backup-email-address %} - {% link_in_list /setting-your-commit-email-address %} - - {% link_in_list /blocking-command-line-pushes-that-expose-your-personal-email-address %} - - {% link_in_list /remembering-your-github-username-or-email %} - - {% link_in_list /types-of-emails-github-sends %} - - - {% link_in_list /managing-marketing-emails-from-github %} - -{% topic_link_in_list /managing-access-to-your-personal-repositories %} - {% link_in_list /inviting-collaborators-to-a-personal-repository %} - {% link_in_list /removing-a-collaborator-from-a-personal-repository %} - {% link_in_list /removing-yourself-from-a-collaborators-repository %} - {% link_in_list /maintaining-ownership-continuity-of-your-user-accounts-repositories %} -{% topic_link_in_list /managing-your-membership-in-organizations %} - {% link_in_list /about-organization-membership %} - {% link_in_list /accessing-an-organization %} - {% link_in_list /viewing-peoples-roles-in-an-organization %} - - {% link_in_list /requesting-organization-approval-for-oauth-apps %} - - {% link_in_list /publicizing-or-hiding-organization-membership %} - {% link_in_list /managing-your-scheduled-reminders %} - {% link_in_list /removing-yourself-from-an-organization %} diff --git a/content/github/setting-up-and-managing-your-github-user-account/integrating-jira-with-your-personal-projects.md b/content/github/setting-up-and-managing-your-github-user-account/integrating-jira-with-your-personal-projects.md deleted file mode 100644 index cc875645354a..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/integrating-jira-with-your-personal-projects.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Integrating Jira with your personal projects -intro: 'You can integrate Jira Cloud with your user account to scan commits and pull requests, creating relevant metadata and hyperlinks in any mentioned Jira issues.' -redirect_from: - - /articles/integrating-jira-with-your-personal-projects -versions: - enterprise-server: '*' ---- - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.developer_settings %} -3. In the left sidebar, click **{% data variables.product.prodname_oauth_app %}s**. -![{ site.data.variables.product.prodname_oauth_app }}s tab in the left sidebar](/assets/images/help/settings/developer-settings-oauth-apps.png) -3. Click **Register a new application**. -4. Under **Application name**, type "Jira". -5. Under **Homepage URL**, type the full URL to your Jira instance. -6. Under **Authorization callback URL**, type the full URL to your Jira instance. -7. Click **Register application**. -![Register application button](/assets/images/help/oauth/register-application-button.png) -8. Under **Developer applications**, note the "Client ID" and "Client Secret" values. -![Client ID and Client Secret](/assets/images/help/oauth/client-id-and-secret.png) -{% data reusables.user_settings.jira_help_docs %} - -### Further reading - -- ["Integrating Jira with your organization project board"](/articles/integrating-jira-with-your-organization-project-board) -- Connect Jira Cloud to GitHub (Atlassian documentation) diff --git a/content/github/setting-up-and-managing-your-github-user-account/inviting-collaborators-to-a-personal-repository.md b/content/github/setting-up-and-managing-your-github-user-account/inviting-collaborators-to-a-personal-repository.md deleted file mode 100644 index 15498fdd7d42..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/inviting-collaborators-to-a-personal-repository.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Inviting collaborators to a personal repository -intro: 'You can {% if currentVersion == "free-pro-team@latest" %}invite users to become{% else %}add users as{% endif %} collaborators to your personal repository.' -redirect_from: - - /articles/how-do-i-add-a-collaborator/ - - /articles/adding-collaborators-to-a-personal-repository/ - - /articles/inviting-collaborators-to-a-personal-repository -product: '{% data reusables.gated-features.user-repo-collaborators %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Repositories owned by an organization can grant more granular access. For more information, see "[Access permissions on {% data variables.product.product_name %}](/articles/access-permissions-on-github)." - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -{% data reusables.organizations.org-invite-expiration %} -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} - -{% note %} - -**Note:** {% data variables.product.company_short %} limits the number of people who can be invited to a repository within a 24-hour period. If you exceed this limit, either wait 24 hours or create an organization to collaborate with more people. - -{% endnote %} - -{% endif %} - -1. Ask for the username of the person you're inviting as a collaborator.{% if currentVersion == "free-pro-team@latest" %} If they don't have a username yet, they can sign up for {% data variables.product.prodname_dotcom %} For more information, see "[Signing up for a new {% data variables.product.prodname_dotcom %} account](/articles/signing-up-for-a-new-github-account)".{% endif %} -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.repositories.navigate-to-manage-access %} -1. Click **Invite a collaborator**. - !["Invite a collaborator" button](/assets/images/help/repository/invite-a-collaborator-button.png) -2. In the search field, start typing the name of person you want to invite, then click a name in the list of matches. - ![Search field for typing the name of a person to invite to the repository](/assets/images/help/repository/manage-access-invite-search-field-user.png) -3. Click **Add NAME to REPOSITORY**. - ![Button to add collaborator](/assets/images/help/repository/add-collaborator-user-repo.png) -{% else %} -5. In the left sidebar, click **Collaborators**. -![Repository settings sidebar with Collaborators highlighted](/assets/images/help/repository/user-account-repo-settings-collaborators.png) -6. Under "Collaborators", start typing the collaborator's username. -7. Select the collaborator's username from the drop-down menu. - ![Collaborator list drop-down menu](/assets/images/help/repository/repo-settings-collab-autofill.png) -8. Click **Add collaborator**. - ![Add button](/assets/images/help/repository/repo-settings-collab-add.png) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -9. The user will receive an email inviting them to the repository. Once they accept your invitation, they will have collaborator access to your repository. -{% endif %} - -### Further reading - -- "[Permission levels for a user account repository](/articles/permission-levels-for-a-user-account-repository/#collaborator-access-on-a-repository-owned-by-a-user-account)" -- "[Removing a collaborator from a personal repository](/articles/removing-a-collaborator-from-a-personal-repository)" -- "[Removing yourself from a collaborator's repository](/articles/removing-yourself-from-a-collaborator-s-repository)" -- "[Organizing members into teams](/articles/organizing-members-into-teams)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/maintaining-ownership-continuity-of-your-user-accounts-repositories.md b/content/github/setting-up-and-managing-your-github-user-account/maintaining-ownership-continuity-of-your-user-accounts-repositories.md deleted file mode 100644 index a01d52289879..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/maintaining-ownership-continuity-of-your-user-accounts-repositories.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Maintaining ownership continuity of your user account's repositories -intro: You can invite someone to manage your user owned repositories if you are not able to. -versions: - free-pro-team: '*' ---- - -### About successors - -We recommend inviting another {% data variables.product.company_short %} user to be your successor, to manage your user owned repositories if you cannot. As a successor, they will have permission to: - -- Archive your public repositories. -- Transfer your public repositories to their own user owned account. -- Transfer your public repositories to an organization where they can create repositories. - -Successors cannot log into your account. - -An appointed successor can manage your public repositories after presenting a death certificate then waiting for 7 days or presenting an obituary then waiting for 21 days. For more information, see “[{% data variables.product.company_short %} Deceased User Policy](/github/site-policy/github-deceased-user-policy)." - -To request access to manage repositories as a successor, contact [GitHub Support](https://support.github.com/contact). - -### Inviting a successor -The person you invite to be your successor must have a {% data variables.product.company_short %} account. - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.account_settings %} -3. Under "Successor settings", to invite a successor, begin typing a username, full name, or email address, then click their name when it appears. - ![Successor invitation search field](/assets/images/help/settings/settings-invite-successor-search-field.png) -4. Click **Add successor**. -{% data reusables.user_settings.sudo-mode-popup %} -5. The user you've invited will be listed as "Pending" until they agree to become your successor. - ![Pending successor invitation](/assets/images/help/settings/settings-pending-successor.png) diff --git a/content/github/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories.md b/content/github/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories.md deleted file mode 100644 index 612400db5acf..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Managing access to your personal repositories -intro: You can give people collaborator access to repositories owned by your personal account. -redirect_from: - - /categories/101/articles/ - - /categories/managing-repository-collaborators/ - - /articles/managing-access-to-your-personal-repositories -product: '{% data reusables.gated-features.user-repo-collaborators %}' -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-your-github-user-account/managing-access-to-your-user-accounts-project-boards.md b/content/github/setting-up-and-managing-your-github-user-account/managing-access-to-your-user-accounts-project-boards.md deleted file mode 100644 index 46dfb8488c74..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/managing-access-to-your-user-accounts-project-boards.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Managing access to your user account's project boards -intro: 'As a project board owner, you can add or remove a collaborator and customize their permissions to a project board.' -redirect_from: - - /articles/managing-project-boards-in-your-repository-or-organization/ - - /articles/managing-access-to-your-user-account-s-project-boards - - /articles/managing-access-to-your-user-accounts-project-boards -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -A collaborator is a person who has permissions to a project board you own. A collaborator's permissions will default to read access. For more information, see "[Permission levels for user-owned project boards](/articles/permission-levels-for-user-owned-project-boards)." - -### Inviting collaborators to a user-owned project board - -1. Navigate to the project board where you want to add an collaborator. -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.access-collaboration-settings %} -{% data reusables.project-management.collaborator-option %} -5. Under "Search by username, full name or email address", type the collaborator's name, username, or {% data variables.product.prodname_dotcom %} email. - ![The Collaborators section with the Octocat's username entered in the search field](/assets/images/help/projects/org-project-collaborators-find-name.png) -{% data reusables.project-management.add-collaborator %} -7. The new collaborator has read permissions by default. Optionally, next to the new collaborator's name, use the drop-down menu and choose a different permission level. - ![The Collaborators section with the Permissions drop-down menu selected](/assets/images/help/projects/user-project-collaborators-edit-permissions.png) - -### Removing a collaborator from a user-owned project board - -{% data reusables.project-management.click-menu %} -{% data reusables.project-management.access-collaboration-settings %} -{% data reusables.project-management.collaborator-option %} -{% data reusables.project-management.remove-collaborator %} diff --git a/content/github/setting-up-and-managing-your-github-user-account/managing-email-preferences.md b/content/github/setting-up-and-managing-your-github-user-account/managing-email-preferences.md deleted file mode 100644 index 6f3b8e7cdc3c..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/managing-email-preferences.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Managing email preferences -intro: 'You can add or change the email addresses associated with your {% data variables.product.product_name %} account. You can also manage emails you receive from {% data variables.product.product_name %}.' -redirect_from: - - /categories/managing-email-preferences/ - - /articles/managing-email-preferences -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-your-github-user-account/managing-marketing-emails-from-github.md b/content/github/setting-up-and-managing-your-github-user-account/managing-marketing-emails-from-github.md deleted file mode 100644 index 04633f58fd1b..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/managing-marketing-emails-from-github.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Managing marketing emails from GitHub -intro: 'In addition to notifications and account emails, {% data variables.product.prodname_dotcom %} occasionally sends marketing emails with news and information about our products. If you unsubscribe from existing marketing emails, you won''t be included in future campaigns unless you change your {% data variables.product.prodname_dotcom %} email settings.' -redirect_from: - - /articles/managing-marketing-emails-from-github -versions: - free-pro-team: '*' ---- - -### Unsubscribing from {% data variables.product.prodname_dotcom %} marketing emails - -{% tip %} - -**Tip:** If you unsubscribe from all marketing emails and then subscribe to the Explore newsletter, you'll only receive the Explore newsletter, and won't receive other marketing email. - -{% endtip %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.emails %} -3. Under *Email preferences*, select **Only receive account related emails, and those I subscribe to**. - ![Screenshot of opting out of marketing email](/assets/images/help/notifications/email_preferences.png) -4. Click **Save email preferences**. - ![Save email preferences button](/assets/images/help/notifications/save_email_preferences.png) - -### Further reading - -- "[Types of emails GitHub sends](/articles/types-of-emails-github-sends)" -- "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account.md b/content/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account.md deleted file mode 100644 index d7d17817c245..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Managing security and analysis settings for your user account -intro: 'You can control features that secure and analyze the code in your projects on {% data variables.product.prodname_dotcom %}.' -versions: - free-pro-team: '*' ---- - -### About management of security and analysis settings - -{% data variables.product.prodname_dotcom %} can help secure your repositories. This topic tells you how you can manage the security and analysis features for all your existing or new repositories. - -You can still manage the security and analysis features for individual repositories. For more information, see "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)." - -{% data reusables.security.some-security-and-analysis-features-are-enabled-by-default %} - -{% data reusables.security.security-and-analysis-features-enable-read-only %} - -For an overview of repository-level security, see "[About securing your repository](/github/administering-a-repository/about-securing-your-repository)." - -### Enabling or disabling features for existing repositories - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security-analysis %} -3. Under "Configure security and analysis features", to the right of the feature, click **Disable all** or **Enable all**. - !["Enable all" or "Disable all" button for "Configure security and analysis" features](/assets/images/help/settings/security-and-analysis-disable-or-enable-all.png) -6. Optionally, enable the feature by default for new repositories in your organization. - !["Enable by default" option for new repositories](/assets/images/help/settings/security-and-analysis-enable-by-default-in-modal.png) -7. Click **Disable FEATURE** or **Enable FEATURE** to disable or enable the feature for all the repositories you own. - ![Button to disable or enable feature](/assets/images/help/settings/security-and-analysis-enable-dependency-graph.png) - -### Enabling or disabling features for new repositories - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.security-analysis %} -3. Under "Configure security and analysis features", to the right of the feature, enable or disable the feature by default for new repositories in your organization. - ![Checkbox for enabling or disabling a feature for new repositories](/assets/images/help/settings/security-and-analysis-enable-or-disable-feature-checkbox.png) - -### Further reading - -- "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)" -- "[Managing vulnerabilities in your project's dependencies](/github/managing-security-vulnerabilities/managing-vulnerabilities-in-your-projects-dependencies)" -{% if currentVersion == "free-pro-team@latest" %}- "[Keeping your dependencies updated automatically](/github/administering-a-repository/keeping-your-dependencies-updated-automatically)"{% endif %} diff --git a/content/github/setting-up-and-managing-your-github-user-account/managing-the-default-branch-name-for-your-repositories.md b/content/github/setting-up-and-managing-your-github-user-account/managing-the-default-branch-name-for-your-repositories.md deleted file mode 100644 index da043351a156..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/managing-the-default-branch-name-for-your-repositories.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Managing the default branch name for your repositories -intro: 'You can set the default branch name new repositories that you create on {% data variables.product.product_location %}.' -versions: - free-pro-team: '*' - enterprise-server: '>=2.23' ---- - -### About management of the default branch name - -When you create a new repository on {% data variables.product.product_location %}, the repository contains one branch, which is the default branch. You can change the name that {% data variables.product.product_name %} uses for the default branch in new repositories you create. For more information about the default branch, see "[About branches](/github/collaborating-with-issues-and-pull-requests/about-branches#about-the-default-branch)." - -{% data reusables.branches.change-default-branch %} - -### Setting the default branch name - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.repo-tab %} -3. Under "Repository default branch", click **Change default branch name now**. - ![Override button](/assets/images/help/settings/repo-default-name-button.png) -4. Type the default name that you would like to use for new branches. - ![Text box for entering default name](/assets/images/help/settings/repo-default-name-text.png) -5. Click **Update**. - ![Update button](/assets/images/help/settings/repo-default-name-update.png) - -### Further reading - -- "[Managing the default branch name for repositories in your organization](/github/setting-up-and-managing-organizations-and-teams/managing-the-default-branch-name-for-repositories-in-your-organization)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/managing-user-account-settings.md b/content/github/setting-up-and-managing-your-github-user-account/managing-user-account-settings.md deleted file mode 100644 index 5a1e78519670..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/managing-user-account-settings.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Managing user account settings -intro: 'You can change several settings for your personal account, including changing your username and deleting your account.' -redirect_from: - - /categories/29/articles/ - - /categories/user-accounts/ - - /articles/managing-user-account-settings -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations.md b/content/github/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations.md deleted file mode 100644 index 794b0a1255d1..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing your membership in organizations -intro: 'If you''re a member of an organization, you can publicize or hide your membership, view other people''s roles, and remove yourself from the organization.' -mapTopic: true -redirect_from: - - /articles/managing-your-membership-in-organizations -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/setting-up-and-managing-your-github-user-account/managing-your-scheduled-reminders.md b/content/github/setting-up-and-managing-your-github-user-account/managing-your-scheduled-reminders.md deleted file mode 100644 index 24cecc311b7d..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/managing-your-scheduled-reminders.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Managing your scheduled reminders -intro: Get reminders in Slack when you or your team have pull requests waiting for review. -versions: - free-pro-team: '*' ---- - -### About scheduled reminders for users - -Scheduled reminders are used to make sure that users focus on the most important review requests that require their attention. Scheduled reminders for pull requests will send a message to you in Slack with open pull requests needing your review at a specified time. For example, you can setup scheduled reminders to send you a message in Slack every morning at 10 AM with pull requests needing to be reviewed by you or one of your teams. - -For certain events, you can also enable real-time alerts for scheduled reminders. Real-time alerts get sent to your Slack channel as soon as an important event, such as when you are assigned a review, takes place. - -You can set scheduled reminders for personal or team-level review requests for pull requests in organizations you are a member of. Before you can create a scheduled reminder for yourself, an organization owner must authorize your Slack workspace. For more information, see "[Managing scheduled reminders for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-your-organization)." - -### Creating scheduled reminders for your user account - -{% data reusables.user_settings.access_settings %} -{% data reusables.reminders.scheduled-reminders %} -![Scheduled reminders button](/assets/images/help/profile/scheduled-reminders-profile.png) -3. Next to the organization you'd like to schedule reminders for, click **Edit**. -![Scheduled reminders edit button](/assets/images/help/settings/scheduled-reminders-org-choice.png) -{% data reusables.reminders.add-reminder %} -{% data reusables.reminders.authorize-slack %} -{% data reusables.reminders.days-dropdown %} -{% data reusables.reminders.times-dropdowns %} -8. Optionally, to receive scheduled reminders for reviews you've been assigned to, select **Review requests assigned to you**. -![Review requests assigned to you checkbox](/assets/images/help/profile/scheduled-reminders-your-requests.png) -9. Optionally, to receive scheduled reminders for reviews assigned to a team you're a member of, select **Review requests assigned to your team**. -![Review requests assigned to your team checkbox](/assets/images/help/profile/scheduled-reminders-your-team-requests.png) -{% data reusables.reminders.real-time-alerts %} -![Enable real-time alerts checkbox](/assets/images/help/settings/scheduled-reminders-real-time-alerts-personal.png) -{% data reusables.reminders.create-reminder %} - -### Managing scheduled reminders for your user account -{% data reusables.user_settings.access_settings %} -{% data reusables.reminders.scheduled-reminders %} -![Scheduled reminders button](/assets/images/help/profile/scheduled-reminders-profile.png) -3. Next to the organization you'd like to edit scheduled reminders for, click **Edit**. -![Scheduled reminders edit button](/assets/images/help/settings/scheduled-reminders-org-choice.png) -{% data reusables.reminders.edit-page %} -{% data reusables.reminders.update-buttons %} - -### Deleting scheduled reminders for your user account -{% data reusables.user_settings.access_settings %} -{% data reusables.reminders.scheduled-reminders %} -![Scheduled reminders button](/assets/images/help/profile/scheduled-reminders-profile.png) -3. Next to the organization you'd like to delete reminders for, click **Edit**. -![Scheduled reminders edit button](/assets/images/help/settings/scheduled-reminders-org-choice.png) -{% data reusables.reminders.delete %} - -### Further reading - -- "[Managing scheduled reminders for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-your-organization)" -- "[Managing scheduled reminders for your team](/github/setting-up-and-managing-organizations-and-teams/managing-scheduled-reminders-for-your-team)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/merging-multiple-user-accounts.md b/content/github/setting-up-and-managing-your-github-user-account/merging-multiple-user-accounts.md deleted file mode 100644 index 6939ca2d0910..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/merging-multiple-user-accounts.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Merging multiple user accounts -intro: 'If you have separate accounts for work and personal use, you can merge the accounts.' -redirect_from: - - /articles/can-i-merge-two-accounts/ - - /articles/keeping-work-and-personal-repositories-separate/ - - /articles/merging-multiple-user-accounts -versions: - free-pro-team: '*' ---- - -{% tip %} - -**Tip:** We recommend using only one user account to manage both personal and professional repositories. - -{% endtip %} - -1. [Transfer any repositories](/articles/how-to-transfer-a-repository) from the account you want to delete to the account you want to keep. Issues, pull requests, and wikis are transferred as well. Verify the repositories exist on the account you want to keep. -2. [Update the remote URLs](/articles/changing-a-remote-s-url) in any local clones of the repositories that were moved. -3. [Delete the account](/articles/deleting-your-user-account) you no longer want to use. - -### Further reading - -- "[Types of {% data variables.product.prodname_dotcom %} accounts](/articles/types-of-github-accounts)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/permission-levels-for-a-user-account-repository.md b/content/github/setting-up-and-managing-your-github-user-account/permission-levels-for-a-user-account-repository.md deleted file mode 100644 index c6ebc8a604b9..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/permission-levels-for-a-user-account-repository.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Permission levels for a user account repository -intro: 'A repository owned by a user account has two permission levels: the *repository owner* and *collaborators*.' -redirect_from: - - /articles/permission-levels-for-a-user-account-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tip:** If you require more granular read/write access to a repository owned by your user account, consider transferring the repository to an organization. For more information, see "[Transferring a repository](/articles/transferring-a-repository)." - -{% endtip %} - -#### Owner access on a repository owned by a user account - -The repository owner has full control of the repository. In addition to all the permissions allowed by repository collaborators, the repository owner can: - -- {% if currentVersion == "free-pro-team@latest" %}[Invite collaborators](/articles/inviting-collaborators-to-a-personal-repository){% else %}[Add collaborators](/articles/inviting-collaborators-to-a-personal-repository){% endif %} -- Change the visibility of the repository (from [public to private](/articles/making-a-public-repository-private), or from [private to public](/articles/making-a-private-repository-public)){% if currentVersion == "free-pro-team@latest" %} -- [Limit interactions with a repository](/articles/limiting-interactions-with-your-repository){% endif %} -- Merge a pull request on a protected branch, even if there are no approving reviews -- [Delete the repository](/articles/deleting-a-repository) -- [Manage a repository's topics](/articles/classifying-your-repository-with-topics){% if currentVersion == "free-pro-team@latest" %} -- Manage security and analysis settings. For more information, see "[Managing security and analysis settings for your user account](/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account)."{% endif %}{% if currentVersion == "free-pro-team@latest" %} -- [Enable the dependency graph](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-and-dependents-of-a-repository) for a private repository{% endif %}{% if currentVersion == "free-pro-team@latest" %} -- Delete packages. For more information, see "[Deleting a package](/github/managing-packages-with-github-packages/deleting-a-package)."{% endif %} -- Create and edit repository social cards. For more information, see "[Customizing your repository's social media preview](/articles/customizing-your-repositorys-social-media-preview)." -- Make the repository a template. For more information, see "[Creating a template repository](/articles/creating-a-template-repository)." -- Receive [{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %}{% data variables.product.prodname_dependabot_alerts %}{% else %}security alerts{% endif %} for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies) in a repository.{% if currentVersion == "free-pro-team@latest" %} -- Dismiss {% data variables.product.prodname_dependabot_alerts %} in your repository. For more information, see "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)." -- [Manage data usage for your private repository](/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository){% endif %} -- [Define code owners for the repository](/articles/about-code-owners) -- [Archive repositories](/articles/about-archiving-repositories){% if currentVersion == "free-pro-team@latest" %} -- Create security advisories. For more information, see "[About {% data variables.product.prodname_security_advisories %}](/github/managing-security-vulnerabilities/about-github-security-advisories)." -- Display a sponsor button. For more information, see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)."{% endif %} - -There is only **one owner** of a repository owned by a user account; this permission cannot be shared with another user account. To transfer ownership of a repository to another user, see "[How to transfer a repository](/articles/how-to-transfer-a-repository)." - -#### Collaborator access on a repository owned by a user account - -{% note %} - -**Note:** In a private repository, repository owners can only grant write access to collaborators. Collaborators can't have read-only access to repositories owned by a user account. - -{% endnote %} - -Collaborators on a personal repository can: - -- Push to (write), pull from (read), and fork (copy) the repository -- Create, apply, and delete labels and milestones -- Open, close, re-open, and assign issues -- Edit and delete comments on commits, pull requests, and issues -- Mark an issue or pull request as a duplicate. For more information, see "[About duplicate issues and pull requests](/articles/about-duplicate-issues-and-pull-requests)." -- Open, merge and close pull requests -- Apply suggested changes to pull requests. For more information, see "[Incorporating feedback in your pull request](/articles/incorporating-feedback-in-your-pull-request)." -- Send pull requests from forks of the repository{% if currentVersion == "free-pro-team@latest" %} -- Publish, view, and install packages. For more information, see "[Publishing and managing packages](/github/managing-packages-with-github-packages/publishing-and-managing-packages)."{% endif %} -- Create and edit Wikis -- Create and edit releases. For more information, see "[Managing releases in a repository](/github/administering-a-repository/managing-releases-in-a-repository). -- Remove themselves as collaborators on the repository -- Submit a review on a pull request that will affect its mergeability -- Act as a designated code owner for the repository. For more information, see "[About code owners](/articles/about-code-owners)." -- Lock a conversation. For more information, see "[Locking conversations](/articles/locking-conversations)."{% if currentVersion == "free-pro-team@latest" %} -- Report abusive content to {% data variables.contact.contact_support %}. For more information, see "[Reporting abuse or spam](/articles/reporting-abuse-or-spam)."{% endif %} -- Transfer an issue to a different repository. For more information, see "[Transferring an issue to another repository](/articles/transferring-an-issue-to-another-repository)." - -### Further reading - -- "[Inviting collaborators to a personal repository](/articles/inviting-collaborators-to-a-personal-repository)" -- "[Repository permission levels for an organization](/articles/repository-permission-levels-for-an-organization)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/permission-levels-for-user-owned-project-boards.md b/content/github/setting-up-and-managing-your-github-user-account/permission-levels-for-user-owned-project-boards.md deleted file mode 100644 index b16530c96474..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/permission-levels-for-user-owned-project-boards.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Permission levels for user-owned project boards -intro: 'A project board owned by a user account has two permission levels: the project board owner and collaborators.' -redirect_from: - - /articles/permission-levels-for-user-owned-project-boards -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Permissions overview - -There is only one owner of a user-owned project board; this permission cannot be shared with another user account. In addition to the owner, other people can collaborate on project boards. - -There are three levels of permissions for project board collaborators: - -{% data reusables.project-management.project-board-permissions %} - -### Owner and admin permissions for a user-owned project board - -The project board owner and collaborators with admin access have full control of the project board. In addition to all the permissions allowed by project board collaborators, a project board owner and collaborator with admin access can: - -- [Manage, view, and add collaborators](/articles/managing-access-to-your-user-account-s-project-boards) -- [Configure a project board as public or private](/articles/changing-project-board-visibility) -- [Delete a project board](/articles/deleting-a-project-board/) -- [Close a project board](/articles/closing-a-project-board/) -- [Reopen a closed project board](/articles/reopening-a-closed-project-board) - -### Read and write permissions for a user-owned project board - -Collaborators with read access to a user-owned project board can: - -- View a project board -- Copy a project board -- Filter cards on a project board - -Collaborators with write access to a user-owned project board can: - -- View a project board -- Copy a project board -- Filter cards on a project board -- Edit a project board -- Link a repository to a project board -- Configure automation for project boards -- Copy a project board -- Add issues and pull requests to a project board -- Add notes to a project board -- Track progress on your project board -- Archive cards on a project board - -### Project board visibility - -You can change the project board's visibility from private to public and back again. By default, user-owned project boards are private. For more information, see "[Changing project board visibility](/articles/changing-project-board-visibility)." - -### Further reading - - - "[Managing access to your user account's project boards](/articles/managing-access-to-your-user-account-s-project-boards)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/publicizing-or-hiding-organization-membership.md b/content/github/setting-up-and-managing-your-github-user-account/publicizing-or-hiding-organization-membership.md deleted file mode 100644 index 7d3262035053..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/publicizing-or-hiding-organization-membership.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Publicizing or hiding organization membership -intro: 'If you''d like to tell the world which organizations you belong to, you can display the avatars of the organizations on your profile.' -redirect_from: - - /articles/publicizing-or-concealing-organization-membership/ - - /articles/publicizing-or-hiding-organization-membership -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -![Profile organizations box](/assets/images/help/profile/profile_orgs_box.png) - -### Changing the visibility of your organization membership - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -4. Locate your username in the list of members. If the list is large, you can search for your username in the search box. -![Organization member search box](/assets/images/help/organizations/member-search-box.png) -5. In the menu to the right of your username, choose a new visibility option: - - To publicize your membership, choose **Public**. - - To hide your membership, choose **Private**. - ![Organization member visibility link](/assets/images/help/organizations/member-visibility-link.png) diff --git a/content/github/setting-up-and-managing-your-github-user-account/remembering-your-github-username-or-email.md b/content/github/setting-up-and-managing-your-github-user-account/remembering-your-github-username-or-email.md deleted file mode 100644 index d9e43ab812c3..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/remembering-your-github-username-or-email.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Remembering your GitHub username or email -intro: 'Are you signing in to {% data variables.product.product_location %} for the first time in a while? If so, welcome back! If you can''t remember your {% data variables.product.product_name %} user account name, you can try these methods for remembering it.' -redirect_from: - - /articles/oh-noes-i-ve-forgotten-my-username-email/ - - /articles/oh-noes-i-ve-forgotten-my-username-or-email/ - - /articles/remembering-your-github-username-or-email -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% mac %} - -### {% data variables.product.prodname_desktop %} users - -1. In the **GitHub Desktop** menu, click **Preferences**. -2. In the Preferences window, verify the following: - - To view your {% data variables.product.product_name %} username, click **Accounts**. - - To view your Git email, click **Git**. Note that this email is not guaranteed to be [your primary {% data variables.product.product_name %} email](/articles/changing-your-primary-email-address). - -{% endmac %} - -{% windows %} - -### {% data variables.product.prodname_desktop %} users - -1. In the **File** menu, click **Options**. -2. In the Options window, verify the following: - - To view your {% data variables.product.product_name %} username, click **Accounts**. - - To view your Git email, click **Git**. Note that this email is not guaranteed to be [your primary {% data variables.product.product_name %} email](/articles/changing-your-primary-email-address). - -{% endwindows %} - -### Finding your username in your `user.name` configuration - -During set up, you may have [set your username in Git](/articles/setting-your-username-in-git). If so, you can review the value of this configuration setting: - -```shell -$ git config user.name -# View the setting -YOUR_USERNAME -``` - -### Finding your username in the URL of remote repositories - -If you have any local copies of personal repositories you have created or forked, you can check the URL of the remote repository. - -{% tip %} - -**Tip**: This method only works if you have an original repository or your own fork of someone else's repository. If you clone someone else's repository, their username will show instead of yours. Similarly, organization repositories will show the name of the organization instead of a particular user in the remote URL. - -{% endtip %} - -```shell -$ cd YOUR_REPOSITORY -# Change directories to the initialized Git repository -$ git remote -v -origin https://{% data variables.command_line.codeblock %}/YOUR_USERNAME/YOUR_REPOSITORY.git (fetch) -origin https://{% data variables.command_line.codeblock %}/YOUR_USERNAME/YOUR_REPOSITORY.git (push) -``` - -Your user name is what immediately follows the `https://{% data variables.command_line.backticks %}/`. - -{% if currentVersion == "free-pro-team@latest" %} -### Further reading - -- "[Verifying your email address](/articles/verifying-your-email-address)" -{% endif %} diff --git a/content/github/setting-up-and-managing-your-github-user-account/removing-a-collaborator-from-a-personal-repository.md b/content/github/setting-up-and-managing-your-github-user-account/removing-a-collaborator-from-a-personal-repository.md deleted file mode 100644 index 8c168a2b2688..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/removing-a-collaborator-from-a-personal-repository.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Removing a collaborator from a personal repository -intro: 'When you remove a collaborator from your project, they lose read/write access to your repository. If the repository is private and the person has created a fork, then that fork is also deleted.' -redirect_from: - - /articles/how-do-i-remove-a-collaborator/ - - /articles/what-happens-when-i-remove-a-collaborator-from-my-private-repository/ - - /articles/removing-a-collaborator-from-a-private-repository/ - - /articles/deleting-a-private-fork-of-a-private-user-repository/ - - /articles/how-do-i-delete-a-fork-of-my-private-repository/ - - /articles/removing-a-collaborator-from-a-personal-repository -product: '{% data reusables.gated-features.user-repo-collaborators %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Deleting forks of private repositories - -While forks of private repositories are deleted when a collaborator is removed, the person will still retain any local clones of your repository. - -### Removing collaborator permissions from a person contributing to a repository - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.repositories.navigate-to-manage-access %} -4. To the right of the collaborator you want to remove, click {% octicon "trashcan" aria-label="The trashcan icon" %}. - ![Button to remove collaborator](/assets/images/help/repository/collaborator-remove.png) -{% else %} -3. In the left sidebar, click **Collaborators & teams**. - ![Collaborators tab](/assets/images/help/repository/repo-settings-collaborators.png) -4. Next to the collaborator you want to remove, click the **X** icon. - ![Remove link](/assets/images/help/organizations/Collaborator-Remove.png) -{% endif %} - -### Further reading - -- "[Removing organization members from a team](/articles/removing-organization-members-from-a-team)" -- "[Removing an outside collaborator from an organization repository](/articles/removing-an-outside-collaborator-from-an-organization-repository)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/removing-yourself-from-a-collaborators-repository.md b/content/github/setting-up-and-managing-your-github-user-account/removing-yourself-from-a-collaborators-repository.md deleted file mode 100644 index c263df13c1ec..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/removing-yourself-from-a-collaborators-repository.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Removing yourself from a collaborator's repository -intro: 'If you no longer want to be a collaborator on someone else''s repository, you can remove yourself.' -redirect_from: - - /leave-a-collaborative-repo/ - - /leave-a-repo/ - - /articles/removing-yourself-from-a-collaborator-s-repo/ - - /articles/removing-yourself-from-a-collaborator-s-repository - - /articles/removing-yourself-from-a-collaborators-repository -product: '{% data reusables.gated-features.user-repo-collaborators %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.user_settings.access_settings %} -2. In the left sidebar, click **Repositories**. - ![Repositories tab](/assets/images/help/settings/settings-sidebar-repositories.png) -3. Next to the repository you want to leave, click **Leave**. - ![Leave button](/assets/images/help/repository/repo-leave.png) -4. Read the warning carefully, then click "I understand, leave this repository." - ![Dialog box warning you to leave](/assets/images/help/repository/repo-leave-confirmation.png) diff --git a/content/github/setting-up-and-managing-your-github-user-account/removing-yourself-from-an-organization.md b/content/github/setting-up-and-managing-your-github-user-account/removing-yourself-from-an-organization.md deleted file mode 100644 index ef2f03ca2ddd..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/removing-yourself-from-an-organization.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Removing yourself from an organization -intro: 'If you''re an outside collaborator or a member of an organization, you can leave the organization at any time.' -redirect_from: - - /articles/how-do-i-remove-myself-from-an-organization/ - - /articles/removing-yourself-from-an-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% if currentVersion == "free-pro-team@latest" %} - -{% warning %} - -**Warning:** If you're currently responsible for paying for {% data variables.product.product_name %} in your organization, removing yourself from the organization **does not** update the billing information on file for the organization. If you are currently responsible for billing, **you must** have another owner or billing manager for the organization [update the organization's payment method](/articles/adding-or-editing-a-payment-method). - -For more information, see "[Transferring organization ownership](/articles/transferring-organization-ownership)." - -{% endwarning %} - -{% endif %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.organizations %} -3. Under "Organizations", find the organization you'd like to remove yourself from, then click **Leave**. - ![Leave organization button with roles shown](/assets/images/help/organizations/context-leave-organization-with-roles-shown.png) diff --git a/content/github/setting-up-and-managing-your-github-user-account/requesting-organization-approval-for-oauth-apps.md b/content/github/setting-up-and-managing-your-github-user-account/requesting-organization-approval-for-oauth-apps.md deleted file mode 100644 index 1ffc7304d170..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/requesting-organization-approval-for-oauth-apps.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Requesting organization approval for OAuth Apps -intro: 'Organization members can request that an owner approve access to organization resources for {% data variables.product.prodname_oauth_app %}.' -redirect_from: - - /articles/requesting-organization-approval-for-third-party-applications/ - - /articles/requesting-organization-approval-for-your-authorized-applications/ - - /articles/requesting-organization-approval-for-oauth-apps -versions: - free-pro-team: '*' ---- - -### Requesting organization approval for an {% data variables.product.prodname_oauth_app %} you've already authorized for your personal account - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.access_applications %} -{% data reusables.user_settings.access_authorized_oauth_apps %} -3. In the list of applications, click the name of the {% data variables.product.prodname_oauth_app %} you'd like to request access for. -![View application button](/assets/images/help/settings/settings-third-party-view-app.png) -4. Next to the organization you'd like the {% data variables.product.prodname_oauth_app %} to access, click **Request access**. -![Request access button](/assets/images/help/settings/settings-third-party-request-access.png) -5. After you review the information about requesting {% data variables.product.prodname_oauth_app %} access, click **Request approval from owners**. -![Request approval button](/assets/images/help/settings/oauth-access-request-approval.png) - -### Further reading - -- "[About {% data variables.product.prodname_oauth_app %} access restrictions](/articles/about-oauth-app-access-restrictions)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/setting-a-backup-email-address.md b/content/github/setting-up-and-managing-your-github-user-account/setting-a-backup-email-address.md deleted file mode 100644 index 09094f778da1..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/setting-a-backup-email-address.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Setting a backup email address -intro: Use a backup email address to securely reset your password if you can no longer access your primary email address. -redirect_from: - - /articles/setting-a-backup-email-address -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.emails %} -3. Under "Backup email address," select the address you want to set as your backup email address using the drop-down menu. -![Backup email address](/assets/images/help/settings/backup-email-address.png) -4. Click **Save**. - -### Further reading - -- "[Managing email preferences](/articles/managing-email-preferences/)" -- "[Updating your GitHub access credentials](/articles/updating-your-github-access-credentials/)" diff --git a/content/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address.md b/content/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address.md deleted file mode 100644 index e13f71ed91ad..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Setting your commit email address -intro: 'You can set a primary email address on {% data variables.product.product_name %} that''s associated with web-based Git operations you perform such as edits and merges.' -redirect_from: - - /articles/keeping-your-email-address-private/ - - /articles/setting-your-commit-email-address-on-github/ - - /article/about-commit-email-addresses/ - - /articles/git-email-settings/ - - /articles/setting-your-email-in-git/ - - /articles/set-your-user-name-email-and-github-token/ - - /articles/setting-your-commit-email-address-in-git/ - - /articles/setting-your-commit-email-address -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About commit email addresses - -{% data variables.product.product_name %} uses your commit email address to associate commits with your {% data variables.product.product_name %} account. You can choose the email address that will be associated with the commits you push from the command line as well as web-based Git operations you make. - -For web-based Git operations, you can set your commit email address on {% data variables.product.product_name %}. For commits you push from the command line, you can set your commit email address in Git. - -{% if currentVersion == "free-pro-team@latest" %}Any commits you made prior to changing your commit email address are still associated with your previous email address.{% else %}After changing your commit email address on {% data variables.product.product_name %}, the new email address will be visible in all of your future web-based Git operations by default. Any commits you made prior to changing your commit email address are still associated with your previous email address.{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} - -{% note %} - -**Note**: {% data reusables.user_settings.no-verification-disposable-emails %} - -{% endnote %} - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %}If you'd like to keep your personal email address private, you can use a {% data variables.product.product_name %}-provided `no-reply` email address as your commit email address. To use your `noreply` email address for commits you push from the command line, use that email address when you set your commit email address in Git. To use your `noreply` address for web-based Git operations, set your commit email address on GitHub and choose to **Keep my email address private**. - -You can also choose to block commits you push from the command line that expose your personal email address. For more information, see "[Blocking command line pushes that expose your personal email](/articles/blocking-command-line-pushes-that-expose-your-personal-email-address)."{% endif %} - -To ensure that commits are attributed to you and appear in your contributions graph, use an email address that you've [added to your GitHub account](/articles/adding-an-email-address-to-your-github-account/){% if currentVersion == "free-pro-team@latest" %}, or the {% data variables.product.product_name %}-provided `noreply` email address provided to you in your email settings{% endif %}. - -{% if currentVersion == "free-pro-team@latest" %} - -{% note %} - -**Note:** If you created your {% data variables.product.product_name %} account _after_ July 18, 2017, your {% data variables.product.product_name %}-provided `no-reply` email address is a seven-digit ID number and your username in the form of ID+username@users.noreply.github.com. If you created your {% data variables.product.product_name %} account _prior to_ July 18, 2017, your {% data variables.product.product_name %}-provided `no-reply` email address is your username in the form of username@users.noreply.github.com. You can get an ID-based {% data variables.product.product_name %}-provided `no-reply` email address by selecting (or deselecting and reselecting) **Keep my email address private** in your email settings. - -{% endnote %} - -If you use your {% data variables.product.product_name %}-provided `noreply` email address to make commits and then [change your username](/articles/changing-your-github-username), those commits will not be associated with your {% data variables.product.product_name %} account. This does not apply if you're using the ID-based {% data variables.product.product_name %}-provided `noreply` address. For more information, see "[Changing your {% data variables.product.prodname_dotcom %} username](/articles/changing-your-github-username)."{% endif %} - -### Setting your commit email address on {% data variables.product.prodname_dotcom %} - -{% data reusables.files.commit-author-email-options %} - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.emails %} -{% data reusables.user_settings.add_and_verify_email %} -{% data reusables.user_settings.select_primary_email %}{% if currentVersion == "free-pro-team@latest" %} -{% data reusables.user_settings.keeping_your_email_address_private %}{% endif %} - -### Setting your commit email address in Git - -You can use the `git config` command to change the email address you associate with your Git commits. The new email address you set will be visible in any future commits you push to {% data variables.product.product_name %} from the command line. Any commits you made prior to changing your commit email address are still associated with your previous email address. - -#### Setting your email address for every repository on your computer - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. {% data reusables.user_settings.set_your_email_address_in_git %} - ```shell - $ git config --global user.email "email@example.com" - ``` -3. {% data reusables.user_settings.confirm_git_email_address_correct %} - ```shell - $ git config --global user.email - email@example.com - ``` -4. {% data reusables.user_settings.link_email_with_your_account %} - -#### Setting your email address for a single repository - -{% data variables.product.product_name %} uses the email address set in your local Git configuration to associate commits pushed from the command line with your {% data variables.product.product_name %} account. - -You can change the email address associated with commits you make in a single repository. This will override your global Git config settings in this one repository, but will not affect any other repositories. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Change the current working directory to the local repository where you want to configure the email address that you associate with your Git commits. -3. {% data reusables.user_settings.set_your_email_address_in_git %} - ```shell - $ git config user.email "email@example.com" - ``` -4. {% data reusables.user_settings.confirm_git_email_address_correct %} - ```shell - $ git config user.email - email@example.com - ``` -5. {% data reusables.user_settings.link_email_with_your_account %} diff --git a/content/github/setting-up-and-managing-your-github-user-account/types-of-emails-github-sends.md b/content/github/setting-up-and-managing-your-github-user-account/types-of-emails-github-sends.md deleted file mode 100644 index eca5d3f1b2e8..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/types-of-emails-github-sends.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Types of emails GitHub sends -intro: 'There are several types of emails you can receive from {% data variables.product.product_name %}, including notifications, account information, and marketing communications.' -redirect_from: - - /articles/types-of-emails-github-sends -versions: - free-pro-team: '*' ---- - -### Notification emails - -You can choose to receive some or all of your activity notifications via email. For more information, see "[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications)." Notification emails can include: - -- Security-related activity on repositories you have admin access to -- Activity on repositories you're watching -- Conversations you're participating in -- Conversations where you've been @mentioned -- Pushes to pull requests you're participating in -- Invitations to collaborate in an organization or repository -- Your own activity, such as opening, commenting on, or closing issues and pull requests - -You can also choose which type of email updates you'd like to receive on conversations you're participating in or watching. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications)." - -### Account emails - -If you've upgraded to paid products or features, then you'll receive billing receipts at the account's primary email address. For more information, see "[Setting your billing email](/articles/setting-your-billing-email)." - -### Marketing emails - -{% data variables.product.product_name %} occasionally sends these types of marketing emails: - -- Tips and tricks for getting started with your account -- Customized information about engaging projects or new features -- Newsletters that you've subscribed to, such as {% data variables.explore.explore_github %} - -For more information, see "[Managing marketing emails from GitHub](/articles/managing-marketing-emails-from-github)." diff --git a/content/github/setting-up-and-managing-your-github-user-account/viewing-peoples-roles-in-an-organization.md b/content/github/setting-up-and-managing-your-github-user-account/viewing-peoples-roles-in-an-organization.md deleted file mode 100644 index f1a527db9e29..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/viewing-peoples-roles-in-an-organization.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Viewing people's roles in an organization -intro: 'You can view a list of the people in your organization and filter by their role. For more information on organization roles, see "[Permission levels for an organization](/articles/permission-levels-for-an-organization)."' -redirect_from: - - /articles/viewing-people-s-roles-in-an-organization - - /articles/viewing-peoples-roles-in-an-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -{% note %} - -**Note:** You must be an organization member to see people's roles in your organization. - -{% endnote %} - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.people %} -4. You will see a list of the people in your organization. To filter the list by role, click **Role** and select the role you're searching for. - ![click-role](/assets/images/help/organizations/view-list-of-people-in-org-by-role.png) diff --git a/content/github/setting-up-and-managing-your-github-user-account/what-does-the-available-for-hire-checkbox-do.md b/content/github/setting-up-and-managing-your-github-user-account/what-does-the-available-for-hire-checkbox-do.md deleted file mode 100644 index d6a14d6120ce..000000000000 --- a/content/github/setting-up-and-managing-your-github-user-account/what-does-the-available-for-hire-checkbox-do.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: What does the 'Available for hire' checkbox do? -intro: Use the **Available for hire** checkbox to view GitHub Jobs posts within GitHub. -redirect_from: - - /articles/what-does-the-available-for-hire-checkbox-do -versions: - free-pro-team: '*' ---- - -The [GitHub Jobs](https://jobs.github.com/) board is a great way to find employment in tech. You can opt to see jobs posted there on your GitHub dashboard. - -![GitHub Jobs ads on the dashboard](/assets/images/help/settings/jobs-ads-on-dashboard.png) - -{% data reusables.user_settings.access_settings %} -2. Under Jobs Profile, select **Available for hire**, then click **Save jobs profile**. - ![Jobs profile settings](/assets/images/help/settings/jobs-profile-settings.png) diff --git a/content/github/site-policy/amendment-to-github-terms-of-service-applicable-to-us-federal-government-users.md b/content/github/site-policy/amendment-to-github-terms-of-service-applicable-to-us-federal-government-users.md deleted file mode 100644 index 6d69ad58e544..000000000000 --- a/content/github/site-policy/amendment-to-github-terms-of-service-applicable-to-us-federal-government-users.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Amendment to GitHub Terms of Service Applicable to U.S. Federal Government Users -redirect_from: - - /articles/amendment-to-github-terms-of-service-applicable-to-government-users/ - - /articles/proposed-amendment-to-github-terms-of-service-applicable-to-u-s-federal-government-users/ - - /articles/amendment-to-github-terms-of-service-applicable-to-u-s-federal-government-users - - /articles/amendment-to-github-terms-of-service-applicable-to-us-federal-government-users -versions: - free-pro-team: '*' ---- - -{% tip %} - -This Amendment to GitHub's [Terms of Service](/articles/github-terms-of-service) applies only to users that are using GitHub on behalf of the United States federal government. If you are not using GitHub on behalf of the U.S. federal government, the standard [GitHub Terms of Service](/articles/github-terms-of-service) apply to you. - -{% endtip %} - -This Amendment is an agreement between GitHub, Inc. ("GitHub" or "Company") and U.S. federal government users of the GitHub.com web site (the “Service”) and applies solely to any U.S. federal government agency and its users who use or access the Service on behalf of the U.S. federal government (the "Government"). - -You, as a United States government entity, are required, when entering into agreements with other parties, to follow applicable federal laws and regulations, including those related to ethics; privacy and security; accessibility; records retention; limitations on indemnification; fiscal law constraints; advertising and endorsements; freedom of information; and governing law and dispute resolution forum. - -GitHub and You (together, the "Parties") agree that modifications to the [GitHub Terms of Service](/articles/github-terms-of-service) (the "ToS") are appropriate to accommodate Your legal status, Your public (in contrast to private) mission, and other special circumstances. Accordingly, the ToS are hereby modified by this Amendment as they pertain to the Government's use of the Company web site and services: - -### A. Public purpose - -1. *Government entity* - "You" within the ToS shall mean the Government itself and shall not bind, in their individual capacity, the individual(s) who utilize the Company site or services on the Government's behalf. Company will look solely to the Government to enforce any violation or breach of the ToS by such individuals, subject to federal law. - -2. *Advertisements* - Company hereby agrees not to serve or display any third-party commercial advertisements or solicitations on any pages within the Company site displaying content created by or under the control of the Government. This exclusion shall not extend to house ads, which Company may serve on such pages in a non-intrusive manner. The foregoing obligations are contingent upon the email address designated on Your account details page ending in `.gov`, `.mil`, or `.fed.us`. - -### B. Your content on GitHub - -1. *Access and use* - Company acknowledges that the Government's use of the Service may energize significant citizen engagement. Language in the ToS allowing Company to terminate service, refuse or remove any Content, or close the Government's account, at any time, for any reason, is modified to reflect the Parties' agreement that Company may unilaterally modify or discontinue service, temporarily or permanently, refuse or remove any Content, and/or terminate the Government's account only for breach of the Government’s obligations under the ToS or its material failure to comply with the instructions and guidelines posted on the Service, or if Company ceases to operate the Service generally. Company will provide the Government with a reasonable opportunity to cure any breach or failure on the Government's part. - -2. *No endorsement* - Company agrees that Your seals, trademarks, logos, service marks, trade names, and the fact that You have a presence on the Company site and use its services, shall not be used by Company in such a manner as to state or imply that Company's products or services are endorsed, sponsored or recommended by You or by any other element of the federal government, or are considered by these entities to be superior to any other products or services. Except for pages whose design and content is under the control of the Government, or for links to or promotion of such pages, Company agrees not to display any government seals or logos on the Company's homepage or elsewhere on the Company Site, unless permission to do so has been granted by the Government or by other relevant federal government authority. Company may list the Government's name in a publicly available customer list so long as the name is not displayed in a more prominent fashion than that of any other third-party name. - -3. *Provision of data* - In case of termination of service, within 30 days of such termination, upon request, Company will provide you with all user-generated content that is publicly visible through the Sites You created at Company. Data will be provided in a commonly used file or database format as Company deems appropriate. Company will not provide data if doing so would violate its privacy policy, available at [https://docs.github.com/privacy](/privacy). - -### C. Unpaid and paid plans - -1. *No cost agreement* - Nothing in this Amendment or ToS obligates You to expend appropriations or incur financial obligations. The Parties acknowledge and agree that none of the obligations arising from this Amendment or ToS are contingent upon the payment of fees by one party to the other. At the Company’s discretion, GitHub may offer a free account under a free usage plan, such as a Free for Open Source Plan, and in that case this Amendment will apply to the Government’s usage under the free account/plan. This Amendment also applies when the Government uses one of GitHub’s paid usage plans. - -2. *Government responsibilities under paid usage plans* - You acknowledge that while Company will provide You with service under a free plan, Company reserves the right to begin charging for that service at some point in the future. Company will provide You with at least 30 days advance notice of a change involving the charging of fees for a free service. You also understand that Company offers paid plans for a fee. The Parties understand that fee-based services are categorically different than free products, and are subject to federal procurement rules and processes. Before the Government decides to enter into a business or enterprise subscription, or any other fee-based service that this Company or alternative providers may offer now or in the future, You agree: to determine the Government has a need for those additional services for a fee; to consider the subscription's value in comparison with comparable services available elsewhere; to determine that Government funds are available for payment; to properly use the Government Purchase Card if that Card is used as the payment method; to review any then-applicable ToS for conformance to federal procurement law; and in all other respects to follow applicable federal acquisition laws, regulations and agency guidelines (including those related to payments) when initiating that separate action. - -3. *No business relationship created* - The Parties are independent entities and nothing in this Amendment or ToS creates an agency, partnership, joint venture, or employer/employee relationship. - -### D. Federal Regulations - -1. *Security* - Company will, in good faith, exercise due diligence using generally accepted commercial business practices for IT security, to ensure that systems are operated and maintained in a secure manner, and that management, operational and technical controls will be employed to ensure security of systems and data. Recognizing the changing nature of the Web, Company will continuously work with users to ensure that its products and services are operated and maintained in a secure manner. Company agrees to discuss implementing additional security controls as deemed necessary by the Government to conform to the Federal Information Security Management Act (FISMA), 44 U.S.C. 3541 et seq. - -2. *Federal Records* - Government acknowledges that use of Company's site and services may require management of Federal records. Government and user-generated content may meet the definition of Federal records as determined by the agency. If the Company holds Federal records, the Government and the Company must manage Federal records in accordance with all applicable records management laws and regulations, including but not limited to the Federal Records Act (44 U.S.C. chs. 21, 29, 31, 33), and regulations of the National Archives and Records Administration (NARA) at 36 CFR Chapter XII Subchapter B). Managing the records includes, but is not limited to, secure storage, retrievability, and proper disposition of all Federal records including transfer of permanently valuable records to NARA in a format and manner acceptable to NARA at the time of transfer. The Government is responsible for ensuring that the Company is compliant with applicable records management laws and regulations through the life and termination of the Agreement. - -### E. General Conditions - -1. *Indemnification* - Any provisions in the ToS related to indemnification, damages, attorney’s fees, and settlement are hereby waived. Liability of the Government for any breach of the ToS or this Agreement, or any claim, demand, suit or proceeding arising from the ToS or this Agreement, shall be determined under the Federal Tort Claims Act, or other governing authority. Liability of Company for any breach of the ToS or this Agreement, or any claim, demand, suit or proceeding arising from the ToS or this Agreement, shall be determined by applicable federal or state law. - -2. *Limitation of liability* - The Parties agree that nothing in the Limitation of Liability clause or elsewhere in the ToS in any way grants Company a waiver from, release of, or limitation of liability pertaining to, any past, current or future violation of federal law. - -3. *Governing law and Forum* - The dispute resolution provision in the ToS is hereby deleted. The ToS and this Amendment shall be governed, interpreted and enforced in accordance with applicable federal laws of the United States of America and exclusive jurisdiction shall be in the appropriate U.S. federal courts. To the extent permitted by federal law, the laws of the State of California will apply in the absence of federal law. - -4. *Assignment* - Neither party may assign its obligations under this Amendment or ToS to any third-party without prior written consent of the other; however, GitHub may, without the Government's consent, assign its obligations to an Government using the service under a free usage plan under this Amendment or ToS to an affiliate or to a successor or acquirer, as the case may be, in connection with a merger, acquisition, corporate reorganization or consolidation, or the sale of all or substantially all of GitHub's assets. - -### F. Changes to this agreement - -1. *Precedence; Further Amendment; Termination* - This Amendment constitutes an amendment to the ToS; language in the ToS indicating it may not be modified or that it alone is the entire agreement between the Parties is waived. If there is any conflict between this Amendment and the ToS, or between this Amendment and other rules or policies on the Company site or services, this Amendment shall prevail. This Amendment may be further amended only upon written agreement executed by both Parties. The Government may close its account and terminate this agreement at any time. Company may close Government's account and terminate this agreement on 30 days written notice, but the Government shall not be entitled to a refund of any fees paid. - -2. *Posting and availability of this Amendment* - The parties agree this Amendment contains no confidential or proprietary information, and either party may release it to the public at large. diff --git a/content/github/site-policy/dmca-takedown-policy.md b/content/github/site-policy/dmca-takedown-policy.md deleted file mode 100644 index 7fbaf5fab8b5..000000000000 --- a/content/github/site-policy/dmca-takedown-policy.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: DMCA Takedown Policy -redirect_from: - - /dmca/ - - /dmca-takedown/ - - /dmca-takedown-policy/ - - /articles/dmca-takedown/ - - /articles/dmca-takedown-policy -versions: - free-pro-team: '*' ---- - -Welcome to GitHub's Guide to the Digital Millennium Copyright Act, commonly known as the "DMCA." This page is not meant as a comprehensive primer to the statute. However, if you've received a DMCA takedown notice targeting content you've posted on GitHub or if you're a rights-holder looking to issue such a notice, this page will hopefully help to demystify the law a bit as well as our policies for complying with it. - -(If you just want to submit a notice, you can [skip to the end](#f-submitting-notices).) - -As with all legal matters, it is always best to consult with a professional about your specific questions or situation. We strongly encourage you to do so before taking any action that might impact your rights. This guide isn't legal advice and shouldn't be taken as such. - -### What Is the DMCA? - -In order to understand the DMCA and some of the policy lines it draws, it's perhaps helpful to consider life before it was enacted. - -The DMCA provides a safe harbor for service providers that host user-generated content. Since even a single claim of copyright infringement can carry statutory damages of up to $150,000, the possibility of being held liable for user-generated content could be very harmful for service providers. With potential damages multiplied across millions of users, cloud-computing and user-generated content sites like YouTube, Facebook, or GitHub probably [never would have existed](https://arstechnica.com/tech-policy/2015/04/how-the-dmca-made-youtube/) without the DMCA (or at least not without passing some of that cost downstream to their users). - -The DMCA addresses this issue by creating a [copyright liability safe harbor](https://www.copyright.gov/title17/92chap5.html#512) for internet service providers hosting allegedly infringing user-generated content. Essentially, so long as a service provider follows the DMCA's notice-and-takedown rules, it won't be liable for copyright infringement based on user-generated content. Because of this, it is important for GitHub to maintain its DMCA safe-harbor status. - -### DMCA Notices In a Nutshell - -The DMCA provides two simple, straightforward procedures that all GitHub users should know about: (i) a [takedown-notice](/articles/guide-to-submitting-a-dmca-takedown-notice) procedure for copyright holders to request that content be removed; and (ii) a [counter-notice](/articles/guide-to-submitting-a-dmca-counter-notice) procedure for users to get content reenabled when content is taken down by mistake or misidentification. - -DMCA [takedown notices](/articles/guide-to-submitting-a-dmca-takedown-notice) are used by copyright owners to ask GitHub to take down content they believe to be infringing. If you are a software designer or developer, you create copyrighted content every day. If someone else is using your copyrighted content in an unauthorized manner on GitHub, you can send us a DMCA takedown notice to request that the infringing content be changed or removed. - -On the other hand, [counter notices](/articles/guide-to-submitting-a-dmca-counter-notice) can be used to correct mistakes. Maybe the person sending the takedown notice does not hold the copyright or did not realize that you have a license or made some other mistake in their takedown notice. Since GitHub usually cannot know if there has been a mistake, the DMCA counter notice allows you to let us know and ask that we put the content back up. - -The DMCA notice and takedown process should be used only for complaints about copyright infringement. Notices sent through our DMCA process must identify copyrighted work or works that are allegedly being infringed. The process cannot be used for other complaints, such as complaints about alleged [trademark infringement](/articles/github-trademark-policy/) or [sensitive data](/articles/github-sensitive-data-removal-policy/); we offer separate processes for those situations. - -### A. How Does This Actually Work? - -The DMCA framework is a bit like passing notes in class. The copyright owner hands GitHub a complaint about a user. If it's written correctly, we pass the complaint along to the user. If the user disputes the complaint, they can pass a note back saying so. GitHub exercises little discretion in the process other than determining whether the notices meet the minimum requirements of the DMCA. It is up to the parties (and their lawyers) to evaluate the merit of their claims, bearing in mind that notices must be made under penalty of perjury. - -Here are the basic steps in the process. - -1. **Copyright Owner Investigates.** A copyright owner should always conduct an initial investigation to confirm both (a) that they own the copyright to an original work and (b) that the content on GitHub is unauthorized and infringing. This includes confirming that the use is not protected as [fair use](https://www.lumendatabase.org/topics/22). A particular use may be fair if it only uses a small amount of copyrighted content, uses that content in a transformative way, uses it for educational purposes, or some combination of the above. Because code naturally lends itself to such uses, each use case is different and must be considered separately. -> **Example:** An employee of Acme Web Company finds some of the company's code in a GitHub repository. Acme Web Company licenses its source code out to several trusted partners. Before sending in a take-down notice, Acme should review those licenses and its agreements to confirm that the code on GitHub is not authorized under any of them. - -2. **Copyright Owner Sends A Notice.** After conducting an investigation, a copyright owner prepares and sends a [takedown notice](/articles/guide-to-submitting-a-dmca-takedown-notice) to GitHub. Assuming the takedown notice is sufficiently detailed according to the statutory requirements (as explained in the [how-to guide](/articles/guide-to-submitting-a-dmca-takedown-notice)), we will [post the notice](#d-transparency) to our [public repository](https://github.com/github/dmca) and pass the link along to the affected user. - -3. **GitHub Asks User to Make Changes.** If the notice alleges that the entire contents of a repository infringe, or a package infringes, we will skip to Step 6 and disable the entire repository or package expeditiously. Otherwise, because GitHub cannot disable access to specific files within a repository, we will contact the user who created the repository and give them approximately 1 business day to delete or modify the content specified in the notice. We'll notify the copyright owner if and when we give the user a chance to make changes. Because packages are immutable, if only part of a package is infringing, GitHub would need to disable the entire package, but we permit reinstatement once the infringing portion is removed. - -4. **User Notifies GitHub of Changes.** If the user chooses to make the specified changes, they *must* tell us so within the window of approximately 1 business day. If they don't, we will disable the repository (as described in Step 6). If the user notifies us that they made changes, we will verify that the changes have been made and then notify the copyright owner. - -5. **Copyright Owner Revises or Retracts the Notice.** If the user makes changes, the copyright owner must review them and renew or revise their takedown notice if the changes are insufficient. GitHub will not take any further action unless the copyright owner contacts us to either renew the original takedown notice or submit a revised one. If the copyright owner is satisfied with the changes, they may either submit a formal retraction or else do nothing. GitHub will interpret silence longer than two weeks as an implied retraction of the takedown notice. - -6. **GitHub May Disable Access to the Content.** GitHub will disable a user's content if: (i) the copyright owner has alleged copyright over the user's entire repository or package (as noted in Step 3); (ii) the user has not made any changes after being given an opportunity to do so (as noted in Step 4); or (iii) the copyright owner has renewed their takedown notice after the user had a chance to make changes. If the copyright owner chooses instead to *revise* the notice, we will go back to Step 2 and repeat the process as if the revised notice were a new notice. - -7. **User May Send A Counter Notice.** We encourage users who have had content disabled to consult with a lawyer about their options. If a user believes that their content was disabled as a result of a mistake or misidentification, they may send us a [counter notice](/articles/guide-to-submitting-a-dmca-counter-notice). As with the original notice, we will make sure that the counter notice is sufficiently detailed (as explained in the [how-to guide](/articles/guide-to-submitting-a-dmca-counter-notice)). If it is, we will [post it](#d-transparency) to our [public repository](https://github.com/github/dmca) and pass the notice back to the copyright owner by sending them the link. - -8. **Copyright Owner May File a Legal Action.** If a copyright owner wishes to keep the content disabled after receiving a counter notice, they will need to initiate a legal action seeking a court order to restrain the user from engaging in infringing activity relating to the content on GitHub. In other words, you might get sued. If the copyright owner does not give GitHub notice within 10-14 days, by sending a copy of a valid legal complaint filed in a court of competent jurisdiction, GitHub will reenable the disabled content. - -### B. What About Forks? (or What's a Fork?) - -One of the best features of GitHub is the ability for users to "fork" one another's repositories. What does that mean? In essence, it means that users can make a copy of a project on GitHub into their own repositories. As the license or the law allows, users can then make changes to that fork to either push back to the main project or just keep as their own variation of a project. Each of these copies is a "[fork](/articles/github-glossary#fork)" of the original repository, which in turn may also be called the "parent" of the fork. - -GitHub *will not* automatically disable forks when disabling a parent repository. This is because forks belong to different users, may have been altered in significant ways, and may be licensed or used in a different way that is protected by the fair-use doctrine. GitHub does not conduct any independent investigation into forks. We expect copyright owners to conduct that investigation and, if they believe that the forks are also infringing, expressly include forks in their takedown notice. - -### C. What If I Inadvertently Missed the Window to Make Changes? - -We recognize that there are many valid reasons that you may not be able to make changes within the window of approximately 1 business day we provide before your repository gets disabled. Maybe our message got flagged as spam, maybe you were on vacation, maybe you don't check that email account regularly, or maybe you were just busy. We get it. If you respond to let us know that you would have liked to make the changes, but somehow missed the first opportunity, we will re-enable the repository one additional time for approximately 1 business day to allow you to make the changes. Again, you must notify us that you have made the changes in order to keep the repository enabled after that window of approximately 1 business day, as noted above in [Step A.4](#a-how-does-this-actually-work). Please note that we will only provide this one additional chance. - -### D. Transparency - -We believe that transparency is a virtue. The public should know what content is being removed from GitHub and why. An informed public can notice and surface potential issues that would otherwise go unnoticed in an opaque system. We post redacted copies of any legal notices we receive (including original notices, counter notices or retractions) at . We will not publicly publish your personal contact information; we will remove personal information (except for usernames in URLs) before publishing notices. We will not, however, redact any other information from your notice unless you specifically ask us to. Here are some examples of a published [notice](https://github.com/github/dmca/blob/master/2014/2014-05-28-Delicious-Brains.md) and [counter notice](https://github.com/github/dmca/blob/master/2014/2014-05-01-Pushwoosh-SDK-counternotice.md) for you to see what they look like. When we remove content, we will post a link to the related notice in its place. - -Please also note that, although we will not publicly publish unredacted notices, we may provide a complete unredacted copy of any notices we receive directly to any party whose rights would be affected by it. - -### E. Repeated Infringement - -It is the policy of GitHub, in appropriate circumstances and in its sole discretion, to disable and terminate the accounts of users who may infringe upon the copyrights or other intellectual property rights of GitHub or others. - -### F. Submitting Notices - -If you are ready to submit a notice or a counter notice: -- [How to Submit a DMCA Notice](/articles/guide-to-submitting-a-dmca-takedown-notice) -- [How to Submit a DMCA Counter Notice](/articles/guide-to-submitting-a-dmca-counter-notice) - -### Learn More and Speak Up - -If you poke around the Internet, it is not too hard to find commentary and criticism about the copyright system in general and the DMCA in particular. While GitHub acknowledges and appreciates the important role that the DMCA has played in promoting innovation online, we believe that the copyright laws could probably use a patch or two—if not a whole new release. In software, we are constantly improving and updating our code. Think about how much technology has changed since 1998 when the DMCA was written. Doesn't it just make sense to update these laws that apply to software? - -We don't presume to have all the answers. But if you are curious, here are a few links to scholarly articles and blog posts we have found with opinions and proposals for reform: - -- [Unintended Consequences: Twelve Years Under the DMCA](https://www.eff.org/wp/unintended-consequences-under-dmca) (Electronic Frontier Foundation) -- [Statutory Damages in Copyright Law: A Remedy in Need of Reform](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1375604) (William & Mary Law Review) -- [Is the Term of Protection of Copyright Too Long?](https://the1709blog.blogspot.com/2012/11/is-term-of-protection-of-copyright-too.html) (The 1709 Blog) -- [If We're Going to Change DMCA's 'Notice & Takedown,' Let's Focus on How Widely It's Abused](https://www.techdirt.com/articles/20140314/11350426579/if-were-going-to-change-dmcas-notice-takedown-lets-focus-how-widely-its-abused.shtml) (TechDirt) -- [Opportunities for Copyright Reform](https://www.cato-unbound.org/issues/january-2013/opportunities-copyright-reform) (Cato Unbound) -- [Fair Use Doctrine and the Digital Millennium Copyright Act: Does Fair Use Exist on the Internet Under the DMCA?](https://digitalcommons.law.scu.edu/lawreview/vol42/iss1/6/) (Santa Clara Law Review) - -GitHub doesn't necessarily endorse any of the viewpoints in those articles. We provide the links to encourage you to learn more, form your own opinions, and then reach out to your elected representative(s) (e.g, in the [U.S. Congress](https://www.govtrack.us/congress/members) or [E.U. Parliament](https://www.europarl.europa.eu/meps/en/home)) to seek whatever changes you think should be made. diff --git a/content/github/site-policy/github-acceptable-use-policies.md b/content/github/site-policy/github-acceptable-use-policies.md deleted file mode 100644 index cda0c14d17f7..000000000000 --- a/content/github/site-policy/github-acceptable-use-policies.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: GitHub Acceptable Use Policies -redirect_from: - - /articles/github-acceptable-use-policies -versions: - free-pro-team: '*' ---- - -**Short version:** _We host a wide variety of collaborative projects from all over the world, and that collaboration only works when our users are able to work together in good faith. While using the Service, you must comply with our Acceptable Use Policies, which include some restrictions on content you can post, conduct on the service, and other limitations. In short, be excellent to each other._ - -Capitalized terms used but not defined in these Acceptable Use Policies have the meanings assigned to them in our [Terms of Service](/articles/github-terms-of-service), [Corporate Terms of Service](/articles/github-corporate-terms-of-service), and [Privacy Statement](/articles/github-privacy-statement). For customers subject to the [Corporate Terms of Service](/articles/github-corporate-terms-of-service), "you" and "your" refer to "Customer" or "Users". "We", "us", "our" refer to "GitHub". - -### 1. Compliance with Laws and Regulations -You are responsible for using the Service in compliance with all applicable laws, regulations, and all of our Acceptable Use Policies. These policies may be updated from time to time and are provided below, as well as in our [Terms of Service](/articles/github-terms-of-service) and [Corporate Terms of Service](/articles/github-corporate-terms-of-service). - -### 2. Content Restrictions -Under no circumstances will Users upload, post, host, execute, or transmit any Content to any repositories that: - -- is unlawful or promotes unlawful activities; - -- is or contains sexually obscene content; - -- is libelous, defamatory, or fraudulent; - -- is discriminatory or abusive toward any individual or group; - -- gratuitously depicts or glorifies violence, including violent images; - -- is or contains false, inaccurate, or intentionally deceptive information that is likely to adversely affect the public interest (including health, safety, election integrity, and civic participation); - -- contains or installs any active malware or exploits, or uses our platform for exploit delivery (such as part of a command and control system); or - -- infringes any proprietary right of any party, including patent, trademark, trade secret, copyright, right of publicity, or other right. - -### 3. Conduct Restrictions -While using the Service, under no circumstances will you: - -- harass, abuse, threaten, or incite violence towards any individual or group, including our employees, officers, and agents, or other users; - -- use our servers for any form of excessive automated bulk activity (for example, spamming or cryptocurrency mining), to place undue burden on our servers through automated means, or to relay any form of unsolicited advertising or solicitation through our servers, such as get-rich-quick schemes; - -- use our servers to disrupt or to attempt to disrupt, or to gain or to attempt to gain unauthorized access to, any service, device, data, account or network (unless authorized by the [GitHub Bug Bounty program](https://bounty.github.com)); - -- impersonate any person or entity, including any of our employees or representatives, including through false association with GitHub, or by fraudulently misrepresenting your identity or site's purpose; or - -- violate the privacy of any third party, such as by posting another person's personal information without consent. - -### 4. Services Usage Limits -You will not reproduce, duplicate, copy, sell, resell or exploit any portion of the Service, use of the Service, or access to the Service without our express written permission. - -### 5. Scraping and API Usage Restrictions -Scraping refers to extracting data from our Service via an automated process, such as a bot or webcrawler. It does not refer to the collection of information through our API. Please see Section H of our [Terms of Service](/articles/github-terms-of-service#h-api-terms) for our API Terms. You may scrape the website for the following reasons: - -- Researchers may scrape public, non-personal information from the Service for research purposes, only if any publications resulting from that research are open access. -- Archivists may scrape the Service for public data for archival purposes. - -You may not scrape the Service for spamming purposes, including for the purposes of selling User Personal Information (as defined in the [GitHub Privacy Statement](/articles/github-privacy-statement)), such as to recruiters, headhunters, and job boards. - -All use of data gathered through scraping must comply with the [GitHub Privacy Statement](/articles/github-privacy-statement). - -### 6. Privacy -Misuse of User Personal Information is prohibited. - -Any person, entity, or service collecting data from the Service must comply with the [GitHub Privacy Statement](/articles/github-privacy-statement), particularly in regards to the collection of User Personal Information. If you collect any User Personal Information from the Service, you agree that you will only use that User Personal Information for the purpose for which that User has authorized it. You agree that you will reasonably secure any User Personal Information you have gathered from the Service, and you will respond promptly to complaints, removal requests, and "do not contact" requests from us or other users. - -### 7. Excessive Bandwidth Use -The Service's bandwidth limitations vary based on the features you use. If we determine your bandwidth usage to be significantly excessive in relation to other users of similar features, we reserve the right to suspend your Account, throttle your file hosting, or otherwise limit your activity until you can reduce your bandwidth consumption. We also reserve the right—after providing advance notice—to delete repositories that we determine to be placing undue strain on our infrastructure. For guidance on acceptable use of object storage in repositories, refer to "[What is my disk quota?](/github/managing-large-files/what-is-my-disk-quota)". For more details on specific features' bandwidth limitations, see the [GitHub Additional Product Terms](/github/site-policy/github-additional-product-terms). - -### 8. Advertising on GitHub -**Short version:** *We do not generally prohibit use of GitHub for advertising. However, we expect our users to follow certain limitations, so GitHub does not become a spam haven. No one wants that.* - -While we understand that you may want to promote your Content by posting supporters' names or logos in your Account, the primary focus of the Content posted in or through your Account to the Service should not be advertising or promotional marketing. This includes Content posted in or through Pages, Packages, repositories, and all other parts of the Service. You may include static images, links, and promotional text in the README documents or project description sections associated with your Account, but they must be related to the project you are hosting on GitHub. You may not advertise in other Users' Accounts, such as by posting monetized or excessive bulk content in issues. - -You may not promote or distribute content or activity that is illegal or otherwise prohibited by our [Terms of Service](/github/site-policy/github-terms-of-service/), [Community Guidelines](/github/site-policy/github-community-guidelines/), or [Acceptable Use Policy](/github/site-policy/github-acceptable-use-policies/), including excessive automated bulk activity (for example, spamming), get-rich-quick schemes, and misrepresentation or deception related to your promotion. - -If you decide to post any promotional materials in your Account, you are solely responsible for complying with all applicable laws and regulations, including without limitation the U.S. Federal Trade Commission's Guidelines on Endorsements and Testimonials. We reserve the right to remove any promotional materials or advertisements that, in our sole discretion, violate any GitHub terms or policies. - -### 9. Spam and Inauthentic Activity on GitHub -Automated excessive bulk activity and coordinated inauthentic activity, such as spamming, are prohibited on GitHub. Prohibited activities include: -* bulk distribution of promotions and advertising prohibited by GitHub terms and policies -* inauthentic interactions, such as fake accounts and automated inauthentic activity -* rank abuse, such as automated starring or following -* creation of or participation in secondary markets for the purpose of the proliferation of inauthentic activity -* using GitHub as a platform for propagating abuse on other platforms -* phishing or attempted phishing - -GitHub reserves the right to remove any Content in violation of this policy. - -### 10. User Protection -You must not engage in activity that significantly harms other users. We will resolve disputes in favor of protecting users as a whole. diff --git a/content/github/site-policy/github-additional-product-terms.md b/content/github/site-policy/github-additional-product-terms.md deleted file mode 100644 index 38f8554b4e3c..000000000000 --- a/content/github/site-policy/github-additional-product-terms.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: GitHub Additional Product Terms -versions: - free-pro-team: '*' ---- - -When you create an Account, you're given access to lots of different features and products that are all a part of the Service. Because many of these features and products offer different functionality, they may require additional terms and conditions specific to that feature or product. Below, we've listed those features and products, along with the corresponding additional rules that apply to those parts of the Service. - -Your use of GitHub is subject to your applicable terms (the "Agreement") as well as the following GitHub Additional Product Terms (the "Additional Terms"). By agreeing to the Agreement, and using additional products and features, you also agree to these Additional Terms. Any violation of the Additional Terms is a violation of the Agreement. Capitalized terms not defined in the Additional Terms will have the meaning given to them in the Agreement. - -### 1. Marketplace - -If you list a Developer Product through GitHub Marketplace, then you must agree to the [GitHub Marketplace Developer Agreement](/github/site-policy/github-marketplace-developer-agreement), prior to submitting the project to be listed. - -If you buy Developer Products through GitHub Marketplace, the [GitHub Marketplace Terms of Service](/github/site-policy/github-marketplace-terms-of-service) controls your purchase. The Agreement, as well as the [GitHub Marketplace Terms of Service](/github/site-policy/github-marketplace-terms-of-service), will govern your use of GitHub Marketplace. - -### 2. Third Party Integrations - -#### a. Creating Applications -If you create a third-party application or other developer product that collects User Personal Information or User-Generated Content and integrates with the Service through GitHub's API, OAuth mechanism, or otherwise ("Developer Product"), and make it available for other Users, then you must comply with the following requirements: -- You must comply with this Agreement and the GitHub Privacy Statement. -- Except as otherwise permitted, such as by law or by a license, you must limit your usage of the User Personal Information or User-Generated Content you collect to that purpose for which the User has authorized its collection. -- You must take all reasonable security measures appropriate to the risks, such as against accidental or unlawful destruction, or accidental loss, alteration, unauthorized disclosure or access, presented by processing the User Personal Information or User-Generated Content. -- You must not hold yourself out as collecting any User Personal Information or User-Generated Content on GitHub’s behalf, and provide sufficient notice of your privacy practices to the User, such as by posting a privacy policy. -- You must provide Users with a method of deleting any User Personal Information or User-Generated Content you have collected through GitHub after it is no longer needed for the limited and specified purposes for which the User authorized its collection, except where retention is required by law or otherwise permitted, such as through a license. - -#### b. Using Third-Party Applications -You may grant a Developer Product authorization to use, access, and disclose the contents of your repositories, including your private repositories. Some Developer Products are available through [GitHub Marketplace](https://github.com/marketplace). Some Developer Products can be used for performing automated tasks, and often times multiple Users may direct the actions of a Developer Product. However, if you purchase and/or set up a Developer Product on your Account, or you are an owner of an Account with an integrated Developer Product, then you will be responsible for the Developer Product's actions that are performed on or through your Account. Please see our [Privacy Statement](/github/site-policy/github-privacy-statement#third-party-applications) for more information about how we share data with Developer Products. - -**GitHub makes no warranties of any kind in relation to Developer Products and is not liable for disclosures to third parties that you authorize to access Your Content. Your use of any third-party applications is at your sole risk.** - -### 3. Git LFS Support - -If you enable Git Large File Storage ("Git LFS") on your Account, you'll be able to fetch, modify, and push large files just as you would expect with any file that Git manages. Your Account comes with a certain amount of bandwidth and storage for use with Git LFS, which can be found in the [Git LFS documentation](/github/managing-large-files/about-storage-and-bandwidth-usage). Git LFS bandwidth and storage usage is displayed within your [account settings](https://github.com/settings/billing). If you want to use Git LFS beyond your allotted bandwidth and storage, then you may [purchase additional data packs](/github/setting-up-and-managing-billing-and-payments-on-github/upgrading-git-large-file-storage). - -### 4. Pages - -Each GitHub Account comes with access to the [GitHub Pages static hosting service](/github/working-with-github-pages/about-github-pages). This hosting service is intended to host static web pages for All Users, but primarily as a showcase for personal and organizational projects. Some monetization efforts are permitted on Pages, such as donation buttons and crowdfunding links. - -GitHub Pages are subject to some specific bandwidth and usage limits, and may not be appropriate for some high-bandwidth uses or other prohibited uses. Please see our [GitHub Pages guidelines](/github/working-with-github-pages/about-github-pages) for more information. GitHub reserves the right at all times to reclaim any GitHub subdomain without liability. - -### 5. Actions and Packages - -#### a. Actions Usage -GitHub Actions enables you to create custom software development lifecycle workflows directly in your GitHub repository. Each Account comes with included compute and storage quantities for use with Actions, depending on your Account plan, which can be found in the [Actions documentation](/actions). Your Actions compute usage is displayed within [your Account settings](https://github.com/settings/billing), and you will be notified by email in advance of reaching the limit of your included quantities. If you want to use Actions beyond your included quantities, then you may [enable overages](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions). - -Compute usage for included and paid quantities is calculated in minutes based on the type of Actions you execute (e.g. Linux, Windows, macOS). The minutes used for each Action's job or task will be rounded up to the nearest minute. For included quantities and depending on the type of Action, a multiplier may be applied to the amount of time used to execute each job or task, prior to being rounded up to the nearest minute. Overage minutes are charged at the [stated per minute price](https://github.com/features/actions) based on the type of Actions you execute. Actions and Packages share storage, and your storage usage is displayed within your [account settings](https://github.com/settings/billing). For additional details about included quantity usage calculations, see the [Actions documentation](/actions). - -Actions and any elements of the Action service may not be used in violation of the Agreement, the [Acceptable Use Policy](/github/site-policy/github-acceptable-use-policies), or the GitHub Actions [service limitations](/actions/reference/usage-limits-billing-and-administration/#usage-limits). Additionally, Actions should not be used for: -- cryptomining; -- using our servers to disrupt, or to gain or to attempt to gain unauthorized access to, any service, device, data, account or network (other than those authorized by the [GitHub Bug Bounty program](https://bounty.github.com)) -- the provision of a stand-alone or integrated application or service offering Actions or any elements of Actions for commercial purposes; -- any activity that places a burden on our servers, where that burden is disproportionate to the benefits provided to users (for example, don't use Actions as a content delivery network or as part of a serverless application, but a low benefit Action could be ok if it’s also low burden); or -- any other activity unrelated to the production, testing, deployment, or publication of the software project associated with the repository where GitHub Actions are used. - -In order to prevent violations of these limitations and abuse of GitHub Actions, GitHub may monitor your use of GitHub Actions. Misuse of GitHub Actions may result in termination of jobs, or restrictions in your ability to use GitHub Actions. - -#### b. Packages Usage -GitHub Packages may be used to download, publish, and manage packages of Content. Each Account plan comes with included bandwidth and storage quantities for use with Packages, which can be found in the [Packages documentation](/github/managing-packages-with-github-package-registry/about-github-package-registry). Actions and Packages share storage between the two Service features. Storage and bandwidth usage are displayed within your [account settings](https://github.com/settings/billing), and you will be notified by email in advance of reaching the limit of your included quantities. If you want to use Packages beyond your included bandwidth and storage quantities, then you may [enable overages](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-packages). - -Bandwidth usage is calculated based on the amount of data transferred out of your repositories through Packages, but package transfers through Actions will not count toward your included or paid quantities. Packages bandwidth usage is limited by the [Acceptable Use Policy](/github/site-policy/github-acceptable-use-policies#7-excessive-bandwidth-use), and included bandwidth quantities are determined by your [Account plan](https://github.com/pricing). - -Actions and Packages storage usage is shared between the two Service features. Storage usage is calculated as a weighted average over the course of the month and does not reset each month. Public and private repositories have different included storage quantities, and the included quantities for private repositories depend on your [Account plan](https://github.com/pricing). - -#### c. Payment and Billing for Actions and Packages -Billing for Actions and Packages is usage-based. Additional quantities of Actions or Packages cannot be purchased separately. For monthly-billed customers, you must have a payment method on file to choose to pay for additional quantities of these Service features. You will be charged on a monthly, recurring basis based on your usage in the preceding month, unless you are billed by invoice. For invoiced customers, you must pay the fees within thirty (30) days of the GitHub invoice date. For customers paying for Service feature overages in advance, unused prepaid minutes will not roll over to the next billing period and will not be refunded. - -You can set a monthly spending limit in your [account settings](https://github.com/settings/billing/cost_management). You will be notified by email in advance of reaching the limit of your included quantities and the designated spending limit of your paid additional quantities. - -### 6. Learning Lab - -**Enrollment.** To complete enrollment in Learning Lab for Organizations, you agree to create a separate organization for Learning Lab purposes, and you authorize us to add Learning Lab course materials to that organization on your behalf. - -**Learning Lab Course Materials.** Any course materials GitHub provides are owned solely by GitHub; provided, however, that GitHub grants you a worldwide, non-exclusive, limited-term, non-transferable, royalty-free license to copy, maintain, use and run such course materials for your internal business purposes associated with Learning Lab use. This license grant is subject to any additional open source licensing agreements that may be provided along with the source code. Course materials you create are owned solely by you, provided, however, that you grant to GitHub a worldwide, non-exclusive, perpetual, non-transferable, royalty-free license to copy, maintain, use, host, and run (as applicable) on the Service, such course materials. Your use of GitHub course materials and your creation and storage of your own course materials does not constitute joint ownership in either party's respective intellectual property by the other party. - -**Privacy.** Learning Lab may collect personal information. You control what information Learning Lab collects in your GitHub.com profile settings panel. If Learning Lab collects personal information on GitHub's behalf, GitHub will process that information in accordance with the [GitHub Privacy Statement](/github/site-policy/github-privacy-statement). If you enroll in or are completing a private course through Learning Lab, GitHub may share your enrollment information and course progress through completion with the organization admins. This may include individual data such as your GitHub username, course start date, and course end date. Course completion data may also be presented in aggregate form to help guide improvements to the course content. - -### 7. Connect - -In order to access GitHub Connect, Customer must have at least one (1) account on GitHub.com and one (1) licensed instance of the Software. GitHub Connect may be used for performing automated tasks. In addition, multiple Users may direct certain actions with GitHub Connect. Customer is responsible for actions that are performed on or through its accounts. GitHub may collect information about how Customer uses GitHub Connect to provide and improve the feature. By using GitHub Connect, Customer authorizes GitHub to collect protected data, which includes Private Repository data and User Personal Information (as defined in the GitHub Privacy Statement), from Customer’s GitHub Enterprise Server account. Customer also authorizes the transfer of identifying instance information to GitHub through GitHub Connect, which information is governed by the GitHub Privacy Statement. - -### 8. Sponsors Program - -In order to become a Sponsored Developer, you must agree to the [GitHub Sponsors Program Additional Terms](/github/site-policy/github-sponsors-additional-terms). - -### 9. GitHub Advanced Security - -GitHub Advanced Security enables you to identify security vulnerabilities through customizable and automated semantic code analysis. GitHub Advanced Security is licensed on a per User basis. If you are using GitHub Advanced Security as part of GitHub Enterprise Cloud, many features of GitHub Advanced Security, including automated code scanning of private repositories, also require the use of GitHub Actions. Billing for usage of GitHub Actions is usage-based and is subject to the [GitHub Actions terms](/github/site-policy/github-additional-product-terms#c-payment-and-billing-for-actions-and-packages). - -### 10. Dependabot Preview - -Your use of Dependabot Preview is governed by a separate [Terms of Service](https://dependabot.com/terms) and [Privacy Policy](https://dependabot.com/privacy). - -### 11. Spectrum - -Your use of Spectrum is governed by the GitHub [Terms of Service](/github/site-policy/github-terms-of-service) and [Privacy Statement](/github/site-policy/github-privacy-statement). - -### 12. Advisory Database - -#### a. License Grant to Us - -We need the legal right to submit your contributions to the GitHub Advisory Database into public domain datasets such as the [National Vulnerability Database](https://nvd.nist.gov/) and to license the GitHub Advisory Database under open terms for use by security researchers, the open source community, industry, and the public. You agree to release your contributions to the GitHub Advisory Database under the [Creative Commons Zero license](https://creativecommons.org/publicdomain/zero/1.0/). - -#### b. License to the GitHub Advisory Database - -The GitHub Advisory Database is licensed under the [Creative Commons Attribution 4.0 license](https://creativecommons.org/licenses/by/4.0/). The attribution term may be fulfilled by linking to the GitHub Advisory Database at or to individual GitHub Advisory Database records used, prefixed by . - diff --git a/content/github/site-policy/github-and-trade-controls.md b/content/github/site-policy/github-and-trade-controls.md deleted file mode 100644 index 659d453f5c75..000000000000 --- a/content/github/site-policy/github-and-trade-controls.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: GitHub and Trade Controls -redirect_from: - - /articles/github-and-export-controls - - /articles/github-and-trade-control - - /articles/github-and-trade-controls - - /github/site-policy/github-and-export-controls -versions: - free-pro-team: '*' ---- - -GitHub.com, GitHub Enterprise Server, and the information you upload to either product may be subject to trade control regulations, including under the U.S. Export Administration Regulations (the EAR). - -GitHub’s vision is to be the global platform for developer collaboration, no matter where developers reside. We take seriously our responsibility to examine government mandates thoroughly to be certain that users and customers are not impacted beyond what is required by law. This includes keeping public repositories services, including those for open source projects, available and accessible to support personal communications involving developers in sanctioned regions. - -To comply with U.S. trade control laws, GitHub made some required changes to the way we conduct our services. As U.S. trade controls laws evolve, we will continue to work with U.S. regulators about the extent to which we can offer free code collaboration services to developers in sanctioned markets. We believe that offering those free services supports U.S. foreign policy of encouraging the free flow of information and free speech in those markets. For more insight on our approach and how sanctions affect global software collaboration, read our [blog on sanctions](https://github.blog/2019-09-12-global-software-collaboration-in-the-face-of-sanctions/). - -Although we've provided the following information below for your convenience, it is ultimately your responsibility to ensure that your use of GitHub's products and services complies with all applicable laws and regulations, including U.S. export control laws. - -### Export overview - -#### GitHub.com - -Under our [Terms of Service](/articles/github-terms-of-service), users may only access and use GitHub.com in compliance with applicable law, including U.S. export control and sanctions laws. - -Users are responsible for ensuring that the content they develop and share on GitHub.com complies with the U.S. export control laws, including the EAR and the U.S. International Traffic in Arms Regulations (ITAR). The cloud-hosted service offering available at [GitHub.com](https://github.com) has not been designed to host data subject to the ITAR and does not currently offer the ability to restrict repository access by country. If you are looking to collaborate on ITAR- or other export-controlled data, we recommend you consider [GitHub Enterprise Server](https://enterprise.github.com), GitHub's on-premises offering. - -U.S. trade control laws restrict what GitHub.com services can be made available to users in certain countries and territories. GitHub may allow users in or ordinarily resident in countries and territories subject to U.S. sanctions to access certain free GitHub.com services for personal communications in accordance to authorizations issued by the U.S. Treasury Department’s Office of Foreign Assets Controls (OFAC). Persons in or ordinarily resident in these countries and territories are prohibited from using IP proxies, VPNs, or other methods to disguise their location when accessing GitHub.com services, and may only use GitHub.com for non-commercial, personal communications. - -Specially Designated Nationals (SDNs) and other denied or blocked parties under U.S. and other applicable law are prohibited from accessing or using GitHub.com. Additionally, users may not use GitHub.com for or on behalf of such parties, including the Governments of sanctioned countries. Furthermore, GitHub.com may not be used for purposes prohibited under applicable export control laws, including prohibited end uses described in [17 CFR 744](https://www.ecfr.gov/cgi-bin/text-idx?SID=ad384e1f1e017076f8c0136f322f0a4c&mc=true&node=pt15.2.744&rgn=div5). - -#### GitHub Enterprise Server - -GitHub Enterprise Server is a self-hosted virtual appliance that can be run within your own datacenter or virtual private cloud. As such, GitHub Enterprise Server can be used to store ITAR- or other export-controlled information, although, end users are nonetheless responsible for ensuring compliance with the ITAR and other applicable export controls. - -GitHub Enterprise Server is a commercial, mass-market product and has been assigned the Export Control Classification Number (ECCN) of `5D992.c` and may be exported to most destinations with no license required (NLR). - -GitHub Enterprise Server may not be sold to, exported, or re-exported to any country listed in Country Group E:1 in Supplement No. 1 to part 740 of the EAR or to the Crimea region of Ukraine. This list currently contains Cuba, Iran, North Korea, and Syria, but is subject to change. - -### Frequently asked questions - -#### On which countries and territories are U.S. government sanctions applied? - -Crimea, Cuba, Iran, North Korea, and Syria. - -#### How is GitHub ensuring that folks not living in and/or having professional links to the sanctioned countries and territories still have access or ability to appeal? - -In the rare instance that an account is affected unintentionally or in error, we have an appeal process to address such instances. - -If an individual user or organization administrator believes that they have been flagged in error, then that user has the opportunity to appeal the flag by providing verification information to GitHub. If GitHub receives sufficient information to verify that the user or organization is not affiliated with a U.S.-sanctioned jurisdiction or otherwise restricted by U.S. economic sanctions, then the flag will be removed. Please see [individual account appeals request form](https://airtable.com/shrGBcceazKIoz6pY) and [organizational account appeals request form](https://airtable.com/shrB2je5RBkqLEt5D). - -#### Will traveling in these regions be impacted? - -Travel in these regions may impact your account status, but availability may be reinstated once you are outside of the sanctioned region and upon submitting a successful [individual account appeals request](https://airtable.com/shrGBcceazKIoz6pY) or an [organizational account appeals request](https://airtable.com/shrB2je5RBkqLEt5D). - -#### What is available and not available? - -GitHub is committed to continuing to offer free public repository services to developers with individual and organizational accounts in U.S.-sanctioned regions. This includes limited access to free services, such as public repositories for open source projects (and associated public Pages), public gists, and allotted free Action minutes, for personal communications only, and not for commercial purposes. - -However, due to U.S. trade controls law restrictions, GitHub is unable to provide private repository services and paid services to accounts in U.S. sanctioned regions like North Korea, Iran, Syria, and Crimea. The restriction suspends access to private repository services and paid services, such as availability of free or paid private repositories, secret gists, paid Action minutes, Sponsors, and GitHub Marketplace services. - -For paid organizational accounts in sanctioned regions, users may have limited access to their public repositories, which have been downgraded to archived read-only repositories. For free organizational accounts in sanctioned regions, however, users will continue to have full access to free public repositories for open source projects (and associated public Pages), public gists, and allotted free Action minutes. - -GitHub will continue advocating with U.S. regulators for the greatest possible access to free code collaboration services to developers in sanctioned regions, including free private repositories. We believe that offering those free services supports U.S. foreign policy of encouraging the free flow of information and free speech in those regions. - -#### How do you define these specific users? - -If GitHub determines that a user or customer is located in a region that is subject to U.S. trade control restrictions, or a user is otherwise restricted under U.S. economic sanctions, then the affiliated account has been restricted to comply with those legal requirements. The determination of user and customer location to implement these legal restrictions are derived from a number of sources, including IP addresses and payment history. Nationality and ethnicity are not used to flag users for sanctions restrictions. - -#### How are organization accounts impacted? - -If an organization is based out of, or the key individuals or membership of an organization shows sufficient ties to, a sanctioned territory or country, or if the organization otherwise appears to be subject to U.S. economic sanctions, then the organization account and the affiliated owner account will be restricted. - -The restriction suspends access to private repository services and paid services, such as availability of free or paid private repositories, secret gists, paid Action minutes, Sponsors, and GitHub Marketplace services. For paid organizational accounts associated with sanctioned regions, users may have limited access to their public repositories, which have been downgraded to archived read-only repositories. For free organizational accounts associated with sanctioned regions, users will continue to have full access to free public repositories for open source projects (and associated public Pages), public gists, and allotted free Action minutes. - -#### Can trade-restricted users’ private repositories be made public? - -Free individual account users can make restricted private repositories public, for personal communications only, and not for commercial purposes. Users can do this by navigating to the repository settings tab and clicking the "make public" button. Once the repository is public, users have access to public repositories services. This action cannot be undone. - -#### Can trade-restricted users access private repository data (e.g. downloading or deletion of repository data)? - -Unfortunately, our understanding of the law does not give us the option to allow downloads or deletion of private repository content, until otherwise authorized by the U.S. government. We will strongly advocate, with U.S. regulators, for the right of trade-restricted users to secure the contents of their private repositories. We will also advocate for more availability of GitHub services for developers in sanctioned markets, and further underscore the importance of code collaboration in supporting personal communications for developers globally. - diff --git a/content/github/site-policy/github-anti-bribery-statement.md b/content/github/site-policy/github-anti-bribery-statement.md deleted file mode 100644 index 0b66ee43c5e8..000000000000 --- a/content/github/site-policy/github-anti-bribery-statement.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: GitHub Anti-Bribery Statement -redirect_from: - - /articles/github-anti-bribery-statement -versions: - free-pro-team: '*' ---- -GitHub upholds our commitment to ethical business practices, including by prohibiting bribery and corruption. As [Transparency International](https://www.transparency.org/what-is-corruption#costs-of-corruption) explains, the costs of corruption are -- **political**, by posing a major obstacle to democracy and the rule of law -- **economic**, by depleting national wealth -- **social**, by undermining people’s trust in political society, institutions, and leaders -- **environmental**, by facilitating non-enforcement of environmental laws and regulations. - -According to the [World Bank](https://www.worldbank.org/en/topic/governance/brief/anti-corruption) in 2017, businesses and individuals pay an estimated $1.5 trillion in bribes each year. - -### GitHub policies prohibiting bribery - -GitHub makes our anti-bribery commitment clear in a number of company policies. As part of the Microsoft family, GitHub is also committed to Microsoft's Anti-Corruption Policy, which applies to all GitHub employees and contractors, in addition to the policies described here. - -GitHub's **Code of Ethics** prohibits employees and contractors from engaging in or contributing to bribery or corruption, and establishes record-keeping requirements: - ->You must never pay, offer to pay, promise to pay, induce, accept, or authorize payment of anything else of value, to anyone—including to anyone in a position of power or authority, such as government officials, or in commercial transactions—in order to obtain or keep business, or secure any other improper advantage for GitHub or Microsoft. You also must not solicit or accept a bribe, kickback, or any other improper cash payment. ... [GitHub employees] are required to keep accurate and fair records of all transactions involving any expense made on GitHub’s behalf—for example, by keeping receipts and providing accurate descriptions of your expenses—or any other transaction involving the disposal or transfer of GitHub assets. Such actions are required by the U.S. Foreign Corrupt Practices Act, the U.K. Bribery Act of 2010, and anti-bribery laws of other jurisdictions in which GitHub does business and are also simply the right thing to do. - -GitHub's Code of Ethics elaborates on certain situations, including gifts, travel, and entertainment; facilitating payments; charitable donations; jobs; and working with representatives, as well as on who is considered a government official. - -GitHub's Standards of Conduct prohibit: ->Bribing government officials or other individuals to gain an unfair advantage, and taking bribes from anyone. - -GitHub’s **Gifts and Entertainment Policy** explains that bribery is not permitted in connection with travel or entertainment, and provides examples to illustrate improper conduct. The policy describes proper and improper gifts, travel, and entertainment expenses; company processes for gift-giving by GitHub’s directors, officers, employees, and agents and requirements for record-keeping, penalties; and reporting of violations. It includes clear monetary thresholds for gifts along with annual limitations, with limited exceptions for gifts approved by appropriate management. The policy is clear and easily accessible to GitHub employees and contractors. - -### Training for our employees - -GitHub employees are required to participate in training on corruption, including bribery. We also provide additional training for particularly relevant people and teams, such as our sales team. The training explains relevant elements of the U.S. Foreign Corrupt Practices Act and the U.K. Bribery Act of 2010. For example, -- definition and structural effects of corruption -- who is covered, including - - public officials or others in a position of power - - third parties -- what kind of activity is covered, including - - cash, gifts, travel, and entertainment - - facilitation payments - - charitable contributions and sponsorship -- for what purpose, including - - intent - - improper advantage or influence -- due diligence and red flags -- record-keeping requirements - -In addition, the training covers GitHub’s internal policies related to anti-corruption and bribery, including our non-retaliation (whistleblower) policy. - -While the U.S. FCPA is focused on interactions with government officials, the U.K. Bribery Act is broader and extends to bribing anyone, regardless of whether they are a government official. Both laws can extend to GitHub’s actions elsewhere on the globe. GitHub’s policies prohibit bribing anyone, anywhere in the world. - -### Engaging our Partners -- GitHub’s standard **resale agreements with Channel Partners** include mandatory anti-corruption clauses. Going forward, GitHub now requires our Channel Partners to commit to complying with this Anti-Corruption Statement. -- Going forward, GitHub’s **vendor contracts** now require a commitment to comply with Microsoft's Supplier Code of Conduct or this Anti-Corruption Statement. diff --git a/content/github/site-policy/github-bug-bounty-program-legal-safe-harbor.md b/content/github/site-policy/github-bug-bounty-program-legal-safe-harbor.md deleted file mode 100644 index 5ea4f4e31945..000000000000 --- a/content/github/site-policy/github-bug-bounty-program-legal-safe-harbor.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: GitHub Bug Bounty Program Legal Safe Harbor -redirect_from: - - /articles/github-bug-bounty-program-legal-safe-harbor -versions: - free-pro-team: '*' ---- - -### Summary -1. We want you to responsibly disclose through our bug bounty program, and don't want researchers put in fear of legal consequences because of their good faith attempts to comply with our bug bounty policy. We cannot bind any third party, so do not assume this protection extends to any third party. If in doubt, ask us before engaging in any specific action you think _might_ go outside the bounds of our policy. -2. Because both identifying and non-identifying information can put a researcher at risk, we limit what we share with third parties. We may provide non-identifying substantive information from your report to an affected third party, but only after notifying you and receiving a commitment that the third party will not pursue legal action against you. We will only share identifying information (name, email address, phone number, etc.) with a third party if you give your written permission. -3. If your security research as part of the bug bounty program violates certain restrictions in our site policies, the safe harbor terms permit a limited exemption. - -### 1. Safe Harbor Terms - -To encourage research and responsible disclosure of security vulnerabilities, we will not pursue civil or criminal action, or send notice to law enforcement for accidental or good faith violations of this policy. We consider security research and vulnerability disclosure activities conducted consistent with this policy to be “authorized” conduct under the Computer Fraud and Abuse Act, the DMCA, and other applicable computer use laws such as Cal. Penal Code 502(c). We waive any potential DMCA claim against you for circumventing the technological measures we have used to protect the applications in this bug bounty program's scope. - -Please understand that if your security research involves the networks, systems, information, applications, products, or services of a third party (which is not us), we cannot bind that third party, and they may pursue legal action or law enforcement notice. We cannot and do not authorize security research in the name of other entities, and cannot in any way offer to defend, indemnify, or otherwise protect you from any third party action based on your actions. - -You are expected, as always, to comply with all laws applicable to you, and not to disrupt or compromise any data beyond what this bug bounty program permits. - -Please contact us before engaging in conduct that may be inconsistent with or unaddressed by this policy. We reserve the sole right to make the determination of whether a violation of this policy is accidental or in good faith, and proactive contact to us before engaging in any action is a significant factor in that decision. If in doubt, ask us first! - -### 2. Third Party Safe Harbor - -If you submit a report through our bug bounty program which affects a third party service, we will limit what we share with any affected third party. We may share non-identifying content from your report with an affected third party, but only after notifying you that we intend to do so and getting the third party's written commitment that they will not pursue legal action against you or initiate contact with law enforcement based on your report. We will not share your identifying information with any affected third party without first getting your written permission to do so. - -Please note that we cannot authorize out-of-scope testing in the name of third parties, and such testing is beyond the scope of our policy. Refer to that third party's bug bounty policy, if they have one, or contact the third party either directly or through a legal representative before initiating any testing on that third party or their services. This is not, and should not be understood as, any agreement on our part to defend, indemnify, or otherwise protect you from any third party action based on your actions. - -That said, if legal action is initiated by a third party, including law enforcement, against you because of your participation in this bug bounty program, and you have sufficiently complied with our bug bounty policy (i.e. have not made intentional or bad faith violations), we will take steps to make it known that your actions were conducted in compliance with this policy. While we consider submitted reports both confidential and potentially privileged documents, and protected from compelled disclosure in most circumstances, please be aware that a court could, despite our objections, order us to share information with a third party. - -### 3. Limited Waiver of Other Site Polices - -To the extent your security research activities are inconsistent with certain restrictions in our [relevant site policies](/categories/site-policy/) but are consistent with the terms of our bug bounty program, we waive those restrictions for the sole and limited purpose of permitting your security research under this bug bounty program. Just like above, if in doubt, ask us first! diff --git a/content/github/site-policy/github-community-forum-code-of-conduct.md b/content/github/site-policy/github-community-forum-code-of-conduct.md deleted file mode 100644 index edffc306ecac..000000000000 --- a/content/github/site-policy/github-community-forum-code-of-conduct.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: GitHub Community Forum Code of Conduct -redirect_from: - - /articles/github-community-forum-code-of-conduct -versions: - free-pro-team: '*' ---- - -### Overview and Purpose - -Millions of developers host millions of projects on GitHub — both open and closed source — and we're honored to play a part in enabling collaboration across the developer community every day. Together, we all have an exciting opportunity and responsibility to make this a community we can be proud of. - -The GitHub Community Forum is intended to be a place for further collaboration, support, and brainstorming. This is a civilized place for connecting with other users, learning new skills, sharing feedback and ideas, and finding all the support you need for your GitHub projects. By participating in this Community, you are agreeing to the same [Terms of Service](/articles/github-terms-of-service/) that apply to GitHub.com, as well as this Community-specific Code of Conduct. - -With this Code of Conduct, we hope to help you understand how best to collaborate in the GitHub Community Forum, what you can expect from moderators, and what type of actions or content may result in temporary or permanent suspension from Community participation. We will investigate any abuse reports and may moderate public content within the Community that we determine to be in violation of either the GitHub Terms of Service or this Code of Conduct. - -GitHub users worldwide bring wildly different perspectives, ideas, and experiences, and range from people who created their first "Hello World" project last week to the most well-known software developers in the world. We are committed to making GitHub and the GitHub Community Forum a welcoming environment for all the different voices and perspectives here, while maintaining a space where people are free to express themselves. - -### Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in the GitHub Community Forum a harassment-free experience for everyone, regardless of age, body size, ability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -### Standards - -Treat the GitHub Community Forum with respect. We are a shared resource — a place to share skills, knowledge, and interests through ongoing conversation. - -The following are not hard and fast rules, merely aids to the human judgment of our Community. Use these guidelines to keep this a clean, well-lighted place for civilized public discourse. - -#### *Best Practices for Building a Strong Community* - -- Be respectful and considerate. - - **Be welcoming and open-minded.** Other Community members may not have the same experience level or background as you, but that doesn't mean they don't have good ideas to contribute. We encourage you to be welcoming to new members and those just getting started. - - **Respect each other.** Nothing sabotages healthy conversation like rudeness. Be civil and professional, and don’t post anything that a reasonable person would consider offensive, abusive, or hate speech. Don’t harass or grief anyone. Treat each other with dignity and consideration in all interactions. - - You may wish to respond to something by disagreeing with it. That’s fine. But remember to criticize ideas, not people. Avoid name-calling, ad hominem attacks, responding to a post’s tone instead of its actual content, and knee-jerk contradiction. Instead, provide reasoned counter-arguments that improve the conversation. - - **Communicate with empathy.** Disagreements or differences of opinion are a fact of life. Being part of a community means interacting with people from a variety of backgrounds and perspectives, many of which may not be your own. If you disagree with someone, try to understand and share their feelings before you address them. This will promote a respectful and friendly atmosphere where people feel comfortable asking questions, participating in discussions, and making contributions. -- Contribute in a positive and constructive way. - - **Improve the discussion.** Help us make this a great place for discussion by always working to improve the discussion in some way, however small. If you are not sure your post adds to the conversation, think over what you want to say and try again later. - - The topics discussed here matter to us, and we want you to act as if they matter to you, too. Be respectful of the topics and the people discussing them, even if you disagree with some of what is being said. - - **Be clear and stay on topic.** Communicating with strangers on the Internet can be awkward. It's hard to convey or read tone, and sarcasm is frequently misunderstood. Try to use clear language, and think about how it will be received by the other person. - - This applies to sharing links, as well. Any links shared in the Community Forum should be shared with the intent of providing relevant and appropriate information. Links should not be posted to simply drive traffic or attention to a site. Links should always be accompanied by a full explanation of the content and purpose of the link. Posting links, especially unsolicited ones, without relevant and valuable context can come across as advertising or serving even more malicious purposes. - - Additionally, the GitHub Community Forum is for collaboration, sharing ideas, and helping each other get stuff done. Off-topic comments are a distraction (sometimes welcome, but usually not) from getting work done and being productive. Staying on topic helps produce positive and productive discussions. - - **Share mindfully.** When asking others to give you feedback or collaborate on a project, only share valuable and relevant resources to provide context. Don't post links that don't add value to the Topic, and don't post unsolicited links to your own projects or sites on other user's threads. - - Additionally, don't share sensitive information. This includes your own email address. We don't allow the sharing of such information in this Community Forum, as it can create security and privacy risks for the poster, as well as other users. If you'd like to invite other Forum members to collaborate on a project or work with you, share a link to the repository in which the project you are working on exists. By sharing the link to your project repo - with some information on what your project is and what kind of help or feedback you're looking for - you can invite others to collaborate with you via issues or pull requests without having to share your private information. You can also add others as outside collaborators on your project repo to give them special permissions to help you develop your project. - - **Keep it tidy.** Make the effort to put things in the right place, so that we can spend more time discussing and less time cleaning up. So: - - Don’t start a topic in the wrong category. - - Don’t cross-post the same thing in multiple topics. - - Don’t post no-content replies. - - Don't "bump" posts, unless you have new and relevant information to share. - - Don’t divert a topic by changing it midstream. - - Rather than posting “+1” or “Agreed”, use the Kudos button. Rather than taking an existing topic in a radically different direction, open a new topic. - -- Be trustworthy. - - **Always be honest.** Don’t knowingly share incorrect information or intentionally mislead other GitHub Community Forum members. If you don’t know the answer to someone’s question but still want to help, you can try helping them research or find resources instead. GitHub staff will also be active in the Community, so if you’re unsure of an answer, it’s likely a moderator will be able to help. - -#### *What is not Allowed* - -- **Threats of violence.** You may not threaten violence towards others or use the site to organize, promote, or incite acts of real-world violence or terrorism. Think carefully about the words you use, the images you post, and even the software you write, and how they may be interpreted by others. Even if you mean something as a joke, it might not be received that way. If you think that someone else might interpret the content you post as a threat, or as promoting violence or terrorism, stop. Don't post it. In extraordinary cases, we may report threats of violence to law enforcement if we think there may be a genuine risk of physical harm or a threat to public safety. - -- **Hate speech and discrimination.** While it is not forbidden to broach topics such as age, body size, ability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation, we do not tolerate speech that attacks a person or group of people on the basis of who they are. Just realize that talking about these or other sensitive topics can make others feel unwelcome, or perhaps even unsafe, if approached in an aggressive or insulting manner. We expect our Community members to be respectful when discussing sensitive topics. - -- **Bullying and harassment.** We do not tolerate bullying or harassment. This means any habitual badgering or intimidation targeted at a specific person or group of people. In general, if your actions are unwanted and you continue to engage in them, there's a good chance you are headed into bullying or harassment territory. - -- **Impersonation.** You may not impersonate another person by copying their avatar, posting content under their email address, intentionally using a deceptively similar username or otherwise posing as someone else. Impersonation is a form of harassment. - -- **Doxxing and invasion of privacy.** Don't post other people's personal information, such as phone numbers, private email addresses, physical addresses, credit card numbers, Social Security/National Identity numbers, or passwords. Depending on the context, such as in the case of intimidation or harassment, we may consider other information, such as photos or videos that were taken or distributed without the subject's consent, to be an invasion of privacy, especially when such material presents a safety risk to the subject. - -- **Prurient/Sexually explicit content.** Basically, don't post pornography. This does not mean that all nudity or sexual content is prohibited. We recognize that sexuality is a part of life and non-pornographic sexual content may be a part of your project, or may be presented for educational or artistic purposes. If you have any questions or concerns about something you want to post, [feel free to reach out and ask](https://support.github.com/contact) beforehand. - -- **Spam.** Respect the GitHub Community Forum. Don’t post advertisements, link to spammy websites, or otherwise vandalize the Community. This Community is meant for GitHub users to discuss projects, learn, and share ideas with one another - not for advertising or other spam-like content. Content that we deem spammy will be removed. - -- **Copyrighted or illegal content.** Only post your own stuff. You are responsible for what you post. If you post something you didn’t create yourself, you must have the right to post it. You may not post illegal content, including content illegal under copyright and trademark laws, links to illegal content, or methods for circumventing the law. - -- **Active malware or exploits.** Being part of this Community includes not taking advantage of other members of the Community. We do not allow anyone to use our platform for exploit delivery (e.g. Using the Community as a means to deliver malicious executables) or as attack infrastructure (e.g. Organizing denial of service attacks or managing command and control servers). Note, however, that we do not prohibit the posting of source code which could be used to develop malware or exploits, as the publication and distribution of such source code has educational value and provides a net benefit to the security community. - -- **Anyone under the age of 13.** If you're a child under the age of 13, you may not have an account on the GitHub Community Forum (or GitHub itself). GitHub does not knowingly collect information from or direct any of our content specifically to children under 13. If we learn or have reason to suspect that you are a user who is under the age of 13, we will unfortunately have to close both your GitHub Community Forum and GitHub.com accounts. We don't want to discourage you from learning to code, but those are the rules. Please see our [Terms of Service](/articles/github-terms-of-service/) for information about account termination. - -- **Other conduct which could reasonably be considered inappropriate in a professional setting.** The GitHub Community Forum is a professional space and should be treated as such. - -### Enforcement - -#### *What GitHub Community Forum Members Can Do* - -- **If you see a problem, report it.** Moderators have special authority; they are responsible for this Community. But so are you. With your help, moderators can be Community facilitators, not just janitors or police. - - When you see bad behavior, don’t reply. It encourages the bad behavior by acknowledging it, consumes your energy, and wastes everyone’s time. Just report it via "Report Inappropriate Content" in the Option Menu. If enough reports accrue, action will be taken, either automatically or by moderator intervention. - -#### Our Responsibilities - -There are a variety of actions that we may take in response to inappropriate behavior or content. It usually depends on the exact circumstances of a particular case. We recognize that sometimes people may say or do inappropriate things for any number of reasons. Perhaps they did not realize how their words would be perceived. Or maybe they just let their emotions get the best of them. Of course, sometimes, there are folks who just want to spam or cause trouble. - -Each case requires a different approach, and we try to tailor our response to meet the needs of the situation. We'll review each situation on a case-by-case basis. In each case, we will have a diverse team investigate the content and surrounding facts and respond as appropriate, using this Code of Conduct to guide our decision. - -Actions we may take in response to a flag or abuse report include, but are not limited to: - - Content Removal - - Content Blocking - - Community Forum Account Suspension - - Community Forum Account Termination - -Community Forum moderators who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the Community Forum’s leadership. - -### Contacting GitHub Staff - -If, for any reason, you want to contact GitHub Staff, the Community Managers, Administrators, or Moderators of this forum privately, you can use our [Support contact form](https://support.github.com/contact?tags=community-support). Contacting any member of GitHub Staff via channels other than the forum itself or the Support contact form is strongly discouraged and may be considered a violation of our prohibition against harassment. - -Let's work together to keep the forum a place where people feel safe to participate by being respectful of them and their time. - -### Legal Notices - -Yes, legalese is boring, but we must protect ourselves – and by extension, you and your data – against unfriendly folks. We have a [Terms of Service](/articles/github-terms-of-service/) and [Privacy Statement](/articles/github-privacy-statement/) describing your (and our) behavior and rights related to content, privacy, and laws. To use this service, you must agree to abide by our [Terms of Service](/articles/github-terms-of-service/) and the [Privacy Statement](/articles/github-privacy-statement/). - -This Code of Conduct does not modify our [Terms of Service](/articles/github-terms-of-service/) and is not intended to be a complete list. GitHub retains full discretion under the [Terms of Service](/articles/github-terms-of-service/) to remove any content or terminate any accounts for activity that is "unlawful, offensive, threatening, libelous, defamatory, pornographic, obscene or otherwise objectionable or violates any party's intellectual property or these Terms of Service." This Code of Conduct describes when we will exercise that discretion. diff --git a/content/github/site-policy/github-community-guidelines.md b/content/github/site-policy/github-community-guidelines.md deleted file mode 100644 index eb1d753aafc5..000000000000 --- a/content/github/site-policy/github-community-guidelines.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: GitHub Community Guidelines -redirect_from: - - /community-guidelines/ - - /articles/github-community-guidelines -versions: - free-pro-team: '*' ---- - -Millions of developers host millions of projects on GitHub — both open and closed source — and we're honored to play a part in enabling collaboration across the community every day. Together, we all have an exciting opportunity and responsibility to make this a community we can be proud of. - -GitHub users worldwide bring wildly different perspectives, ideas, and experiences, and range from people who created their first "Hello World" project last week to the most well-known software developers in the world. We are committed to making GitHub a welcoming environment for all the different voices and perspectives in our community, while maintaining a space where people are free to express themselves. - -We rely on our community members to communicate expectations, [moderate](#what-if-something-or-someone-offends-you) their projects, and {% data variables.contact.report_abuse %} or {% data variables.contact.report_content %}. We do not actively seek out content to moderate. By outlining what we expect to see within our community, we hope to help you understand how best to collaborate on GitHub, and what type of actions or content may violate our [Terms of Service](#legal-notices). We will investigate any abuse reports and may moderate public content on our site that we determine to be in violation of our Terms of Service. - -### Building a strong community - -The primary purpose of the GitHub community is to collaborate on software projects. -We want people to work better together. Although we maintain the site, this is a community we build *together*, and we need your help to make it the best it can be. - -* **Be welcoming and open-minded** - Other collaborators may not have the same experience level or background as you, but that doesn't mean they don't have good ideas to contribute. We encourage you to be welcoming to new collaborators and those just getting started. - -* **Respect each other.** Nothing sabotages healthy conversation like rudeness. Be civil and professional, and don’t post anything that a reasonable person would consider offensive, abusive, or hate speech. Don’t harass or grief anyone. Treat each other with dignity and consideration in all interactions. - - You may wish to respond to something by disagreeing with it. That’s fine. But remember to criticize ideas, not people. Avoid name-calling, ad hominem attacks, responding to a post’s tone instead of its actual content, and knee-jerk contradiction. Instead, provide reasoned counter-arguments that improve the conversation. - -* **Communicate with empathy** - Disagreements or differences of opinion are a fact of life. Being part of a community means interacting with people from a variety of backgrounds and perspectives, many of which may not be your own. If you disagree with someone, try to understand and share their feelings before you address them. This will promote a respectful and friendly atmosphere where people feel comfortable asking questions, participating in discussions, and making contributions. - -* **Be clear and stay on topic** - People use GitHub to get work done and to be more productive. Off-topic comments are a distraction (sometimes welcome, but usually not) from getting work done and being productive. Staying on topic helps produce positive and productive discussions. - - Additionally, communicating with strangers on the Internet can be awkward. It's hard to convey or read tone, and sarcasm is frequently misunderstood. Try to use clear language, and think about how it will be received by the other person. - -### What if something or someone offends you? - -We rely on the community to let us know when an issue needs to be addressed. We do not actively monitor the site for offensive content. If you run into something or someone on the site that you find objectionable, here are some tools GitHub provides to help you take action immediately: - -* **Communicate expectations** - If you participate in a community that has not set their own, community-specific guidelines, encourage them to do so either in the README or [CONTRIBUTING file](/articles/setting-guidelines-for-repository-contributors/), or in [a dedicated code of conduct](/articles/adding-a-code-of-conduct-to-your-project/), by submitting a pull request. - -* **Moderate Comments** - If you have [write-access privileges](/articles/repository-permission-levels-for-an-organization/) for a repository, you can edit, delete, or hide anyone's comments on commits, pull requests, and issues. Anyone with read access to a repository can view a comment's edit history. Comment authors and people with write access to a repository can delete sensitive information from a comment's edit history. For more information, see "[Tracking changes in a comment](/articles/tracking-changes-in-a-comment)" and "[Managing disruptive comments](/articles/managing-disruptive-comments)." - -* **Lock Conversations**  - If a discussion in an issue or pull request gets out of control, you can [lock the conversation](/articles/locking-conversations/). - -* **Block Users**  - If you encounter a user who continues to demonstrate poor behavior, you can [block the user from your personal account](/articles/blocking-a-user-from-your-personal-account/) or [block the user from your organization](/articles/blocking-a-user-from-your-organization/). - -Of course, you can always contact us to {% data variables.contact.report_abuse %} if you need more help dealing with a situation. - -### What is not allowed? - -We are committed to maintaining a community where users are free to express themselves and challenge one another's ideas, both technical and otherwise. Such discussions, however, are unlikely to foster fruitful dialog when ideas are silenced because community members are being shouted down or are afraid to speak up. That means you should be respectful and civil at all times, and refrain from attacking others on the basis of who they are. We do not tolerate behavior that crosses the line into the following: - -* **Threats of violence** - You may not threaten violence towards others or use the site to organize, promote, or incite acts of real-world violence or terrorism. Think carefully about the words you use, the images you post, and even the software you write, and how they may be interpreted by others. Even if you mean something as a joke, it might not be received that way. If you think that someone else *might* interpret the content you post as a threat, or as promoting violence or terrorism, stop. Don't post it on GitHub. In extraordinary cases, we may report threats of violence to law enforcement if we think there may be a genuine risk of physical harm or a threat to public safety. - -* **Hate speech and discrimination** - While it is not forbidden to broach topics such as age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation, we do not tolerate speech that attacks a person or group of people on the basis of who they are. Just realize that when approached in an aggressive or insulting manner, these (and other) sensitive topics can make others feel unwelcome, or perhaps even unsafe. While there's always the potential for misunderstandings, we expect our community members to remain respectful and civil when discussing sensitive topics. - -* **Bullying and harassment** - We do not tolerate bullying or harassment. This means any habitual badgering or intimidation targeted at a specific person or group of people. In general, if your actions are unwanted and you continue to engage in them, there's a good chance you are headed into bullying or harassment territory. - -* **Impersonation** - You may not seek to mislead others as to your identity by copying another person's avatar, posting content under their email address, using a similar username or otherwise posing as someone else. Impersonation is a form of harassment. - -* **Doxxing and invasion of privacy** - Don't post other people's personal information, such as phone numbers, private email addresses, physical addresses, credit card numbers, Social Security/National Identity numbers, or passwords. Depending on the context, such as in the case of intimidation or harassment, we may consider other information, such as photos or videos that were taken or distributed without the subject's consent, to be an invasion of privacy, especially when such material presents a safety risk to the subject. - -* **Sexually obscene content** - Don’t post content that is pornographic. This does not mean that all nudity, or all code and content related to sexuality, is prohibited. We recognize that sexuality is a part of life and non-pornographic sexual content may be a part of your project, or may be presented for educational or artistic purposes. We do not allow obscene sexual content or content that may involve the exploitation or sexualization of minors. - -* **Gratuitously violent content** - Don’t post violent images, text, or other content without reasonable context or warnings. While it's often okay to include violent content in video games, news reports, and descriptions of historical events, we do not allow violent content that is posted indiscriminately, or that is posted in a way that makes it difficult for other users to avoid (such as a profile avatar or an issue comment). A clear warning or disclaimer in other contexts helps users make an educated decision as to whether or not they want to engage with such content. - -* **Misinformation and disinformation** - You may not post content that presents a distorted view of reality, whether it is inaccurate or false (misinformation) or is intentionally deceptive (disinformation) because such content is likely to result in harm to the public or to interfere with fair and equal opportunities for all to participate in public life. For example, we do not allow content that may put the well-being of groups of people at risk or limit their ability to take part in a free and open society. We encourage active participation in the expression of ideas, perspectives, and experiences and may not be in a position to dispute personal accounts or observations. We generally allow parody and satire that is in line with our Acceptable Use Polices, and we consider context to be important in how information is received and understood; therefore, it may be appropriate to clarify your intentions via disclaimers or other means, as well as the source(s) of your information. - -* **Active malware or exploits** - Being part of a community includes not taking advantage of other members of the community. We do not allow anyone to use our platform for exploit delivery, such as using GitHub as a means to deliver malicious executables, or as attack infrastructure, for example by organizing denial of service attacks or managing command and control servers. Note, however, that we do not prohibit the posting of source code which could be used to develop malware or exploits, as the publication and distribution of such source code has educational value and provides a net benefit to the security community. - - -### What happens if someone breaks the rules? - -There are a variety of actions that we may take when a user reports inappropriate behavior or content. It usually depends on the exact circumstances of a particular case. We recognize that sometimes people may say or do inappropriate things for any number of reasons. Perhaps they did not realize how their words would be perceived. Or maybe they just let their emotions get the best of them. Of course, sometimes, there are folks who just want to spam or cause trouble. - -Each case requires a different approach, and we try to tailor our response to meet the needs of the situation that has been reported. We'll review each abuse report on a case-by-case basis. In each case, we will have a diverse team investigate the content and surrounding facts and respond as appropriate, using these guidelines to guide our decision. - -Actions we may take in response to an abuse report include but are not limited to: - -* Content Removal -* Content Blocking -* Account Suspension -* Account Termination - -### Legal Notices - -We dedicate these Community Guidelines to the public domain for anyone to use, reuse, adapt, or whatever, under the terms of [CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/). - -These are only guidelines; they do not modify our [Terms of Service](/articles/github-terms-of-service/) and are not intended to be a complete list. GitHub retains full discretion under the [Terms of Service](/articles/github-terms-of-service/#c-acceptable-use) to remove any content or terminate any accounts for activity that violates our Terms on Acceptable Use. These guidelines describe when we will exercise that discretion. diff --git a/content/github/site-policy/github-connect-addendum-to-the-github-enterprise-license-agreement.md b/content/github/site-policy/github-connect-addendum-to-the-github-enterprise-license-agreement.md deleted file mode 100644 index db5e07aacf14..000000000000 --- a/content/github/site-policy/github-connect-addendum-to-the-github-enterprise-license-agreement.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: GitHub Connect Addendum to the GitHub Enterprise License Agreement -redirect_from: - - /articles/jackfan.us.kg-connection-addendum-to-the-github-enterprise-license-agreement/ - - /articles/github-connect-addendum-to-the-github-enterprise-license-agreement -versions: - free-pro-team: '*' ---- -PLEASE READ THIS ADDENDUM CAREFULLY AS IT AMENDS THE TERMS OF YOUR ENTERPRISE LICENSE AGREEMENT WITH US AND SPECIFICALLY GOVERNS YOUR USE OF GITHUB CONNECT (AS DEFINED BELOW), UNLESS GITHUB (“WE” OR “US”) HAS EXECUTED A SEPARATE WRITTEN ADDENDUM WITH YOU FOR THAT PURPOSE. - -BY ACCESSING GITHUB CONNECT, YOU ACCEPT ALL THE TERMS AND CONDITIONS OF THIS ADDENDUM. IF YOU ARE ENTERING INTO THIS ADDENDUM ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY (“CUSTOMER”), YOU REPRESENT THAT YOU HAVE THE LEGAL AUTHORITY TO BIND CUSTOMER TO THIS AGREEMENT. - -#### 1. GitHub.com’s Terms of Service and the GitHub Enterprise Software License Agreement Will Apply; Pricing - -Customer can enable unified integrations, which allow Customer’s Enterprise users to connect with GitHub.com (“GitHub Connect”). In order to access GitHub Connect, Customer must have at least one (1) account on GitHub.com and one (1) licensed instance of GitHub Enterprise. Customer’s access to GitHub Connect will also be governed by its applicable GitHub.com Terms of Service and the Agreement which are hereby incorporated by reference, (the "Generally Applicable Terms"), such that the Generally Applicable Terms will apply concurrently. In the event of a direct conflict between this Addendum and the Generally Applicable Terms, the Generally Applicable Terms will control, except with respect to any use of GitHub Connect, in which case this Addendum will control. - -Customer may not use GitHub Connect to violate its Generally Applicable Terms. Any use of GitHub Connect that violates the Generally Applicable Terms will also be a violation of this Addendum. GitHub Connect may be used for performing automated tasks. In addition, multiple Users may direct certain actions with GitHub Connect. Customer is responsible for actions that are performed on or through Customer’s accounts. - -Participation in GitHub Connect is provided at no additional charge through the Addendum Term (as defined below). - -#### 2. Confidentiality - -To the extent they do not conflict with the confidentiality obligations provided in the GitHub Enterprise Software License Agreement, GitHub Connect including any Confidential Information will be governed by the confidentiality obligations stated herein. - -For the purposes of this Addendum, "Confidential Information" means any business or technical information shared with the other party (specifically excluding any Content or information created or shared on the Service or Website, which Content or information is governed by other provisions in this Addendum and the Generally Applicable Terms) that either one of us discloses to the other, in writing, orally, or by any other means, and including things like computer programs, code, algorithms, data, know-how, formulas, processes, ideas, inventions (whether patentable or not), schematics and other technical, business, financial, and product development plans, names and expertise of employees and consultants, and customer lists. Each party agrees to maintain the other party's Confidential Information in confidence using at least the same degree of care as it uses in safeguarding its own Confidential Information, subject to a minimum standard of reasonable diligence and protection. - -#### 3. Term and Termination - -This Addendum begins on the Addendum Effective Date and continues for the duration of the License Term as defined in the Generally Applicable Terms (“Addendum Term”). This Addendum may be terminated in accordance with the Generally Applicable Terms. This Addendum will terminate immediately, without the requirement of notice, if Customer breaches any term of this Addendum or the Generally Applicable Terms. - -The rights and obligations in Sections 1, 2, 4 through 12, or which should naturally survive the termination or expiration of an agreement will survive the termination or expiration of this Addendum or the Generally Applicable Terms. Upon termination or expiration of this Addendum all of the rights and licenses granted to Customer in this Addendum will immediately cease to exist, Customer must destroy (or, at GitHub’s request, return) all of GitHub’s Confidential Information and any copies (including electronic copies) which are in Customer’s possession or control, and certify in writing compliance with these requirements. - -#### 4. Warranties and Disclaimers - -Customer warrants that it: (i) has the authority to execute this Addendum and to perform its obligations; (ii) will make no false or misleading statements or representations regarding GitHub or GitHub’s products and services; and (iii) will not take on any obligation or responsibility, or make any representation, warranty, guarantee or endorsement to anyone on GitHub’s behalf (including, without limitation, any of our products or services). - -CUSTOMER UNDERSTANDS AND AGREES THAT ANY MATERIALS OR INFORMATION IT IS PROVIDED OR THAT IT HAS ACCESS TO UNDER THIS ADDENDUM (INCLUDING, WITHOUT LIMITATION, ANY CONFIDENTIAL INFORMATION OR PRE-RELEASE MATERIALS) ARE PROVIDED “AS IS”, AND WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. GITHUB SPECIFICALLY DISCLAIMS ANY AND ALL IMPLIED WARRANTIES OR CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. - -#### 5. Indemnity - -Customer agrees to indemnify, defend and hold GitHub harmless from and against any and all claims which may arise under or out of Customer’s participation in GitHub Connect; Customer’s negligence or intentional misconduct; any misrepresentations Customer makes with respect to GitHub or GitHub’s products or services; or Customer’s violation of any part of this Addendum. - -#### 6. Limitation of Liability - -IN NO EVENT WILL EITHER PARTY BE LIABLE TO THE OTHER OR TO ANY THIRD PARTY FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, EXEMPLARY OR PUNITIVE DAMAGES, INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOST DATA, LOST PROFITS OR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, HOWEVER CAUSED AND UNDER ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, TORT (INCLUDING WITHOUT LIMITATION PRODUCTS LIABILITY, STRICT LIABILITY AND NEGLIGENCE), OR ANY OTHER THEORY, AND WHETHER OR NOT THE PARTY KNEW OR SHOULD HAVE KNOWN ABOUT THE POSSIBILITY OF SUCH DAMAGE. IN NO EVENT WILL GITHUB’S AGGREGATE LIABILITY TO CUSTOMER ARISING OUT OF OR RELATED TO THIS ADDENDUM FOR ANY CAUSE WHATSOEVER, AND REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT OR IN TORT, EXCEED THE GREATER OF (I) AMOUNTS ACTUALLY PAID UNDER THIS ADDENDUM; OR (II) FIVE HUNDRED DOLLARS ($500). THE FOREGOING LIMITATIONS WILL APPLY NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY STATED IN THIS ADDENDUM. - -#### 7. Proprietary Rights - -Customer agrees that GitHub and its licensors own all right, title and interest in and to all GitHub products and services; all information and data relating to their configurations and combinations; and all modifications to and derivative works of any of the foregoing. Customer must not remove, alter, cover or obfuscate any copyright or other proprietary rights notices that GitHub places on or embeds in GitHub Connect, or any other GitHub products and services. - -#### 8. Independent Development - -Nothing in this Addendum will impair GitHub’s right to develop, acquire, license, market, promote or distribute products, software or technologies that might compete with Customer’s. - -#### 9. Privacy - -GitHub may collect information about how Customer uses GitHub Connect and how GitHub can improve it. Customer may enable GitHub Connect to authorize GitHub to collect protected data, which includes private repository data and Customer Personal Information (as defined in the GitHub Privacy Statement), from Customer's Enterprise account. If Customer connects its Enterprise instance with its GitHub.com account, Customer sends identifying instance information to GitHub.com, which information is governed by [GitHub’s Privacy Statement](/articles/github-privacy-statement/). By enabling this configuration, Customer agrees that it is responsible for the actions that are performed on or through its account, subject to the terms of its Generally Applicable Terms. - -GitHub may collect certain additional personal information from Customer in GitHub Connect. For example, GitHub may invite Customer to send Feedback (as explained in Section 10). GitHub may ask questions about Customer’s users’ experiences, familiarity with the product, or demographic information. GitHub will use this information to improve its products and services, and will not sell it to third parties or advertisers. Customer may decline to give feedback, decline to answer specific questions, or contact GitHub to delete or alter the information it has provided. - -GitHub's servers are located in the United States. GitHub processes and controls Customer’s data in the United States. However, Customer is solely responsible for determining what personal data it submits to GitHub. Please refer to our [Privacy Statement](/articles/github-privacy-statement/) for more information. - -#### 10. Feedback - -Customer may, at its option, provide ideas, know-how, algorithms, code contributions, suggestions, enhancement requests, recommendations or any other feedback for GitHub Connect or GitHub’s other products or services (collectively, “Feedback”). If Customer provides Feedback, it acknowledges and agrees that GitHub will have a royalty-free, fully paid-up, worldwide, transferable, sub-licensable, irrevocable and perpetual license to implement, use, modify, commercially exploit or incorporate the Feedback into its products, services, and documentation. - -#### 11. Entire Agreement - -This Addendum and the Generally Applicable Terms contain the entire agreement of the parties with respect to its subject matter and supersede all prior communications, representations, understandings and agreements, whether written or oral. The terms or conditions of any of Customer’s purchase orders, acknowledgements, or other documents sent in connection with this Addendum will be null and void, and of no effect. - -#### 12. No Other Modifications; Order of Precedence - -Except as expressly provided herein, nothing in this Addendum shall be deemed to waive or modify any of the provisions of the Agreement, which otherwise remains in full force and effect. In the event of any conflict between the Agreement and this Addendum regarding the subject matter set forth herein, this Addendum shall prevail. diff --git a/content/github/site-policy/github-corporate-terms-of-service.md b/content/github/site-policy/github-corporate-terms-of-service.md deleted file mode 100644 index d0abab6b9f1d..000000000000 --- a/content/github/site-policy/github-corporate-terms-of-service.md +++ /dev/null @@ -1,313 +0,0 @@ ---- -title: GitHub Corporate Terms of Service -redirect_from: - - /articles/github-corporate-terms-of-service -versions: - free-pro-team: '*' ---- - -THANK YOU FOR CHOOSING GITHUB FOR YOUR COMPANY’S BUSINESS NEEDS. PLEASE READ THIS AGREEMENT CAREFULLY AS IT GOVERNS USE OF THE PRODUCTS (AS DEFINED BELOW), UNLESS GITHUB HAS EXECUTED A SEPARATE WRITTEN AGREEMENT WITH CUSTOMER FOR THAT PURPOSE. -BY CLICKING ON THE "I AGREE" OR SIMILAR BUTTON OR BY ACCESSING THE PRODUCTS, CUSTOMER ACCEPTS ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF CUSTOMER IS ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY, CUSTOMER REPRESENTS THAT IT HAS THE LEGAL AUTHORITY TO BIND THE COMPANY OR OTHER LEGAL ENTITY TO THIS AGREEMENT. - -### GitHub Corporate Terms of Service -Version Effective Date: July 20, 2020 - -This Agreement applies to the following GitHub offerings, as further defined below (collectively, the **“Products”**): -- The Service; -- Any Beta Previews; -- Any related Support; and -- Any related Professional Services. - -### A. Definitions - -**“Affiliate”** means any entity that directly or indirectly controls, is controlled by, or is under common control with a party where "control" means having more than fifty percent (50%) ownership or the right to direct the management of the entity. - -**“Agreement”** means, collectively, all the terms, conditions, notices contained or referenced in this document and all other operating rules, policies and procedures that GitHub may publish from time to time on the Service. GitHub's site policies are available at [https://docs.github.com/categories/site-policy](/categories/site-policy). - -**“All Users”** means, collectively, Customer’s Users and External Users who use the Service. - -**“Americas”** means the United States, Canada, Mexico, or a country in Central or South America or the Caribbean. - -**"Beta Previews"** mean software, services, or features identified as alpha, beta, preview, early access, or evaluation, or words or phrases with similar meanings. - -**"Confidential Information"** means all non-public information disclosed by either Party to the others, whether in writing, orally or by other means, designated as confidential or that the receiving Party knows or reasonably should know, under the circumstances surrounding the disclosure and the nature of the information, is confidential to the disclosing Party. For the avoidance of doubt, no Content posted on the Service will be considered Confidential Information except for Customer Content stored solely in Customer’s Private Repositories. Confidential Information does not include any information that (i) was or becomes publicly known through no fault of the receiving party; (ii) was rightfully known or becomes rightfully known to the receiving Party without confidential or proprietary restriction from a source other than the disclosing party who has a right to disclose it; (iii) is approved by the disclosing Party for disclosure without restriction in a written document which is signed by a duly authorized officer of such disclosing Party; (iv) the receiving Party independently develops without access to or use of the other Party's Confidential Information; or (v) is or has been stored or posted on the Service and outside of Customer’s Private Repositories. - -**"Content"** means, without limitation, code, text, data, articles, images, packages, photographs, graphics, software, applications, designs, features, and other materials that are featured, displayed, or otherwise made available through the Service. - -**"Corporate Account"** means an account created by a User on behalf of an entity. - -**"Customer"** means the company or organization that has entered into this Agreement with GitHub by clicking on the "I AGREE" or similar button or by accessing the Products. - -**"Customer Content"** means Content that Customer creates, owns, or to which Customer holds the rights. - -**"Documentation"** means any manuals, documentation and other supporting materials relating to the Products that GitHub provides or makes available to Customer. - -**"Effective Date"** is the earlier of the date on which Customer (i) clicks “I agree” to the terms and conditions of this Agreement, or (ii) first places an order for the Products. - -**"External User"** means an individual, not including Customer’s Users, who visit or use the Service. - -**"Feedback"** means any ideas, know-how, algorithms, code contributions, suggestions, enhancement requests, recommendations or any other feedback on GitHub products or services. - -**"Fees"** means the fees Customer is required to pay GitHub to (i) use the Products during the applicable Term or (ii) receive Professional Services, as such fees are reflected on an Order Form or SOW. - -**“Fork”** means to copy the Content of one repository into another repository. - -**“GitHub”** means GitHub, Inc., its Affiliates, and its Representatives. - -**"GitHub Content"** means Content that GitHub creates, owns, or to which it holds the rights. - -**“Machine Account”** means an account registered by an individual human who accepts the applicable terms of service on behalf of the Machine Account, provides a valid email address, and is responsible for its actions. A Machine Account is used exclusively for performing automated tasks. Multiple Users may direct the actions of a Machine Account, but the owner of the account is ultimately responsible for the machine's actions. - -**"Order Form"** means written or electronic documentation (including a quote) that the Parties may use to order the Products. - -**“Organization”** means a shared workspace that may be associated with a single entity or with one or more Users where multiple Users can collaborate across many projects at once. A User can be a member of more than one Organization. - -**“Private Repository”** means a repository which allows a User to control access to Content. - -**"Professional Services"** means training, consulting, or implementation services that GitHub provides to Customer pursuant to a mutually executed SOW. Professional Services do not include Support. - -**"Professional Services Credits"** means the upfront payment method for purchasing Professional Services (exclusive of travel and lodging expenses) that Customer may use over a period of twelve (12) months (unless otherwise stated in an Order Form) for Professional Services. Any Professional Services Credits that remain unused at the end of twelve (12) months from the date of purchase (or as otherwise stated in an Order Form) are automatically cancelled and are non-refundable. - -**“Public Repository”** means a repository whose Content is visible to All Users. - -**"Representatives"** means a Party’s employees, officers, agents, independent contractors, consultants, and legal and financial advisors. - -**“Scraping”** means extracting data from the Service via an automated process, such as a bot or webcrawler, and does not include the collection of information through GitHub's API. - -**"Service"** means GitHub's hosted service and any applicable Documentation. - -**"SOW"** means a mutually executed statement of work detailing the Professional Services GitHub will perform, any related Fees, and each party's related obligations. - -**"Subscription License"** means the license assigned to each User to install, operate, access, and use the Service on Customer’s behalf. Customer may only assign one Subscription License per User across its Organizations. For clarity, once Customer assigns a Subscription License to a User, Customer is prohibited from bifurcating the Subscription License so that one User can use a Subscription License on one Organization while another User uses the same Subscription License on another Organization. - -**“Support”** means technical support for the Service that GitHub may provide. - -**"User"** means an individual or Machine Account who (a) accesses or uses the Service, (b) accesses or uses any part of Customer’s account; or (c) directs the use of Customer’s account in the performance of functions, in each case on Customer’s behalf. The number of Users should not exceed the number of Subscription Licenses that Customer has purchased. - -**“User-Generated Content”** means Content created or owned by a third party or External User. - -### B. Account Terms - -#### 1. Account Controls. - * _Users._ Customer acknowledges that Users retain ultimate administrative control over their individual accounts and the Content within them. [GitHub's Standard Terms of Service](/articles/github-terms-of-service) govern Users' use of the Service, except with respect to Users' activities under this Section B. - - * _Organizations._ Customer retains ultimate administrative control over any Organization created on Customer’s behalf and User-Generated Content posted to the repositories within its Organization(s), subject to this Section B. This Section B will govern the use of Customer’s Organization(s). - -#### 2. Account Requirements -In order to create an account, Customer must adhere to the following: - -* Customer must not create an account for use of any person under the age of 13. If GitHub learns of any User under the age of 13, it will terminate that User's account immediately. If Customer or its User(s) are located in a country outside the United States, that country's minimum age may be older; in such a case, Customer is responsible for complying with that country's laws. - -* A User’s login may not be shared by multiple people. - -- Customer must not use the Products (a) in violation of export control or sanctions laws of the United States or any other applicable jurisdiction; (b) if it is located in or ordinarily resident in a country or territory subject to comprehensive to comprehensive sanctions administered by the U.S. Office of Foreign Assets Control (OFAC); or (c) if it is or is working on behalf of a [Specially Designated National (SDN)](https://www.treasury.gov/resource-center/sanctions/SDN-List/Pages/default.aspx) or a person subject to similar blocking or denied party prohibitions. For more information, please see our [Export Controls policy](/articles/github-and-export-controls). - -#### 3. Account Security -Customer is responsible for: (i) all Content posted and activity that occurs under its Corporate Account; (ii) maintaining the security of its account login credentials; and (iii) [promptly notifying GitHub](https://github.com/contact) upon becoming aware of any unauthorized use of, or access to, the Service through its account. GitHub will not be liable for any loss or damage from Customer’s failure to comply with this Section B. - -#### 4. Third Party Terms -In some situations, third parties' terms may apply to Customer's use of GitHub. For example, Customer may be a member of an Organization with its own terms or license agreements; Customer may download an application that integrates with the Service; or Customer may use the Service to authenticate to another service. While this Agreement is GitHub’s full agreement with Customer, other parties' terms govern their relationships with Customer. - -#### 5. U.S. Federal Government Terms -If Customer is a U.S. government entity or otherwise accessing or using the Service in a government capacity, the [U.S. Federal Government Amendment](/articles/amendment-to-github-terms-of-service-applicable-to-us-federal-government-users) applies, and Customer agrees to its provisions. - -#### 6. Enterprise Cloud Service Level Agreement -GitHub’s quarterly uptime commitment for GitHub Enterprise Cloud is provided in the [Enterprise Service Level Agreement](/github/site-policy/github-enterprise-service-level-agreement). If Customer signed up for GitHub Enterprise Cloud, then Customer will be entitled to a service credit if GitHub does not meet its service level. - -### C. Compliance with Laws; Acceptable Use; Privacy - -#### 1. Compliance with Laws and Regulations -Customer’s use of the Products must not violate any applicable laws, including copyright or trademark laws, export control laws, or regulations in its jurisdiction. - -#### 2. Acceptable Use -Customer’s use of the Service must comply with [GitHub's Acceptable Use Policies](/articles/github-acceptable-use-policies) and [GitHub’s Community Guidelines](/articles/github-community-guidelines). Customer must not use the Service in any jurisdiction for unlawful, obscene, offensive or fraudulent Content or activity, such as advocating or causing harm, interfering with or violating the integrity or security of a network or system, evading filters, sending unsolicited, abusive, or deceptive messages, viruses or harmful code, or violating third party rights. - -#### 3. Privacy -The [GitHub Privacy Statement](/articles/github-privacy-statement) and the [GitHub Data Protection Addendum](/github/site-policy/github-data-protection-addendum) provide detailed notice of GitHub's privacy and data use practices as well as GitHub's processing and security obligations with respect to Customer Personal Data. Any person, entity, or service collecting data from the Service must comply with the GitHub Privacy Statement, particularly in regards to the collection of Users' Personal Information (as defined in the GitHub Privacy Statement). If Customer collects any User Personal Information from GitHub, Customer will only use it for the purpose for which the External User has authorized it. Customer will reasonably secure any such Personal Information, and Customer will respond promptly to complaints, removal requests, and "do not contact" requests from GitHub or External Users. - -### D. Content Responsibility; Ownership; License Rights - -#### 1. Responsibility for User-Generated Content -Customer may create or upload User-Generated Content while using the Service. Customer is solely responsible for any User-Generated Content that it posts, uploads, links to or otherwise make available via the Service, regardless of the form of that User-Generated Content. GitHub is not responsible for any public display or misuse of User-Generated Content. - -#### 2. Ownership of Content, Right to Post, and License Grants -Customer retains ownership of Customer Content that Customer creates or owns. Customer acknowledges that it: (a) is responsible for Customer Content, (b) will only submit Customer Content that Customer has the right to post (including third party or User-Generated Content), and (c) Customer will fully comply with any third-party licenses relating to Customer Content that Customer posts. -Customer grants the rights set forth in Sections D.3 through D.6, free of charge and for the purposes identified in those sections until such time as Customer removes Customer Content from GitHub servers, except for Content Customer has posted publicly and that External Users have Forked, in which case the license is perpetual until such time as all Forks of Customer Content have been removed from GitHub servers. If Customer uploads Customer Content that already comes with a license granting GitHub the permissions it needs to run the Service, no additional license is required. - -#### 3. License Grant to Us -Customer grants to GitHub the right to store, parse, and display Customer Content, and make incidental copies only as necessary to provide the Service. This includes the right to copy Customer Content to GitHub's database and make backups; display Customer Content to Customer and those to whom Customer chooses to show it; parse Customer Content into a search index or otherwise analyze it on GitHub's servers; share Customer Content with External Users with whom Customer chooses to share it; and perform Customer Content, in case it is something like music or video. These rights apply to both public and Private Repositories. This license does not grant GitHub the right to sell Customer Content or otherwise distribute or use it outside of the Service. Customer grants to GitHub the rights it needs to use Customer Content without attribution and to make reasonable adaptations of Customer Content as necessary to provide the Service. - -#### 4. License Grant to External Users -Any Content that Customer posts publicly, including issues, comments, and contributions to External Users' repositories, may be viewed by others. By setting its repositories to be viewed publicly, Customer agree to allow External Users to view and Fork Customer’s repositories. -If Customer sets its pages and repositories to be viewed publicly, Customer grants to External Users a nonexclusive, worldwide license to use, display, and perform Customer Content through the Service and to reproduce Customer Content solely on the Service as permitted through functionality provided by GitHub (for example, through Forking). Customer may grant further rights to Customer Content if Customer adopts a license. If Customer is uploading Customer Content that it did not create or own, Customer is responsible for ensuring that the Customer Content it uploads is licensed under terms that grant these permissions to External Users - -#### 5. Contributions Under Repository License -Whenever Customer makes a contribution to a repository containing notice of a license, it licenses such contributions under the same terms and agrees that it has the right to license such contributions under those terms. If Customer has a separate agreement to license its contributions under different terms, such as a contributor license agreement, that agreement will supersede. - -#### 6. Moral Rights -Customer retains all moral rights to Customer Content that it uploads, publishes, or submits to any part of the Service, including the rights of integrity and attribution. However, Customer waives these rights and agrees not to assert them against GitHub, solely to enable GitHub to reasonably exercise the rights granted in Section D, but not otherwise. - -### E. Private Repositories - -#### 1. Control -Customer is responsible for managing access to its Private Repositories, including invitations, administrative control of Organizations and teams, and of access. - -#### 2. Confidentiality -GitHub considers Customer Content in Customer’s Private Repositories to be Customer’s Confidential Information. GitHub will protect and keep strictly confidential the Customer Content of Private Repositories in accordance with Section P. - -#### 3. Access -GitHub personnel may only access Customer’s Private Repositories (i) with Customer’s consent and knowledge, for support reasons or (ii) when access is required for security reasons. Customer may choose to enable additional access to its Private Repositories. For example, Customer may enable various GitHub services or features that require additional rights to Customer Content in Private Repositories. These rights may vary depending on the service or feature, but GitHub will continue to treat Customer Content in Customer’s Private Repositories as Customer’s Confidential Information. If those services or features require rights in addition to those it needs to provide the Service, GitHub will provide an explanation of those rights. - -#### 4. Exclusions -If GitHub has reason to believe the Content of a Private Repository is in violation of the law or of this Agreement, GitHub has the right to access, review, and remove that Content. Additionally, GitHub may be [compelled by law](/github/site-policy/github-privacy-statement#for-legal-disclosure) to disclose the Content of Customer’s Private Repositories. Unless otherwise bound by requirements under law or if in response to a security threat or other risk to security, GitHub will provide notice of such actions. - -### F. Intellectual Property Notice - -#### 1. GitHub's Rights to Content -The look and feel of the Service is copyright © GitHub, Inc. All rights reserved. Customer may not duplicate, copy, or reuse any portion of the HTML/CSS, Javascript, or visual design elements or concepts without express written permission from GitHub. - -#### 2. GitHub Trademarks and Logos -If Customer would like to use GitHub's trademarks, Customer must follow all of GitHub's trademark guidelines, including those on GitHub's [logos page](https://github.com/logos). - -#### 3. License to GitHub Policies -This Agreement is licensed under the [Creative Commons Zero license](https://creativecommons.org/publicdomain/zero/1.0/). For details, see our [site-policy repository](https://github.com/github/site-policy#license). - -#### 4. Copyright Infringement and DMCA Policy -If Customer is a copyright owner and believes that Content on the Service violates Customer’s copyright, Customer may notify GitHub in accordance with GitHub's [Digital Millennium Copyright Act Policy](/articles/dmca-takedown-policy/) via the [DMCA form](https://github.com/contact/dmca) or by emailing copyright@github.com. - -#### 5. Intellectual Property Rights Reserved -As between the Parties, GitHub owns all right, title and interest, including all intellectual property rights, in and to the Products. GitHub reserves all rights in and to the Products not expressly granted to Customer under this Agreement. - -### G. GitHub Additional Product Terms -Some Service features may be subject to additional terms as set forth in the [GitHub Additional Product Terms](/github/site-policy/github-additional-product-terms). By accessing or using these features, Customer agrees to the GitHub Additional Product Terms. - -### H. Subscription Licenses -Subscription Licenses are granted on a per User basis and multiple Users may not use the same Subscription License. Customer may reassign a Subscription License to a new User only after ninety (90) days from the last reassignment of that same Subscription License, unless the reassignment is due to (i) permanent hardware failure or loss, (ii) termination of the User’s employment or contract, or (iii) temporary reallocation of Subscription Licenses to cover a User’s absence. When Customer reassigns a Subscription License from one User to another, Customer must block the former User’s access to the Subscription License and Customer’s Organizations. - -### I. Affiliates -Customer’s Affiliates are authorized to use the Products in accordance with this Agreement, so long as Customer remains fully responsible for their access and use of the Products. - -### J. Payment - -#### 1. Pricing; Fees - -**Payment Terms** Our pricing is available at [github.com/pricing](https://github.com/pricing) (unless otherwise negotiated by the parties and stated in an Order Form). Customer agrees to pay the Fees in full, up front without deduction or setoff of any kind, in U.S. Dollars. Customer must pay the Fees within thirty (30) days of the GitHub invoice date. Amounts payable under this Agreement are non-refundable, except as otherwise provided in this Agreement. If Customer fails to pay any Fees on time, GitHub reserves the right, in addition to taking any other action at law or equity, to to (i) charge interest on past due amounts at 1.0% per month or the highest interest rate allowed by law, whichever is less, and to charge all expenses of recovery, and (ii) terminate the applicable Order Form or SOW. Customer is solely responsible for all taxes, fees, duties and governmental assessments (except for taxes based on GitHub's net income) that are imposed or become due in connection with this Agreement. - -**Usage-Based Billing** Some Service features are billed based on your usage. A limited quantity of these Service features may be included in your plan for a limited term without additional charge. If you choose to purchase paid Service features beyond the quantity included in your plan, you pay for those Service features based on your actual usage in the preceding month. Monthly payment for these purchases will be charged on a periodic basis in arrears, provided that for invoiced customers, paid Service features are billed in advance. See [GitHub Additional Product Terms for details](/github/site-policy/github-additional-product-terms). - -#### 2. Purchasing Additional Subscription Licenses -Customer may obtain additional Subscription Licenses under this Agreement by submitting a request through the Service or via its sales team. If Customer purchases the additional Subscription Licenses, Customer must pay the then-currently applicable Fees for them, prorated for the balance of the applicable Subscription Term. Upon renewal of Customer’s Subscription Licenses for another Subscription Term, GitHub will invoice all Subscription Licenses at once on an annual basis unless otherwise specified in an Order Form. - -#### 3. Professional Services Credits. -If Customer uses Professional Services Credits to pay for Professional Services, then upon Customer’s receipt of an SOW, the applicable Professional Services Credits will be deducted from Customer’s Professional Services Credits balance. Customer is responsible for ensuring that its purchase order issued to GitHub for the Professional Services reflects the pricing set forth in the SOW. If there is any difference in pricing listed in the SOW and the pricing listed in Customer’s purchase order, the pricing in the SOW will control. The Parties agree that SOWs payable via Professional Services Credits do not have to be signed by either Party to be valid and enforceable. All Professional Services Credits must be used within the time set forth in the Order Form or will automatically be cancelled and are non-refundable. Customer may not apply Professional Services Credits to travel and lodging expenses, which must be invoiced separately. - -#### 4. Authorization -Customer authorizes GitHub to charge the on-file credit card, PayPal account, or other approved methods of payment for Fees. - -### K. Term; Termination; Suspension - -#### 1. Term -This Agreement starts on the Effective Date and will continue in effect until terminated by a Party in accordance with this Section K. - -#### 2. Termination for Convenience; Account Cancellation -Either Party may terminate an Order Form (if applicable) or this Agreement, without cause, upon at least thirty (30) days' prior written notice. If Customer elects to terminate an Order Form or Agreement, it is Customer's responsibility to properly cancel its account with GitHub by going into Settings in the global navigation bar at the top of the screen. GitHub cannot cancel accounts in response to an email or phone request. - -#### 3. Termination for Material Breach -Either Party may terminate this Agreement immediately upon notice if the other Party breaches a material obligation under this Agreement and fails to cure the breach within thirty (30) days from the date it receives notification. GitHub may terminate this Agreement if Customer's Account has been suspended for more than 90 days. - -#### 4. Effect of Termination -- _Order Forms._ Upon termination of this Agreement, Customer may not execute additional Order Forms (if applicable); however, this Agreement will remain in effect for the remainder of any active Order Forms. When an Order Form terminates or expires, as to that Order Form: (i) the Term will immediately end; (ii) any Subscription Licenses in the Order Form will automatically terminate, and Customer will no longer have the right to use the Service; (iii) if any Fees were owed prior to termination, Customer must pay those Fees immediately; (iv) each Party will promptly return (or, if the other party requests it, destroy) all Confidential Information belonging to the other to the extent permitted by the Service. Notwithstanding the foregoing, GitHub will make a reasonable effort to provide Customer with a copy of its lawful, non-infringing account Contents upon request; provided that Customer makes this request within 90 days of termination, suspension, or downgrade. - -- GitHub will retain and use Customer's information as necessary to comply with our legal obligations, resolve disputes, and enforce GitHub's agreements, but barring legal requirements, GitHub will delete Customer's full profile and the Content of its repositories within 90 days of termination or expiration (though some information may remain in encrypted backups). This information cannot be recovered once Customer's account is cancelled. - -- GitHub will not delete Content that Customer has contributed to External Users' repositories or that External Users have forked. - -#### 5. Suspension -GitHub has the right to suspend access to all or any part of the Service, including removing Content, at any time for violation of this Agreement or to protect the integrity, operability, and security of the Service, effective immediately, with or without notice. Unless prohibited by law or legal process or to prevent imminent harm to the Service or any third party, GitHub typically provides notice in the form of a banner or email on or before such suspension. GitHub will, in its discretion and using good faith, tailor any suspension as needed to preserve the integrity, operability, and security of the Service. - -#### 6. Survival -All provisions of this Agreement which by their nature should survive termination will survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity, and limitations of liability. - -### L. Communications with GitHub - -#### 1. Electronic Communication Required -For contractual purposes, Customer (1) consents to receive communications in an electronic form via the email address it submitted or via the Service; and (2) agrees that all Terms of Service, agreements, notices, disclosures, and other communications that GitHub provides electronically satisfies any legal requirement that those communications would satisfy if they were on paper. This section does not affect Customer's non-waivable rights. - -#### 2. Legal Notice to GitHub Must Be in Writing -Communications made through email or GitHub Support's messaging system will not constitute legal notice to GitHub in any situation where notice to GitHub is required by contract or any law or regulation. Legal notice to GitHub must be in writing and [served on GitHub's legal agent](/articles/guidelines-for-legal-requests-of-user-data/#submitting-requests). - -### M. Limited Warranty; Disclaimer - -_General Warranty_. Each Party represents and warrants to the other that it has the legal power and authority to enter into this Agreement, and that this Agreement and each Order Form and SOW is entered into by an employee or agent of such Party with all necessary authority to bind such Party to the terms and conditions of this Agreement. - -_Professional Services Warranty._ Unless otherwise set forth in an SOW, GitHub warrants that any Professional Services performed under this Agreement will be performed in a professional and workmanlike manner by appropriately qualified personnel. GitHub's only obligation, and Customer's only remedy, for a breach of this warranty will be, at GitHub's option and expense, to either: (i) promptly re-perform any Professional Services that fail to meet this warranty or (ii) if the breach cannot be cured, terminate the SOW and refund the unused prepaid Fees. - -_Service Disclaimer._ GitHub provides the Service **“AS IS”** and **“AS AVAILABLE”** without warranty of any kind. Without limiting this, GitHub expressly disclaims all warranties, whether express, implied or statutory, regarding the Service including without limitation any warranty of merchantability, fitness for a particular purpose, title, security, accuracy and non-infringement. GitHub does not warrant that the Service will meet Customer's requirements; that the Service will be uninterrupted, timely, secure, or error-free; that the information provided through the Service is accurate, reliable or correct; that any defects or errors will be corrected; that the Service will be available at any particular time or location; or that the Service is free of viruses or other harmful components. GitHub will not be responsible for any risk of loss resulting from Customer's downloading and/or use of files, information, Content or other material obtained from the Service. - -_Beta Previews Disclaimer._ Customer may choose to use Beta Previews in its sole discretion. Beta Previews may not be supported and may be changed at any time without notice. Beta Previews may not be as reliable or available as the Service. Beta Previews are not subject to the same security measures and auditing to which the Service has been and is subject. GitHub will have no liability arising out of or in connection with Beta Previews. **Customer uses Beta Previews at its own risk.** - -### N. Limitations of Liability -**_Indirect Damages._ To the maximum extent permitted by applicable law, in no event will either party be liable to the other party or to any third party for any indirect, special, incidental, punitive, or consequential damages (including for loss of profits, revenue, or data) or for the cost of obtaining substitute products arising out of or in connection with this Agreement, however caused, whether such liability arises from any claim based upon contract, warranty, tort (including negligence), strict liability or otherwise, and whether or not a party has been advised of the possibility of such damages.** - -**_Limitation of Total Liability._ To the maximum extent permitted by applicable law, in no event will either party's total cumulative liability under this Agreement from all causes of action and all theories of liability exceed the Fees Customer has actually paid to GitHub during the 12 months preceding the claim giving rise to such liability. For products and services (including use of the Products) that are provided free of charge, GitHub’s liability is limited to direct damages up to $5,000.00 USD. For Beta Previews, GitHub's liability is limited to direct damages up to $500.00 USD.** - -**_Exclusions._ The exclusions and limitations set forth in this Section N will not apply to liability arising out of (1) a Party’s breach of its confidentiality obligations in Section P (except for all liability related to Content (excluding GitHub Content), which will remain subject to the limitations and exclusions above) or (2) a Party’s defense obligations in Section O.** - -### O. Defense of Claims; Release - -The Parties will defend each other against third-party claims, as and to the extent set forth in this Section O and will pay the amount of any resulting adverse final judgment or approved settlement, but only if the defending Party is promptly notified in writing of the claim and has the right to control the defense and any settlement of it. The Party being defended must provide the defending Party with all requested assistance, information, and authority. The defending Party will reimburse the other Party for reasonable out-of-pocket expenses it incurs in providing assistance, and will not settle or make any admissions with respect to a third-party claim without the other Party’s prior written consent, not to be unreasonably withheld or delayed. This Section O describes the Parties’ sole remedies and entire liability for such claims. - -#### 1. By GitHub -GitHub will defend Customer against any claim brought by an unaffiliated third party to the extent it alleges Customer’s authorized use of the Service infringes a copyright, patent, or trademark or misappropriates a trade secret of an unaffiliated third party. If GitHub is unable to resolve any such claim under commercially reasonable terms, it may, at its option, either: (a) modify, repair, or replace the Service (as applicable); or (b) terminate Customer’s subscription and refund any prepaid, unused subscription fees. GitHub will have no obligation under this Section O.1 for any such claim arising from: i) the modification of the Service, or the combination, operation, or use of the Service with equipment, devices, software, systems, or data, other than as expressly authorized by this Agreement (including the Documentation); (ii) Customer’s failure to stop using the Service after receiving notice to do so; (iii) Customer’s obligations under Section O.2; (iv) products or services (including use of the Service) that are provided by GitHub free of charge; or (v) access or use of Beta Previews. For purposes of GitHub’s obligation under this Section O.1, the Service includes open source components incorporated by GitHub therein. - -#### 2. By Customer -Customer will defend GitHub against any claim brought by an unaffiliated third party arising from: (i) Customer Content that Customer uploads to the Service; (ii) Customer's violation of this Agreement, including Customer’s breach of confidentiality or violation of Section C; or (iii) any third party-branded equipment, devices, software, systems, or data that Customer combines, operates, or uses with the Service. - -#### 3. Disputes with Other Users -If Customer has a dispute with one or more Users, Customer releases GitHub from all claims, demands and damages (actual and consequential) of every kind and nature, known and unknown, arising out of or in any way connected with such disputes. - -### P. Confidentiality -Neither Party will use the other Party's Confidential Information, except as permitted under this Agreement. Each Party agrees to maintain in confidence and protect the other Party's Confidential Information using at least the same degree of care as it uses for its own information of a similar nature, but in any event at least a reasonable degree of care. Each Party agrees to take all reasonable precautions to prevent any unauthorized disclosure of the other Party's Confidential Information, including, without limitation, disclosing such Confidential Information only to its Representatives who (i) have a need to know such information, (ii) are parties to appropriate agreements sufficient to comply with this Section P, and (iii) are informed of the restrictions on use and disclosure set forth in this Section P. Each Party is responsible for all acts and omissions of its Representatives. The foregoing obligations will not restrict either Party from disclosing Confidential Information of the other Party pursuant to the order or requirement of a court, administrative agency, or other governmental body, _provided_ that the Party required to make such a disclosure gives reasonable notice to the other Party to enable such Party to contest such order or requirement, unless such notice is prohibited by law. The restrictions set forth in this Section P will survive the termination or expiration of this Agreement. - -### Q. Professional Services -Upon Customer’s request for Professional Services, GitHub will provide an SOW detailing such Professional Services. GitHub will perform the Professional Services described in each SOW. GitHub will control the manner and means by which the Professional Services are performed and reserves the right to determine personnel assigned. GitHub may use third parties to perform the Professional Services, provided that GitHub remains responsible for their acts and omissions. Customer acknowledges and agrees that GitHub retains all right, title and interest in and to anything used or developed in connection with performing the Professional Services, including software, tools, specifications, ideas, concepts, inventions, processes, techniques, and know-how. To the extent GitHub delivers anything to Customer while performing the Professional Services, GitHub grants to Customer a non-exclusive, non-transferable, worldwide, royalty-free, limited-term license to use those deliverables during the term of this Agreement, solely in conjunction with Customer’s use of the Service. - -### R. Changes to the Service or Terms -GitHub reserves the right, at its sole discretion, to amend this Agreement at any time and will update this Agreement in the event of any such amendments. GitHub will notify Customer of material changes to this Agreement, such as price changes, at least 30 days prior to the change taking effect by posting a notice on the Service. For non-material modifications, Customer's continued use of the Service constitutes agreement to our revisions of this Agreement. Customer can view all changes to this Agreement in our [Site Policy](https://github.com/github/site-policy) repository. - -GitHub changes the Service via Updates and addition of new features. Nothwithstanding the foregoing, GitHub reserves the right at any time to modify or discontinue, temporarily or permanently, the Service (or any part of it) with or without notice. - -### S. Support -GitHub will provide standard technical Support for the Service at no additional charge twenty-four (24) hours per day, five (5) days per week, excluding weekends and national U.S. holidays. Standard Support is only offered via web-based ticketing through GitHub Support, and Support requests must be initiated from a User with which GitHub's Support team can interact. GitHub may provide premium Support (subject to the [GitHub Premium Support for Enterprise Cloud](/articles/about-github-premium-support) terms) or dedicated technical Support for the Service at the Support level, Fees, and Subscription Term specified in an Order Form or SOW. - -### T. Miscellaneous - -#### 1. Governing Law -If Customer’s principal office is in the Americas, this Agreement will be governed by and construed in accordance with the laws of the State of California, without giving effect to the principles of conflict of law, any legal action or proceeding arising under this Agreement will be brought exclusively in the federal or state courts located in the Northern District of California, and the Parties hereby consent to personal jurisdiction and venue therein. If Customer’s principal office is outside the Americas, this Agreement will be governed by the laws of Ireland, any legal action or proceeding arising under this Agreement will be brought exclusively in the courts located in Dublin, and the Parties hereby consent to personal jurisdiction and venue therein. The Parties expressly agree that the United Nations Convention on Contracts for the International Sale of Goods and the Uniform Computer Information Transactions Act will not apply to this Agreement. Notwithstanding anything to the contrary in the foregoing, GitHub may bring a claim for equitable relief in any court with proper jurisdiction. - -#### 2. Feedback -Customer may provide Feedback to GitHub regarding the Products. Feedback is voluntary and is not Customer Confidential Information, even if designated as such. GitHub may fully exercise and exploit such Feedback for the purpose of (i) improving the operation, functionality and use of GitHub’s existing and future product offerings and commercializing such offerings; and (ii) publishing aggregated statistics about the quality of the Products, provided that no data in any such publication will be used to specifically identify Customer, its employees or Customer’s proprietary software code. - -#### 3. Non-Assignability -Neither Party may assign or otherwise transfer this Agreement, in whole or in part, without the other Party's prior written consent, such consent not to be unreasonably withheld, and any attempt to do so will be null and void, except that GitHub may assign this Agreement in its entirety, upon notice to the other party but without the other Party's consent, in connection with a merger, acquisition, corporate reorganization, or sale of all or substantially all of the assigning party's business or assets. - -#### 4. Waiver -A Party's obligations under this Agreement may only be waived in writing signed by an authorized representative of the other Party. No failure or delay by a Party to this Agreement in exercising any right hereunder will operate as a waiver thereof, nor will any single or partial exercise thereof preclude any other or further exercise thereof or the exercise of any right hereunder at law or equity. - -#### 5. Severability -If any provision of this Agreement is deemed by a court of competent jurisdiction to be illegal, invalid, or unenforceable, the Parties will modify or reform this Agreement to give as much effect as possible to that provision. Any provision that cannot be modified or reformed in this way will be deemed deleted and the remaining provisions of this Agreement will continue in full force and effect. - -#### 6. Amendments; Complete Agreement; Order of Precedence -This Agreement may only be modified by a written amendment signed by an authorized representative of GitHub, or by GitHub posting a revised version in accordance with Section T. This Agreement represents the complete and exclusive agreement between the Parties. This Agreement supersedes any proposal or prior agreement oral or written, and any other communications between the Parties relating to the subject matter of these terms, including any confidentiality or nondisclosure agreements. In the event of any conflict between the terms of this Agreement and any Order Form or SOW, the terms of the Order Form or SOW will control with respect to that Order Form or SOW only. - -#### 7. Publicity -If Customer publicly displays the name of its company or organization on its account or otherwise publicly display its trademarks or logos on its profile page, Customer allows GitHub to use its company's or organization's name to identify Customer as a GitHub customer in promotional materials. Customer may revoke this permission by hiding its company or organization name from public display and notifying GitHub in writing to stop using its organization's name in promotional materials. However, GitHub will have no obligation to remove or recall any prior use or distribution of the promotional materials. - -#### 8. Force Majeure -GitHub will be excused from liability to the extent that it is unable to perform any obligation under this Agreement due to extraordinary causes beyond its reasonable control, including acts of God, natural disasters, strikes, lockouts, riots, acts of war, epidemics, or power, telecommunication or network failures. - -#### 9. Independent Contractors -Each Party is an independent contractor with respect to the subject matter of this Agreement. Nothing contained in this Agreement will be deemed or construed in any manner to create a legal association, partnership, joint venture, employment, agency, fiduciary, or other similar relationship between the Parties, and neither Party can bind the other contractually. - -#### 10. Questions -Questions about the Terms of Service? [Contact us](https://github.com/contact/). diff --git a/content/github/site-policy/github-data-protection-addendum.md b/content/github/site-policy/github-data-protection-addendum.md deleted file mode 100644 index aaae911d02b2..000000000000 --- a/content/github/site-policy/github-data-protection-addendum.md +++ /dev/null @@ -1,429 +0,0 @@ ---- -title: GitHub Data Protection Addendum -versions: - free-pro-team: '*' ---- - -Version Effective Date: September 9, 2020 - -## INTRODUCTION - -The parties agree that the GitHub Data Protection and Security Exhibit (together, the **"Data Protection Addendum"** or **“DPA”**) sets forth their obligations with respect to the processing and security of Customer Personal Data in connection with the GitHub Enterprise Cloud hosted service (the **“Service”**). GitHub makes the commitments in this DPA to all customers using the Service. Separate terms, including different privacy and security terms, govern Customer’s use of non-GitHub products. - -In the event of any conflict or inconsistency between the DPA and any other terms in Customer’s agreements with GitHub, the DPA shall prevail. The provisions of the DPA supersede any conflicting provisions of the GitHub Privacy Statement that otherwise may apply to processing of Customer Personal Data as defined herein. For clarity, consistent with Clause 10 of the Standard Contractual Clauses in Attachment 1, the Standard Contractual Clauses prevail over any other terms in the DPA. - - -## GITHUB DATA PROTECTION - -### 1. Definitions. - -1.1 The "**Applicable Data Protection Laws**" means certain laws, regulations, regulatory frameworks, or other legislations relating to the processing and use of Customer Personal Data, as applicable to Customer's use of GitHub and the GitHub Service, including: - - a. The EU General Data Protection Regulation 2016/679 (**"GDPR"**), along with any implementing or corresponding equivalent national laws or regulations, once in effect and applicable; and - - b. The California Consumer Privacy Act of 2018, Cal. Civ. Code §§1798.100 et seq. (**"CCPA"**); and - - c. The UK Data Protection Act 2018 and implementation of GDPR contained therein. - -1.2 "**Controller**," "**Data Subject**," "**Member State**," "**Personal Data**," "**Personal Data Breach**," "**Processing**," "**Processor**," and "**Supervisory Authority**" have the meanings given to them in the Applicable Data Protection Laws. In the event of a conflict, the meanings given in the GDPR will supersede. - -1.3 "**Customer Personal Data**" means any Personal Data for which Customer is a Controller, whether supplied by Customer for processing by GitHub or generated by GitHub in the course of performing its obligations under the Agreement. It includes data such as billing information, IP addresses, corporate email addresses, and any other Personal Data for which Customer is a Controller. - -1.4 "**Customer Repository Data**" means any data or information that is uploaded or created by Customer into any of its Private Repositories. - -1.5 A "**Data Breach**" means a Personal Data Breach or any other confirmed or reasonably suspected breach of Customer's Protected Data. - -1.6 "**End User**" means an individual Data Subject who controls a GitHub account and has agreed to the GitHub Terms of Service, and whose Personal Data is being transferred, stored, or processed by GitHub. For example, each Customer employee or contractor who has a GitHub account is also a GitHub End User. - -1.7 "**Permitted Purposes**" for data processing are those limited and specific purposes of providing the Service as set forth in the Agreement, the GitHub Privacy Statement, and this Exhibit A, or the purposes for which a Data Subject has authorized the use of Customer Personal Data. - -1.8 "**Protected Data**" includes any Customer Personal Data and any Customer Repository Data processed by GitHub on behalf of Customer under the Agreement. - -1.9 "**Sensitive Data**" means any Customer Personal Data revealing racial or ethnic origin; political opinions, religious or philosophical beliefs or trade union membership; processing of genetic data or biometric data for the purposes of uniquely identifying a natural person; data concerning health, a natural person's sex life or sexual orientation; and data relating to offences, criminal convictions, or security measures. - -### 2. Status and Compliance. - -#### 2.1 Data Processing. -GitHub acts as a Processor in regard to any Customer Personal Data it receives in connection with the Agreement, and GitHub will process Customer Personal Data only for Permitted Purposes in accordance with Customer's instructions as represented by the Agreement and other written communications. In the event that GitHub is unable to comply with Customer's instructions, such as due to conflicts with the Applicable Data Protection Laws, or where processing is required by the Applicable Data Protection Laws or other legal requirements, GitHub will notify Customer to the extent permissible. GitHub processes all Customer Personal Data in the United States or in the European Union; however, GitHub's subprocessors may process data outside of the United States or the European Union. Additionally, GitHub acts as a Processor for any Customer Repository Data. - -#### 2.2 Data Controllers. -GitHub receives Customer Personal Data both from Customer and directly from Data Subjects who create End User accounts. Customer is a Controller only for the Customer Personal Data it transfers directly to GitHub. - -#### 2.3 GitHub Compliance; Data Transfers. -GitHub will comply with Applicable Data Protection Laws in relation to the processing of Customer Personal Data. - -All transfers of Customer Personal Data out of the European Union, European Economic Area, United Kingdom, and Switzerland to provide the Service shall be governed by the Standard Contractual Clauses in Attachment 1 (Standard Contractual Clauses). -GitHub will abide by the requirements of European Economic Area and Swiss data protection law regarding the collection, use, transfer, retention, and other processing of Customer Personal Data from the European Economic Area, United Kingdom, and Switzerland. All transfers of Customer Personal Data to a third country or an international organization will be subject to appropriate safeguards as described in Article 46 of the GDPR and such transfers and safeguards will be documented according to Article 30(2) of the GDPR. - -In addition, GitHub is certified to the EU-U.S. and Swiss-U.S. Privacy Shield Frameworks and the commitments they entail, although GitHub does not rely on them as a legal basis for transfers of Personal Data. GitHub agrees to notify Customer if it makes a determination that it can no longer meet its obligation to provide the same level of protection as is required by the Privacy Shield principles. - - -### 3. Data Protection. - -#### 3.1 Purpose Limitation. -GitHub will process and communicate the Protected Data only for Permitted Purposes, unless the Parties agree in writing to an expanded purpose. - -#### 3.2 Data Quality and Proportionality. -GitHub will keep the Customer Personal Data accurate and up to date, or enable Customer to do so. GitHub will take commercially reasonable steps to ensure that any Protected Data it collects on Customer's behalf is adequate, relevant, and not excessive in relation to the purposes for which it is transferred and processed. In no event will GitHub intentionally collect Sensitive Data on Customer's behalf. Customer agrees that the GitHub Service is not intended for the storage of Sensitive Data; if Customer chooses to upload Sensitive Data to the Service, Customer must comply with Article 9 of the GDPR, or equivalent provisions in the Applicable Data Protection Laws. - -#### 3.3 Data Retention and Deletion. -Upon Customer's reasonable request, unless prohibited by law, GitHub will return, destroy, or deidentify all Customer Personal Data and related data at all locations where it is stored after it is no longer needed for the Permitted Purposes within thirty days of request. GitHub may retain Customer Personal Data and related data to the extent required by the Applicable Data Protection Laws, and only to the extent and for such period as required by the Applicable Data Protection Laws, provided that GitHub will ensure that Customer Personal Data is processed only as necessary for the purpose specified in the Applicable Data Protection Laws and no other purpose, and Customer Personal Data remains protected by the Applicable Data Protection Laws. - -#### 3.4 Data Processing. -GitHub provides the following information, required by Article 28(3) of the GDPR, regarding its processing of Customer's Protected Data: - -a. *The subject matter and duration of the processing* of Customer Personal Data are set out in the Agreement and this Addendum. - -b. *The nature and purpose of the processing* of Customer Personal Data is described in Section 3.1 of this Addendum. - -c. *The types of Customer Personal Data to be processed* are described in the GitHub Privacy Statement, and include Customer Personal Data such as user names, passwords, email addresses, and IP addresses. GitHub also processes information necessary for billing Customer's account, but does not process or store credit card information. Customer may choose to supply GitHub with additional Customer Personal Data, such as in Customer's profile settings or by uploading Customer Personal Data to its GitHub repositories. - -d. *The categories of Data Subject to whom the Customer Personal Data relates* are the Customer itself and its End Users. - -e. *The obligations and rights of Customer* are set out in the Agreement and this Addendum. - -### 4. Security and Audit Obligations. - -#### 4.1 Technical and Organizational Security Measures. -Taking into account the state of the art, the costs of implementation, and the nature, scope, context and purposes of processing as well as the risk of varying likelihood and severity for the rights and freedoms of natural persons, GitHub will implement appropriate technical and organizational measures to ensure a level of security appropriate to the risks, such as against accidental or unlawful destruction, or loss, alteration, unauthorized disclosure or access, presented by processing the Protected Data. GitHub will regularly monitor compliance with these measures and will continue to take appropriate safeguards throughout the duration of the Agreement. Please see Section 1.1 of the GitHub Security Exhibit regarding GitHub's responsibilities in relation to security safeguards. - -#### 4.2 Incident Response and Breach Notification. -GitHub will comply with the Information Security obligations in the GitHub Security Exhibit and the Applicable Data Protection Laws, including Data Breach notification obligations. Please see Section 1.2 of the GitHub Security Exhibit regarding GitHub's responsibilities in relation to Data Breach response and notification. - -#### 4.3 GitHub Personnel. -GitHub represents and warrants that it will take reasonable steps to ensure that all GitHub personnel processing Protected Data have agreed to keep the Protected Data confidential and have received adequate training on compliance with this Addendum and the Applicable Data Protection Laws. - -#### 4.4 Records. -GitHub will maintain complete, accurate, and up to date written records of all categories of processing activities carried out on behalf of Customer containing the information required under the Applicable Data Protection Laws. To the extent that assistance does not risk the security of GitHub or the privacy rights of individual Data Subjects, GitHub will make these records available to Customer on request as reasonably required, such as to help Customer demonstrate its compliance under the Applicable Data Protection Laws. To learn more about GitHub's requirements to provide assistance in the event of a security incident, please see Section 1.2 of the GitHub Security Exhibit. - -#### 4.5 Compliance Reporting. -GitHub will provide security compliance reporting in accordance with Section 2.3 of the GitHub Security Exhibit and privacy compliance reporting in accordance with Section 2.3 of the GitHub Security Exhibit. Customer agrees that any information and audit rights granted by the Applicable Data Protection Laws (including, where applicable, Article 28(3)(h) of the GDPR) will be satisfied by these compliance reports, and will only arise to the extent that GitHub's provision of a compliance report does not provide sufficient information, or to the extent that Customer must respond to a regulatory or Supervisory Authority audit. Section 3.1 of the GitHub Security Exhibit describes the Parties' responsibilities in relation to a regulatory or Supervisory Authority audit. - -#### 4.6 Assistance. -GitHub will provide reasonable assistance to Customer with concerns such as data privacy impact assessments, Data Subject rights requests, consultations with Supervisory Authorities, and other similar matters, in each case solely in relation to the processing of Customer Personal Data and taking into account the nature of processing. - -### 5. Use and Disclosure of Protected Data. - -#### 5.1 No Use in Marketing. -GitHub will not use the Protected Data for the purposes of advertising third-party content, and will not sell the Protected Data to any third party except as part of a merger or acquisition. - -#### 5.2 GitHub Privacy Statement. -The GitHub Privacy Statement, publicly available at [https://docs.github.com/articles/github-privacy-statement](/articles/github-privacy-statement), provides detailed notice of GitHub's privacy and data use practices, including its use of cookies, its dispute resolution process, and further details about GitHub's GDPR compliance. - -### 6. Subprocessing and Onward Transfer. - -#### 6.1 Protection of Data. -GitHub is liable for onward transfers of Protected Data to its subprocessors, such as its third-party payment processor. In the event that GitHub does transfer the Protected Data to a third-party subprocessor, or GitHub installs, uses, or enables a third party or third-party services to process the Protected Data on GitHub's behalf, GitHub will ensure that the third-party subprocessor is bound by written agreement that requires them to provide at least the same level of confidentiality, security, and privacy protection as is required of GitHub by this DPA and the Applicable Data Protection Laws. - -#### 6.2 Acceptance of GitHub Subprocessors. -Customer authorizes GitHub to appoint (and permit each subprocessor appointed in accordance with this Section 6 to appoint) subprocessors in accordance with Section 6 and any other restrictions in the Agreement. GitHub may continue to use those subprocessors currently engaged as of the Effective Date of this Addendum. - -#### 6.3 General Consent for Onward Subprocessing. -Customer provides a general consent for GitHub to engage onward subprocessors, conditional on GitHub's compliance with the following requirements: - -a. Any onward subprocessor must agree in writing to only process data in a country that the European Commission has declared to have an "adequate" level of protection; or to only process data on terms equivalent to the Standard Contractual Clauses, or pursuant to a Binding Corporate Rules approval granted by competent European data protection authorities, or pursuant to compliant and valid EU-US Privacy Shield and Swiss-U.S. Privacy Shield certifications; and - -b. GitHub will restrict the onward subprocessor's access to Customer Personal Data only to what is strictly necessary to perform its services, and GitHub will prohibit the subprocessor from processing the Customer Personal Data for any other purpose. - -#### 6.4 Disclosure of Subprocessor Agreements. -GitHub maintains a list of onward subprocessors it has engaged to process Customer Personal Data at [https://docs.github.com/articles/github-subprocessors-and-cookies](/articles/github-subprocessors-and-cookies), including the categories of Customer Personal Data processed, a description of the type of processing the subprocessor performs, and the location of its processing. GitHub will, upon Customer's written request, provide Customer with this list of subprocessors and the terms under which they process the Customer Personal Data. Pursuant to subprocessor confidentiality restrictions, GitHub may remove any confidential or commercially sensitive information before providing the list and the terms to Customer. In the event that GitHub cannot disclose confidential or sensitive information to Customer, the Parties agree that GitHub will provide all information it reasonably can in connection with its subprocessing agreements. - -#### 6.5 Objection to Subprocessors. -GitHub will provide thirty (30) days' prior written notice of the addition or removal of any subprocessor, including the categories listed in Section 6.4, by announcing changes on its site. If Customer has a reasonable objection to GitHub's engagement of a new subprocessor, Customer must notify GitHub promptly in writing. Where possible, GitHub will use commercially reasonable efforts to provide an alternative solution to the affected Service to avoid processing of data by the objectionable subprocessor. In the event that GitHub is unable to provide an alternative solution and the Parties cannot resolve the conflict within ninety days, Customer may terminate the Agreement. - -### 7. Termination. - -#### 7.1 Suspension. -In the event that GitHub is in breach of its obligations to maintain an adequate level of security or privacy protection, Customer may temporarily suspend the transfer of all Customer Personal Data or prohibit collection and processing of Customer Personal Data on Customer's behalf until the breach is repaired or the Agreement is terminated. - -#### 7.2 Termination with Cause. -In addition to any termination rights Customer has under the Agreement, Customer may terminate the Agreement without prejudice to any other claims at law or in equity in the event that: - -a. GitHub notifies Customer that it can no longer meet its privacy obligations; - -b. the transfer, collection, or processing of all Customer Personal Data has been temporarily suspended for longer than one month pursuant to Section 7.1; - -c. GitHub is in substantial or persistent breach of any warranties or representations under this Addendum; - -d. GitHub is no longer carrying on business, is dissolved, enters receivership, or a winding up order is made on behalf of GitHub; or - -e. Customer objects to a subprocessor pursuant to Section 6.5, and GitHub has not been able to provide an alternative solution within ninety days. - -#### 7.3 Breach. -Failure to comply with the material provisions of this Addendum is considered a material breach under the Agreement. - -#### 7.4 Failure to perform. -In the event that changes in law or regulation render performance of this Addendum impossible or commercially unreasonable, the Parties may renegotiate the Addendum in good faith. If renegotiation would not cure the impossibility, or if the Parties cannot reach an agreement, the Parties may terminate the Agreement after thirty days. - -#### 7.5 Notification. -In the event that GitHub determines that it can no longer meet its privacy obligations under this Addendum, GitHub will notify Customer in writing immediately. - -#### 7.6 Modifications. -GitHub may modify this Addendum from time to time as required by the Applicable Data Protection Laws, with thirty days' notice to Customer. - -#### 7.7 Termination Requirements. -Upon Termination, GitHub must: - -a. take reasonable and appropriate steps to stop processing the Customer Personal Data; - -b. within ninety days of termination, delete or deidentify any Customer Personal Data GitHub stores on Customer's behalf pursuant to Section 3.3; and - -c. provide Customer with reasonable assurance that GitHub has complied with its obligations in Section 7.7. - -### 8. Liability for Data Processing. - -#### 8.1 Limitations. -Except as limited by the Applicable Data Protection Laws, any claims brought under this Addendum will be subject to the terms of the Agreement regarding Limitations of Liability. - -## Attachment 1 – The Standard Contractual Clauses (Processors) -Execution of the applicable agreement by Customer includes execution of this Attachment 1 to the GitHub Data Protection Addendum, which is countersigned by GitHub, Inc. - -In countries where regulatory approval is required for use of the Standard Contractual Clauses, the Standard Contractual Clauses cannot be relied upon under European Commission 2010/87/EU (of February 2010) to legitimize export of data from the country, unless Customer has the required regulatory approval. - -For the purposes of Article 46(2) of the General Data Protection Regulation (EU 2016/679) for the transfer of personal data to processors established in third countries which do not ensure an adequate level of data protection, Customer (as data exporter) and GitHub (as data importer, whose signature appears below), each a “party,” together “the parties,” have agreed on the following Contractual Clauses (the “Clauses” or “Standard Contractual Clauses”) in order to adduce adequate safeguards with respect to the protection of privacy and fundamental rights and freedoms of individuals for the transfer by the data exporter to the data importer of the personal data specified in Appendix 1. - -#### Clause 1: Definitions -(a) 'personal data', 'special categories of data', 'process/processing', 'controller', 'processor', 'data subject' and 'supervisory authority' shall have the same meaning as in the General Data Protection Regulation (EU 2016/679) on the protection of individuals with regard to the processing of personal data and on the free movement of such data; - -(b) 'the data exporter' means the controller who transfers the personal data; - -(c) 'the data importer' means the processor who agrees to receive from the data exporter personal data intended for processing on his behalf after the transfer in accordance with his instructions and the terms of the Clauses and who is not subject to a third country's system ensuring adequate protection within the meaning of Article 45(2) of the General Data Protection Regulation (EU 2016/679); - -(d) 'the subprocessor' means any processor engaged by the data importer or by any other subprocessor of the data importer who agrees to receive from the data importer or from any other subprocessor of the data importer personal data exclusively intended for processing activities to be carried out on behalf of the data exporter after the transfer in accordance with his instructions, the terms of the Clauses and the terms of the written subcontract; - -(e) 'the applicable data protection law' means the legislation protecting the fundamental rights and freedoms of individuals and, in particular, their right to privacy with respect to the processing of personal data applicable to a data controller in the Member State in which the data exporter is established; - -(f) 'technical and organisational security measures' means those measures aimed at protecting personal data against accidental or unlawful destruction or accidental loss, alteration, unauthorised disclosure or access, in particular where the processing involves the transmission of data over a network, and against all other unlawful forms of processing. - -#### Clause 2: Details of the transfer -The details of the transfer and in particular the special categories of personal data where applicable are specified in Appendix 1 below which forms an integral part of the Clauses. - -#### Clause 3: Third-party beneficiary clause -1. The data subject can enforce against the data exporter this Clause, Clause 4(b) to (i), Clause 5(a) to (e), and (g) to (j), Clause 6(1) and (2), Clause 7, Clause 8(2), and Clauses 9 to 12 as third-party beneficiary. - -2. The data subject can enforce against the data importer this Clause, Clause 5(a) to (e) and (g), Clause 6, Clause 7, Clause 8(2), and Clauses 9 to 12, in cases where the data exporter has factually disappeared or has ceased to exist in law unless any successor entity has assumed the entire legal obligations of the data exporter by contract or by operation of law, as a result of which it takes on the rights and obligations of the data exporter, in which case the data subject can enforce them against such entity. - -3. The data subject can enforce against the subprocessor this Clause, Clause 5(a) to (e) and (g), Clause 6, Clause 7, Clause 8(2), and Clauses 9 to 12, in cases where both the data exporter and the data importer have factually disappeared or ceased to exist in law or have become insolvent, unless any successor entity has assumed the entire legal obligations of the data exporter by contract or by operation of law as a result of which it takes on the rights and obligations of the data exporter, in which case the data subject can enforce them against such entity. Such third-party liability of the subprocessor shall be limited to its own processing operations under the Clauses. - -4. The parties do not object to a data subject being represented by an association or other body if the data subject so expressly wishes and if permitted by national law. - -#### Clause 4: Obligations of the data exporter -The data exporter agrees and warrants: - -(a) that the processing, including the transfer itself, of the personal data has been and will continue to be carried out in accordance with the relevant provisions of the applicable data protection law (and, where applicable, has been notified to the relevant authorities of the Member State where the data exporter is established) and does not violate the relevant provisions of that State; - -(b) that it has instructed and throughout the duration of the personal data processing services will instruct the data importer to process the personal data transferred only on the data exporter's behalf and in accordance with the applicable data protection law and the Clauses; - -(c) that the data importer will provide sufficient guarantees in respect of the technical and organisational security measures specified in Appendix 2 below; - -(d) that after assessment of the requirements of the applicable data protection law, the security measures are appropriate to protect personal data against accidental or unlawful destruction or accidental loss, alteration, unauthorised disclosure or access, in particular where the processing involves the transmission of data over a network, and against all other unlawful forms of processing, and that these measures ensure a level of security appropriate to the risks presented by the processing and the nature of the data to be protected having regard to the state of the art and the cost of their implementation; - -(e) that it will ensure compliance with the security measures; - -(f) that, if the transfer involves special categories of data, the data subject has been informed or will be informed before, or as soon as possible after, the transfer that its data could be transmitted to a third country not providing adequate protection within the meaning of the General Data Protection Regulation (EU 2016/679); - -(g) to forward any notification received from the data importer or any subprocessor pursuant to Clause 5(b) and Clause 8(3) to the data protection supervisory authority if the data exporter decides to continue the transfer or to lift the suspension; - -(h) to make available to the data subjects upon request a copy of the Clauses, with the exception of Appendix 2, and a summary description of the security measures, as well as a copy of any contract for subprocessing services which has to be made in accordance with the Clauses, unless the Clauses or the contract contain commercial information, in which case it may remove such commercial information; - -(i) that, in the event of subprocessing, the processing activity is carried out in accordance with Clause 11 by a subprocessor providing at least the same level of protection for the personal data and the rights of data subject as the data importer under the Clauses; and - -(j) that it will ensure compliance with Clause 4(a) to (i). - -#### Clause 5: Obligations of the data importer -The data importer agrees and warrants: - -(a) to process the personal data only on behalf of the data exporter and in compliance with its instructions and the Clauses; if it cannot provide such compliance for whatever reasons, it agrees to inform promptly the data exporter of its inability to comply, in which case the data exporter is entitled to suspend the transfer of data and/or terminate the contract; - -(b) that it has no reason to believe that the legislation applicable to it prevents it from fulfilling the instructions received from the data exporter and its obligations under the contract and that in the event of a change in this legislation which is likely to have a substantial adverse effect on the warranties and obligations provided by the Clauses, it will promptly notify the change to the data exporter as soon as it is aware, in which case the data exporter is entitled to suspend the transfer of data and/or terminate the contract; - -(c) that it has implemented the technical and organisational security measures specified in Appendix 2 before processing the personal data transferred; - -(d) that it will promptly notify the data exporter about: - -(i) any legally binding request for disclosure of the personal data by a law enforcement authority unless otherwise prohibited, such as a prohibition under criminal law to preserve the confidentiality of a law enforcement investigation, - -(ii) any accidental or unauthorised access, and - -(iii) any request received directly from the data subjects without responding to that request, unless it has been otherwise authorised to do so; - -(e) to deal promptly and properly with all inquiries from the data exporter relating to its processing of the personal data subject to the transfer and to abide by the advice of the supervisory authority with regard to the processing of the data transferred; - -(f) at the request of the data exporter to submit its data processing facilities for audit of the processing activities covered by the Clauses which shall be carried out by the data exporter or an inspection body composed of independent members and in possession of the required professional qualifications bound by a duty of confidentiality, selected by the data exporter, where applicable, in agreement with the supervisory authority; - -(g) to make available to the data subject upon request a copy of the Clauses, or any existing contract for subprocessing, unless the Clauses or contract contain commercial information, in which case it may remove such commercial information, with the exception of Appendix 2 which shall be replaced by a summary description of the security measures in those cases where the data subject is unable to obtain a copy from the data exporter; - -(h) that, in the event of subprocessing, it has previously informed the data exporter and obtained its prior written consent; - -(i) that the processing services by the subprocessor will be carried out in accordance with Clause 11; and - -(j) to send promptly a copy of any subprocessor agreement it concludes under the Clauses to the data exporter. - -#### Clause 6: Liability -1. The parties agree that any data subject who has suffered damage as a result of any breach of the obligations referred to in Clause 3 or in Clause 11 by any party or subprocessor is entitled to receive compensation from the data exporter for the damage suffered. - -2. If a data subject is not able to bring a claim for compensation in accordance with paragraph 1 against the data exporter, arising out of a breach by the data importer or his subprocessor of any of their obligations referred to in Clause 3 or in Clause 11, because the data exporter has factually disappeared or ceased to exist in law or has become insolvent, the data importer agrees that the data subject may issue a claim against the data importer as if it were the data exporter, unless any successor entity has assumed the entire legal obligations of the data exporter by contract of by operation of law, in which case the data subject can enforce its rights against such entity. -The data importer may not rely on a breach by a subprocessor of its obligations in order to avoid its own liabilities. - -3. If a data subject is not able to bring a claim against the data exporter or the data importer referred to in paragraphs 1 and 2, arising out of a breach by the subprocessor of any of their obligations referred to in Clause 3 or in Clause 11 because both the data exporter and the data importer have factually disappeared or ceased to exist in law or have become insolvent, the subprocessor agrees that the data subject may issue a claim against the data subprocessor with regard to its own processing operations under the Clauses as if it were the data exporter or the data importer, unless any successor entity has assumed the entire legal obligations of the data exporter or data importer by contract or by operation of law, in which case the data subject can enforce its rights against such entity. The liability of the subprocessor shall be limited to its own processing operations under the Clauses. - -#### Clause 7: Mediation and jurisdiction -1. The data importer agrees that if the data subject invokes against it third-party beneficiary rights and/or claims compensation for damages under the Clauses, the data importer will accept the decision of the data subject: - -(a) to refer the dispute to mediation, by an independent person or, where applicable, by the supervisory authority; - -(b) to refer the dispute to the courts in the Member State in which the data exporter is established. - -2. The parties agree that the choice made by the data subject will not prejudice its substantive or procedural rights to seek remedies in accordance with other provisions of national or international law. - -#### Clause 8: Cooperation with supervisory authorities -1. The data exporter agrees to deposit a copy of this contract with the supervisory authority if it so requests or if such deposit is required under the applicable data protection law. - -2. The parties agree that the supervisory authority has the right to conduct an audit of the data importer, and of any subprocessor, which has the same scope and is subject to the same conditions as would apply to an audit of the data exporter under the applicable data protection law. - -3. The data importer shall promptly inform the data exporter about the existence of legislation applicable to it or any subprocessor preventing the conduct of an audit of the data importer, or any subprocessor, pursuant to paragraph 2. In such a case the data exporter shall be entitled to take the measures foreseen in Clause 5(b). - -#### Clause 9: Governing Law. -The Clauses shall be governed by the law of the Member State in which the data exporter is established. - -#### Clause 10: Variation of the contract -The parties undertake not to vary or modify the Clauses. This does not preclude the parties from adding clauses on business related issues where required as long as they do not contradict the Clause. - -#### Clause 11: Subprocessing -1. The data importer shall not subcontract any of its processing operations performed on behalf of the data exporter under the Clauses without the prior written consent of the data exporter. Where the data importer subcontracts its obligations under the Clauses, with the consent of the data exporter, it shall do so only by way of a written agreement with the subprocessor which imposes the same obligations on the subprocessor as are imposed on the data importer under the Clauses. Where the subprocessor fails to fulfil its data protection obligations under such written agreement the data importer shall remain fully liable to the data exporter for the performance of the subprocessor's obligations under such agreement. - -2. The prior written contract between the data importer and the subprocessor shall also provide for a third-party beneficiary clause as laid down in Clause 3 for cases where the data subject is not able to bring the claim for compensation referred to in paragraph 1 of Clause 6 against the data exporter or the data importer because they have factually disappeared or have ceased to exist in law or have become insolvent and no successor entity has assumed the entire legal obligations of the data exporter or data importer by contract or by operation of law. Such third-party liability of the subprocessor shall be limited to its own processing operations under the Clauses. - -3. The provisions relating to data protection aspects for subprocessing of the contract referred to in paragraph 1 shall be governed by the law of the Member State in which the data exporter is established. - -4. The data exporter shall keep a list of subprocessing agreements concluded under the Clauses and notified by the data importer pursuant to Clause 5 (j), which shall be updated at least once a year. The list shall be available to the data exporter's data protection supervisory authority. - -#### Clause 12: Obligation after the termination of personal data processing services -1. The parties agree that on the termination of the provision of data processing services, the data importer and the subprocessor shall, at the choice of the data exporter, return all the personal data transferred and the copies thereof to the data exporter or shall destroy all the personal data and certify to the data exporter that it has done so, unless legislation imposed upon the data importer prevents it from returning or destroying all or part of the personal data transferred. In that case, the data importer warrants that it will guarantee the confidentiality of the personal data transferred and will not actively process the personal data transferred anymore. - -2. The data importer and the subprocessor warrant that upon request of the data exporter and/or of the supervisory authority, it will submit its data processing facilities for an audit of the measures referred to in paragraph 1. - -### Appendix 1 to the Standard Contractual Clauses -Data exporter: Customer is the data exporter. - -**Data importer:** The data importer is GitHub, Inc., a global producer of software and services. - -**Data subjects:** Data subjects include the data exporter’s representatives and end-users including employees, contractors, collaborators, and customers of the data exporter. Data subjects may also include individuals attempting to communicate or transfer personal information to users of the services provided by data importer. GitHub acknowledges that, depending on Customer’s use of the Service, Customer may elect to include personal data from any of the following types of data subjects in the Customer Personal Data: - -- Employees, contractors and temporary workers (current, former, prospective) of data exporter; -- Dependents of the above; -- Data exporter's collaborators/contact persons (natural persons) or employees, contractors or temporary workers of legal entity collaborators/contact persons (current, prospective, former); -- Users (e.g., customers, clients, patients, visitors, etc.) and other data subjects that are users of data exporter's services; -- Partners, stakeholders or individuals who actively collaborate, communicate or otherwise interact with employees of the data exporter and/or use communication tools such as apps and websites provided by the data exporter; -- Stakeholders or individuals who passively interact with data exporter (e.g., because they are the subject of an investigation, research or mentioned in documents or correspondence from or to the data exporter); or -- Professionals with professional privilege (e.g., doctors, lawyers, notaries, religious workers, etc.). - -**Categories of data:** The personal data transferred that is included in e-mail, documents and other data in an electronic form in the context of the Service. GitHub acknowledges that, depending on Customer’s use of the Service, Customer may elect to include personal data from any of the following categories in the Customer Personal Data: -- Authentication data (for example, username, email, password); -- Contact information (for example, email); -- Unique identification numbers and signatures (IP addresses, unique identifier in tracking cookies or similar technology). -- Other unique identifying information. Data subjects may include more data such as real names, avatar images, and other personal information; - -**Special categories of data (if appropriate):** The data importer does not intentionally collect or process any special categories of data in carrying out its services to the data exporter. - -However, because the data importer provides storage services and does not control the categories of data it stores, the data exporter may choose to transfer special categories of data. Consequently, the data exporter is solely responsible for ensuring that it complies with all obligations imposed by applicable laws and regulations relating to the collection and processing of any special categories of data, including obtaining the explicit consent of the data subject prior to processing sensitive personal data. - -**Processing operations:** The personal data transferred will be subject to the following basic processing activities: -GitHub uses personal data for the limited purposes set forth in the GitHub Privacy Statement, available at [https://docs.github.com/articles/github-privacy-statement](/articles/github-privacy-statement), and the “Data Processing” section of the DPA. -Subcontractors: In accordance with the DPA, the data importer may hire other companies to provide limited services on data importer’s behalf, such as providing customer support. Any such subcontractors will be permitted to obtain Customer Personal Data only to deliver the services the data importer has retained them to provide, and they are prohibited from using Customer Personal Data for any other purpose. - -### Appendix 2 to the Standard Contractual Clauses -Description of the technical and organizational security measures implemented by the data importer in accordance with Clauses 4(d) and 5(c): - -**1. Personnel.** Data importer’s personnel will not process Customer Personal Data without authorization. Personnel are obligated to maintain the confidentiality of any Customer Personal Data and this obligation continues even after their engagement ends. - -**2. Data Privacy Contact.** The data privacy officer of the data importer can be reached at the following address: -GitHub, Inc. -Attn: Privacy -88 Colin P. Kelly Jr. Street -San Francisco, CA 94107 USA - -**3. Technical and Organization Measures.** The data importer has implemented and will maintain appropriate technical and organizational measures, internal controls, and information security routines intended to protect Customer Personal Data, as defined in the GitHub Security Exhibit, against accidental loss, destruction, or alteration; unauthorized disclosure or access; or unlawful destruction as follows: The technical and organizational measures, internal controls, and information security routines set forth in the GitHub Security Exhibit are hereby incorporated into this Appendix 2 by this reference and are binding on the data importer as if they were set forth in this Appendix 2 in their entirety. -Signature of GitHub, Inc. appears below. - -Signing the Standard Contractual Clauses, Appendix 1 and Appendix 2 on behalf of the data importer - -![Screen Shot 2020-07-20 at 2 20 29 PM](/assets/images/help/site-policy/docusign-signature.png) - -Lynn Hashimoto, Head of Product & Regulatory Legal - -GitHub, Inc. - - -## SECURITY EXHIBIT - -### 1. Information Security Program. - -#### 1.1 Security Management. - -Throughout the duration of the Agreement, GitHub will maintain and enforce a written information security program (**"Security Program"**) that aligns with industry recognized frameworks; includes security safeguards reasonably designed to protect the confidentiality, integrity, availability, and resilience of Customer Protected Data; is appropriate to the nature, size, and complexity of GitHub's business operations; and complies with the Applicable Data Protection Laws and other specific information security related laws and regulations that are applicable to the geographic regions in which GitHub does business. - -a. Security Officer. GitHub has designated a senior employee to be responsible for overseeing and carrying out its Security Program and for governance and internal communications regarding information security matters. - -b. Security Program Changes. GitHub will not make changes to its Security Program that adversely affect the security of any Customer Protected Data where notification is required under applicable laws and regulations. - -c. GitHub will maintain standard security industry practices to include, but are not limited to: - -- Vulnerability Management Program -- Secure Development Training, Review and Coding Practices -- Production Systems Logical and Physical Access Controls -- External Technical Assessments and Audits -- Security Policies, Standards and Standard Operating Procedures -- Security and Privacy Awareness Training - - -#### 1.2 Security Incident Management. -Throughout the duration of the Agreement, and where applicable, GitHub will provide a Security incident management program as follows: - -a. Security Availability and Escalation. GitHub will maintain appropriate security contact and escalation processes on a 24-hours-per-day, 7-days-per-week basis to ensure customers and employees can submit issues to the GitHub Security team. - -b. Incident Response. If GitHub becomes aware of a breach of security leading to the accidental or unlawful destruction, loss, alteration, unauthorized disclosure of, or access to Customer Personal Data (each a **"Security Incident"**), GitHub will promptly and without undue delay (1) notify Customer of the Security Incident; (2) investigate the Security Incident and provide Customer with detailed information about the Security Incident; (3) take reasonable steps to mitigate the effects and to minimize any damage resulting from the Security Incident. - -c. Notification. Notification(s) of Security Incidents will be delivered to one or more of Customer's administrators by any means GitHub selects. It is Customer's sole responsibility to ensure Customer's administrators monitor for and respond to any notifications. Customer is solely responsible for complying with its obligations under incident notification laws applicable to Customer and fulfilling any third-party notification obligations related to any Security Incident. - -d. Reasonable Assistance. GitHub will make commercially reasonable efforts to assist Customer in fulfilling Customer's obligation under applicable law or regulation to notify the relevant supervisory authority and data subjects about such Security Incident. - -#### 1.3 Due Diligence over Subcontractors and Vendors. -GitHub will maintain appropriate due diligence when utilizing subcontractors and vendors. GitHub will maintain vendor assessment reports and any assessment work for a minimum of three years. - -#### 1.4 Data Center Physical Safeguards. -To the extent GitHub utilizes third party vendors to host production environments, GitHub will select vendors that comply with physical security controls outlined in industry standards and that issue an annual external audit report such as SOC 2 or ISO 27001 certification. All access to areas, cabinets, or racks that house telecommunications, networking devices, and other "data transmission lines" or equipment will be controlled as follows: - -a. access will be controlled by badge reader at one or more entrance points; - -b. doors used only as exit points will have only "one way" doorknobs or crash bar exit devices installed; - -c. all doors will be equipped with door alarm contacts; - -d. all exit doors will have video surveillance capability; and - -e. all card access and video systems will be tied in to generator or UPS backup systems. - -### 2. Requests for Information and Compliance Reporting. - -#### 2.1 Requests for Information. -Upon Customer's written request and no more than once annually, GitHub will respond to one request for information to assess security and compliance risk-related information. The response will be provided in writing within thirty days of receipt of the request, pending needed clarifications of any request. - -#### 2.2 Response Contents. -GitHub will include in its annual response relevant audit reports for production datacenter, IaaS, PaaS or private hosting providers, as deemed relevant by GitHub, in its sole discretion and based on data and services rendered. - -#### 2.3 GitHub Security Audit Report. -GitHub will execute external audits to produce a SOC1, type 2, audit report and a SOC2, type 2, audit report. GitHub will continue to execute audits and issue corresponding reports for the duration of the Agreement on at least an annual basis. - -### 3. Cooperation with Regulatory Audits. -Should Customer realize a regulatory audit or an audit in response to a Supervisory Authority that requires participation from GitHub, GitHub will fully cooperate with related requests by providing access to relevant knowledgeable personnel, documentation, and application software. Customer has the following responsibilities regarding any such regulatory or Supervisory Authority audits: - -a. Customer must ensure use of an independent third party (meaning the regulator or regulator's delegate), and that findings and data not relevant to Customer are restricted from Customer’s access. - -b. Notification of such audit must be written and provided to GitHub in a timely fashion, pending regulator notification, and in a manner that allows for appropriate personnel to be made available to assist. Where regulators provide no advance notice to Customer of audit or investigation, GitHub will respond in as timely a fashion as required by regulators. - -c. Any third party auditor must disclose to GitHub any findings and recommended actions where allowed by regulator. - -d. In the event of a regulatory audit, access will be permitted only during regular business hours, Pacific time. - -e. To the extent permitted by law, Customer must keep confidential any information gathered through any such audit of GitHub that, by its nature, should be confidential. diff --git a/content/github/site-policy/github-deceased-user-policy.md b/content/github/site-policy/github-deceased-user-policy.md deleted file mode 100644 index af27d5a37d3b..000000000000 --- a/content/github/site-policy/github-deceased-user-policy.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: GitHub Deceased User Policy -versions: - free-pro-team: '*' ---- - -In the event that a GitHub user passes away, we can work with an authorized individual to determine what happens to the account's content. - -If you are next of kin, a [pre-designated successor](/github/setting-up-and-managing-your-github-user-account/maintaining-ownership-continuity-of-your-user-accounts-repositories), or other authorized individual (which could include a collaborator or business partner) of a deceased user and would like to make a request regarding their account, you can reach out to us at https://support.github.com/contact. Please provide the following information in your message: - -- Name -- Contact Information -- Name of the deceased account holder -- GitHub username of the deceased account holder -- Your relationship to the deceased account holder (please include whether you have been designated as the account successor on GitHub.com) -- If designated as account successor, the username of your GitHub account -- What action you are seeking (e.g. transfer public repositories, cancel billing on account) - -Once we have received your request, we may follow up with a request for additional information, such as a copy of your photo identification, copy of the death certificate, and documentation confirming you are authorized to act in relation to the deceased user’s account, to verify that we are properly authorized to process your request. - -Please note, the information you provide in your request is collected in accordance with our [Privacy Statement](/github/site-policy/github-privacy-statement), and we will retain the information only as necessary to comply with our legal obligations and resolve disputes. diff --git a/content/github/site-policy/github-enterprise-cloud-evaluation-agreement.md b/content/github/site-policy/github-enterprise-cloud-evaluation-agreement.md deleted file mode 100644 index 7a9f7a4208d0..000000000000 --- a/content/github/site-policy/github-enterprise-cloud-evaluation-agreement.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: GitHub Enterprise Cloud Evaluation Agreement -redirect_from: - - /articles/github-enterprise-cloud-evaluation-agreement -versions: - free-pro-team: '*' ---- - -THANK YOU FOR CHOOSING GITHUB FOR YOUR COMPANY'S BUSINESS NEEDS. PLEASE READ THESE TERMS CAREFULLY AS IT GOVERNS YOUR EVALUATION USE OF THE SERVICE, UNLESS GITHUB HAS EXECUTED A SEPARATE WRITTEN AGREEMENT WITH YOU FOR THAT PURPOSE. BY CLICKING ON THE "I AGREE" OR SIMILAR BUTTON OR BY ACCESSING THE SERVICE ON A TRIAL BASIS, YOU ACCEPT ALL THE TERMS AND CONDITIONS OF THIS EVALUATION AGREEMENT. IF YOU ARE ENTERING INTO THIS EVALUATION AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY (HEREINAFTER REFERRED TO AS "**CUSTOMER**"), CUSTOMER REPRESENTS THAT IT HAS THE LEGAL AUTHORITY TO BIND THE COMPANY OR OTHER LEGAL ENTITY TO THIS EVALUATION AGREEMENT. ALSO, BY ACCEPTING THESE TERMS, CUSTOMER AGREES THAT IT HAS READ GITHUB'S PRIVACY STATEMENT. - -### 1. Corporate Terms of Service - -Customer must have a Corporate Account on GitHub.com in order to have evaluation access. Customer's evaluation of Enterprise Cloud will be governed by these terms and the Corporate Terms of Service (found at [https://docs.github.com/articles/github-corporate-terms-of-service](/articles/github-corporate-terms-of-service)) (together, the "**Evaluation Agreement**"). However, any supplemental terms associated with [Enterprise Cloud Addendum](/articles/github-enterprise-cloud-addendum) **will not** apply until Customer upgrades its purchase to a paid subscription to Enterprise Cloud.   Any capitalized terms not defined in this Evaluation Agreement are defined in the Corporate Terms of Service. - -### 2. Term and Termination - -*2.1 Term.* "Evaluation Agreement Effective Date" is the date on which Customer agrees to the terms and conditions of this Evaluation Agreement. This Agreement begins on the Evaluation Agreement Effective Date and continues in effect for fourteen (14) days ("**Evaluation Term**"). - -*2.2 Termination.* Either party may terminate this Evaluation Agreement for any reason, without cause. Section 2.3 will apply to either party's election to terminate this Evaluation Agreement. This Evaluation Agreement will terminate immediately, without the requirement of notice, if Customer breaches any terms of the Evaluation Agreement. - -*2.3 Effect of Termination.* Upon expiration of the Evaluation Term, any Subscription Licenses will automatically terminate; Customer will no longer have the right to use Enterprise Cloud; and Customer may lose access to Content, features, or capacity of its account. Please see the "Effect of Termination" section of the Corporate Terms of Service for information on obtaining a copy of that Content. - -### 3. Warranties and Disclaimers - -CUSTOMER UNDERSTANDS AND AGREES THAT ANY MATERIALS OR INFORMATION THAT GITHUB PROVIDES OR THAT CUSTOMER HAS ACCESS TO UNDER THIS EVALUATION AGREEMENT (INCLUDING, WITHOUT LIMITATION, ANY CONFIDENTIAL INFORMATION OR EVALUATION ACCOUNT MATERIALS) ARE PROVIDED "**AS IS**", AND WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. GITHUB SPECIFICALLY DISCLAIMS ANY AND ALL IMPLIED WARRANTIES OR CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. - -### 4. Limitation of Liability - -IN NO EVENT WILL GITHUB BE LIABLE TO CUSTOMER OR TO ANY THIRD PARTY FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, EXEMPLARY OR PUNITIVE DAMAGES, INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOST DATA, LOST PROFITS OR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, HOWEVER CAUSED AND UNDER ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, TORT (INCLUDING WITHOUT LIMITATION PRODUCTS LIABILITY, STRICT LIABILITY AND NEGLIGENCE), OR ANY OTHER THEORY, AND WHETHER OR NOT THE PARTY KNEW OR SHOULD HAVE KNOWN ABOUT THE POSSIBILITY OF SUCH DAMAGE. IN NO EVENT WILL  GITHUB'S AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS EVALUATION AGREEMENT FOR ANY CAUSE WHATSOEVER, AND REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT OR IN TORT, EXCEED FIVE HUNDRED DOLLARS ($500.00) USD. THE FOREGOING LIMITATIONS WILL APPLY NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY STATED IN THIS EVALUATION AGREEMENT. - -### 5. Privacy - -5.1 As part of the development and evaluation of our evaluation programs, GitHub needs to collect information about how Customer uses services and programs and how GitHub can improve them. GitHub may collect certain additional personal information from Customer. For example, GitHub may invite Customer to provide Feedback (as explained in Section 6 below). GitHub might ask questions about Customer's  experiences, familiarity with the product, or demographic information. GitHub uses this information to improve its products and services and does not sell Feedback to third parties or advertisers. Customer may decline to provide Feedback, decline to answer specific questions, or contact GitHub to delete or alter the information it has collected about Customer. - -5.2 GitHub's servers are located in the United States. GitHub processes Customer's data in the United States. However, Customer is responsible for determining what personal data it submits to GitHub. Please see the [Privacy Statement](/articles/github-privacy-statement) for more information. - -### 6. Feedback - -GitHub is always trying to improve its products and services, and Customer's Feedback about its evaluation account will help do that. If Customer chooses to provide GitHub with any Feedback, Customer acknowledges and agrees that GitHub will have a royalty-free, fully paid-up, worldwide, transferable, sub-licensable, irrevocable and perpetual license to implement, use, modify, commercially exploit and/or incorporate the Feedback into GitHub products, services, and documentation. - -### 7. Amendments; Waivers; No Third-Party Beneficiaries - -This Evaluation Agreement may not be changed, except by a writing signed by both parties or by an update to the Generally Applicable Terms. If any term, condition, or provision in this Evaluation Agreement is found to be invalid or unenforceable, the remaining terms will continue to be valid and enforceable to the fullest extent permitted by law. The parties expressly agree that there are no third-party beneficiaries to this Evaluation Agreement. - -### 8. Entire Agreement; Order of Precedence - -The Generally Applicable Terms together with this Evaluation Agreement contain the entire agreement of the parties with respect to its subject matter and supersede all prior communications, representations, understandings and agreements, whether written or oral. The terms or conditions of any of Customer's purchase orders, acknowledgements, or other documents sent to GitHub in connection with this Evaluation Agreement will be null and void, and of no effect. In the event of a conflict between this Evaluation Agreement and the Generally Applicable Terms, this Evaluation Agreement will govern with respect to the relevant provision for the Evaluation Term of the Evaluation Agreement. diff --git a/content/github/site-policy/github-enterprise-server-license-agreement.md b/content/github/site-policy/github-enterprise-server-license-agreement.md deleted file mode 100644 index 994d0cb179c1..000000000000 --- a/content/github/site-policy/github-enterprise-server-license-agreement.md +++ /dev/null @@ -1,188 +0,0 @@ ---- -title: GitHub Enterprise Server License Agreement -redirect_from: - - /articles/github-enterprise-server-license-agreement -versions: - free-pro-team: '*' ---- - -Effective Date: April 1, 2020 - -PLEASE READ THIS AGREEMENT CAREFULLY AS IT GOVERNS YOUR USE OF THE PRODUCTS (AS DEFINED BELOW), UNLESS WE HAVE EXECUTED A SEPARATE WRITTEN AGREEMENT WITH YOU FOR THAT PURPOSE. - -BY CLICKING ON THE "I AGREE" OR SIMILAR BUTTON OR BY ACCESSING THE PRODUCTS, YOU ACCEPT ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU ARE ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY (HEREINAFTER "**Customer**"), CUSTOMER REPRESENTS THAT IT HAS THE LEGAL AUTHORITY TO BIND THE COMPANY OR OTHER LEGAL ENTITY TO THIS AGREEMENT. GITHUB MAY MODIFY THIS AGREEMENT FROM TIME TO TIME, SUBJECT -TO SECTION 18.12. - -This Agreement applies to the following GitHub offerings, as further defined below (collectively, the **“Products”**): - -- The Software (which may include Add-on Software, such as Advanced Security, Insights and Learning Lab for Enterprise Server); - -- Any related Support; and - -- Any related Professional Services. - -If Customer has purchased the Products from a GitHub Partner, the following provisions of this Agreement will be superseded by the terms between Customer and the GitHub Partner: Section 8, Payment; Section 9, Delivery; Section 10, Verification; and Section 17, Term and Termination. - -**1. Definitions.** Capitalized words not listed here will be defined within the Agreement. - -”**Add-On Software**” means Advanced Security, Insights, Learning Lab for Enterprise Server and other additional Software add-on products that GitHub may offer from time to time. - -“**Advanced Security**” means the Software feature which enables Customer to identify security vulnerabilities through customizable and automated semantic code analysis. - -"**Agreement Effective Date**" is the earlier of the date that Customer either clicks "I Agree" to the terms and conditions of this Agreement, or that it first places an order for the Products. - -"**Affiliate**" means any entity that directly or indirectly controls, is controlled by, or is under common control with a party where "control" means having more than fifty percent (50%) ownership or the right to direct the management of the entity. - -"**Beta Previews** means software, services, or features identified as alpha, beta, preview, early access, or evaluation, or words or phrases with similar meanings. - -"**Customer Modifications**" means Software modifications Customer may make solely for the purpose of developing bug fixes, customizations, or additional features to any libraries licensed under open source licenses that may be included with or linked to by the Software. - -"**Documentation**" means any manuals, documentation and other supporting materials related to the Software that GitHub provides or makes available to Customer. Documentation is considered part of the Software. - -"**Feedback**" means any ideas, know-how, algorithms, code contributions, suggestions, enhancement requests, recommendations or any other feedback on GitHub products or services. - -"**Fees**" means the fees Customer is required to pay GitHub to use the Products during the applicable Subscription Term or Professional Services, as such fees are reflected on an Order Form or SOW. - -"**GitHub Insights**" or “**Insights**” means the Software feature which provides Customer with metrics, analytics, and recommendations relating to their use of the Software. GitHub Insights does not include legacy features of GitHub including Organization insights and repository insights. - -"**GitHub Partner**" means a company authorized to resell GitHub Products under the terms and conditions of GitHub's Channel Partner Agreement. - -"**Learning Lab for Enterprise Server**" means the Software feature that enables Users to learn about GitHub functionality, including associated Documentation. - -"**License Effective Date**" means the effective date of each Order Form as stated therein. - -"**License Key**" means the data file used by the Software's access control mechanism that allows you to install, operate, and use the Software is delivered via a secure, password-protected website. - -"**Order Form**" means written or electronic documentation (including a quote) that the Parties use to order the Products. - -"**Parties**" means references to GitHub and Customer collectively. Each may be referred to individually as a "**Party**". - -"**Professional Services**" means training, consulting, or implementation services that GitHub provides to Customer pursuant to a mutually executed SOW. Professional Services do not include Support. - -"**Release**" means a Software release that GitHub makes generally available to its customers, along with any corresponding changes to Documentation, that contains enhancements, new features, or new functionality, generally indicated by a change in the digit to the right of the first decimal point (e.g., x.x.x to x.y.x) or to the left of the first decimal point (e.g., x.x.x to y.x.x). - -"**Software**" means GitHub's proprietary Enterprise Server software. Software includes any applicable Documentation, any Updates to the Software that GitHub provides to Customer or that Customer can access under this Agreement, and, if included in Customer’s subscription, Add-On Software. - -**"SOW"** means a mutually executed statement of work detailing the Professional Services GitHub will perform, any related Fees, and each Party's related obligations. - -**“Subscription License”** means the license assigned to each User to install, operate, access, and use the Software on Customer’s behalf. Customer may only assign one Subscription License per User across its GitHub Enterprise Server instances. Each User will have access to as many of Customer’s Enterprise Server instances, as Customer permits. For clarity, however, once Customer assigns a Subscription License to a User, Customer will not be authorized to bifurcate the Subscription License so that one User can use a Subscription License on Enterprise Server while another User uses the same Subscription License on another instance of GitHub Enterprise Server. - -"**Subscription Term**" means the period of one (1) year from the License Effective Date unless an alternate period is specified in an Order Form. GitHub will provide Customer with a renewal notice at least sixty (60) days before the expiration of the Subscription Term and will generate a new Order Form for renewal. GitHub will provide a new License Key for Customer to download that will allow continued use of the Software in accordance with the Order Form. - -"**Support**" means technical support for the Software that GitHub may provide. - -"**Update**" means a Software release that GitHub makes generally available to its customers, along with any corresponding changes to Documentation, that contains error corrections or bug fixes, generally indicated by a change in the digit to the right of the second decimal point (e.g., x.x.x to x.x.y). - -"**User**" means a single person or Machine Account that initiates the execution of the Software or interacts with or directs the Software in the performance of its functions. - -**2. Software License Grant.** GitHub grants to Customer a non-exclusive, non-transferable, worldwide, royalty-free, limited-term license to install and use the Software for Customer’s internal business purposes during the applicable Subscription Term, in accordance with the Documentation, and only for the number of Subscription Licenses stated in Customer’s Order Form. The Software includes components licensed to GitHub by third parties, including software whose licenses require GitHub to make the source code for those components available. The source code for such components will be provided upon request. Without limiting the foregoing, this license permits Customer to download and run Microsoft SQL Server Standard Edition container image for Linux files (“**SQL Server Images**”), which may be used only with the Software as documented. Customer’s right to use the SQL Server Images ends when Customer no longer has rights to use the Software, and Customer must uninstall the SQL Server Images when its right to use them ends. Microsoft Corporation may disable SQL Server Images at any time. - -**3. License Restrictions.** Except as expressly permitted by law or by applicable third-party license, Customer and its Affiliates must not and must not allow any third party to: (i) sublicense, sell, rent, lease, transfer, assign, or redistribute the Software; (ii) host the Software for the benefit of third parties; (iii) disclose or permit any third party to access the Software, except as expressly permitted in Section 2; (iv) hack or modify the License Key, or avoid or change any license registration process; (v) except for Customer Modifications, modify or create derivative works of the Software, or merge the Software with other software; (vi) disassemble, decompile, bypass any code obfuscation, or otherwise reverse engineer the Software or attempt to derive any of its source code, in whole or in part; (vii) modify, obscure, or delete any proprietary rights notices included in or on the Software or Documentation; or (viii) otherwise use or copy the Software or Documentation in a manner not expressly permitted by this Agreement. - -**4. Intellectual Property Rights.** As between the Parties, GitHub owns all right, title and interest, including all intellectual property rights, in and to the Products. GitHub reserves all rights in and to the Products not expressly granted to Customer under this Agreement. - -**5. Feedback.** Customer may provide Feedback to GitHub regarding the Products. Feedback is voluntary and is not Customer Confidential Information, even if designated as such. GitHub may fully exercise and exploit such Feedback for the purpose of (i) improving the operation, functionality and use of GitHub’s existing and future product offerings and commercializing such offerings; and (ii) publishing aggregated statistics about the quality of the Products, provided that no data in any such publication will be used to specifically identify Customer, its employees or Customer’s proprietary software code. - -**6. Subscription Licenses.** Subscription Licenses are granted on a per User basis and multiple Users may not use the same Subscription License. Customer may reassign a Subscription License to a new User only after ninety (90) days from the last reassignment of that same Subscription License, unless the reassignment is due to (i) permanent hardware failure or loss, (ii) termination of the User’s employment or contract, or (iii) temporary reallocation of Subscription Licenses to cover a User’s absence. When Customer reassigns a Subscription License from one User to another, Customer must block the former User’s access to the Subscription License. - -**7. Affiliates.** Customer’s Affiliates are authorized to use the Software in accordance with this Agreement, so long as Customer remains fully responsible for their access and use of the Software. - -**8. Payment** - -**8.1** *Fees.* Customer agrees to pay the Fees in full, up front without deduction or setoff of any kind, in U.S. Dollars. Customer must pay the Fees within thirty (30) days of the GitHub invoice date. Amounts payable under this Agreement are non-refundable, except as provided in Sections 13 and 14.1. If Customer fails to pay any Fees on time, GitHub reserves the right, in addition to taking any other action at law or equity, to (i) charge interest on past due amounts at 1.0% per month or the highest interest rate allowed by law, whichever is less, and to charge all expenses of recovery, and (ii) terminate the applicable Order Form or SOW. Customer is solely responsible for all taxes, fees, duties and governmental assessments (except for taxes based on GitHub's net income) that are imposed or become due in connection with this Agreement. - -**8.2** *Purchasing Additional Subscription Licenses.* Customer may obtain additional Subscription Licenses under this Agreement by submitting a request through GitHub’s website or via its sales team. A new Order Form will then be generated and if Customer purchases the additional Subscription Licenses, Customer must pay the then-currently applicable Fees for them, prorated for the balance of the applicable Subscription Term. Upon renewal of Customer’s Subscription Licenses for another Subscription Term, GitHub will invoice all Subscription Licenses at once on an annual basis unless otherwise specified in an Order Form. - -**8.3** *Add-On Software.* Add-On Software is licensed on a per User basis. For the avoidance of doubt, and unless otherwise set forth in an Order Form, the number of Subscription Licenses Customer has at any given time for Add-On Software must equal the number of Subscription Licenses Customer has for the Products under this Agreement. For example, if Customer wishes to purchase a subscription to Advanced Security and already holds Subscription Licenses for 100 Users for the Products, it must purchase Subscription Licenses for 100 Users for Advanced Security. - -**9. Delivery.** GitHub will make the License Key available for Customer to download on a secure, password-protected website. All deliveries under this Section 9 will be electronic. For the avoidance of doubt, Customer is responsible for installation of any Software and acknowledge that GitHub has no further delivery obligation with respect to the Software after delivery of the License Key. As Updates become available, GitHub will make those available for download on the same website. Customer must Update the Software on a commercially reasonable basis but no less than one (1) time per year. Customer is responsible for maintaining the confidentiality of Customer’s usernames and passwords. - -**10. Verification.** At GitHub's request, Customer will promptly provide GitHub with a Software-generated report verifying that Customer is using the Software in accordance with this Agreement. GitHub will invoice Customer for any additional use, effective from the date its use first exceeded the terms of the Agreement. - -**11. Support.** - -**11.1** *Standard Support.* GitHub will provide standard technical Support for the Software at no additional charge twenty-four (24) hours per day, five (5) days per week, excluding weekends and national U.S. holidays. Standard Support is only offered via web-based ticketing through GitHub Support, and Support requests must be initiated from a User with which GitHub's Support team can interact. GitHub may provide premium Support (subject to the [Premium Support for Enterprise Server terms](/enterprise/admin/enterprise-support/about-github-premium-support-for-github-enterprise-server)) or dedicated technical Support for the Software at the Support level, Fees, and Subscription Term specified in an Order Form or SOW. - -**11.2** *Enhanced Support Offerings.* GitHub may provide enhanced Support offerings for the Software (including the Premium, Premium Plus, and Engineering Direct Support offerings) in accordance with the [Support terms](/enterprise/admin/enterprise-support/about-github-premium-support-for-github-enterprise), and at the Support level, Fees, and Subscription Term specified in an Order Form or SOW. - -**11.3** *Exclusions.* GitHub will use reasonable efforts to correct any material, reproducible errors in the Software of which Customer notifies GitHub. However, GitHub will not be responsible for providing Support where (i) someone (other than GitHub) modifies the Software; (ii) Customer changes its operating system or environment in a way that adversely affects the Software or its performance; (iii) Customer uses the Software in a manner other than as authorized under this Agreement or the Documentation; or (iv) there is negligence or misuse by Customer of the Software. - -**11.4** *Updates; Releases.* GitHub will only Support a given Release of the Software for one (1) year from the original Release date, or six (6) months from the last Update of the Release, whichever is longer. If Customer requires Support for earlier Releases of the Software, then Customer must pay for that Support in accordance with the terms of a mutually agreed upon Order Form or SOW. - -**12. Professional Services.** Upon Customer’s request for Professional Services, GitHub will provide an SOW detailing such Professional Services. GitHub will perform the Professional Services described in each SOW. GitHub will control the manner and means by which the Professional Services are performed and reserves the right to determine personnel assigned. GitHub may use third parties to perform the Professional Services, provided that GitHub remains responsible for their acts and omissions. Customer acknowledges and agrees that GitHub retains all right, title and interest in and to anything used or developed in connection with performing the Professional Services, including software, tools, specifications, ideas, concepts, inventions, processes, techniques, and know-how. To the extent GitHub delivers anything to Customer while performing the Professional Services, GitHub grants to Customer a non-exclusive, non-transferable, worldwide, royalty-free, limited-term license to use those deliverables during the term of this Agreement, solely in conjunction with Customer’s use of the Software. - -**13. Limited Warranties.** - -**13.1** *Limited Software Warranties*. GitHub warrants that: (i) the unmodified Software, at the time it is made available to Customer for download, will not contain or transmit any malware, viruses, or worms (otherwise known as computer code or other technology specifically designed to disrupt, disable, or harm Customer’s software, hardware, computer system, or network) and (ii) for ninety (90) days from the date it is made available for initial download, the unmodified Software will substantially conform to its Documentation. GitHub does not warrant that Customer’s use of the Software will be uninterrupted, or that the operation of the Software will be error-free. The warranty in this Section 13.1 will not apply if Customer modifies or uses the Software in any way that is not expressly permitted by this Agreement and the Documentation. GitHub's only obligation, and Customer’s only remedy, for any breach of this warranty will be, at GitHub's option and expense, to either (a) repair the Software; (b) replace the Software; or (c) terminate this Agreement with respect to the defective Software, and refund the unused, prepaid Fees for the defective Software during the then-current Subscription Term. - -**13.2** *Professional Services Warranty.* GitHub warrants to Customer that any Professional Services performed under this Agreement will be performed in a professional and workmanlike manner by appropriately qualified personnel. GitHub's only obligation, and Customer’s only remedy, for a breach of this warranty will be, at GitHub's option and expense, to either: (i) promptly re-perform any Professional Services that fail to meet this warranty or (ii) if the breach cannot be cured, terminate the SOW and refund the unused, prepaid Fees. - -**13.3** *General Warranty.* Each Party represents and warrants that it has the legal power and authority to enter into this Agreement, and that this Agreement and each Order Form is entered into by an employee or agent of such Party with all necessary authority to bind such Party to the terms and conditions of this Agreement. - -**13.4** *Beta Previews.* Customer may choose to use Beta Previews in its sole discretion. Beta Previews may not be supported and may be changed at any time without notice. Beta Previews may not be as reliable or available as the Software. Beta Previews are not subject to the same security measures to which the Software has been and is subject. GitHub will have no liability arising out of or in connection with Beta Previews. **CUSTOMER USERS BETA PREVIEWS AT ITS OWN RISK.** - -**13.5** *Warranty Disclaimer.* THE LIMITED WARRANTIES DESCRIBED ABOVE ARE THE ONLY WARRANTIES GITHUB MAKES WITH RESPECT TO THE SOFTWARE, PROFESSIONAL SERVICES, AND SUPPORT. GITHUB DOES NOT MAKE ANY OTHER WARRANTIES AND REPRESENTATIONS OF ANY KIND, AND HEREBY SPECIFICALLY DISCLAIMS ANY OTHER WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR ANY WARRANTIES OR CONDITIONS ARISING OUT OF COURSE OF DEALING OR USAGE OF TRADE. NO ADVICE OR INFORMATION, WHETHER ORAL OR WRITTEN, PROVIDED BY GITHUB OR ANYWHERE ELSE WILL CREATE ANY WARRANTY OR CONDITION NOT EXPRESSLY STATED IN THIS AGREEMENT. - -**14. Defense of Claims; Release.** - -The Parties will defend each other against third-party claims, as and to the extent set forth in this Section 14 and will pay the amount of any resulting adverse final judgment or approved settlement, but only if the defending Party is promptly notified in writing of the claim and has the right to control the defense and any settlement of it. The Party being defended must provide the defending Party with all requested assistance, information, and authority. The defending Party will reimburse the other Party for reasonable out-of-pocket expenses it incurs in providing assistance, and will not settle or make any admissions with respect to a third-party claim without the other Party’s prior written consent, not to be unreasonably withheld or delayed. This Section 14 describes the Parties’ sole remedies and entire liability for such claims. - -**14.1** *GitHub*. GitHub will defend Customer against any claim brought by an unaffiliated third party to the extent it alleges Customer’s authorized use of the Software infringes a copyright, patent, or trademark or misappropriates a trade secret of an unaffiliated third party. If GitHub is unable to resolve any such claim under commercially reasonable terms, it may, at its option, either: (a) modify, repair, or replace the Software (as applicable); or (b) terminate Customer’s subscription and refund any prepaid, unused subscription Fees. GitHub will have no obligation under this Section 14.1 for any such claim arising from: (i) the modification of the Software, or the combination, operation, or use of the Software with equipment, devices, software, systems, or data, other than as expressly authorized by this Agreement (including the Documentation); (ii) Customer’s failure to stop using the Software after receiving notice to do so; (iii) Customer’s obligations under Section 14.2; (iv) products or services (including use of the Software) that are provided by GitHub free of charge; or (v) access or use of Beta Previews. For purposes of GitHub’s obligation under this Section 14.1, the Software includes open source components incorporated by GitHub therein. - -**14.2** *Customer*. Customer will defend GitHub against any claim brought by an unaffiliated third party arising from: (i) Customer Content that Customer uploads to the Software; (ii) Customer's violation of this Agreement, including Customer’s breach of confidentiality; (iii) Customer Modifications to the Software; or (iv) any third party-branded equipment, devices, software, systems, or data that Customer combines, operates, or uses with the Software. - -**15. LIMITATION OF LIABILITY.** - -**15.1** *No Indirect Damages*. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL EITHER PARTY BE LIABLE TO THE OTHER PARTY OR TO ANY THIRD PARTY FOR ANY INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES (INCLUDING FOR LOSS OF PROFITS, REVENUE, OR DATA) OR FOR THE COST OF OBTAINING SUBSTITUTE PRODUCTS ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, HOWEVER CAUSED, WHETHER SUCH LIABILITY ARISES FROM ANY CLAIM BASED UPON CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, AND WHETHER OR NOT A PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -**15.2** *Limitation of Total Liability*. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL EITHER PARTY’S TOTAL CUMULATIVE LIABILITY UNDER THIS AGREEMENT FROM ALL CAUSES OF ACTION AND ALL THEORIES OF LIABILITY EXCEED THE FEES CUSTOMER HAS ACTUALLY PAID TO GITHUB DURING THE TWELVE (12) MONTHS PRECEDING THE CLAIM GIVING RISE TO SUCH LIABILITY. FOR PRODUCTS AND SERVICES THAT ARE PROVIDED FREE OF CHARGE, GITHUB’S LIABILITY IS LIMITED TO DIRECT DAMAGES UP TO $5,000.00 USD. FOR BETA PREVIEWS, GITHUB’S LIABILITY IS LIMITED TO DIRECT DAMAGES UP TO $500.00 USD. - -**15.3** *Exceptions*. The exclusions and limitations set forth in this Section 15 will not apply to liability arising out of (1) Customer’s non-compliance with the license grant or license restrictions in Sections 2 and 3; (2) a Party’s defense obligations in Section 14; or (c) a Party’s breach of its confidentiality obligations in Section 16. - -**16. Confidentiality.** - -**16.1** *Definition of Confidential Information*. For the purposes of this Agreement, "Confidential Information" means any business or technical information that either Party discloses to the other, in writing, orally, or by any other means, including disclosures like computer programs, code, algorithms, data, know-how, formulas, processes, ideas, inventions (whether patentable or not), schematics and other technical, business, financial, and product development plans, names and expertise of employees and consultants, and customer lists. For the purposes of this Agreement, except as expressly set forth in Section 2.1, the source code of the Software will be deemed to be GitHub's Confidential Information, regardless of whether it is marked as such. - -**16.2** *Restrictions on Use and Disclosure.* Neither Party will use the other Party's Confidential Information, except as permitted under this Agreement. Each Party agrees to maintain in confidence and protect the other Party's Confidential Information using at least the same degree of care as it uses for its own information of a similar nature, but in all events at least a reasonable degree of care. Each Party agrees to take all reasonable precautions to prevent any unauthorized disclosure of the other Party's Confidential Information, including, without limitation, disclosing Confidential Information only to its employees, independent contractors, consultants, and legal and financial advisors (collectively, "Representatives") (i) with a need to know such information, (ii) who are parties to appropriate agreements sufficient to comply with this Section 16, and (iii) who are informed of the non-disclosure obligations imposed by this Section 16. Each Party is responsible for all acts and omissions of its Representatives. The foregoing obligations will not restrict either Party from disclosing Confidential Information of the other Party pursuant to the order or requirement of a court, administrative agency, or other governmental body, provided that the Party required to make such a disclosure gives reasonable notice to the other Party to enable them to contest such order or requirement. The restrictions set forth in this Section 16 will survive the termination or expiration of this Agreement. - -**16.3** *Exclusions*. The restrictions set forth in Section 16.2 will not apply with respect to any Confidential Information that: (i) was or becomes publicly known through no fault of the receiving party; (ii) was rightfully known or becomes rightfully known to the receiving party without confidential or proprietary restriction from a source other than the disclosing party who has a right to disclose it; (iii) is approved by the disclosing party for disclosure without restriction in a written document which is signed by a duly authorized officer of such disclosing party; or (iv) the receiving party independently develops without access to or use of the other Party's Confidential Information. - -**17. Term and Termination.** - -**17.1** *Agreement* *Term*. This Agreement starts on the Agreement Effective Date and will continue in effect until this Agreement is terminated by a Party in accordance with this Section 17. If this Agreement is terminated before the expiration or termination of a Subscription Term, then any active Order Forms will remain in force pursuant to the terms of this Agreement. - -**17.2** *Termination for Convenience*. Either Party may terminate an Order Form, with or without cause, upon at least thirty (30) days written notice before the end of the then-current Subscription Term. - -**17.3** *Termination for Material Breach*. Either Party may terminate this Agreement immediately upon notice if the other Party breaches a material obligation under this Agreement and fails to cure the breach within thirty (30) days from the date it receives notification. Either Party reserves the right to terminate this Agreement immediately upon written notice, but without giving the other Party a cure period, if Customer breaches any of the terms of this Agreement relating to GitHub's intellectual property (including Customer's compliance with the license grant and any license restrictions) or either Party's Confidential Information. - -**17.4** *Effect of Termination; Survival.* When this Agreement terminates or expires, Customer may not execute additional Order Forms; however, the Agreement will remain in full force and effect for the remainder of any active Order Forms. When an Order Form terminates or expires, as to that Order Form: (i) the Subscription Term for any Software will immediately end; (ii) Customer will no longer have the right to use the Software, and any Subscription Licenses granted in the Order Form will automatically cease to exist as of the date of termination or expiration; (iii) if any Fees were owed prior to termination, Customer must pay those Fees immediately; (iv) Customer must destroy all copies of the Software in its possession or control, and certify in writing to GitHub that it has done so; and (v) each Party will promptly return to the other (or, if the other party requests it, destroy) all Confidential Information belonging to the other. Notwithstanding the foregoing, Customer may continue to access the Software to migrate its data for ninety (90) days after termination or expiration of this Agreement or an Order Form; however, Customer must not use the Software on a production basis during that time. Any terms or sections which by their nature should reasonably survive will survive the termination or expiration of this Agreement or an Order Form. - -**18. General Provisions.** - -**18.1** *Compliance with Laws and Regulations.* Customer will comply with all applicable laws and regulations, including, but not limited to, data protection and employment laws and regulations, in its use of the Products. - -**18.2** *Data Protection Considerations for Use of GitHub Insights and Learning Lab for Enterprise Server.* If Customer’s planned use of GitHub Insights or Learning Lab for Enterprise Server involves processing personal data, Customer is solely responsible for determining whether or not to complete a data protection impact assessment or otherwise secure formal legal analysis of Customer’s planned use. It is in Customer’s sole discretion whether to use GitHub Insights or Learning Lab for Enterprise Server to process Customer’s employees’ and/or users’ data, and if Customer does so, Customer is solely responsible for conducting such processing in compliance with applicable law. - -**18.3** *Governing Law; Venue.* For Customers domiciled in the United States, Canada, Mexico, or a country in Central or South America or the Caribbean (the "Americas"), this Agreement will be governed by and construed in accordance with the laws of the State of California, as if performed wholly within the state and without giving effect to the principles of conflict of law. For such Customers, any legal action or proceeding arising under this Agreement will be brought exclusively in the federal or state courts located in the Northern District of California and the parties hereby consent to personal jurisdiction and venue therein. If Customer’s principal office is outside the Americas, this Agreement will be governed by the laws of Ireland, any legal action or proceeding arising under this Agreement will be brought exclusively in the courts located in Dublin, and the Parties hereby consent to personal jurisdiction and venue therein. The Parties expressly agree that the United Nations Convention on Contracts for the International Sale of Goods and the Uniform Computer Information Transactions Act will not apply to this Agreement. Notwithstanding the foregoing, GitHub may bring a claim for equitable relief in any court with proper jurisdiction. - -**18.4** *Government Users.* The Products and Documentation were developed solely with private funds and are considered "Commercial Computer Software" and "Commercial Computer Software Documentation" as described in Federal Acquisition Regulations 12.212 and 27.405-3, and Defense Federal Acquisition Regulation Supplement 227.7202-3. The Products are licensed to the United States Government end user as restricted computer software and limited rights data. No technical data or computer software is developed under this Agreement. Any use, disclosure, modification, distribution, or reproduction of the Products or Documentation by the United States Government or its contractors is subject to the restrictions set forth in this Agreement. All other use is prohibited. - -**18.5** *Export.* The Products are subject to export and sanctions restrictions administered by the U.S. Government and import restrictions by certain foreign governments, and Customer will comply with all applicable export and import laws and regulations in Customer’s use of the Products. Customer must not, and must not allow any third party to, remove or export from the United States or allow the export or re-export of any part of the Products or any direct product thereof: (i) into (or to a national or resident of) any embargoed or terrorist-supporting country or territory; (ii) to anyone on the U.S. Commerce Department’s Entity List or Table of Denial Orders, anyone blocked pursuant to rules administered by the U.S. Office of Foreign Assets Control, including anyone on the List of Specially Designated Nationals or sanctioned country “Government” entities, or anyone subject to other applicable prohibited or sanctioned persons lists; (iii) to any country or territory to which such export or re-export is restricted or prohibited, or as to which the U.S. government or any agency thereof requires an export license or other governmental approval at the time of export or re-export without first obtaining such license or approval; or (iv) otherwise in violation of any export, sanctions, or import restrictions, laws or regulations of any United States or foreign agency or authority. Customer represents and warrants that Customer is not located in under the control of, or a national or resident of any such prohibited country or territory or on any such prohibited party list. GitHub Enterprise Server is a self-hosted virtual appliance that can be run within Customer’s own datacenter or virtual private cloud. As such, GitHub Enterprise Server can be used to store ITAR or other export-controlled information. However, Customer is responsible for ensuring such compliance. Customer acknowledges and agrees that the Products are restricted from being used for the design or development of nuclear, chemical, or biological weapons or missile technology without the prior required permission of the U.S. government. - -**18.6** *No Publicity without Permission.* GitHub may identify Customer as a customer to current and prospective customers. However, GitHub may not use Customer’s name or logo in any advertising or marketing materials without Customer’s permission. - -**18.7** *Assignment*. Neither Party may assign or otherwise transfer this Agreement, in whole or in part, without the other Party's prior written consent, such consent not to be unreasonably withheld, and any attempt to do so will be null and void, except that GitHub may assign this Agreement in its entirety, upon notice to the other party but without the other Party's consent, in connection with a merger, acquisition, corporate reorganization, or sale of all or substantially all of the assigning party's business or assets. - -**18.8** *Notices*. Unless otherwise stated herein, any notice, request, demand or other communication under this Agreement must be in writing (e-mail is acceptable), must reference this Agreement, and will be deemed to be properly given: (i) upon receipt, if delivered personally; (ii) one (1) business day following confirmation of receipt by the intended recipient, if by e-mail; (iii) five (5) business days after it is sent by registered or certified mail, with written confirmation of receipt and email; or (iv) three (3) business days after deposit with an internationally recognized express courier and email, with written confirmation of receipt. Notices can be sent to the address(es) set forth in this Agreement, unless a Party notifies the other that those addresses have changed. - -**18.9** *Force Majeure*. GitHub will be excused from liability to the extent that it is unable to perform any obligation under this Agreement due to extraordinary causes beyond its reasonable control, including acts of God, natural disasters, strikes, lockouts, riots, acts of war, epidemics, or power, telecommunication or network failures. - -**18.10** *Independent Contractors*. The Parties are each independent contractors with respect to the subject matter of this Agreement. Nothing contained in this Agreement will be deemed or construed in any manner to create a legal association, partnership, joint venture, employment, agency, fiduciary, or other similar relationship between the Parties, and neither Party can bind the other contractually. - -**18.11** *Waiver*. A Party's obligations under this Agreement must only be waived in a writing signed by an authorized representative of the other Party, which waiver will be effective only with respect to the specific obligation described. No failure or delay by a Party to this Agreement in exercising any right hereunder will operate as a waiver thereof, nor will any single or partial exercise thereof preclude any other or further exercise thereof or the exercise of any right hereunder at law or equity. - -**18.12** *Entire Agreement*. This Agreement, including each Order Form and SOW, constitutes the entire agreement and understanding of the Parties with respect to its subject matter, and supersedes all prior or contemporaneous understandings and agreements, whether oral or written, between the Parties with respect to its subject matter. The terms of any purchase order, written terms or conditions, or other document that Customer submits to GitHub that contains terms that are different from, in conflict with, or in addition to the terms of this Agreement, SOW or any Order Form will be void and of no effect. - -**18.13** *Amendments; Order of Precedence*. GitHub reserves the right to amend this Agreement at any time and will update the terms and conditions of this Agreement in the event of any such amendments. Changes to this Agreement will become effective upon the anniversary of Customer's then-current Subscription Term. In the event of a conflict between this Agreement and an Order Form, an Order Form will govern with respect to that order only. This Agreement and any addenda, including an Order Form, must control and no modification, change, or amendment of this Agreement will be binding upon the Parties or supersede the terms of this Agreement unless it is in writing, and is duly signed by each Party's authorized representative. - -**18.14** *Severability*. If any provision of this Agreement is deemed by a court of competent jurisdiction to be illegal, invalid, or unenforceable, the court will modify or reform this Agreement to give as much effect as possible to that provision. Any provision that cannot be modified or reformed in this way will be deemed deleted and the remaining provisions of this Agreement will continue in full force and effect. diff --git a/content/github/site-policy/github-enterprise-service-level-agreement.md b/content/github/site-policy/github-enterprise-service-level-agreement.md deleted file mode 100644 index 7b7d630df41d..000000000000 --- a/content/github/site-policy/github-enterprise-service-level-agreement.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: GitHub Enterprise Service Level Agreement -redirect_from: - - /github-enterprise-cloud-addendum/ - - /github-business-cloud-addendum/ - - /articles/github-enterprise-cloud-addendum -versions: - free-pro-team: '*' ---- -**Short version:** GitHub guarantees a 99.9% quarterly uptime commitment for the GitHub Enterprise Cloud service (the “**Service Level**” or “**SLA**”). If GitHub does not meet the SLA, then Customer will be entitled to a service credit to Customer’s account (“**Service Credits**”). - -For definitions of each Service feature (“**Service Feature**”) and to review historical and current Uptime, visit the [GitHub Status Page](https://www.githubstatus.com/). Capitalized terms used but not defined in this SLA have the meaning assigned in Customer’s applicable agreement. - -## Uptime Guarantee - -“**Uptime**” is the percentage of total possible minutes the Service was available in a given calendar quarter. GitHub commits to maintain at least 99.9% Uptime for the Service. The Uptime calculation for each Service Feature is described below (“**Uptime Calculation**”). If GitHub does not meet the SLA, Customer will be entitled to Service Credits based on the calculation below (“**Service Credits Calculation**”). Note, Downtime does not affect every customer at the same time or in the same way. - -| **Service Feature** | **Uptime Calculation** | **Definitions** | **Service Credits Calculation** | -|---|---|---|---| -| The **Service** includes the following Service Features:
  • Issues
  • Pull Requests
  • Git Operations
  • API Requests
  • Webhooks
  • Pages
  • Actions
  • Packages
| (total minutes in a calendar quarter - Downtime) / total minutes in a calendar quarter | “**Downtime**” is a period of time where either (a) the error rate exceeds five percent (5%) in a given minute for any Service Feature or (b) the Service was unavailable as determined by a combination of GitHub's internal and external monitoring systems. | A Service Credits claim may be based on either (not both) of the following calculations:
  • 10% of the amount Customer paid for a Service Feature in a calendar quarter where the Uptime for that Service Feature was less than or equal to 99.9%, but greater than 99.0%.

    OR

  • 25% of the amount Customer paid for a Service Feature in a calendar quarter where the Uptime of that Service Feature was less than 99.0%.
| | -| **Actions** | (Total Triggered Executions – Unavailable Executions) / (Total Triggered Executions) x 100 | “**Total Triggered Executions**” is the total number of all Actions executions triggered by Customer in a calendar quarter.

“**Unavailable Executions**” is the total number of executions within Total Triggered Executions which failed to run in a calendar quarter. An execution failed to run when the Actions history log did not capture any output five (5) minutes after the trigger was successfully fired. | Same as above | -| **Packages** | Transfers Uptime = same as Actions

Storage Uptime = 100% - Average Error Rate*

*The Uptime Calculation excludes public usage and storage transactions that do not count toward either Total Storage Transactions or Failed Storage Transactions (including pre-authentication failures; authentication failures; attempted transactions for storage accounts over their prescribed quotas). | “**Error Rate**” is the total number of Failed Storage Transactions divided by the Total Storage Transactions during a set time interval (currently set at one hour). If the Total Storage Transactions in a given one-hour interval is zero, the error rate for that interval is 0%.

“**Average Error Rate**” is the sum of Error Rates for each hour in a calendar quarter divided by the total number of hours in a calendar quarter. | Same as above | - -## Exclusions -Excluded from the Uptime Calculation are Service Feature failures resulting from (i) Customer’s acts, omissions, or misuse of the Service including violations of the Agreement; (ii) failure of Customer’s internet connectivity; (iii) factors outside GitHub's reasonable control, including force majeure events; or (iv) Customer’s equipment, services, or other technology. - -## Service Credits Redemption -If GitHub does not meet this SLA, Customer may redeem Service Credits only upon written request to GitHub within thirty (30) days of the end of the calendar quarter. Written requests for Service Credits redemption should be sent to [GitHub Support](https://support.github.com/contact). - -Service Credits may take the form of a refund or credit to Customer’s account, cannot be exchanged into a cash amount, are limited to a maximum of ninety (90) days of paid service per calendar quarter, require Customer to have paid any outstanding invoices, and expire upon termination of Customer’s agreement with GitHub. Service Credits are the sole and exclusive remedy for any failure by GitHub to meet any obligations in this SLA. diff --git a/content/github/site-policy/github-enterprise-subscription-agreement.md b/content/github/site-policy/github-enterprise-subscription-agreement.md deleted file mode 100644 index f7dd7bff7b43..000000000000 --- a/content/github/site-policy/github-enterprise-subscription-agreement.md +++ /dev/null @@ -1,450 +0,0 @@ ---- -title: GitHub Enterprise Subscription Agreement -redirect_from: - - /articles/github-enterprise-agreement/ - - /articles/github-enterprise-subscription-agreement -versions: - free-pro-team: '*' ---- - -Version Effective Date: July 20, 2020 - -BY CLICKING THE "I AGREE" OR SIMILAR BUTTON OR BY USING ANY OF THE PRODUCTS (DEFINED BELOW), CUSTOMER ACCEPTS THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF CUSTOMER IS ENTERING INTO THIS AGREEMENT ON BEHALF OF A LEGAL ENTITY, CUSTOMER REPRESENTS THAT IT HAS THE LEGAL AUTHORITY TO BIND THE LEGAL ENTITY TO THIS AGREEMENT. - -This Agreement applies to the following GitHub offerings, as further defined below (collectively, the **"Products"**): - -- GitHub Enterprise (comprised of GitHub Enterprise Server, which may include Add-On Software, and GitHub Enterprise Cloud) and GitHub One; - -- Any Beta Previews; - -- Any related Support; and - -- Any related Professional Services. - -This Agreement includes the following Sections and Exhibits, each of which is incorporated by reference herein: - -* SECTION 1: General Terms and Conditions; - -* SECTION 2: GitHub Enterprise Server License Terms; - -* SECTION 3: GitHub Enterprise Cloud Terms of Service; - -* EXHIBIT A: Definitions. - -If Customer has purchased any Products from an authorized GitHub reseller, the following Sections of this Agreement are superseded by the terms Customer has agreed upon with the GitHub reseller: Section 1.1 (Term and Termination); 1.2 (Payment); Section 2.3 (Delivery); and Section 2.4 (Verification). - -## SECTION 1: GENERAL TERMS AND CONDITIONS - -This Section 1 sets forth the terms and conditions applicable to Customer’s purchase and use of any of the Products. Capitalized terms used but not defined in the body of this Agreement are defined in Exhibit A. - -### 1.1 Term and Termination. - -#### 1.1.1 Term. - -This Agreement starts on the Effective Date and will continue in effect until terminated by a Party in accordance with this Section 1.1. - -#### 1.1.2 Termination for Convenience. Account Cancellation. - -Either Party may terminate an Order Form or this Agreement, without cause, upon at least thirty (30) days' prior written notice before the end of the then-current Subscription Term. If Customer elects to terminate an Order Form or Agreement, it is Customer's responsibility to properly cancel its account with GitHub by going into Settings in the global navigation bar at the top of the screen. GitHub cannot cancel accounts in response to an email or phone request. - -#### 1.1.3 Termination for Material Breach. - -Either Party may terminate this Agreement immediately upon notice if the other Party breaches a material obligation under this Agreement and fails to cure the breach within thirty (30) days from the date it receives notification. Each Party also reserves the right to terminate this Agreement immediately upon written notice, without giving the other Party a cure period, as follows: by GitHub, if Customer breaches any of the terms of this Agreement relating to GitHub's intellectual property (including Customer’s non-compliance with the license grant or any license restrictions), or if Customer’s account has been suspended for more than ninety (90) days; or by either Party, if the other breaches its confidentiality obligations in Section 1.4. - -#### 1.1.4 Effect of Termination; Survival. - -Upon termination of this Agreement, Customer may not execute additional Order Forms; however, this Agreement will remain in effect for the remainder of any active Order Forms. When an Order Form terminates or expires, as to that Order Form: (i) the Subscription Term for the Software and/or Service will immediately end; (ii) any Subscription Licenses in the Order Form will automatically terminate, and Customer will no longer have the right to use the Products; (iii) if any Fees were owed prior to termination, Customer must pay those Fees immediately; (iv) Customer must destroy all copies of the Software in Customer’s possession or control, and certify in writing to GitHub that Customer has done so; and (v) each Party will promptly return (or, if the other party requests it, destroy) all Confidential Information belonging to the other to the extent permitted by the Service. Notwithstanding the foregoing, Customer may continue to access the Software to migrate Customer’s data and may request migration of the data in its repositories for up to ninety (90) days after termination or expiration of this Agreement or an Order Form; however, Customer may not use the Software or Service on a production basis during that time. Any provisions which by their nature should reasonably survive will survive the termination or expiration of this Agreement or an Order Form. - -### 1.2 Payment. - -#### 1.2.1 Fees. - -Customer agrees to pay the Fees in full, up front without deduction or setoff of any kind, in U.S. Dollars. Customer must pay the Fees within thirty (30) days of the GitHub invoice date. Amounts payable under this Agreement are non-refundable, except as provided in Sections 1.5.1 and 1.6.2. If Customer fails to pay any Fees on time, GitHub reserves the right, in addition to taking any other action at law or equity, to (i) charge interest on past due amounts at 1.0% per month or the highest interest rate allowed by law, whichever is less, and to charge all expenses of recovery, and (ii) terminate the applicable Order Form or SOW. Customer is solely responsible for all taxes, fees, duties and governmental assessments (except for taxes based on GitHub's net income) that are imposed or become due in connection with this Agreement. - -#### 1.2.2 Purchasing Additional Subscription Licenses. - -Customer may obtain additional Subscription Licenses under this Agreement by submitting a request through GitHub’s website or via its sales team. If Customer purchases the additional Subscription Licenses, Customer must pay the then-currently applicable Fees for them, prorated for the balance of the applicable Subscription Term. Upon renewal of Customer’s Subscription Licenses for another Subscription Term, GitHub will invoice all Subscription Licenses at once on an annual basis unless otherwise specified in an Order Form. - -#### 1.2.3 Add-On Software. - -Add-On Software is licensed on a per User basis. For the avoidance of doubt, and unless otherwise set forth in an Order Form, the number of Subscription Licenses Customer has at any given time for Add-On Software must equal the number of Subscription Licenses Customer has for the Products under this Agreement. For example, if Customer wishes to purchase a subscription to Advanced Security and already holds Subscription Licenses for 100 Users for the Products, it must purchase Subscription Licenses for 100 Users for Advanced Security. - -### 1.3 Professional Services. - -Upon Customer’s request for Professional Services, GitHub will provide an SOW detailing such Professional Services. GitHub will perform the Professional Services described in each SOW. GitHub will control the manner and means by which the Professional Services are performed and reserves the right to determine personnel assigned. GitHub may use third parties to perform the Professional Services, provided that GitHub remains responsible for their acts and omissions. Customer acknowledges and agrees that GitHub retains all right, title and interest in and to anything used or developed in connection with performing the Professional Services, including software, tools, specifications, ideas, concepts, inventions, processes, techniques, and know-how. To the extent GitHub delivers anything to Customer while performing the Professional Services, GitHub grants to Customer a non-exclusive, non-transferable, worldwide, royalty-free, limited-term license to use those deliverables during the term of this Agreement, solely in conjunction with Customer’s use of the Software or Service. - -### 1.4 Confidentiality. - -Neither Party will use the other Party's Confidential Information, except as permitted under this Agreement. Each Party agrees to maintain in confidence and protect the other Party's Confidential Information using at least the same degree of care as it uses for its own information of a similar nature, but in any event at least a reasonable degree of care. Each Party agrees to take all reasonable precautions to prevent any unauthorized disclosure of the other Party's Confidential Information, including, without limitation, disclosing such Confidential Information only to its Representatives who (i) have a need to know such information, (ii) are parties to appropriate agreements sufficient to comply with this Section 1.4, and (iii) are informed of the restrictions on use and disclosure set forth in this Section 1.4. Each Party is responsible for all acts and omissions of its Representatives. The foregoing obligations will not restrict either Party from disclosing Confidential Information of the other Party pursuant to the order or requirement of a court, administrative agency, or other governmental body, provided that the Party required to make such a disclosure gives reasonable notice to the other Party to enable such Party to contest such order or requirement, unless such notice is prohibited by law. The restrictions set forth in this Section 1.4 will survive the termination or expiration of this Agreement. - -### 1.5 Defense of Claims. - -The Parties will defend each other against third-party claims, as and to the extent set forth in this Section 1.5 and will pay the amount of any resulting adverse final judgment or approved settlement, but only if the defending Party is promptly notified in writing of the claim and has the right to control the defense and any settlement of it. The Party being defended must provide the defending Party with all requested assistance, information, and authority. The defending Party will reimburse the other Party for reasonable out-of-pocket expenses it incurs in providing assistance, and will not settle or make any admissions with respect to a third-party claim without the other Party’s prior written consent, not to be unreasonably withheld or delayed. This Section 1.5 describes the Parties’ sole remedies and entire liability for such claims. - -#### 1.5.1 GitHub. - -GitHub will defend Customer against any claim brought by an unaffiliated third party to the extent it alleges Customer’s authorized use of the Software or Service infringes a copyright, patent, or trademark or misappropriates a trade secret of an unaffiliated third party. If GitHub is unable to resolve any such claim under commercially reasonable terms, it may, at its option, either: (i) modify, repair, or replace the Software or Service (as applicable); or (ii) terminate Customer’s subscription and refund any prepaid, unused subscription fees. GitHub will have no obligation under this Section 1.5.1 for any such claim arising from: (a) the modification of the Software or Service, or the combination, operation, or use of the Software or Service with equipment, devices, software, systems, or data, other than as expressly authorized by this Agreement (including the Documentation); (b) Customer’s failure to stop using the Software or Service after receiving notice to do so; (c) Customer’s obligations under Section 1.5.2; (d) products or services (including use of the Software or Service) that are provided by GitHub free of charge; or (e) access or use of Beta Previews. For purposes of GitHub’s obligation under this Section 1.5.1, the Software and the Service include open source components incorporated by GitHub therein. - -#### 1.5.2 Customer. - -Customer will defend GitHub against any claim brought by an unaffiliated third party arising from: (i) Customer Content that Customer uploads to the Software or the Service; (ii) Customer's violation of this Agreement, including Customer’s breach of confidentiality or violation of GitHub's acceptable use terms; (iii) Customer Modifications to the Software; or (iv) any third party-branded equipment, devices, software, systems, or data that Customer combines, operates, or uses with the Software or Service. - -### 1.6 Representations and Warranties; Disclaimer; Limitations of Liability. - -#### 1.6.1 General Warranty. - -Each Party represents and warrants to the other that it has the legal power and authority to enter into this Agreement, and that this Agreement and each Order Form and SOW is entered into by an employee or agent of such Party with all necessary authority to bind such Party to the terms and conditions of this Agreement. - -#### 1.6.2 Limited Warranties. - -**(i) Software.** GitHub warrants that: (1) the unmodified Software, at the time it is made available to Customer for download, will not contain or transmit any malware, viruses, or worms (otherwise known as computer code or other technology specifically designed to disrupt, disable, or harm Customer’s software, hardware, computer system, or network); and (2) for ninety (90) days from the date it is made available for initial download, the unmodified Software will substantially conform to its Documentation. GitHub does not warrant that Customer’s use of the Software will be uninterrupted, or that the operation of the Software will be error-free. The warranty in this Section 1.6.2(i) will not apply if Customer modifies or uses the Software in any way that is not expressly permitted by Section 2 and the Documentation. GitHub's only obligation, and Customer’s only remedy, for any breach of this warranty will be, at GitHub's option and expense, to either (a) repair the Software; (b) replace the Software; or (c) terminate this Agreement with respect to the defective Software, and refund the unused, prepaid Fees for the defective Software during the then-current Subscription Term. - -**(ii) Professional Services.** GitHub warrants to Customer that any Professional Services performed under this Agreement will be performed in a professional and workmanlike manner by appropriately qualified personnel. GitHub's only obligation, and Customer’s only remedy, for a breach of this warranty will be, at GitHub's option and expense, to either: (1) promptly re-perform any Professional Services that fail to meet this warranty; or (2) if the breach cannot be cured, terminate the SOW and refund the unused, prepaid Fees. - -#### 1.6.3 Disclaimer. - -**(i) Generally.** Except as expressly provided in this Agreement, GitHub does not make any other warranties and representation of any kind, and hereby specifically disclaims any other warranties, whether express, implied, or statutory, including but not limited to warranties of merchantability, fitness for a particular purpose, non-infringement, or any warranties or conditions arising out of course of dealing or usage of trade. No advice or information, whether oral or written, provided by GitHub or anywhere else will create any warranty or condition not expressly stated in this Agreement. - -**(ii) Service.** GitHub provides the Service **“AS IS”** and **“AS AVAILABLE”** without warranty of any kind. Without limiting this, GitHub expressly disclaims all warranties, whether express, implied or statutory, regarding the Service, including, without limitation, any warranty of merchantability, fitness for a particular purpose, title, security, accuracy and non-infringement. GitHub does not warrant that the Service will meet Customer's requirements; that the Service will be uninterrupted, timely, secure, or error-free; that the information provided through the Service is accurate, reliable or correct; that any defects or errors will be corrected; that the Service will be available at any particular time or location; or that the Service is free of viruses or other harmful components. GitHub will not be responsible for any risk of loss resulting from Customer's downloading and/or use of files, information, Content or other material obtained from the Service. - -**(iii) Beta Previews.** Customer may choose to use Beta Previews in its sole discretion. Beta Previews may not be supported and may be changed at any time without notice. Beta Previews may not be as reliable or available as the Service. Beta Previews are not subject to the same security measures and auditing to which the Service has been and is subject. GitHub will have no liability arising out of or in connection with Beta Previews. **Customer uses Beta Previews at its own risk.** - -#### 1.6.4 Limitations of Liability. - -**(i) Indirect Damages. To the maximum extent permitted by applicable law, in no event will either party be liable to the other party or to any third party for any indirect, special, incidental, punitive, or consequential damages (including for loss of profits, revenue, or data) or for the cost of obtaining substitute products arising out of or in connection with this Agreement, however caused, whether such liability arises from any claim based upon contract, warranty, tort (including negligence), strict liability or otherwise, and whether or not a party has been advised of the possibility of such damages.** - -**(ii) Limitation of Total Liability. To the maximum extent permitted by applicable law, in no event will either party's total cumulative liability under this Agreement from all causes of action and all theories of liability exceed the Fees Customer has actually paid to GitHub during the 12 months preceding the claim giving rise to such liability. For products and services (including use of the Products) that are provided free of charge, GitHub’s liability is limited to direct damages up to $5,000.00 USD. For Beta Previews, GitHub's liability is limited to direct damages up to $500.00 USD.** - -**(iii) Exceptions. The exclusions and limitations set forth in this Section 1.6.4 will not apply to liability arising out of (1) a Party’s breach of its confidentiality obligations in Section 1.4 (except for all liability related to Content (excluding GitHub Content), which will remain subject to the limitations and exclusions above); (2) a Party’s defense obligations in Section 1.5; or (3) Customer’s non-compliance with the license grant or license restrictions in Sections 2.1 and 2.2.** - -### 1.7 Subscription Licenses. - -Subscription Licenses are granted on a per User basis and multiple Users may not use the same Subscription License. Customer may reassign a Subscription License to a new User only after ninety (90) days from the last reassignment of that same Subscription License, unless the reassignment is due to (i) permanent hardware failure or loss, (ii) termination of the User’s employment or contract, or (iii) temporary reallocation of Subscription Licenses to cover a User’s absence. When Customer reassigns a Subscription License from one User to another, Customer must block the former User’s access to the Subscription License and Customer’s Organizations. - -### 1.8 Affiliates. - -Customer’s Affiliates are authorized to use the Software and Service in accordance with this Agreement, so long as Customer remains fully responsible for their access and use of the Software and Service. - -### 1.9 Support. - -GitHub will provide Support for the Software and Service as follows: - -#### 1.9.1 Standard Support. - -GitHub will provide standard technical Support for the Software and Service at no additional charge twenty-four (24) hours per day, five (5) days per week, excluding weekends and national U.S. holidays. Standard Support is only offered via web-based ticketing through GitHub Support, and Support requests must be initiated from a User with which GitHub's Support team can interact. - -#### 1.9.2 Enhanced Support Offerings. - -GitHub may provide enhanced Support offerings for the Software and Service (including the Premium, Premium Plus, and Engineering Direct Support offerings) in accordance with the [Support terms](/enterprise/admin/enterprise-support/about-github-premium-support-for-github-enterprise), and at the Support level, Fees, and Subscription Term specified in an Order Form or SOW. - -#### 1.9.3 Exclusions. - -GitHub will use reasonable efforts to correct any material, reproducible errors in the Software of which Customer notifies GitHub. However, GitHub will not be responsible for providing Support where (i) someone (other than GitHub) modifies the Software; (ii) Customer changes its operating system or environment in a way that adversely affects the Software or its performance; (iii) Customer uses the Software in a manner other than as authorized under this Agreement or the Documentation; or (iv) there is negligence or misuse by Customer of the Software. - -### 1.10 Intellectual Property Rights. - -As between the Parties, GitHub owns all right, title and interest, including all intellectual property rights, in and to the Products. GitHub reserves all rights in and to the Products not expressly granted to Customer under this Agreement. GitHub may use, modify, and incorporate into its Products, any Feedback, comments, or suggestions that Customer may provide or post in forums without any obligation to Customer. - -### 1.11 Feedback. - -Customer may provide Feedback to GitHub regarding the Products. Feedback is voluntary and is not Customer Confidential Information, even if designated as such. GitHub may fully exercise and exploit such Feedback for the purpose of (i) improving the operation, functionality and use of GitHub’s existing and future product offerings and commercializing such offerings; and (ii) publishing aggregated statistics about the quality of the Products, provided that no data in any such publication will be used to specifically identify Customer, its employees or Customer’s proprietary software code. - -### 1.12 Compliance with Laws and Regulations. - -Customer will comply with all applicable laws and regulations, including, but not limited to, data protection and employment laws and regulations, in its use of the Products. - -### 1.13 General Provisions. - -#### 1.13.1 Governing Law; Venue. - -If Customer’s principal office is in the Americas, this Agreement will be governed by and construed in accordance with the laws of the State of California, without giving effect to the principles of conflict of law, any legal action or proceeding arising under this Agreement will be brought exclusively in the federal or state courts located in the Northern District of California, and the Parties hereby consent to personal jurisdiction and venue therein. If Customer’s principal office is outside the Americas, this Agreement will be governed by the laws of Ireland, any legal action or proceeding arising under this Agreement will be brought exclusively in the courts located in Dublin, and the Parties hereby consent to personal jurisdiction and venue therein. The Parties expressly agree that the United Nations Convention on Contracts for the International Sale of Goods and the Uniform Computer Information Transactions Act will not apply to this Agreement. Notwithstanding anything to the contrary in the foregoing, GitHub may bring a claim for equitable relief in any court with proper jurisdiction. - -#### 1.13.2 U.S. Government Users. - -The Products were developed solely with private funds and are considered "Commercial Computer Software" and "Commercial Computer Software Documentation" as described in Federal Acquisition Regulations 12.212 and 27.405-3, and Defense Federal Acquisition Regulation Supplement 227.7202-3. The Products are licensed to the U.S. Government end user as restricted computer software and limited rights data. No technical data or computer software is developed under this Agreement. Any use, disclosure, modification, distribution, or reproduction of the Products or Documentation by the U.S. Government or its contractors is subject to the restrictions set forth in this Agreement. All other use is prohibited. - -#### 1.13.3 Export. - -The Products are subject to export restrictions by the U.S. Government and import restrictions by certain foreign governments, and Customer will comply with all applicable export and import laws and regulations in Customer’s use of the Products. Customer must not, and must not allow any third party to, remove or export from the United States or allow the export or re-export of any part of the Products or any direct product thereof: (i) into (or to a national or resident of) any embargoed or terrorist-supporting country; (ii) to anyone on the U.S. Commerce Department's Table of Denial Orders or U.S. Treasury Department's list of Specially Designated Nationals; (iii) to any country to which such export or re-export is restricted or prohibited, or as to which the U.S. government or any agency thereof requires an export license or other governmental approval at the time of export or re-export without first obtaining such license or approval; or (iv) otherwise in violation of any export or import restrictions, laws or regulations of any United States or foreign agency or authority. Customer represents and warrants that (a) Customer is not located in, under the control of, or a national or resident of any such prohibited country or on any such prohibited party list and (b) none of Customer’s data is controlled under the U.S. International Traffic in Arms Regulations. Customer acknowledges and agrees that the Products are restricted from being used for the design or development of nuclear, chemical, or biological weapons or missile technology without the prior permission of the U.S. Government. - -#### 1.13.4 No Publicity without Permission. - -GitHub may identify Customer as a customer to current and prospective customers. However, GitHub may not use Customer’s name or logo in any advertising or marketing materials without Customer’s permission. - -#### 1.13.5 Assignment. - -Neither Party may assign or otherwise transfer this Agreement, in whole or in part, without the other Party's prior written consent, such consent not to be unreasonably withheld, and any attempt to do so will be null and void, except that GitHub may assign this Agreement in its entirety, upon notice to the other party but without the other Party's consent, in connection with a merger, acquisition, corporate reorganization, or sale of all or substantially all of the assigning party's business or assets. - -#### 1.13.6 Notices. - -Unless otherwise stated herein, any notice, request, demand or other communication under this Agreement must be in writing (e-mail is acceptable), must reference this Agreement, and will be deemed to be properly given: (i) upon receipt, if delivered personally; (ii) one (1) business day following confirmation of receipt by the intended recipient, if by e-mail; (iii) five (5) business days after it is sent by registered or certified mail, with written confirmation of receipt and email; or (iv) three (3) business days after deposit with an internationally recognized express courier and email, with written confirmation of receipt. Notices can be sent to the address(es) set forth in this Agreement, unless a Party notifies the other that those addresses have changed. - -#### 1.13.7 Force Majeure. - -GitHub will be excused from liability to the extent that it is unable to perform any obligation under this Agreement due to extraordinary causes beyond its reasonable control, including acts of God, natural disasters, strikes, lockouts, riots, acts of war, epidemics, or power, telecommunication or network failures. - -#### 1.13.8 Independent Contractors. - -Each Party is an independent contractor with respect to the subject matter of this Agreement. Nothing contained in this Agreement will be deemed or construed in any manner to create a legal association, partnership, joint venture, employment, agency, fiduciary, or other similar relationship between the Parties, and neither Party can bind the other contractually. - -#### 1.13.9 Waiver. - -A Party's obligations under this Agreement may only be waived in writing signed by an authorized representative of the other Party. No failure or delay by a Party to this Agreement in exercising any right hereunder will operate as a waiver thereof, nor will any single or partial exercise thereof preclude any other or further exercise thereof or the exercise of any right hereunder at law or equity. - -#### 1.13.10 Entire Agreement. - -This Agreement, together with the Exhibits and each Order Form and SOW, constitutes the entire agreement and understanding of the Parties with respect to its subject matter, and supersedes all prior or contemporaneous understandings and agreements, whether oral or written, between the Parties with respect to such subject matter. The terms of any Customer purchase order, written terms or conditions, or other document that Customer submits to GitHub that contains terms that are different from or in addition to the terms of this Agreement, any Order Form or SOW will be void and of no effect. - -#### 1.13.11 Amendments; Order of Precedence. - -GitHub reserves the right, at its sole discretion, to amend this Agreement at any time and will update this Agreement in the event of any such amendments. GitHub will notify Customer of material changes to this Agreement, such as price changes, at least 30 days prior to the change taking effect by posting a notice on the Service. For non-material modifications, Customer's continued use of the Service constitutes agreement to our revisions of this Agreement. Customer can view all changes to this Agreement in our [Site Policy](https://github.com/github/site-policy) repository. In the event of any conflict between the terms of this Agreement and any Order Form or SOW, the terms of the Order Form or SOW will control with respect to that Order Form or SOW only. - -#### 1.13.12 Severability. - -If any provision of this Agreement is deemed by a court of competent jurisdiction to be illegal, invalid, or unenforceable, the Parties will modify or reform this Agreement to give as much effect as possible to that provision. Any provision that cannot be modified or reformed in this way will be deemed deleted and the remaining provisions of this Agreement will continue in full force and effect. - - -## SECTION 2: GITHUB ENTERPRISE SERVER LICENSE TERMS - -This Section 2 details terms applicable to Customer’s use of the Software. - -### 2.1 License Grant. - -GitHub grants to Customer a non-exclusive, non-transferable, worldwide, royalty-free, limited-term license to install and use the Software for Customer’s internal business purposes during the applicable Subscription Term, in accordance with the Documentation, and only for the number of Subscription Licenses stated in Customer’s Order Form. The Software includes components licensed to GitHub by third parties, including software whose licenses require GitHub to make the source code for those components available. The source code for such components will be provided upon request. Without limiting the foregoing, this license permits Customer to download and run Microsoft SQL Server Standard Edition container image for Linux files (“**SQL Server Images**”), which may be used only with the Software as documented. Customer’s right to use the SQL Server Images ends when Customer no longer has rights to use the Software, and Customer must uninstall the SQL Server Images when its right to use them ends. Microsoft Corporation may disable SQL Server Images at any time. - -### 2.2 License Restrictions. - -Except as expressly permitted by law or by applicable third-party license, Customer and its Affiliates must not and must not allow any third party to: (i) sublicense, sell, rent, lease, transfer, assign, or redistribute the Software; (ii) host the Software for the benefit of third parties; (iii) disclose or permit any third party to access the Software, except as expressly permitted in this Section 2; (iv) hack or modify the License Key, or avoid or change any license registration process; (v) except for Customer Modifications, modify or create derivative works of the Software, or merge the Software with other software; (vi) disassemble, decompile, bypass any code obfuscation, or otherwise reverse engineer the Software or attempt to derive any of its source code, in whole or in part; (vii) modify, obscure, or delete any proprietary rights notices included in or on the Software or Documentation; or (viii) otherwise use or copy the Software or Documentation in a manner not expressly permitted by this Agreement. - -### 2.3 Delivery. - -GitHub will make the License Key available for Customer to download on a secure, password-protected website. All deliveries under this Section 2 will be electronic. For the avoidance of doubt, Customer is responsible for installation of any Software and acknowledge that GitHub has no further delivery obligation with respect to the Software after delivery of the License Key. As Updates become available, GitHub will make those available for download on the same website. Customer must Update the Software on a commercially reasonable basis but no less than one (1) time per year. Customer is responsible for maintaining the confidentiality of Customer’s usernames and passwords. - -### 2.4 Verification. - -At GitHub's request, Customer will promptly provide GitHub with a Software-generated report verifying that Customer is using the Software in accordance with this Agreement. GitHub will invoice Customer for any additional use, effective from the date its use first exceeded the terms of the Agreement. - -### 2.5 Updates; Releases. - -#### 2.5.1 Generally. - -GitHub will make Updates and Releases to the Software available to Customer on the same secure website where Customer downloaded the Software and the License Key. - -#### 2.5.2 Supported Releases. - -GitHub will only Support a given Release of the Software for one (1) year from the original Release date, or six (6) months from the last Update of the Release, whichever is longer. If Customer requires Support for earlier Releases of the Software, then Customer must pay for that Support in accordance with the terms of a mutually agreed upon Order Form or SOW. - -### 2.6 Data Protection Considerations for Use of GitHub Insights and Learning Lab for Enterprise Server. - -If Customer’s planned use of GitHub Insights or Learning Lab for Enterprise Server involves processing personal data, Customer is solely responsible for determining whether or not to complete a data protection impact assessment or otherwise secure formal legal analysis of Customer’s planned use. It is in Customer’s sole discretion whether to use GitHub Insights or Learning Lab for Enterprise Server to process Customer’s employees’ and/or users’ data, and if Customer does so, Customer is solely responsible for conducting such processing in compliance with applicable law. - - -### SECTION 3: GITHUB ENTERPRISE CLOUD TERMS OF SERVICE - -Upon creation of a Corporate Account and/or an Organization on the Service by Customer or by GitHub on Customer’s behalf, this Section 3 details terms applicable to Customer’s use of the Service. - -### 3.1 Account Terms. - -#### 3.1.1 Account Controls. - -**(i) Users.** Customer acknowledges that Users retain ultimate administrative control over their individual accounts and the Content within them. [GitHub's Standard Terms of Service](/github/site-policy/github-terms-of-service) govern Users' use of the Service, except with respect to Users' activities under this Section 3. - -**(ii) Organizations.** Customer retains ultimate administrative control over any Organization created on Customer’s behalf and User-Generated Content posted to the repositories within its Organization(s), subject to this Section 3. This Section 3 will govern the use of Customer’s Organization(s). - -#### 3.1.2 Account Requirements. - -In order to create an account, Customer must adhere to the following: - -**(i)** Customer must not create an account for use of any person under the age of 13. If GitHub learns of any User under the age of 13, it will terminate that User's account immediately. If Customer or its User(s) are located in a country outside the United States, that country's minimum age may be older; in such a case, Customer is responsible for complying with that country's laws. - -**(ii)** A User’s login may not be shared by multiple people. - -**(iii)** Customer must not use the Service (a) in violation of export control or sanctions laws of the United States or any other applicable jurisdiction, (b) if it is located in or ordinarily resident in a country or territory subject to comprehensive sanctions administered by the U.S. Office of Foreign Assets Control (OFAC), or (c) if Customer is or is working on behalf of a [Specially Designated National (SDN)](https://www.treasury.gov/resource-center/sanctions/SDN-List/Pages/default.aspx) or a person subject to similar blocking or denied party prohibitions. For more information, please see [GitHub’s Export Controls policy](/articles/github-and-export-controls). - -#### 3.1.3 Account Security. - -Customer is responsible for: (i) all Content posted and activity that occurs under its Corporate Account; (ii) maintaining the security of its account login credentials; and (iii) promptly [notifying GitHub](https://support.github.com/contact) upon becoming aware of any unauthorized use of, or access to, the Service through its account. GitHub will not be liable for any loss or damage from Customer’s failure to comply with this Section 3.1.3. - -#### 3.1.4 Additional Terms. - -In some situations, third parties' terms may apply to Customer’s use of the Service. For example, Customer may be a member of an Organization with its own terms or license agreements; Customer may download an application that integrates with the Service; or Customer may use the Service to authenticate to another service. While this Agreement is GitHub's full agreement with Customer, other parties' terms govern their relationships with Customer. - -#### 3.1.5 U.S. Federal Government Terms. - -If Customer is a U.S. federal government agency or otherwise accessing or using any portion of the Service in a government capacity, the [U.S. Federal Government Amendment](/articles/amendment-to-github-terms-of-service-applicable-to-us-federal-government-users) applies, and Customer agrees to its provisions. - -### 3.2 Compliance with Laws; Acceptable Use; Privacy. - -#### 3.2.1 Compliance with Laws and Regulations. -Customer’s use of the Service must not violate any applicable laws, including copyright or trademark laws, export control laws, or regulations in its jurisdiction. - -#### 3.2.2 Acceptable Use. -Customer’s use of the Service must comply with [GitHub's Acceptable Use Policies](/articles/github-acceptable-use-policies) and [GitHub’s Community Guidelines](/articles/github-community-guidelines). Customer must not use the Service in any jurisdiction for unlawful, obscene, offensive or fraudulent Content or activity, such as advocating or causing harm, interfering with or violating the integrity or security of a network or system, evading filters, sending unsolicited, abusive, or deceptive messages, viruses or harmful code, or violating third party rights. - -#### 3.2.3 Privacy. -[The GitHub Privacy Statement](/articles/github-privacy-statement) and the [GitHub Data Protection Addendum](/github/site-policy/github-data-protection-addendum) provide detailed notice of GitHub's privacy and data use practices as well as GitHub's processing and security obligations with respect to Customer Personal Data. Any person, entity, or service collecting data from the Service must comply with the [GitHub Privacy Statement](/articles/github-privacy-statement), particularly in regards to the collection of Users' Personal Information (as defined in the GitHub Privacy Statement). If Customer collects any User Personal Information from GitHub, Customer will only use it for the purpose for which the External User has authorized it. Customer will reasonably secure any such Personal Information, and Customer will respond promptly to complaints, removal requests, and "do not contact" requests from GitHub or External Users. - -### 3.3 Content Responsibility; Ownership; License Rights. - -#### 3.3.1 Responsibility for User-Generated Content. -Customer may create or upload User-Generated Content while using the Service. Customer is solely responsible for any User-Generated Content that it posts, uploads, links to or otherwise makes available via the Service, regardless of the form of that User-Generated Content. GitHub is not responsible for any public display or misuse of User-Generated Content. - -#### 3.3.2 Ownership of Content, Right to Post, and License Grants. - -**(i)** Customer retains ownership of Customer Content that Customer creates or owns. Customer acknowledges that it: (a) is responsible for Customer Content, (b) will only submit Customer Content that Customer has the right to post (including third party or User-Generated Content), and (c) Customer will fully comply with any third-party licenses relating to Customer Content that Customer posts. - -**(ii)** Customer grants the rights set forth in Sections 3.3.3 through 3.3.6, free of charge and for the purposes identified in those sections until such time as Customer removes Customer Content from GitHub servers, except for Content Customer has posted publicly and that External Users have Forked, in which case the license is perpetual until such time as all Forks of Customer Content have been removed from GitHub servers. If Customer uploads Customer Content that already comes with a license granting GitHub the permissions it needs to run the Service, no additional license is required. - -#### 3.3.3 License Grant to GitHub. -Customer grants to GitHub the right to store, parse, and display Customer Content, and make incidental copies only as necessary to provide the Service. This includes the right to copy Customer Content to GitHub's database and make backups; display Customer Content to Customer and those to whom Customer chooses to show it; parse Customer Content into a search index or otherwise analyze it on GitHub's servers; share Customer Content with External Users with whom Customer chooses to share it; and perform Customer Content, in case it is something like music or video. These rights apply to both public and Private Repositories. This license does not grant GitHub the right to sell Customer Content or otherwise distribute or use it outside of the Service. Customer grants to GitHub the rights it needs to use Customer Content without attribution and to make reasonable adaptations of Customer Content as necessary to provide the Service. - -#### 3.3.4 License Grant to External Users. -**(i)** Any Content that Customer posts publicly, including issues, comments, and contributions to External Users' repositories, may be viewed by others. By setting its repositories to be viewed publicly, Customer agree to allow External Users to view and Fork Customer’s repositories. - -**(ii)** If Customer sets its pages and repositories to be viewed publicly, Customer grants to External Users a nonexclusive, worldwide license to use, display, and perform Customer Content through the Service and to reproduce Customer Content solely on the Service as permitted through functionality provided by GitHub (for example, through Forking). Customer may grant further rights to Customer Content if Customer [adopts a license](/articles/adding-a-license-to-a-repository/#including-an-open-source-license-in-your-repository). If Customer is uploading Customer Content that it did not create or own, Customer is responsible for ensuring that the Customer Content it uploads is licensed under terms that grant these permissions to External Users. - -#### 3.3.5 Contributions Under Repository License. -Whenever Customer makes a contribution to a repository containing notice of a license, Customer licenses such contribution under the same terms and agrees that it has the right to license such contribution under those terms. If Customer has a separate agreement to license its contributions under different terms, such as a contributor license agreement, that agreement will supersede. - -#### 3.3.6 Moral Rights. -Customer retains all moral rights to Customer Content that it uploads, publishes, or submits to any part of the Service, including the rights of integrity and attribution. However, Customer waives these rights and agrees not to assert them against GitHub, solely to enable GitHub to reasonably exercise the rights granted in Section 3.3, but not otherwise. - -### 3.4. Private Repositories. - -#### 3.4.1 Control. -Customer is responsible for managing access to its Private Repositories, including invitations, administrative control of Organizations and teams, and termination of access. - -#### 3.4.2 Confidentiality. -GitHub considers Customer Content in Customer’s Private Repositories to be Customer’s Confidential Information. GitHub will protect and keep strictly confidential the Customer Content of Private Repositories in accordance with Section 1.4. - -#### 3.4.3 Access. -GitHub may only access Customer’s Private Repositories (i) with Customer’s consent and knowledge, for support reasons, or (ii) when access is required for security reasons. Customer may choose to enable additional access to its Private Repositories. For example, Customer may enable various GitHub services or features that require additional rights to Customer Content in Private Repositories. These rights may vary depending on the service or feature, but GitHub will continue to treat Customer Content in Customer’s Private Repositories as Customer’s Confidential Information. If those services or features require rights in addition to those it needs to provide the Service, GitHub will provide an explanation of those rights. - -#### 3.4.4 Exclusions. -If GitHub has reason to believe the Content of a Private Repository is in violation of the law or of this Agreement, GitHub has the right to access, review, and remove that Content. Additionally, GitHub may be compelled by law to disclose the Content of Customer’s Private Repositories. Unless otherwise bound by requirements under law or if in response to a security threat or other risk to security, GitHub will provide notice of such actions. - -### 3.5. Intellectual Property Notices. - -#### 3.5.1 GitHub's Rights to Content. -The look and feel of the Service is copyright © GitHub, Inc. All rights reserved. Customer may not duplicate, copy, or reuse any portion of the HTML/CSS, Javascript, or visual design elements or concepts without express written permission from GitHub. - -#### 3.5.2 Copyright Infringement and DMCA Policy. - -If Customer is a copyright owner and believes that Content on the Service violates Customer’s copyright, Customer may contact GitHub in accordance with GitHub's [Digital Millennium Copyright Act Policy](https://github.com/contact/dmca) by notifying GitHub via its [DMCA Form](https://github.com/contact/dmca-notice) or by emailing copyright@github.com. - -#### 3.5.3 GitHub Trademarks and Logos. - -If Customer would like to use GitHub's trademarks, Customer must follow all of GitHub's trademark guidelines, including those on the [GitHub Logos and Usage page](https://github.com/logos). - -### 3.6 Suspension. -GitHub has the right to suspend access to all or any part of the Service, including removing Content, at any time for violation of this Agreement or to protect the integrity, operability, and security of the Service, effective immediately, with notice, unless such notice is prohibited by law or legal process or impedes the prevention of imminent harm to the Service or any third party. GitHub typically provides notice in the form of a banner or email on or before such suspension. GitHub will, in its discretion and using good faith, tailor any suspension as needed to preserve the integrity, operability, and security of the Service. - -### 3.7 Service Level Agreement. - -GitHub’s quarterly uptime commitment for the Service is provided in the [Enterprise Service Level Agreement](/github/site-policy/github-enterprise-service-level-agreement). Customer will be entitled to a service credit if GitHub does not meet its service level. - -### 3.8 Service Changes. -GitHub changes the Service via Updates and addition of new features. Subject to Section 3.7, GitHub reserves the right at any time to modify or discontinue, temporarily or permanently, the Service (or any part of it) with or without notice. - -### 3.9 Additional Service Features. - -Some Service features may be subject to additional terms as set forth in the [GitHub Additional Product Terms](/github/site-policy/github-additional-product-terms). By accessing or using these features, Customer agrees to the GitHub Additional Product Terms. - -## EXHIBIT A: DEFINITIONS - -**"Active User"** means a User trying to access the Service at the time of an Outage. - -**”Add-On Software”** means Advanced Security, Insights, Learning Lab for Enterprise Server, and other additional Software add-on products that GitHub may offer from time to time. - -**“Advanced Security”** means the Software feature which enables Customer to identify security vulnerabilities through customizable and automated semantic code analysis. - -**"Affiliate"** means any entity that directly or indirectly controls, is controlled by, or is under common control with a party where "control" means having more than fifty percent (50%) ownership or the right to direct the management of the entity. - -**“All Users”** means, collectively, Customer’s Users and External Users who use the Service. - -**“Americas”** means the United States, Canada, Mexico, or a country in Central or South America or the Caribbean. - -**"Beta Previews"** mean software, services, or features identified as alpha, beta, preview, early access, or evaluation, or words or phrases with similar meanings. - -**"Confidential Information"** means all non-public information disclosed by either Party to the others, whether in writing, orally or by other means, designated as confidential or that the receiving Party knows or reasonably should know, under the circumstances surrounding the disclosure and the nature of the information, is confidential to the disclosing Party. For the avoidance of doubt, no Content posted on the Service will be considered Confidential Information except for Customer Content stored solely in Customer’s Private Repositories. Confidential Information does not include any information that (i) was or becomes publicly known through no fault of the receiving party; (ii) was rightfully known or becomes rightfully known to the receiving Party without confidential or proprietary restriction from a source other than the disclosing party who has a right to disclose it; (iii) is approved by the disclosing Party for disclosure without restriction in a written document which is signed by a duly authorized officer of such disclosing Party; (iv) the receiving Party independently develops without access to or use of the other Party's Confidential Information; or (v) is or has been stored or posted on the Service and outside of Customer’s Private Repositories. - -**“Connect”** or **“GitHub Connect”** means a feature included in the Software that enables Customer to connect the Software with the Service. Use of GitHub Connect is subject to the GitHub Connect terms set forth in the [GitHub Additional Product Terms](/github/site-policy/github-additional-product-terms). - -**"Content"** means, without limitation, text, data, articles, images, photographs, graphics, software, applications, designs, features, and other materials that are featured, displayed, or otherwise made available through the Service. - -**"Corporate Account"** means an account created by a User on behalf of an entity. - -**"Customer"** means, collectively, the company or organization that has entered into this Agreement with GitHub by clicking on the "I AGREE" or similar button or by accessing the Products, its Affiliates and Representatives. - -**"Customer Content"** means Content that Customer creates, owns, or to which Customer holds the rights. - -**“Customer Modifications”** means Software modifications Customer may make solely for the purpose of developing bug fixes, customizations, or additional features to any libraries licensed under open source licenses that may be included with or linked to by the Software. - -**"Documentation"** means any manuals, documentation and other supporting materials relating to the Software or Service that GitHub provides or makes available to Customer. - -**"Effective Date"** is the earlier of the date on which Customer (i) agrees to the terms and conditions of this Agreement as described above, or (ii) first places an order for the Products. - -**"Essential Services"** means the services essential to GitHub's core version control functionality, including creating, Forking, and cloning repositories; creating, committing, and merging branches; creating, reviewing, and merging pull requests; and, web, API, and Git client interfaces to the core Git workflows. The following are examples of peripheral features and services not included: webhooks, Gists, Pages, and email notifications. - -**"External User"** means an individual, not including Customer’s Users, who visit or use the Service. -"Fees" means the fees Customer is required to pay GitHub to (i) use the Products during the applicable Subscription Term or (ii) receive Professional Services, as such fees are reflected on an Order Form or SOW. - -**"Feedback"** means any ideas, know-how, algorithms, code contributions, suggestions, enhancement requests, recommendations or any other feedback on GitHub products or services. - -**“Fees”** means the fees Customer is required to pay GitHub to (i) use the Products during the applicable Subscription Term or (ii) receive Professional Services, as such fees are reflected on an Order Form or SOW. - -**“Fork”** means to copy the Content of one repository into another repository. - -**"GitHub"** means, collectively, GitHub, Inc., its Affiliates and Representatives. - -**"GitHub Content"** means Content that GitHub creates, owns, or to which it holds the rights. - -**"GitHub Insights"** or **“Insights”** means the Software feature which provides Customer with metrics, analytics, and recommendations relating to their use of the Software. GitHub Insights does not include legacy features of GitHub including Organization insights and repository insights. - -**“GitHub One”** means the Product bundle which includes GitHub Enterprise, Advanced Security, Insights, Learning Lab for Enterprise Server, and Premium Plus or Engineering Direct Support. - -**"Learning Lab for Enterprise Server"** means the Software feature that enables Users to learn about GitHub functionality, including associated Documentation. - -**"License Key"** means the data file used by the Software's access control mechanism that allows Customer to install, operate, and use the Software. - -**“Machine Account”** means an account registered by an individual human who accepts the applicable terms of service on behalf of the Machine Account, provides a valid email address, and is responsible for its actions. A Machine Account is used exclusively for performing automated tasks. Multiple Users may direct the actions of a Machine Account, but the owner of the account is ultimately responsible for the machine's actions. - -**"Order Form"** means written or electronic documentation (including a quote) that the Parties use to order the Products. - -**“Organization”** means a shared workspace that may be associated with a single entity or with one or more Users where multiple Users can collaborate across many projects at once. A User can be a member of more than one Organization. - -**"Outage"** means the interruption of an Essential Service that affects more than 50% of Active Users. - -**“Private Repository”** means a repository which allows a User to control access to Content. - -**"Professional Services"** means training, consulting, or implementation services that GitHub provides pursuant to a mutually executed SOW. Professional Services do not include Support. - -**“Public Repository”** means a repository whose Content is visible to All Users. - -**"Release"** means a Software release that GitHub makes generally available to its customers, along with any corresponding changes to Documentation, that contains enhancements, new features, or new functionality, generally indicated by a change in the digit to the right of the first decimal point (e.g., x.x.x to x.y.x) or to the left of the first decimal point (e.g., x.x.x to y.x.x). - -**"Representatives"** means a Party’s employees, agents, independent contractors, consultants, and legal and financial advisors. - -**“Scraping”** means extracting data from the Service via an automated process, such as a bot or webcrawler, and does not include the collection of information through GitHub's API. - -**"Service"** means the hosted GitHub Enterprise Cloud service. The Service includes: Organization account(s), SAML single sign-on, access provisioning, and any applicable Documentation. This list of features and services is non-exhaustive and may be updated from time to time. - -**"Service Credit"** means a dollar credit, calculated as set forth below, that GitHub may credit back to an eligible account. - -**"Software"** means GitHub Enterprise Server on-premises software. Software includes the GitHub Connect feature, any applicable Documentation, any Updates to the Software that GitHub provides to Customer or that it can access under this Agreement, and, if included in Customer’s subscription, Add-On Software. - -**"SOW"** means a mutually executed statement of work detailing the Professional Services GitHub will perform, any related Fees, and each Party's related obligations. - -**“Subscription License”** means the license assigned to each User to install, operate, access, and use the Products on Customer’s behalf. Customer may only assign one Subscription License per User across its GitHub Enterprise Server instances and GitHub Enterprise Cloud Organizations. Each User will have access to as many of Customer’s Enterprise Server instances or Enterprise Cloud Organizations, as Customer permits. For clarity, however, once Customer assigns a Subscription License to a User, Customer will not be authorized to bifurcate the Subscription License so that one User can use a Subscription License on Enterprise Server while another User uses the same Subscription License on another instance of GitHub Enterprise Server or on an Organization on GitHub Enterprise Cloud. - -**“Subscription Term”** means one (1) year from the applicable effective date of an order or as otherwise stated in the Order Form. - -**“Support”** means technical support for the Software or Service that GitHub may provide. - -**“Update”** means a Software release that GitHub makes generally available to its customers, along with any corresponding changes to Documentation, that contains error corrections or bug fixes, generally indicated by a change in the digit to the right of the second decimal point (e.g., x.x.x to x.x.y). - -**“Uptime”** means the percentage of time in a given quarter where GitHub's Essential Services will not be interrupted by an Outage affecting more than 50% of Active Users. - -**“User”** means (i) with respect to the Software, a single person or Machine Account that initiates the execution of the Software or interacts with or directs the Software in the performance of its functions; and (ii) with respect to the Service, an individual or Machine Account who (a) accesses or uses the Service, (b) accesses or uses any part of Customer’s account, or (c) directs the use of Customer’s account in the performance of functions, in each case on Customer’s behalf. The number of Users should not exceed the number of Subscription Licenses that Customer has purchased. - -**“User-Generated Content”** means Content created or owned by a third party or External User. diff --git a/content/github/site-policy/github-event-code-of-conduct.md b/content/github/site-policy/github-event-code-of-conduct.md deleted file mode 100644 index 9610d2f73e60..000000000000 --- a/content/github/site-policy/github-event-code-of-conduct.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: GitHub Event Code of Conduct -redirect_from: - - /articles/github-event-code-of-conduct -versions: - free-pro-team: '*' ---- -GitHub events are community events intended for networking and collaboration in the tech community. - -We value the participation of each member and want all attendees to have an enjoyable and fulfilling experience. Accordingly, all attendees are expected to show respect and courtesy to other attendees throughout all events hosted in the GitHub space. - -To make clear what is expected, all attendees, speakers, exhibitors, organizers, and volunteers at any event in the GitHub space are required to conform to the following Code of Conduct. Organizers will enforce this code throughout the event. - -### Code of Conduct - -GitHub is dedicated to providing a positive and harassment-free event experience for everyone, regardless of age, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, ethnicity, race, religion, nationality, or level of experience. We do not tolerate harassment of event participants in any form, nor do we tolerate any behavior that would reasonably lead to another event participant being made to feel unsafe, insecure, or frightened for their physical or emotional well-being. All communication should be appropriate for a professional audience including people of many different backgrounds. - -Examples of encouraged behavior that contributes to a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for everyone at the event -* Showing empathy towards other participants - -Unacceptable behavior includes: - -* The use of sexualized language or imagery, or inappropriate physical contact, sexual attention, or advances -* Trolling, insulting or derogatory comments, personal or political attacks, or sustained disruption of talks or other events -* Deliberate intimidation, stalking, following, or harassing photography or recording -* Harassment of any kind, even in a joking or ironic manner -* Other conduct which could reasonably be considered inappropriate in a professional setting - -Be kind to others. Do not insult or put down other attendees. Behave professionally. Remember that harassment and sexist, racist, or exclusionary jokes are not appropriate at this event. - -Each event guest is entirely responsible for their own actions. - -Thank you for helping to make this a welcoming, friendly space for all. - -#### Reporting an incident - -If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact the organizer by email (events@github.com) or phone/text (+1 415 842 2837), or by speaking to another GitHub employee or a security officer. - -GitHubbers will be happy to help participants contact security or local law enforcement, escort to safety, or otherwise assist those experiencing harassment to feel safe for the duration of the conference. We value your attendance. - -### Credit - -Portions of this Code of Conduct are based on the [example anti-harassment policy](https://geekfeminism.wikia.org/wiki/Conference_anti-harassment/Policy) from the Geek Feminism wiki, created by the Ada Initiative and other volunteers, under a Creative Commons Zero license. diff --git a/content/github/site-policy/github-event-terms.md b/content/github/site-policy/github-event-terms.md deleted file mode 100644 index 6e8c43ce0520..000000000000 --- a/content/github/site-policy/github-event-terms.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: GitHub Event Terms -redirect_from: - - /articles/github-event-terms -versions: - free-pro-team: '*' ---- - -By RSVP'ing to or attending a GitHub event, including any of the events or activities organized by GitHub in association with the GitHub event (collectively the "Event"), you signal that you have read, understand, and agree to the following Event Terms and Conditions. - -### 1. Basic requirements to attend - including the [Event Code of Conduct](/articles/github-event-code-of-conduct) - -In order to participate in the Event, you represent that - -- you have the requisite power and authority to enter into these Event Terms - -- you have read and understood these Event Terms as well as the [GitHub.com Terms of Service](/articles/github-terms-of-service/) - -- you agree to abide by the [Event Code of Conduct](/articles/github-event-code-of-conduct), which seeks to provide a harassment-free experience for everyone - -- if alcohol is being served at a GitHub event, you represent that you are at least 21 years old, or otherwise over the legal drinking age in your jurisdiction. - -Participants asked to stop any harassing or other prohibited behavior are expected to comply immediately. If a participant engages in behavior that violates the [Event Code of Conduct](/articles/github-event-code-of-conduct) or these Terms, the event organizers may take any action they deem appropriate, including warning the offender or expulsion from the event or conference with no refund. - -### 2. Pictures - -GitHub or its partners sometimes take photos and videos at GitHub events. By participating or attending the Event, you agree that you may appear in some of these photos and videos, and you authorize GitHub's use of them. On the flip side, if you take any photos or videos of attendees at the Event and provide them to us, you authorize us to use them in the same fashion, and represent that the attendees that appear in your photos and videos have also consented to such use. - -### 3. Risk, liability, and indemnity - -#### Assumption of risk -Although we try to create a safe environment at the Event, accidents or other bad things happen, even to good people. We ask that you do your part to help limit the possibility that you might get injured at the Event. - -You agree to carefully consider the risks inherent in any activities that you choose to take part in and to take reasonable precautions before you choose to attend or participate at a GitHub event. For example, you should ensure that you are in good physical health before engaging in any physical activity at a GitHub event, and you should always drink responsibly given the risks associated with drunk driving and participating in activities while your judgment is impaired. It's always good to remember that other event guests may be less responsible than you, and may themselves create additional risk to you despite their best intentions. - -In short, you understand that your attendance and participation at any GitHub event is voluntary, and you agree to assume responsibility for any resulting injuries to the fullest extent permitted under applicable law. - -By the same token, you agree that GitHub is not responsible for any injuries or accidents that you might sustain at any events that GitHub doesn't organize or control. - -#### Release of liability -You (for yourself, your heirs, personal representatives, or assigns, and anyone else who might make a claim on your behalf) hereby release, waive, discharge and covenant not to sue GitHub and its respective parent companies, subsidiaries, affiliates, officers, directors, partners, shareholders, members, agents, employees, vendors, sponsors, and volunteers from any and all claims, demands, causes of action, damages, losses or expenses (including court costs and reasonable attorneys' fees) which may arise out of, result from, or relate in any way to your attendance at the Event or any related event, except, of course, for any gross negligence or willful misconduct on our part. - -#### Indemnity -By the same token, you agree to indemnify and hold GitHub, its parents, subsidiaries, affiliates, officers, directors, employees, agents and representatives harmless, including costs, liabilities and legal fees, from any claim or demand made by any third party due to, related to, or connected with your attendance or conduct at the Event or any related event. - -### 4. Termination - -While we hope not to, GitHub may prohibit your attendance at any GitHub event at any time if you fail to abide by these Event Terms and the [Event Code of Conduct](/articles/github-event-code-of-conduct), the [GitHub.com Terms of Service](/articles/github-terms-of-service/), or for any or no reason, without notice or liability of any kind. Section 3 (Risk, liability, and indemnity) will continue to apply following any termination. - -### 5. Choice of law and venue - -California law will govern these Event Terms, as well as any claim, cause of action or dispute that might arise between you and GitHub (a "Claim"), without regard to conflict of law provisions. FOR ANY CLAIM BROUGHT BY EITHER PARTY, YOU AGREE TO SUBMIT AND CONSENT TO THE PERSONAL AND EXCLUSIVE JURISDICTION IN, AND THE EXCLUSIVE VENUE OF, THE STATE AND FEDERAL COURTS LOCATED WITHIN SAN FRANCISCO COUNTY, CALIFORNIA. - -### 6. Miscellaneous terms - -You agree that you will not represent yourself as an employee, representative, or agent of GitHub (unless, of course, you are actually employed by GitHub). We reserve the right to cancel the Event or any related event at any time, for any reason, and without liability or prejudice. Any failure on GitHub's part to exercise or enforce any right or provision of these terms does not constitute a waiver of such right or provision. If any provision of these terms is found to be unenforceable or invalid, that provision shall be limited or eliminated to the minimum extent necessary so that the Event Terms shall otherwise remain in full force and effect and enforceable. diff --git a/content/github/site-policy/github-gifts-and-entertainment-policy.md b/content/github/site-policy/github-gifts-and-entertainment-policy.md deleted file mode 100644 index 9cfae9d2b9f9..000000000000 --- a/content/github/site-policy/github-gifts-and-entertainment-policy.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: GitHub Gifts and Entertainment Policy -redirect_from: - - /articles/github-gifts-and-entertainment-policy -versions: - free-pro-team: '*' ---- - -GitHub recognizes that our business is built on positive and transparent relationships. While informal interactions and exchanges of gifts may be part of developing those relationships and may even be considered customary in some countries, we need to ensure that we’re following anti-bribery laws. We have a legal obligation to behave ethically, including by not using such interactions to create a special advantage or influence a deal. - -### Company policies -As a reminder, our Code of Ethics states: - ->You must never pay, offer to pay, promise to pay, induce, accept, or authorize payment of anything else of value, to anyone—including to anyone in a position of power or authority, such as government officials, or in commercial transactions—in order to obtain or keep business, or secure any other improper advantage for GitHub or Microsoft. You also must not solicit or accept a bribe, kickback, or any other improper cash payment. ... [GitHub employees] are required to keep accurate and fair records of all transactions involving any expense made on GitHub’s behalf—for example, by keeping receipts and providing accurate descriptions of your expenses—or any other transaction involving the disposal or transfer of GitHub assets. Such actions are required by the U.S. Foreign Corrupt Practices Act, the U.K. Bribery Act of 2010, and anti-bribery laws of other jurisdictions in which GitHub does business and are also simply the right thing to do. - -GitHub's Code of Ethics elaborates on certain situations, including gifts, travel, and entertainment; facilitating payments; charitable donations; jobs; and working with representatives, as well as on who is considered a government official. - -Our Standards of Conduct prohibit: ->Bribing government officials or other individuals to gain an unfair advantage, and taking bribes from anyone. - -That means not only no cash or cash equivalent of any kind, but nothing of value, should be given to anyone (including civil servants, government officials, or anyone in a position of power or authority, as well as people not in any of those privileged positions) in order to influence them or taken from anyone to influence GitHub. Such activity is prohibited by the U.S. Foreign Corrupt Practices Act and UK Anti-Bribery laws, both of which govern GitHub’s actions globally. - -### Examples of acceptable and unacceptable gifts -So what does “of value” mean? Keep in mind that no gifts are acceptable for government officials (ok, maybe stickers). You should always ask them what their policies permit and prohibit. But if in doubt, please run it by Legal to make sure. For example, many U.S. congresspeople will not let you take them out for dinner and pay. - -As for other customers or prospective customers, certain things might seem trivial but have great value to someone else. For example, although it might not seem like a big deal to you to get your friend’s daughter hired as an intern, it might be of huge value to them. But if she is not qualified and you pull strings to make it happen, then it isn't ok. In addition, if the intention is to improperly influence, anything, however small, might be considered "of value." - -🙅 _Here are some other things that aren't ok:_ - -- First class airfare to GitHub offices for Executive Briefings ✈️+🍾 -- Winery tours 🍷 -- Recommending a friend’s kid to a prestigious private school for admission 🎓 -- Tickets to Disneyland 👸, the World Cup 🥅, the Olympics 🏅 -- A futbol ⚽️ autographed by a famous player -- A contribution to a charity - -🙆 _Here is some stuff that is actually ok for customers or prospective customers:_ - -- Swag -- Economy class airfare to GitHub offices for Executive Briefings ✈️ -- Bleacher-type tickets to a sporting event ⚾️ -- A reasonably priced dinner in town 🍽 -- A small box of chocolates as an end of year thank you 🍫 - -All of the above applies to _taking_ bribes too. So if a vendor or prospective vendor sends you something “of value,” don’t accept it—or at least run it by Legal before you do. - -### Process -If you are planning to provide or accept an informal gift (that is not one of our promotional items like t-shirts and sticker swag), please make sure to follow the process below. - -Keep in mind that what's an acceptable amount can vary. For example, spending $50 on dinner might be considered a lot of money in some countries but not as much in others. So, when in doubt, ask! - -1. Generally speaking, for any expenses exceeding $150, you'll need approval (each time) from Legal in writing. And for any gifts you receive exceeding $150, you'll need to report that (each time) to Legal in writing. (Legal is just weighing in on the bribery question. You might still need to check with Finance for other reasons.) - -2. When you submit your expense report for reimbursement, please: - - Indicate the recipient and the purpose of the gift in the notes; and - - Include a copy of the email approval - -### Consequences -What happens if you don’t follow the policy and GitHub ends up paying for a prospective customer and his family to fly first class to Japan and attend the Tokyo Olympics? Or if you drop off a suitcase of Euros for a government official in a pre-arranged train station locker? - -FINES and JAIL. Not necessarily just for GitHub, either. You might get to spend a few years in jail, yourself, and it won’t matter if the customer ever submitted an order to GitHub after their trip to Japan or if the government official even picked up the suitcase of cash. Basically, it doesn’t matter whether you actually _made_ a bribe. Yoda notwithstanding, it’s the trying that counts. - -### More information -For more information and context on rules, enforcement, and penalties, the U.S. Department of Justice’s [Resource Guide to the U.S. Foreign Corrupt Practices Act](https://www.justice.gov/sites/default/files/criminal-fraud/legacy/2015/01/16/guide.pdf) is an excellent resource. diff --git a/content/github/site-policy/github-government-takedown-policy.md b/content/github/site-policy/github-government-takedown-policy.md deleted file mode 100644 index 23c272373188..000000000000 --- a/content/github/site-policy/github-government-takedown-policy.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: GitHub Government Takedown Policy -versions: - free-pro-team: '*' ---- -#### What is this? -From time to time, GitHub receives requests from governments to remove content that has been declared unlawful in their local jurisdiction. Although we may not always agree with those laws, we may need to block content if we receive a complete request from a government official so that our users in that jurisdiction may continue to have access to GitHub to collaborate and build software. - -#### What is a complete government takedown request? -To count as a complete request, a request or notice must -- come from a relevant, official government agency -- identify illegal content -- specify the source of illegality in that jurisdiction (law or court order). - -#### What happens when we receive a complete takedown request from a government? - -When we receive a notice from a relevant, official government agency that identifies illegal content and specifies the source of the illegality, we -- notify the affected users of the specific content that allegedly violates the law, and that this is a legal takedown request -- allow the affected users to appeal the decision as part of that notification -- limit the geographic scope of the takedown when possible and include that as part of the notification -- post the official request that led to the takedown in our public [gov-takedowns repository](https://github.com/github/gov-takedowns). - -#### Why do we publicly post takedown notices? -We are concerned about Internet censorship, and believe that transparency on a specific and ongoing level is essential to good governance. By publicly posting the notices, we can better inform the public about what content is being withheld from GitHub, and why. We post takedown notices to document their potential to chill speech. - -#### What does it mean if we post a notice in our gov-takedowns repository? -It means that we received the notice on the indicated date. It does *not* mean that the content was unlawful or wrong. It does *not* mean that the user identified in the notice has done anything wrong. We don't make or imply any judgment about the merit of the claims they make. We post these notices and requests only for informational purposes. - -#### Transparency reporting -In addition to posting government takedown notices in our gov-takedowns repository, we report on them in our transparency report. We also track and report in our transparency report on government takedowns based on violations of GitHub's Terms of Service. We process those violations as we would process a Terms of Service violation reported by anyone else. diff --git a/content/github/site-policy/github-gpl-cooperation-commitment.md b/content/github/site-policy/github-gpl-cooperation-commitment.md deleted file mode 100644 index b0129962bf8b..000000000000 --- a/content/github/site-policy/github-gpl-cooperation-commitment.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: GitHub GPL Cooperation Commitment -redirect_from: - - /articles/github-gpl-cooperation-commitment -versions: - free-pro-team: '*' ---- - -This commitment pertains to GitHub contributions to Git, the Linux kernel, and other programs under covered licenses (scroll to the end for definitions). - -We based our statement on the [template](https://github.com/gplcc/gplcc/blob/master/Company/GPL%20Cooperation%20Commitment-Company-Template.md) for companies. See the [GPL Cooperation Commitment site](https://gplcc.github.io/gplcc/) for how other companies, individuals, and projects can adopt this commitment. - -### Our Commitment - -Before filing or continuing to prosecute any legal proceeding or claim (other than a Defensive Action) arising from termination of a Covered License, GitHub commits to extend to the person or entity (“you”) accused of violating the Covered License the following provisions regarding cure and reinstatement, taken from GPL version 3. As used here, the term ‘this License’ refers to the specific Covered License being enforced. - -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. - -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. - -GitHub intends this Commitment to be irrevocable, and binding and enforceable against GitHub and assignees of or successors to GitHub’s copyrights. - -GitHub may modify this Commitment by publishing a new edition on this page or a successor location. - -Definitions - -‘Covered License’ means the GNU General Public License, version 2 (GPLv2), the GNU Lesser General Public License, version 2.1 (LGPLv2.1), or the GNU Library General Public License, version 2 (LGPLv2), all as published by the Free Software Foundation. - -‘Defensive Action’ means a legal proceeding or claim that GitHub brings against you in response to a prior proceeding or claim initiated by you or your affiliate. - -‘GitHub’ means GitHub, Inc. and its subsidiaries. - -This work is available under a Creative Commons Attribution-ShareAlike 4.0 International license. diff --git a/content/github/site-policy/github-insights-and-data-protection-for-your-organization.md b/content/github/site-policy/github-insights-and-data-protection-for-your-organization.md deleted file mode 100644 index c079aa0894c1..000000000000 --- a/content/github/site-policy/github-insights-and-data-protection-for-your-organization.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: GitHub Insights and data protection for your organization -intro: '{% data variables.product.prodname_insights %} analyzes your {% data variables.product.prodname_ghe_server %} data. This data could include personal data of individuals in your organization who may have the right to understand how such personal data is being used.' -product: '{% data reusables.gated-features.github-insights %}' -redirect_from: - - /github/installing-and-configuring-github-insights/github-insights-and-data-protection-for-your-organization -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -For more information about the terms that govern {% data variables.product.prodname_insights %}, see your {% data variables.product.prodname_ghe_one %} subscription agreement. - -For the avoidance of doubt, none of the foregoing information should be considered legal advice provided by {% data variables.product.prodname_dotcom %}. You are responsible for securing your own legal analysis of the information provided herein and for your compliance with privacy and data protection laws. It is up to you whether to use {% data variables.product.prodname_insights %} to process your employees’ and users’ data, and if you do so, you are solely responsible for conducting such processing in compliance with applicable law. - -### The organization’s roles and responsibilities - -When using {% data variables.product.prodname_insights %}, your organization is the data controller because your organization determines whether, how, and why {% data variables.product.prodname_insights %} will process any individual’s personal data. Your organization is solely responsible for ensuring that you are complying with all applicable laws in processing data with {% data variables.product.prodname_insights %}. - -### Data privacy recommendations - -You have full control over which metrics, reports, repositories, and contributors to include before beginning use of {% data variables.product.prodname_insights %}. The data you process with {% data variables.product.prodname_insights %} can only be pulled from your installation of {% data variables.product.prodname_ghe_server %}. Consider balancing the risks versus the benefits of analyzing personal data. - -- **Develop a clear analysis plan**: You must understand clearly what you want to analyze and why, and then consider how {% data variables.product.prodname_insights %} may help you find those answers. - -- **Consider a data protection impact assessment**: If your proposed use of {% data variables.product.prodname_insights %} involves processing personal data, consider completing a data protection impact assessment or otherwise completing formal legal analysis of your planned use. - -### Decide what data to use - -- **Decide which repositories to include**: Before you start an analysis in {% data variables.product.prodname_insights %}, consider which repositories to include. Administrators can include repositories when adding organizations and can enable and disable repositories at any time. For more information on adding organizations to {% data variables.product.prodname_insights %}, see "[Managing organizations](/insights/installing-and-configuring-github-insights/managing-organizations)." For more information on enabling and disabling repositories, see "[Managing repositories](/insights/installing-and-configuring-github-insights/managing-repositories)." - -- **Decide which metrics and reports to include**: Administrators can enable and disable metrics and reports available for all users at any time. Administrators control the {% data variables.product.prodname_insights %} data that users have access to in your installation of {% data variables.product.prodname_ghe_server %}. For more information, see "[Managing available metrics and reports](/insights/installing-and-configuring-github-insights/managing-available-metrics-and-reports)." - -- **Decide which contributors to include**: Administrators can disable a specific contributor’s data from being processed in the metrics and reports. For more information on managing contributor data, see "[Managing contributors and teams](/insights/installing-and-configuring-github-insights/managing-contributors-and-teams)." - -### User rights - -Under various data protection regulations, such as the General Data Protection Regulation (GDPR), users may have the right to request exclusion from processing, access, and correction, or to request deletion of their personal data. As the data controller, your organization should evaluate whether a particular user request is valid and, if appropriate, take action to fulfill the request. - -- **Exclusion of processing**: Users may have the right to have their personal data excluded from being processed. Administrators have the ability to remove a contributor’s data from being processed in {% data variables.product.prodname_insights %}, and the resulting reports and metrics will exclude the contributor’s data accordingly. For more information, see "[Managing contributors and teams](/insights/installing-and-configuring-github-insights/managing-contributors-and-teams)." - -- **Access**: Users may have the right to demand to see what personal data is being processed. Each metric and report has a detailed description of what personal data is being processed. For more information, see "[Metrics available with {% data variables.product.prodname_insights %}](/insights/exploring-your-usage-of-github-enterprise/metrics-available-with-github-insights)." Raw data is available through the {% data variables.product.prodname_enterprise %} API. Your organization is responsible for any decisions to process personal data and for fulfilling any such requests. - -- **Correction and deletion**: Users may have the right to rectify or delete their personal data. The data used in {% data variables.product.prodname_insights %} is derived from the existing data you add to or generate from your {% data variables.product.prodname_ghe_server %} installation. Correction and deletion should follow your organization's existing process to correct and delete data from {% data variables.product.prodname_ghe_server %}. - -- **Transparency regarding processing**: Each metric and report has a detailed description of what personal data is being processed. For more information, see "[Metrics available with {% data variables.product.prodname_insights %}](/insights/exploring-your-usage-of-github-enterprise/metrics-available-with-github-insights)." diff --git a/content/github/site-policy/github-logo-policy.md b/content/github/site-policy/github-logo-policy.md deleted file mode 100644 index 2e09b7646995..000000000000 --- a/content/github/site-policy/github-logo-policy.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: GitHub Logo Policy -redirect_from: - - /articles/i-m-developing-a-third-party-github-app-what-do-i-need-to-know/ - - /articles/using-an-octocat-to-link-to-github-or-your-github-profile/ - - /articles/github-logo-policy -versions: - free-pro-team: '*' ---- - -You can add {% data variables.product.prodname_dotcom %} logos to your website or third-party application in some scenarios. For more information and specific guidelines on logo usage, see the [{% data variables.product.prodname_dotcom %} Logos and Usage page](https://github.com/logos). - -You can also use an octocat as your personal avatar or on your website to link to your {% data variables.product.prodname_dotcom %} account, but not for your company or a product you're building. {% data variables.product.prodname_dotcom %} has an extensive collection of octocats in the [Octodex](https://octodex.github.com/). For more information on using the octocats from the Octodex, see the [Octodex FAQ](https://octodex.github.com/faq/). diff --git a/content/github/site-policy/github-marketplace-developer-agreement.md b/content/github/site-policy/github-marketplace-developer-agreement.md deleted file mode 100644 index 6508e214e4a6..000000000000 --- a/content/github/site-policy/github-marketplace-developer-agreement.md +++ /dev/null @@ -1,273 +0,0 @@ ---- -title: GitHub Marketplace Developer Agreement -redirect_from: - - /articles/github-marketplace-developer-agreement -versions: - free-pro-team: '*' ---- - -**THESE TERMS AND CONDITIONS (THE "AGREEMENT") GOVERN YOUR PARTICIPATION IN GITHUB’S MARKETPLACE PROGRAM. BY ENROLLING TO PARTICIPATE IN THE MARKETPLACE PROGRAM OR BY CLICKING “I ACCEPT” BELOW, YOU ARE CONFIRMING THAT YOU UNDERSTAND THIS AGREEMENT, AND THAT YOU ACCEPT ALL OF ITS TERMS AND CONDITIONS. IF YOU ARE ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY, YOU REPRESENT THAT YOU HAVE THE LEGAL AUTHORITY TO BIND THE ENTITY TO THIS AGREEMENT, IN WHICH CASE “YOU” WILL MEAN THE ENTITY YOU REPRESENT.** - -Effective Date: July 21, 2020 - -### 1. DEFINITIONS - -Capitalized terms utilized in this Agreement and not defined herein shall have the meaning set forth in the GitHub Terms of Service located at [https://docs.github.com/articles/github-terms-of-service](/articles/github-terms-of-service) (the “Terms” or “ToS”). - -"Action" means a mechanism that allows you to implement custom logic without having to create an application to perform a particular task with GitHub. - -“Brand Features” means the trade names, trademarks, service marks, logos, domain names, and other distinctive brand features of each party, respectively, as owned (or licensed) by such party from time to time. - -"Developer" means you, and you are the company or individual who has created the software, content, and digital materials for use in connection with GitHub and accessible via Marketplace. - -"Developer Application" or "Developer Product" means the Software, content and digital materials created by You for use in connection with GitHub and accessible via Marketplace and includes Actions. - -“End User” means any person, company or other legal entity that will acquire licenses to Developer Product via the GitHub Marketplace. - -“GitHub API” means GitHub’s proprietary application program interface. Access to and use of the GitHub API is governed by the ToS. - -“GitHub Marketplace” or “Marketplace” means the proprietary online marketplace site operated by GitHub where Developer Products may be delivered to End Users. - -“Listing” means the content provided for listing the Developer Product on GitHub Marketplace. - -“Taxes” means any federal, state, local or foreign income, gross receipts, franchise, estimated, alternative minimum, sales, use, transfer, value added, excise, real or personal property, withholding or other tax, of any kind whatsoever, including any interest, penalties or additions to tax or additional amounts in respect of the foregoing.” - -“Usage Data” means Marketplace related data generated in connection with End User use of GitHub Marketplace and licensure of Developer Products, including but not limited to usage statistics and aggregated sales data. Usage Data does not include and specifically excludes banking and payment information. - -### 2. PURPOSE AND LICENSE GRANT - -**2.1** This Agreement sets forth the terms and conditions pursuant to which Developer may publish Listings on GitHub Marketplace for purchase of Developer Products by End Users and use in connection with GitHub.com. This Agreement is applicable to Developer Products distributed for free and Developer Products for which End Users are charged a fee. Developer agrees to use the GitHub Marketplace solely for purposes permitted by this Agreement or as otherwise allowed by applicable law. As between GitHub and Developer, Developer is solely responsible for Developer Products. - -**2.2** Developer grants to GitHub a non-exclusive, worldwide, transferable, sublicensable, fully paid-up, royalty-free license to (a) host, link to, reproduce, modify, publicly perform, publicly display, test, distribute, make available, license and otherwise use the Listing; (b) reproduce, perform, display, use and access the Listing for administration and demonstration purposes in connection with the operation and marketing of the Marketplace; and (c) reproduce, display, distribute and otherwise use any Developer Brand Features furnished by Developer to GitHub under this Agreement solely for use in connection with the Marketplace and in order to fulfill its obligations under the Agreement. - -**2.3** In addition to the licenses granted above, GitHub may include Developer Brand Features furnished by Developer to GitHub under this Agreement in any presentations, communications, marketing materials, press releases, customer lists (including, without limitation any customer lists, posted to GitHub websites), publicity campaigns and other advertising collateral for purposes of marketing the Marketplace. If Developer discontinues the distribution of specific Developer Products on the Marketplace, GitHub will, after a commercially reasonable period of time, cease use of the discontinued Developer Products’ Brand Features. Nothing in this Agreement gives Developer a right to use any GitHub Brand Features. - -**2.4** Developer grants to each End User a non-exclusive, worldwide right or license to perform, display, and use the Developer Products and any content contained in, accessed by or transmitted through the Developer Products in connection with the Marketplace. Developer must include a separate end user license agreement (“EULA”) in its Developer Products that will govern the End User’s rights to the Developer Products in lieu of the foregoing sentence. Developer acknowledges and agrees that the applicable EULA for each Developer Product is solely between Developer and the End User. GitHub shall not be responsible, nor have any liability whatsoever, under any EULA. - -**2.5** Except for the license rights granted in this Agreement, (a) Developer retains all rights in the Developer Products; (b) each party retains all rights it has independent of this Agreement, including rights under the US Copyright Act or similar laws of other jurisdictions; and (c) each party owns all rights, title and interest in its respective Brand Features. Each party is responsible for protecting and enforcing its own respective rights and neither party has an obligation to do so on the other’s behalf. - -**2.6** Developer acknowledges and agrees that GitHub shall be entitled to provide Developer’s name, address and other contact details to any third party that reasonably, in GitHub’s sole determination, claims that Developer does not possess all of the necessary intellectual property rights in or to the Developer Products. - -### 3. RESTRICTIONS AND RESPONSIBILITIES - -Notwithstanding any of the requirements set forth in Section 2, Purpose and License Grant, above, Developer acknowledges and agrees that its use of the Marketplace and participation in the Program is explicitly conditioned on Developer’s adherence to this Agreement, including without limitation, the restrictions and compliance requirements set forth in this Section 3. - -**3.1** Developer agrees it will protect the privacy and legal rights of all End Users. If an End User provides Developer with, or the Product otherwise collects, discloses, accesses or uses, End User names, passwords or other personal information, then the Developer must (a) inform End Users that such information will be available to the Developer Products; and (b) provide legally adequate privacy notice and protection to End Users. Further, Developer Products may only use the information for the limited purpose for which Developer has obtained permission from End User. If Developer Products store or transmit personal or sensitive information provided by or obtained from End Users, then Developer must ensure all such activity is done so securely and must respond promptly to complaints, removal requests, and “do not contact” requests from GitHub or Marketplace End Users - -**3.2** In order to use and access the GitHub API, Developer must obtain API credentials (a “Token”) by becoming a subscriber. Developer may not share its Token with any third party, shall keep such Token and all login information secure and shall use the Token as Developer’s sole means of accessing the GitHub API. - -**3.3** Developer acknowledges and agrees that it will not engage in any activity with the Marketplace, including the distribution of Developer Products, that violates Marketplace policies or that: - -- 1\. Violates any applicable laws or regulations or promotes unlawful activities; -- 2\. Contains or installs any active malware or exploits, or uses our platform for exploit delivery (such as part of a command and control system); -- 3\. Interferes with, disrupts, damages, harms, or accesses in an unauthorized manner the machines, systems, hardware, servers, networks, devices, data or other property or services of any third party; -- 4\. Includes false or misleading content; -- 5\. Infringes on any proprietary right of any party, including patent, trademark, trade secret, copyright, right of publicity, or other rights; -- 6\. Is libelous, defamatory, or fraudulent; -- 7\. Enables the unauthorized download of streaming content or media; -- 8\. Displays or links to illegal content; -- 9\. harasses, abuses, threatens, or incites violence toward any individual or group, including GitHub employees, officers, and agents, or any End Users; -- 10\. Is or contains sexually obscene content; -- 11\. Is discriminatory or abusive toward any individual or group; -- 12\. Diverts End Users or provides links to any other site that mimics the Marketplace or passes itself off as the Marketplace. - -**3.4** Developer shall not, under any circumstances, through Developer Products or otherwise, repackage or resell the Marketplace, GitHub API or Usage Data. Developer is not permitted to use the GitHub API or any Usage Data in any manner that does or could potentially undermine the security of the Service, the GitHub API, Usage Data or any other data or information stored or transmitted using the Marketplace. In addition, Developer shall not, and shall not attempt to, interfere with, modify or disable any features, functionality or security controls of the Marketplace or the GitHub API, defeat, avoid, bypass, remove, deactivate or otherwise circumvent any protection mechanisms for the Marketplace or the GitHub API, or reverse engineer, decompile, disassemble or derive source code, underlying ideas, algorithms, structure or organizational form from the Marketplace or the GitHub API. - -**3.5** Developer acknowledges that Developer is solely responsible, and that GitHub has no responsibility or liability of any kind, for the content, development, operation, support or maintenance of Developer Products. Without limiting the foregoing, Developer will be solely responsible for -- (i) the technical installation and operation of its Developer Products; -- (ii) creating and displaying information and content on, through or within its Developer Products; -- (iii) ensuring that its Developer Products do not violate or infringe the intellectual property rights of any third party; -- (iv) ensuring that Developer Products are not offensive, profane, obscene, libelous or otherwise illegal; -- (v) ensuring that its Developer Products do not contain or introduce malicious software into the Marketplace, the GitHub API, any Usage Data or other data stored or transmitted using the Marketplace; and -- (vi) ensuring that its Developer Products are not designed to or utilized for the purpose of sending commercial electronic messages to any GitHub.com users, agents or End Users without their consent. - -**3.6** Developer will respect and comply with the technical and policy-implemented limitations of the GitHub API and the restrictions of this Agreement in designing and implementing Developer Products. Without limiting the foregoing, Developer shall not violate any explicit rate limitations on calling or otherwise utilizing the GitHub API. - -**3.7** GitHub reserves the right to terminate this Agreement immediately if GitHub determines that Developer has breached any requirement or obligation of this Section 3. - -**3.8** Nothing in this Agreement shall prevent either party from developing and/or publishing applications that are similar or otherwise compete with the other party's applications. - -### 4. TAKEDOWNS - -**4.1** Your Takedowns. Upon providing GitHub with thirty (30) days written notice in advance of the 1st day of the succeeding calendar month, you may remove your Listings from future distribution via Marketplace, but you must comply with this Agreement for any Listing distributed through Marketplace, including but not limited to refund requirements. Removing your Listing from future distribution via Marketplace does not (a) affect the license rights of End Users who have previously purchased or installed your Listing or (b) change your obligation to deliver or support Listing that has been previously purchased or installed by users. - -Notwithstanding the foregoing, in no event will GitHub maintain on any portion of Marketplace any Listing that you have removed from Marketplace and provided written notice to GitHub that such removal was due to: - -- (i) an allegation of infringement, or actual infringement, of any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person, -- (ii) an allegation of defamation or actual defamation, -- (iii) an allegation of violation, or actual violation, of any third party's right of publicity or privacy, or -- (iv) an allegation or determination that such Listing does not comply with applicable law. - -If you remove a Listing from Marketplace pursuant to clauses (i), (ii), (iii) or (iv) of this Section 4.1, and an End User purchased such Listing within a year before the date of takedown, GitHub is not responsible for refund(s) to the affected buyer of any amount paid by such End Customer during the year before the date of takedown for such affected Listing. - -**4.2** GitHub Review and Takedowns. While GitHub is not obligated to monitor the Listing or their content, GitHub may at any time review or test your Listing for compliance with this Agreement, the Marketplace program policies, and any other applicable terms, obligations, laws, or regulations. GitHub retains the right to refuse to include a Listing on Marketplace in its sole discretion. You may be required to provide information about yourself (such as identification or contact details) as part of the registration process for Marketplace, or as part of your continued use of Marketplace. You agree that any information you give to Marketplace will always be accurate, correct and up to date. As part of the specification for your Listing, GitHub may ask that you include in the file for your Listing information such as your name and email address. GitHub may use this information when featuring the Listing in our directory or for other uses. - -If GitHub is notified by you or otherwise becomes aware and determines in its sole discretion that a Listing or any portion thereof or your Brand Features -- (a) violates the intellectual property rights or any other rights of any third party; -- (b) violates any applicable law or is subject to an injunction; -- (c) is pornographic, obscene or otherwise violates GitHub's hosting policies or other terms of service as may be updated by GitHub from time to time in its sole discretion; -- (d) is being distributed by you improperly; -- (e) may create liability for GitHub or any third party; -- (f) is deemed by GitHub to be malicious or defective; -- (g) violates the terms of this Agreement or the Marketplace program policies; -- (h) the display of the Listing is impacting the integrity of GitHub servers (i.e., users are unable to access such content or otherwise experience difficulty); -- (i) is deemed by GitHub to add undue risk to Marketplace End Users’ data or impair the user experience of Marketplace or GitHub; -- (j) is subject to user complaints in regards to your breach of your EULA, or -- (k) otherwise violates the Terms or this Agreement, - -GitHub may: prevent the Listing from being made available on Marketplace; remove the Listing from Marketplace; flag, filter, or modify related materials (including but not limited to descriptions, screenshots, or metadata); or reclassify the Listing at its sole discretion. GitHub reserves the right to suspend or bar any Listing from Marketplace at its sole discretion. - -In the event that your Listing is involuntarily removed because it is defective, malicious, infringes intellectual property rights of another person, defames, violates a third party's right of publicity or privacy, or does not comply with applicable law, and an end user purchased such Listing within a year before the date of takedown: - -- (i) you must refund to the affected buyer all amounts paid by such End Customer during the year before the date of takedown for such affected Listing. -- (ii) GitHub may, at its sole discretion, withhold from your future sales the amount in subsection (i) above. - -**4.3** From time to time, GitHub may check for available updates to Listing, including but not limited to bug fixes or enhanced functionality. If you update your Listing to Marketplace, you agree that such update will be automatically requested, downloaded, and installed without further notice to you. GitHub makes no guarantees regarding the timing of such updates. For the avoidance of doubt, updates to Listing are subject to the same terms and conditions as the Listing, including without limitation Section 4.2 of this Agreement (GitHub Review and Takedowns). - -**4.4** End-User Takedowns. If an End-User uses your Developer Product in a way that violates the Terms, then we have the right to suspend or terminate that End-User's access to the Developer Product without any liability to you. - -### 5. REPRESENTATIONS, WARRANTIES AND COVENANTS - -**5.1** Developer represents and warrants that Developer has notified all users of such Developer Applications that their account data will be transmitted outside the Service and Developer terms will control the privacy, security or integrity of such account data. Developer further represents and warrants that to the extent Developer’s Applications store, process or transmit account data, neither Developer nor Developer’s Application will, without appropriate prior user consent or except to the extent required by applicable law, -- (i) modify the content of account data in a manner that adversely affects the integrity of account data; -- (ii) disclose account data to any third party; or -- (iii) use account data for any purpose other than providing the Developer Application functionality to users of such Developer Application. Developer shall maintain and handle all account data in accordance with privacy and security measures reasonably adequate to preserve the confidentiality and security of all account data and all applicable privacy laws and regulations. - -**5.2** Developer agrees that it will comply with the GitHub Data Protection Addendum. - -**5.3** Developer represents, warrants and covenants that: (i) its Developer Products and Developer Brand Features do not and will not violate, misappropriate or infringe upon the intellectual property rights of any third party; (ii) Developer will comply with all applicable local, state, national and international laws and regulations, including, without limitation, all applicable export control laws, and maintain all licenses, permits and other permissions necessary to develop, implement and distribute its Developer Products; and (iii) its Developer Products do not and will not contain or introduce into the Marketplace, the GitHub API, any Usage Data or other data stored or transmitted using the Marketplace, any malicious software; (vi) its Developer Products are not designed to or utilized for the purpose of sending commercial electronic messages to any GitHub customers, agents or End Users without their consent; (vi) it has all right, power and authority to grant the licenses granted to GitHub and End Users herein; (vii) it acknowledges GitHub’s right to charge transaction and/or listing fees as provided in Section 6 herein; any images and text that are used to market the Developer Products or that Developer has uploaded to the Marketplace are truthful, accurate and not intended to mislead or confuse the End User. - -**5.4** DISCLAIMER OF WARRANTIES. ALL ASPECTS OF THE MARKETPLACE AND THE GITHUB API, INCLUDING ALL SERVER AND NETWORK COMPONENTS ARE PROVIDED ON AN “AS IS” AND “AS AVAILABLE” BASIS, WITHOUT ANY WARRANTIES OF ANY KIND TO THE FULLEST EXTENT PERMITTED BY LAW, AND GITHUB EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, TITLE, FITNESS FOR A PARTICULAR PURPOSE, AND NON- INFRINGEMENT. DEVELOPER ACKNOWLEDGES THAT GITHUB DOES NOT WARRANT THAT THE MARKETPLACE OR GITHUB API WILL BE UNINTERRUPTED, TIMELY, SECURE, ERROR-FREE OR FREE FROM VIRUSES, MALWARE, OR WORMS (OTHERWISE KNOWN AS COMPUTER CODE OR OTHER TECHNOLOGY SPECIFICALLY DESIGNED TO DISRUPT, DISABLE, OR HARM YOUR SOFTWARE, HARDWARE, COMPUTER SYSTEM, OR NETWORK), AND NO INFORMATION OR ADVICE OBTAINED BY DEVELOPER FROM GITHUB OR THROUGH THE MARKETPLACE OR GITHUB API SHALL CREATE ANY WARRANTY NOT EXPRESSLY STATED IN THESE TERMS. GITHUB IS NOT RESPONSIBLE FOR AND SPECIFICALLY DISCLAIMS ANY LIABILITY FOR ANY UNAUTHORIZED USE OF DEVELOPER PRODUCTS OUTSIDE THE MARKETPLACE. - -### 6. PRICING AND PAYMENT TERMS - -**6.1** GitHub will be the merchant of record for Developer Products purchased by End Users via Marketplace. - -**6.2** Prices for Marketplace Listings of Developer Applications will be set in US Dollars (USD). Developer has complete control over setting pricing for each Listing, and once set, such pricing cannot be changed. You may retire a pricing plan for an existing Listing and add a new pricing plan for such Listing, provided that such new pricing plan shall not negatively impact existing End Users. The prices you set for Developer Products will determine the amount of payment you will receive. GitHub will remit 75% of the sale price in USD without reduction for Taxes except for any withholding taxes that are required under applicable law. The remaining 25% of the sales price will be allotted to and retained by GitHub. At the end of each month and upon reaching a minimum value of $500 USD, GitHub will remit your share of payments. - -**6.3** Refund Requirements. You will be responsible for specifying the terms and conditions regarding refunds to your End Users. In no event shall GitHub be responsible for providing any support for refunds, nor shall GitHub be liable for payment of any refund. - -**6.4** You Support Your Developer Product. You will be solely responsible for support and maintenance of your Developer Products and any complaints about your Developer Products. Your support contact information will be displayed in each application detail page and made available to users for customer support purposes. Failure to provide adequate support for your Developer Products may result in less prominent product exposure, or in some cases removal from Marketplace or anywhere else on GitHub.com where previously purchased or downloaded Developer Products are stored on behalf of users. - -### 7. OWNERSHIP - -Subject to the limited licenses expressly provided in this Agreement, nothing in this Agreement transfers or assigns to a party any of the other party’s intellectual property rights in its Brand Features or other technology, and nothing in this Agreement transfers or assigns a party any of the other party’s intellectual property rights. - -### 8. LIMITATION OF LIABILITY - -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY (WHETHER IN CONTRACT, TORT, NEGLIGENCE OR OTHERWISE) WILL GITHUB, OR ITS AFFILIATES, OFFICERS, DIRECTORS, EMPLOYEES, AGENTS, OR SUPPLIERS BE LIABLE TO DEVELOPER OR ANY THIRD PARTY UNDER THIS AGREEMENT FOR ANY INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, CONSEQUENTIAL, PUNITIVE OR OTHER SIMILAR DAMAGES, INCLUDING LOST PROFITS, LOST SALES OR BUSINESS, LOST DATA, BUSINESS INTERRUPTION OR ANY OTHER LOSS INCURRED BY DEVELOPER OR ANY THIRD PARTY IN CONNECTION WITH THIS AGREEMENT, REGARDLESS OF WHETHER DEVELOPER HAS BEEN ADVISED OF THE POSSIBILITY OF OR COULD HAVE FORESEEN SUCH DAMAGES NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THIS AGREEMENT, GITHUB’S AGGREGATE LIABILITY TO DEVELOPER OR ANY THIRD PARTY ARISING OUT OF THIS AGREEMENT SHALL NOT EXCEED SIX (6) MONTHS’ SPEND. - -### 9. INDEMNIFICATION - -**9.1** To the maximum extent permitted by applicable law, Developer agrees to defend, indemnify and hold harmless GitHub, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any losses, liabilities, damages, costs and expenses (including reasonable attorneys’ fees) arising from or relating to (a) Developer’s use of the Marketplace in violation of this Agreement, the Terms or any applicable laws or regulations; (b) Developer’s Products that infringe any copyright, trademark, trade secret, patent or other intellectual property right of any third party; (c) any loss or disclosure of data or personal information by Developer Products; and (d) Developer’s EULA (or ToS). - -### 10. TERMINATION - -**10.1** This Agreement will continue to apply until terminated by either party as set forth below. - -**10.2** Either party may terminate this Agreement for any reason upon providing written notice to the other forty-five (45) days prior to the immediately following calendar month. During such 45 day period the terms in effect at the time such notice of termination has been provided shall govern for the duration of the 45-day notice period until the date of actual termination. - -**10.3** GitHub may terminate this Agreement at any time if (a) you have breached any provision of this Agreement or (b) GitHub is required to do so by law. - -**10.4** Effects of Termination by Developer. Upon receiving forty-five (45) days’ advanced written notice of termination from Developer, Developer will be disabled from taking on new customers via Marketplace. Any outstanding fees shall be remitted upon termination and removal of the Developer Product from Marketplace. If termination is initiated as a result of a GitHub modication to these terms (Section 11), the terms in effect immediately prior to such modification shall govern for the duration of the 45-day notice period until the date of actual termination. - -**10.5** The obligations in Sections 2, 3, 4, 5, 8, 9 and 12-18 will survive any expiration or termination of this Agreement. - -### 11. MODIFICATION - -Developer acknowledges and agrees that GitHub may modify this Agreement, Marketplace, the GitHub API, the General API Policies, GitHub Privacy Policy, the GitHub Developer Program ToS, and the GitHub.com ToS from time to time (a “Modification”). All Modifications shall be communicated through Marketplace, the GitHub website at www.GitHub.com or through a form of direct communication from GitHub to Developer. Developer further acknowledges and agrees that such Modifications may be implemented at any time and without any notice to Developer. Developer shall, within forty-five (45) days from the date of first notice of any Modification(s) (or such shorter period of time specified in the notice of the Modification(s)) (the “Conformance Period”) comply with such modification(s) by implementing and using the most current version of the GitHub API in the most current version of the Developer Products and making any changes to Developer Products that may be required as a result of such Modification(s). Developer acknowledges that a Modification may have an adverse effect on Developer Products, including but not limited to changing the manner in which applications communicate with the GitHub API. GitHub shall have no liability of any kind to Developer or any End User with respect to such Modifications or any adverse effects resulting from such Modifications. Developer’s continued access to or use of Marketplace or the GitHub API following the Conformance Period shall constitute binding acceptance of the Modification(s) at issue. - -### 12. ASSIGNMENT; ENTIRE AGREEMENT; REVISIONS - -**12.1** Developer may not, directly or indirectly, by operation of law or otherwise, assign all or any part of this Agreement or Developer’s rights under this Agreement or delegate performance of Developer’s duties under this Agreement without GitHub’s prior written consent. The rights granted in this Agreement may be assigned or transferred by GitHub without Developer’s prior approval. In addition, GitHub may delegate its responsibilities or obligations under this Agreement without Developer’s consent. - -**12.2** This Agreement, together with the Terms, constitute the entire agreement between the parties with respect to the subject matter of this Agreement. GitHub’s failure to enforce at any time any provision of this Agreement does not constitute a waiver of that provision or of any other provision of this Agreement. - -### 13. SEVERABILITY - -If any provision in this Agreement is held by a court of competent jurisdiction to be unenforceable, such provision shall be modified by the court and interpreted so as to best accomplish the original provision to the fullest extent permitted by law, and the remaining provisions of this Agreement shall remain in effect. - -### 14. RELATIONSHIP OF THE PARTIES - -The parties are independent contractors. This Agreement does not create a partnership, franchise, joint venture, agency, fiduciary or employment relationship among the parties. Developer agrees that each member of the group of companies to which GitHub belongs shall be a third party beneficiary to this Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of this Agreement that confers a benefit or grants a right in favor or GitHub. No other person, company or legal entity shall be a third party beneficiary to the Agreement. - -### 15. NOTICE - -All notices to be provided by GitHub to Developer under this Agreement may be delivered in writing (i) by nationally recognized overnight delivery service (“Courier”) or U.S. mail to the contact mailing address provided by Developer to GitHub; or (ii) electronic mail to the electronic mail address provided by Developer. Developer must give notice to GitHub in writing by Courier or U.S. Mail to the following address: GitHub, Inc., Attn: Legal Department, 88 Colin P. Kelly Jr. Street, San Francisco, CA 94107 USA. All notices shall be deemed to have been given immediately upon delivery by electronic mail, or if otherwise delivered upon receipt or, if earlier, two (2) business days after being deposited in the mail or with a Courier as permitted above. - -### 16. GOVERNING LAW - -This Agreement shall be governed by the laws of the State of California without regard to conflict of law principles. Developer hereby expressly agrees to submit to the exclusive personal jurisdiction of the federal and state courts of the State of California, San Francisco County, for the purpose of resolving any dispute relating to this Agreement. Notwithstanding the foregoing, GitHub shall be entitled to seek injunctive remedies or other types of urgent legal relief in any jurisdiction. - -### 17. EXPORT RESTRICTIONS - -DEVELOPER PRODUCTS DISTRIBUTED VIA MARKETPLACE MAY BE SUBJECT TO EXPORT CONTROLS OR RESTRICTIONS BY THE UNITED STATES OR OTHER COUNTRIES OR TERRITORIES. DEVELOPER AGREES TO COMPLY WITH ALL APPLICABLE US AND INTERNATIONAL EXPORT LAWS AND REGULATIONS. THESE LAWS MAY INCLUDE RESTRICTIONS ON DESTINATIONS, CONTENT AND/OR END USERS. - -### 18. USAGE DATA -In order to operate and improve Marketplace, GitHub may collect Usage Data from Marketplace and GitHub API or anywhere previously purchased or downloaded Developer Products are stored on behalf of End Users by GitHub. The Usage Data will be maintained in accordance with GitHub’s then in effect privacy policies. Limited Usage Data may be available for use by Developer in GitHub’s sole discretion. - -# Addendum1: Data Protection Addendum - -This Data Protection Addendum (this “Addendum”) is attached to and made a part of the GitHub Marketplace Developer Agreement between you and GitHub (the “Agreement”). Terms not defined in this Addendum have the meanings ascribed to them in the Agreement. In the event of a conflict or inconsistency, the terms of this Addendum will supersede those of the Agreement. - -**A1-1. Purpose and Scope** -GitHub maintains personal information from individuals all over the world, some of whom are residents of countries and areas with strong data protection laws. This Addendum establishes your responsibilities when you receive and process any protected data from GitHub. - -**A1-2. Definitions** - -- a. “Applicable Data Protection Laws” means any laws, regulations, regulatory frameworks, or other legislations relating to the processing and use of Personal Information, as applicable to the Agreement, including: - - The EU General Data Protection Regulation 2016/679 (“GDPR”), along with any implementing or corresponding equivalent national laws or regulations; - - The California Consumer Privacy Act of 2018, Cal. Civ. Code §§1798.100 et seq. ("CCPA"); and - - The UK Data Protection Act 2018 and implementation of GDPR contained therein. -- b. “Personal Information” means any information which relates to an individual GitHub End User, customer or employee which could, alone or together with other information, personally identify him or her, whether supplied by GitHub for processing by the Developer or whether generated by the Developer in the course of performing its obligations under this Agreement. -- c. “Processing” means any operation or set of operations performed on GitHub Protected Data, whether by manual or automatic means, including collection, recording, organization, storage, adaptation, alteration, retrieval, consultation, use, disclosure by transmission, dissemination or otherwise making available, blocking, erasure, or destruction. -- d. “Protected Data” means any confidential information transferred by GitHub to the Developer about a GitHub End User, including the Personal Information, metadata, Usage Data, or other data or information that is associated with GitHub End Users. - -**A1-3. Compliance with Data Transfer Laws** - -- a. GitHub Compliance. GitHub complies with Applicable Data Protection Laws. GitHub relies on Standard Contractual Clauses ("SCCs") for all transfers out of the European Union, European Economic Area, United Kingdom, and Switzerland to provide its services. In addition, GitHub is certified to the EU-U.S. and Swiss-U.S. Privacy Shield Frameworks and the commitments they entail, although GitHub does not rely on the EU-U.S. Privacy Shield Framework as a legal basis for transfers of Personal Information in light of the judgment of the Court of Justice of the EU in Case C-311/18. GitHub will only transfer Personal Information to the Developer for the limited and specified purposes for which it was collected. -- b. Developer Compliance. Developer represents and warrants that it will (i) comply with Applicable Data Protection Laws; and (ii) abide by the requirements of European Economic Area and Swiss data protection law regarding the collection, use, transfer, retention, and other processing of Personal Information from the European Economic Area, United Kingdom, and Switzerland. All transfers of Personal Information to a third country or an international organization will be subject to appropriate safeguards as described in Article 46 of the GDPR and such transfers and safeguards will be documented according to Article 30(2) of the GDPR. - -**A1-4. Data Protection** - -- a. Notice. Developer must identify itself as the collector and processor of all data it collects from the End User. Developer must not hold itself out as collecting any Personal Information on GitHub’s behalf. Developer must provide sufficient notice of its privacy practices to the End User, such as by posting a privacy policy. -- b. Purpose Limitation. - - i. GitHub will provide Developer with Protected Data elements for the purpose of establishing and facilitating a relationship between the Developer and the End User, and permitting Developer to provide services to the End User. Developer must limit its usage of the Protected Data to that purpose, unless the End User agrees to allow different uses. - - ii. Developer must process and communicate the Protected Data to third parties only for the limited and specific purposes of providing its services to the End User as described in its agreement with the End User, unless the End User agrees to allow different uses. -- c. Data Quality and Proportionality. Developer must keep the Protected Data accurate and up to date. -- d. Security. Developer must take all reasonable security measures appropriate to the risks, such as against accidental or unlawful destruction, or accidental loss, alteration, unauthorized disclosure or access, presented by processing the Protected Data. -- e. Data Retention and Deletion. Upon GitHub’s reasonable request, unless prohibited by law, Developer must return or destroy all Personal Information and related data at all locations where it is stored after it is no longer needed for the limited and specified purposes for which it was collected. Developer must have in place or develop information destruction processes that meet GitHub’s security requirements in Section 3.8 of the Agreement. -- f. Subprocessing and Onward Transfer. Developer is liable for onward transfers of Protected Data to its subprocessors. In the event that Developer must transfer the Protected Data to a third party, or Developer installs, uses, or enables third party services to process the Protected Data on Developer’s behalf, Developer must ensure that the third party will provide at least the same level of privacy protection as is required herein. - -**A1-5. Use of Protected Data** - -- a. Permitted Use. Developer may process the Protected Data only for the purposes set out in Section 4(b)(i), and no other purpose. -- b. No Use in Marketing. Developer must not use the Protected Data for the purposes of advertising any third party goods or services, and may not sell the Protected Data to any third party. -- c. Automated Decisions. In the event that the Developer makes automated decisions affecting GitHub customers’ rights, including employment, credit, or health, the Developer must provide notice to the individuals. - -**A1-6. Compliance** - -- a. Developer must comply with reasonable requests for information on its privacy and data use practices in the following manner: - - i. On request, Developer will make its Privacy Statement, Privacy Policy, Privacy Notice, or any similar documentation available. Developer will also provide notice of any relevant compliance reports, including Privacy Shield compliance. - - ii. Developer will comply with the Information Security and Audit obligations in Section 3.7 of the GitHub Marketplace Developer Agreement. - -**A1-7. Termination** - -- a. Suspension. In the event that Developer is in breach of its obligations to maintain an adequate level of privacy protection, GitHub may temporarily suspend the transfer of Protected Data or prohibit collection and processing of Protected Data on GitHub’s behalf until the breach is repaired or the Agreement is terminated. -- b. Termination With Cause. GitHub may terminate the Agreement without prejudice to any other claims at law or in equity in the event that: - - i. the Developer notifies GitHub that it can no longer meet its privacy obligations; - - ii. the transfer, collection, or processing of Protected Data has been temporarily suspended for longer than one month pursuant to 7(a); - - iii. the Developer is in substantial or persistent breach of any warranties or representations under this Data Protection Addendum; - - iv. the Developer is no longer carrying on business, is dissolved, enters receivership, or a winding up order is made on behalf of Developer. -- c. Breach. Failure to comply with the provisions of this Data Protection Addendum is considered a material breach under the Master Services Agreement. -- d. Notification. -In the event that Developer determines that it can no longer meet its privacy obligations under this Agreement, it must notify GitHub immediately. -In the event that Developer was certified under Privacy Shield and allows that certification to lapse or otherwise cannot remain certified under Privacy Shield, Developer must notify GitHub immediately. -- e. Modifications. GitHub may modify this Addendum from time to time as required by law, with thirty days’ notice to Developer. If Developer is unable to comply with the modifications to the Addendum, GitHub may terminate the Agreement. -- f. Upon Termination, Developer must: - - i. take reasonable and appropriate steps to stop processing of the Protected Data; - - ii. within thirty days of termination, delete any Protected Data Developer stores on GitHub’s behalf; and - - iii. provide GitHub with reasonable assurance that Developer has stopped processing the Protected Data and deleted the stored Protected Data. - -**A1-8. Liability for Data Processing** -- a. Direct Liability. Developer will be liable to GitHub for actual damages caused by any breach of this Addendum subject to the terms in Section 8, Limitation on Liability of the Marketplace Developer Agreement. diff --git a/content/github/site-policy/github-marketplace-terms-of-service.md b/content/github/site-policy/github-marketplace-terms-of-service.md deleted file mode 100644 index 036bc30e35a7..000000000000 --- a/content/github/site-policy/github-marketplace-terms-of-service.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: GitHub Marketplace Terms of Service -redirect_from: - - /articles/github-marketplace-terms-of-service -versions: - free-pro-team: '*' ---- - -Welcome to GitHub Marketplace ("Marketplace")! We're happy you're here. Please read these Terms of Service ("Marketplace Terms") carefully before accessing or using GitHub Marketplace. GitHub Marketplace is a platform that allows you to purchase developer products (for free or for a charge) that can be used with your GitHub.com account ("Developer Products"). Although sold by GitHub, Inc. ("GitHub", "we", "us"), Developer Products may be developed and maintained by either GitHub or by third-party software providers, and may require you to agree to a separate terms of service. Your use and/or purchase of Developer Products is subject to these Marketplace Terms and to the applicable fees and may also be subject to additional terms as provided by the third party licensor of that Developer Product (the "Product Provider"). - -By using Marketplace, you are agreeing to be bound by these Marketplace Terms. - -Effective Date: October 11, 2017 - -### A. GitHub.com's Terms of Service - -Marketplace is provided by GitHub, and is governed by either the [Terms of Service](/articles/github-terms-of-service/) or the [Corporate Terms of Service](/articles/github-corporate-terms-of-service/) ("GitHub Terms"), depending on the type of account you're on, as well as these Marketplace Terms. If you configure the Developer Products to work with one or more accounts on the GitHub.com website, your use of the Developer Products will also be governed by your applicable GitHub Terms. Any capitalized terms not defined in this document will be defined in your applicable GitHub Terms. - -You may not use a Developer Product to violate your applicable GitHub Terms. Many of these Developer Products are used exclusively for performing automated tasks. In addition, multiple Users may direct the actions of a Developer Product. However, if you purchase and/or set up a Developer Product on your account, or you are an owner of an account with an integrated Developer Product, then you will be responsible for the Developer Product's actions that are performed on or through your account. - -### B. Use Requirements - -In order to use Marketplace, you must be 13 years of age or older (if you live in the United States; if you live in another country, you must comply with your country's minimum age laws), have a valid GitHub account, and have agreed to your applicable GitHub Terms and these Marketplace Terms. - -If you are agreeing to these Marketplace Terms on behalf of a company, organization, or other legal entity, you represent that you have the authority to bind that entity, its affiliates, and all users who access the Marketplace on its behalf to these Marketplace Terms. If you do not have authority, you must not accept these Marketplace Terms and you may not use the Marketplace services. - -### C. Developer Products and Product Providers - -If you install and/or purchase a Developer Product, then you are purchasing the Developer Products from GitHub and you are required to make the related payments directly to GitHub. However, you are receiving access to and the rights to use that Developer Product from a Product Provider, not from GitHub (unless it's a GitHub-owned Developer Product). The Product Provider is solely responsible for the Developer Product it provides, the content therein, and any claims that you or any other party may have relating to that Developer Product or your use of that Developer Product. - -We are not a party to the agreement between you and the Product Provider with respect to that Developer Product. We are not responsible for that Developer Product, the content in it, or any claims that you or any other party may have relating to that Developer Product or your use of that Developer Product. However, we are a third party beneficiary of the agreement between you and the Product Provider for each Developer Product, and we will have the right (and will be deemed to have accepted the right) to enforce that agreement against you as a third party beneficiary. - -### D. Payment, Billing Schedule, and Cancellation - -All payments for Developer Products will go through GitHub. The terms of your payment and fees will be governed by [Section K. Payment](/articles/github-terms-of-service/#k-payment), or the analogous section of your applicable GitHub Terms. By using the Marketplace, you agree to pay GitHub any charge incurred in connection with your purchase of the Developer Product. Each purchase is an electronic contract between you and GitHub, and you and the Product Provider. You are responsible for providing us with a valid means of payment for purchases of Developer Products. If you are only purchasing free Developer Products, you are not required to provide payment information. - -**Billing Schedule; No Refunds.** Your payment schedule is determined by the payment schedule you chose when you created your GitHub account (e.g. free, monthly, annual). For monthly or yearly payment plans, Marketplace purchases are billed in advance on a monthly or yearly basis respectively and are non-refundable. There will be no refunds or credits for partial months of service, downgrade refunds, or refunds for months unused; however, the service will remain active for the length of the paid billing period. If you would like to cancel the Developer Product services, you can do so by going into your Settings in the global navigation bar at the top of the screen. - -If you would have a question, concern, or dispute regarding your billing, please contact [GitHub Support](https://support.github.com/contact). - -### E. Your Data and GitHub's Privacy Policy - -**Privacy.** When you purchase or subscribe to a Developer Product, GitHub must share certain Personal Information (as defined in the [GitHub Privacy Statement](/articles/github-privacy-statement/)) with the Product Provider in order to provide you with the Developer Product, regardless of your privacy settings. Depending on the requirements of the Developer Product you choose, GitHub may share as little as your user account name, ID, and primary email address or as much as access to the content in your repositories, including the ability to read and modify your private data. You will be able to view the scope of the permissions the Developer Product is requesting, and accept or deny them, when you grant it authorization via OAuth. In line with [GitHub's Privacy Statement](/articles/github-privacy-statement/), we will only provide the Product Provider with the minimum amount of information necessary for the purpose of the transaction. - -If you cancel your Developer Product services and revoke access through your account settings, the Product Provider will no longer be able to access your account. The Product Provider is responsible for deleting your Personal Information from its systems within its defined window. Please contact the Product Provider to ensure that your account has been properly terminated. - -**Data Security Disclaimer.** When you purchase or subscribe to a Developer Product, the Developer Product security and their custodianship of your data is the responsibility of the Product Provider. You are responsible for understanding the security considerations of the purchase and use of the Developer Product for your own security, risk and compliance considerations. - -### F. Rights to Developer Products - -The rights granted to you to use any Developer Product are personal to you, and are not transferrable to any third parties, such as your end users. Any rights to provide or resell Developer Products to third parties must be granted directly by the Product Provider. - -### G. Updates to Developer Products - -From time to time, GitHub.com may check with remote servers (hosted by GitHub or by third parties) for available updates to Developer Products, including but not limited to bug fixes or enhanced functionality. You agree that such updates will be automatically requested, downloaded, and installed without further notice to you. - -### H. Developer Product Blocking - -GitHub may block a Developer Product from our servers, or disable its functionality, for legal or policy reasons. In the event that we must block or disable a Developer Product, we will work with the Product Provider to notify affected users. - -### I. Disclaimer; Limitation of Liability; Release and Indemnification - -**Disclaimer.** Your use of Marketplace and any Developer Products obtained through Marketplace is at your sole risk. Other than as expressly stated, GitHub provides Marketplace and Developer Products “AS IS” and “AS AVAILABLE.” GitHub does not make or imply any warranties or commitments about Marketplace and Developer Products, including but not limited to the specific functionality available through Marketplace and Developer Products, their reliability, availability, or ability to meet your need. - -We reserve the right at any time and from time to time to modify or discontinue, temporarily or permanently, Marketplace (or any part of it) with or without notice. - -**Limitation of Liability.** You understand and agree that GitHub will not be liable to you or any third party for any loss of profits, use, goodwill, or data, or for any incidental, indirect, special, consequential or exemplary damages, however arising, that result from: (i) your use or inability to use Marketplace or any Developer Products; (ii) any modification, price change, suspension or discontinuance of Marketplace or Developer Products; (iii) Marketplace generally or the software or systems that make Marketplace available; (iv) unauthorized access to or alterations of your transmissions or data; (v) statements or conduct of any third party, Product Provider, or Developer Product on Marketplace; (vi) any other user interactions that you input or receive through your use of Marketplace; or (vii) any other matter relating to Marketplace. - -**Release and Indemnification.** If you have a dispute with one or more Product Providers, you agree to release GitHub from any and all claims, demands and damages (actual and consequential) of every kind and nature, known and unknown, arising out of or in any way connected with such disputes. - -You agree to indemnify us, defend us, and hold us harmless from and against any and all claims, liabilities, and expenses, including attorneys’ fees, arising out of your use of Marketplace, including but not limited to your violation of these Marketplace Terms, provided that GitHub (1) promptly gives you written notice of the claim, demand, suit or proceeding; (2) gives you sole control of the defense and settlement of the claim, demand, suit or proceeding (provided that you may not settle any claim, demand, suit or proceeding unless the settlement unconditionally releases GitHub of all liability); and (3) provides to you all reasonable assistance, at your expense. - -### J. Miscellanea - -1. **Governing Law.** You agree that these Marketplace Terms and your use of the Developer Products are governed under California law and any dispute related to the Developer Products must be brought in a tribunal of competent jurisdiction located in or near San Francisco, California. - -2. **Non-Assignability.** GitHub may assign or delegate these Marketplace Terms and/or the [GitHub's Privacy Statement](/articles/github-privacy-statement/), in whole or in part, to any person or entity at any time with or without your consent. You may not assign or delegate any rights or obligations under the Marketplace Terms or Privacy Statement without our prior written consent, and any unauthorized assignment and delegation by you is void. - -3. **Severability, No Waiver, and Survival.** If any part of these Marketplace Terms are held invalid or unenforceable, that portion of the Marketplace Terms will be construed to reflect the parties’ original intent. The remaining portions will remain in full force and effect. The failure of GitHub to exercise or enforce any right or provision of these Marketplace Terms shall not constitute a waiver of such right or provision. Our rights under these Marketplace Terms will survive any termination of these Marketplace Terms. - -4. **No Modifications; Complete Agreement.** These Marketplace Terms may only be modified by a written amendment signed by an authorized representative of GitHub, or by the posting by GitHub of a revised version. These Marketplace Terms, together with [GitHub's Privacy Statement](/articles/github-privacy-statement/), represent the complete and exclusive statement of the agreement between you and us. These Marketplace Terms supersede any proposal or prior agreement oral or written, and any other communications between you and GitHub relating to the subject matter of these terms. - -5. **Section Headings.** Throughout these Marketplace Terms, each section includes titles of the following terms and conditions. These section titles are not legally binding. - -6. **License to GitHub Policies.** These Marketplace Terms are licensed under this [Creative Commons Zero license](https://creativecommons.org/publicdomain/zero/1.0/). For details, see our [site-policy repository](https://github.com/github/site-policy#license). - -7. **Contact Us.** Questions about the Marketplace Terms? [Contact us](https://support.github.com/contact). diff --git a/content/github/site-policy/github-open-source-applications-terms-and-conditions.md b/content/github/site-policy/github-open-source-applications-terms-and-conditions.md deleted file mode 100644 index 4b2b6ba059f5..000000000000 --- a/content/github/site-policy/github-open-source-applications-terms-and-conditions.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: GitHub Open Source Applications Terms and Conditions -redirect_from: - - /articles/github-open-source-applications-terms-and-conditions -versions: - free-pro-team: '*' ---- - -These GitHub Open Source Applications Terms and Conditions ("Application Terms") are a legal agreement between you (either as an individual or on behalf of an entity) and GitHub, Inc. regarding your use of GitHub's applications, such as GitHub Desktop™ and associated documentation ("Software"). These Application Terms apply to the executable code version of the Software. Source code for the Software is available separately and free of charge under open source software license agreements. If you do not agree to all of the terms in these Application Terms, do not download, install, use, or copy the Software. - -### Connecting to GitHub - -If you configure the Software to work with one or more accounts on the GitHub.com website or with an instance of GitHub Enterprise, your use of the Software will also be governed by your applicable GitHub.com website Terms of Service and/or the license agreement applicable to your instance of GitHub Enterprise ("GitHub Terms"). - -Any use of the Software that violates your applicable GitHub Terms will also be a violation of these Application Terms. - -### Open Source Licenses and Notices - -The open source license for the Software is included in the "Open Source Notices" documentation that is included with the Software. That documentation also includes copies of all applicable open source licenses. - -To the extent the terms of the licenses applicable to open source components require GitHub to make an offer to provide source code in connection with the Software, such offer is hereby made, and you may exercise it by contacting GitHub: https://github.com/contact - -Unless otherwise agreed to in writing with GitHub, your agreement with GitHub will always include, at a minimum, these Application Terms. Open source software licenses for the Software's source code constitute separate written agreements. To the limited extent that the open source software licenses expressly supersede these Application Terms, the open source licenses govern your agreement with GitHub for the use of the Software or specific included components of the Software. - -### GitHub's Logos - -The license grant included with the Software is not for GitHub's trademarks, which include the Software logo designs. GitHub reserves all trademark and copyright rights in and to all GitHub trademarks. GitHub's logos include, for instance, the stylized designs that include "logo" in the file title in the "logos" folder. - -The names GitHub, GitHub Desktop, GitHub for Mac, GitHub for Windows, Atom, the Octocat, and related GitHub logos and/or stylized names are trademarks of GitHub. You agree not to display or use these trademarks in any manner without GitHub's prior, written permission, except as allowed by GitHub's Logos and Usage Policy: https://github.com/logos. - -### Privacy - -The Software may collect personal information. You may control what information the Software collects in the settings panel. If the Software does collect personal information on GitHub's behalf, GitHub will process that information in accordance with the [GitHub Privacy Statement](/articles/github-privacy-statement/). - -### Additional Services - -**Auto-Update Services** - -The Software may include an auto-update service ("Service"). If you choose to use the Service or you download Software that automatically enables the Service, GitHub will automatically update the Software when a new version is available. - -**Disclaimers and Limitations of Liability** - -THE SERVICE IS PROVIDED ON AN "AS IS" BASIS, AND NO WARRANTY, EITHER EXPRESS OR IMPLIED, IS GIVEN. YOUR USE OF THE SERVICE IS AT YOUR SOLE RISK. GitHub does not warrant that (i) the Service will meet your specific requirements; (ii) the Service is fully compatible with any particular platform; (iii) your use of the Service will be uninterrupted, timely, secure, or error-free; (iv) the results that may be obtained from the use of the Service will be accurate or reliable; (v) the quality of any products, services, information, or other material purchased or obtained by you through the Service will meet your expectations; or (vi) any errors in the Service will be corrected. - -YOU EXPRESSLY UNDERSTAND AND AGREE THAT GITHUB SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES, INCLUDING BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER INTANGIBLE LOSSES (EVEN IF GITHUB HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES) RELATED TO THE SERVICE, including, for example: (i) the use or the inability to use the Service; (ii) the cost of procurement of substitute goods and services resulting from any goods, data, information or services purchased or obtained or messages received or transactions entered into through or from the Service; (iii) unauthorized access to or alteration of your transmissions or data; (iv) statements or conduct of any third-party on the Service; (v) or any other matter relating to the Service. - -GitHub reserves the right at any time and from time to time to modify or discontinue, temporarily or permanently, the Service (or any part thereof) with or without notice. GitHub shall not be liable to you or to any third-party for any price change, suspension or discontinuance of the Service. - -### Miscellanea - -1. No Waiver. The failure of GitHub to exercise or enforce any right or provision of these Application Terms shall not constitute a waiver of such right or provision. - -2. Entire Agreement. These Application Terms, together with any applicable Privacy Notices, constitutes the entire agreement between you and GitHub and governs your use of the Software, superseding any prior agreements between you and GitHub (including, but not limited to, any prior versions of the Application Terms). - -3. Governing Law. You agree that these Application Terms and your use of the Software are governed under California law and any dispute related to the Software must be brought in a tribunal of competent jurisdiction located in or near San Francisco, California. - -4. Third-Party Packages. The Software supports third-party "Packages" which may modify, add, remove, or alter the functionality of the Software. These Packages are not covered by these Application Terms and may include their own license which governs your use of that particular package. - -5. No Modifications; Complete Agreement. These Application Terms may only be modified by a written amendment signed by an authorized representative of GitHub, or by the posting by GitHub of a revised version. These Application Terms, together with any applicable Open Source Licenses and Notices and GitHub's Privacy Statement, represent the complete and exclusive statement of the agreement between you and us. These Application Terms supersede any proposal or prior agreement oral or written, and any other communications between you and GitHub relating to the subject matter of these terms. - -6. License to GitHub Policies. These Application Terms are licensed under this [Creative Commons Zero license](https://creativecommons.org/publicdomain/zero/1.0/). For details, see our [site-policy repository](https://github.com/github/site-policy#license). - -7. Contact Us. Questions about the Terms of Service? [Contact us](https://support.github.com/contact). diff --git a/content/github/site-policy/github-pre-release-program.md b/content/github/site-policy/github-pre-release-program.md deleted file mode 100644 index dc6f74153f9e..000000000000 --- a/content/github/site-policy/github-pre-release-program.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: GitHub Pre-release Program -redirect_from: - - /articles/github-pre-release-program -versions: - free-pro-team: '*' ---- - -Thanks for signing up to participate in GitHub pre-release programs! As a trusted member of our community, your feedback on new and experimental features is important to us. In order to share these new products and services with you – many of which are still secret and in development – we’ll need you to agree to a special set of terms. Welcome to the Pre-release Program Agreement (“Agreement”). - -This Agreement is a legal agreement between you (“you”, "your") and GitHub, Inc. (“GitHub”, “we”, or “us”). Be sure to read this Agreement carefully – you can only be a pre-release program participant if you accept all the terms of this Agreement. By clicking the “Register for the GitHub Pre-release Program” button, or by participating as a pre-release program participant in any way – for example, by accessing information about GitHub products or services that aren’t yet available to the general public – you’re agreeing to be bound by all the terms of this Agreement. IF YOU’RE ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY, YOU REPRESENT THAT YOU HAVE THE LEGAL AUTHORITY TO BIND THE ENTITY TO THIS AGREEMENT, IN WHICH CASE "YOU" WILL MEAN THE ENTITY YOU REPRESENT. IF YOU DON’T HAVE SUCH AUTHORITY, OR IF YOU DON’T AGREE WITH THE TERMS AND CONDITIONS OF THIS AGREEMENT, YOU MUST NOT CLICK THE "REGISTER FOR THE GITHUB PRE-RELEASE PROGRAM" BUTTON, AND YOU CAN’T BE A PRE-RELEASE PROGRAM PARTICIPANT. IF YOU’RE A COMPANY OR OTHER LEGAL ENTITY, YOU REPRESENT THAT THE PERSON CLICKING THE "REGISTER FOR THE GITHUB PRE-RELEASE PROGRAM" BUTTON HAS THE AUTHORITY TO BIND YOU TO THIS AGREEMENT. - -### 1. GitHub.com’s Terms of Use or the GitHub Enterprise Software License Agreement Will Apply - - You need to have an account on GitHub.com or on a licensed instance of GitHub Enterprise in order to be a pre-release program participant. In addition to the GitHub.com Terms of Service or your applicable GitHub Enterprise License Agreement, as applicable, (the "Generally Applicable Terms"), by clicking the "Register for the GitHub Pre-release Program" button, you are also agreeing to be bound by this Agreement, such that both agreements will apply to you concurrently. In the event of a direct conflict between this Agreement and the Generally Applicable Terms, your Generally Applicable Terms will control, except with respect to any use of Pre-release Materials, in which case this Agreement will control. - -### 2. Confidentiality; Access to Pre-Release Materials - - As a pre-release program participant, you may get access to special information that isn’t available to the rest of the world. Due to the sensitive nature of this information, it’s important for us to make sure that you keep that information secret. - - You agree that any non-public information we give you, or that you may have access to as a pre-release program participant, will be considered GitHub’s confidential information (collectively, “Confidential Information”), regardless of whether it is marked or identified as such. You agree to only use such Confidential Information for the express purpose of testing and evaluation of the Pre-release Materials (the “Purpose”), and not for any other purpose. You should use the same degree of care as you would with your confidential information but no less than reasonable precautions to prevent any unauthorized use, disclosure, publication, or dissemination of our Confidential Information. You promise not to disclose, publish, or disseminate any Confidential Information to any third party other than your employees and contractors, and then only to the extent that: (i) they need to know the Confidential Information for the Purpose; (ii) you make them aware of the confidential nature of the Confidential Information; (iii) you remain responsible for the acts and omissions of such employees and contractors; and (iv) we don’t otherwise prohibit or restrict such disclosure. - - You understand that unauthorized disclosure or use of our Confidential Information could cause us irreparable harm, and significant injury that may be difficult for us to quantify. Accordingly, you agree that we’ll have the right to seek immediate injunctive relief to make sure you comply with this Agreement, in addition to any other rights and remedies we may have. If you are required by law, regulation or a valid binding order of a court of competent jurisdiction to disclose our Confidential Information, you may do so, but only if you notify us before you do, and do your best to limit such disclosure and to seek confidential, protective treatment of such information. - - The obligations in this Section 2 won’t apply to information that you can prove: (i) was generally available to the public before we disclosed it to you; (ii) became generally available to the public after we disclosed it to you, through no action or inaction on your part, or on the part of your employees or contractors; (iii) you knew about before we disclosed it to you; (iv) was disclosed to you by a third party, who didn’t have any confidentiality obligations with respect to it; (v) you independently developed without breach of any confidentiality obligation to us or any third party; or (vi) we gave you permission to disclose, in a writing signed by one of our authorized representatives. -If we give you access to any software, pre-release software or related documentation or materials, which may include videos or other forms of content (“Pre-release Materials”), then subject to your compliance with the terms and conditions of this Agreement and your Generally Applicable Terms, we hereby grant you a nonexclusive, nontransferable, revocable right and license to use the Pre-release Materials during the term of this Agreement, solely for the Purpose. If the Pre-release Materials are accompanied by a separate license agreement, you agree that the separate license agreement (in addition to any more restrictive provisions contained in this Agreement or your Generally Applicable Terms) will apply. You agree not to decompile, reverse engineer, disassemble, or otherwise reduce the Pre-release Materials to a human-perceivable form, and you promise not to modify, network, rent, lease, transmit, sell, or loan the Pre-release Materials, in whole or in part. You understand that we’re under no obligation to provide any Pre-release Materials to you, to provide you with updates, enhancements, or corrections to the Pre-release Materials, or to notify you of changes that we make to our products and services, now or in the future. - -### 3. Term and Termination - - This Agreement begins on the date you click “Agree”, and continues for a period of one (1) year. This Agreement will automatically renew for successive one-year terms unless either party gives written notice at least thirty (30) days before the current term expires that it wants to terminate, or one party terminates it earlier in accordance with this Section 3. - - Either you or GitHub may terminate this Agreement for any reason, without cause, upon thirty (30) days prior written notice to the other. This Agreement will terminate immediately, without the requirement of notice, if you breach any term of this Agreement or your Generally Applicable Terms. - - The rights and obligations in Sections 1, 2, and 4 through 17 will survive the termination or expiration of this Agreement. Upon termination or expiration of this Agreement all of the rights and licenses we granted you in this Agreement will immediately cease to exist, you will return (or, at our request, destroy) all of our Confidential Information and any copies (including electronic copies) which are in your possession or control, and you will certify in writing that you’ve complied with these requirements. - -### 4. Warranties and Disclaimers - - You warrant to us that you: (i) have the authority to execute this Agreement and to perform its obligations; (ii) will make no false or misleading statements or representations regarding GitHub or our products and services; and (iii) will not take on any obligation or responsibility, or make any representation, warranty, guarantee or endorsement to anyone on our behalf (including, without limitation, any of our products or services). - - YOU UNDERSTAND AND AGREE THAT ANY MATERIALS OR INFORMATION THAT WE GIVE YOU OR THAT YOU HAVE ACCESS TO UNDER THIS AGREEMENT (INCLUDING, WITHOUT LIMITATION, ANY CONFIDENTIAL INFORMATION OR PRE-RELEASE MATERIALS) ARE PROVIDED “AS IS”, AND WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. WE SPECIFICALLY DISCLAIM ANY AND ALL IMPLIED WARRANTIES OR CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. - -### 5. Indemnity - - We’ll be giving you access to lots of useful pre-release products, services, and information, such as the Pre-release Materials, and there are ways that you could use them improperly that could cause us harm. With that in mind, and since we can’t control the ways that you use what we give you, you agree that you will indemnify, defend and hold us harmless from and against any and all claims which may arise under or out of your participation in any pre-release program; your negligence or intentional misconduct; any misrepresentations you make with respect to us, or our products or services; or your violation of any part of this Agreement. - -### 6. Limitation of Liability - - IN NO EVENT WILL WE BE LIABLE TO YOU OR TO ANY THIRD PARTY FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, EXEMPLARY OR PUNITIVE DAMAGES, INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOST DATA, LOST PROFITS OR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, HOWEVER CAUSED AND UNDER ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, TORT (INCLUDING WITHOUT LIMITATION PRODUCTS LIABILITY, STRICT LIABILITY AND NEGLIGENCE), OR ANY OTHER THEORY, AND WHETHER OR NOT WE KNEW OR SHOULD HAVE KNOWN ABOUT THE POSSIBILITY OF SUCH DAMAGE. IN NO EVENT WILL OUR AGGREGATE LIABILITY TO YOU ARISING OUT OF OR RELATED TO THIS AGREEMENT FOR ANY CAUSE WHATSOEVER, AND REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT OR IN TORT, EXCEED THE GREATER OF (I) AMOUNTS YOU ACTUALLY PAID US UNDER THIS AGREEMENT; OR (II) FIVE HUNDRED DOLLARS ($500). THE FOREGOING LIMITATIONS WILL APPLY NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY STATED IN THIS AGREEMENT. - -### 7. Export Control - - You aren’t allowed to export or re-export any of our Confidential Information, except as authorized by United States law and the laws of the jurisdiction in which the Confidential Information was obtained. In particular, you aren’t allowed to export or re-export our Confidential Information into any U.S. embargoed countries, to anyone on the U.S. Treasury Department's list of Specially Designated Nationals, or to anyone on the U.S. Department of Commerce Denied Person's List or Entity List. By participating in a pre-release program or receiving any of our Confidential Information, you represent and warrant that you are not located in any such country or on any such list. - -### 8. Proprietary Rights - - You agree that GitHub and its licensors own all right, title and interest in and to the Pre-release Materials, and all other GitHub products and services; all information and data relating to their configurations and combinations; and all modifications to and derivative works of any of the foregoing. You agree not to remove, alter, cover or obfuscate any copyright or other proprietary rights notices we place on or embed in the Pre-release Materials, or any other GitHub products and services. - -### 9. Government Users - - If you are a Government entity, this Section applies to you. Certain of our Confidential Information may be considered “Commercial Items”, as that term is defined at 48 C.F.R. §2.101, consisting of “Commercial Computer Software” and “Commercial Computer Software Documentation”, as such terms are used in 48 C.F.R. §12.212 or 48 C.F.R. §227.7202, as applicable. Consistent with 48 C.F.R. §12.212 or 48 C.F.R. §227.7202-1 through 227.7202-4, as applicable, the Commercial Computer Software and Commercial Computer Software Documentation are being licensed to U.S. Government end users (a) only as Commercial Items and (b) with only those rights as are granted to all other end users pursuant to the terms and conditions herein. GitHub, Inc. 88 Colin P. Kelly Street, San Francisco, CA 94107. - -### 10. Independent Development - - Nothing in this Agreement will impair our right to develop, acquire, license, market, promote or distribute products, software or technologies that might compete with yours. - -### 11. Privacy - - As part of the development and evaluation of our pre-release programs, we need to collect information about how you use the services and how we can improve them. By agreeing to participate in GitHub's pre-release programs, you agree that you have read and consented to our [Full Privacy Policy](/articles/github-privacy-statement/). - - We may collect certain additional personal information from participants in the pre-release programs. For example, we may invite participants to send us feedback (as explained in Section 12). We might ask questions about each user's experiences, familiarity with the product, or demographic information. We use this information to improve our products and services, and we do not sell it to third parties or advertisers. You may decline to give us feedback, decline to answer specific questions, or contact us to delete or alter the information we have collected about you. - - GitHub's servers are located in the United States. We process and control your data in the United States. However, you alone are responsible for determining what personal data you submit to us. Please see our Privacy Policy for more information. - -### 12. Feedback - - We’re always trying to improve of products and services, and your feedback as a pre-release program participant will help us do that. If you choose to give us any ideas, know-how, algorithms, code contributions, suggestions, enhancement requests, recommendations or any other feedback for our products or services (collectively, “Feedback”), you acknowledge and agree that GitHub will have a royalty-free, fully paid-up, worldwide, transferable, sub-licensable, irrevocable and perpetual license to implement, use, modify, commercially exploit and/or incorporate the Feedback into our products, services, and documentation. - -### 13. Independent Contractors - - The parties to this Agreement are independent contractors. Neither party will be deemed to be an employee, agent, partner, franchisor, franchisee or legal representative of the other for any purpose and neither party will have any right, power or authority to create any obligation or responsibility on behalf of the other. - -### 14. Assignment - - You aren’t allowed to assign or transfer this Agreement, or any of your rights under it, in whole or in part, by operation of law or otherwise, without our prior written consent. - -### 15. Governing Law and Venue - - This Agreement will be interpreted and construed in accordance with the laws of the State of California, without regard to conflict of law principles. All disputes arising out of this Agreement will be subject to the exclusive jurisdiction of the state and federal courts located in San Francisco County, California, and each party hereby consents to personal jurisdiction there. - -### 16. Amendments; Waivers; No Third Party Beneficiaries - - This Agreement may not be changed, except by a writing signed by both parties. Any waiver of the provisions of this Agreement or of a party's rights or remedies under this Agreement must be in writing to be effective. If any term, condition, or provision in this Agreement is found to be invalid or unenforceable, the remaining terms will continue to be valid and enforceable to the fullest extent permitted by law. We each expressly agree that there are no third party beneficiaries to this Agreement. - -### 17. Entire Agreement - - This Agreement and your Generally Applicable Terms contain the entire agreement of the parties with respect to its subject matter and supersede all prior communications, representations, understandings and agreements, whether written or oral. The terms or conditions of any of your purchase orders, acknowledgements, or other documents that you send us in connection with this Agreement will be null and void, and of no effect. diff --git a/content/github/site-policy/github-privacy-statement.md b/content/github/site-policy/github-privacy-statement.md deleted file mode 100644 index 849628ab62ae..000000000000 --- a/content/github/site-policy/github-privacy-statement.md +++ /dev/null @@ -1,321 +0,0 @@ ---- -title: GitHub Privacy Statement -redirect_from: - - /privacy/ - - /privacy-policy/ - - /privacy-statement/ - - /github-privacy-policy/ - - /articles/github-privacy-policy/ - - /articles/github-privacy-statement/ -versions: - free-pro-team: '*' ---- - -Effective date: October 2, 2020 - -Thanks for entrusting GitHub Inc. (“GitHub”, “we”) with your source code, your projects, and your personal information. Holding on to your private information is a serious responsibility, and we want you to know how we're handling it. - -All capitalized terms have their definition in [GitHub’s Terms of Service](/github/site-policy/github-terms-of-service), unless otherwise noted here. - - -### The short version - -We use your personal information as this Privacy Statement describes. No matter where you are, where you live, or what your citizenship is, we provide the same high standard of privacy protection to all our users around the world, regardless of their country of origin or location. - -Of course, the short version and the Summary below don't tell you everything, so please read on for more details. - -### Summary - -| Section | What can you find there? | -|---|---| -| [What information GitHub collects](#what-information-github-collects) | GitHub collects information directly from you for your registration, payment, transactions, and user profile. We also automatically collect from you your usage information, cookies and similar technologies, and device information, subject, where necessary, to your consent. GitHub may also collect User Personal Information from third parties. We only collect the minimum amount of personal information necessary from you, unless you choose to provide more. | -| [What information GitHub does _not_ collect](#what-information-github-does-not-collect) | We don’t knowingly collect information from children under 13, and we don’t collect [Sensitive Personal Information](https://gdpr-info.eu/art-9-gdpr/). | -| [How GitHub uses your information](#how-github-uses-your-information) | In this section, we describe the ways in which we use your information, including to provide you the Service, to communicate with you, for security and compliance purposes, and to improve our Service. We also describe the legal basis upon which we process your information, where legally required. | -| [How we share the information we collect](#how-we-share-the-information-we-collect) | We may share your information with third parties under one of the following circumstances: with your consent, with our service providers, for security purposes, to comply with our legal obligations, or when there is a change of control or sale of corporate entities or business units. We do not sell your personal information and we do not host advertising on GitHub. You can see a list of the service providers that access your information. | -| [Other important information](#other-important-information) | We provide additional information specific to repository contents, public information, and Organizations on GitHub. | -| [Additional services](#additional-services) | We provide information about additional service offerings, including third-party applications, GitHub Pages, and GitHub applications. | -| [How you can access and control the information we collect](#how-you-can-access-and-control-the-information-we-collect) | We provide ways for you to access, alter, or delete your personal information. | -| [Our use of cookies and tracking](#our-use-of-cookies-and-tracking) | We use cookies for the overall functionality of our Website, and we use a small number of tracking and analytics services on a few parts of our site. We offer a page that makes this very transparent. Please see this section for more information. | -| [How GitHub secures your information](#how-github-secures-your-information) | We take all measures reasonably necessary to protect the confidentiality, integrity, and availability of your personal information on GitHub and to protect the resilience of our servers. | -| [GitHub's global privacy practices](#githubs-global-privacy-practices) | We provide the same high standard of privacy protection to all our users around the world. | -| [How we communicate with you](#how-we-communicate-with-you) | We communicate with you by email. You can control the way we contact you in your account settings, or by contacting us. | -| [Resolving complaints](#resolving-complaints) | In the unlikely event that we are unable to resolve a privacy concern quickly and thoroughly, we provide a path of dispute resolution. | -| [Changes to our Privacy Statement](#changes-to-our-privacy-statement) | We notify you of material changes to this Privacy Statement 30 days before any such changes become effective. You may also track changes in our Site Policy repository. | -| [License](#license) | This Privacy Statement is licensed under the [Creative Commons Zero license](https://creativecommons.org/publicdomain/zero/1.0/). | -| [Contacting GitHub](#contacting-github) | Please feel free to contact us if you have questions about our Privacy Statement. | -| [Translations](#translations) | We provide links to some translations of the Privacy Statement. | - -## GitHub Privacy Statement - -### What information GitHub collects - -"**User Personal Information**" is any information about one of our Users which could, alone or together with other information, personally identify them or otherwise be reasonably linked or connected with them. Information such as a username and password, an email address, a real name, an Internet protocol (IP) address, and a photograph are examples of “User Personal Information.” - -User Personal Information does not include aggregated, non-personally identifying information that does not identify a User or cannot otherwise be reasonably linked or connected with them. We may use such aggregated, non-personally identifying information for research purposes and to operate, analyze, improve, and optimize our Website and Service. - -#### Information users provide directly to GitHub - -##### Registration information -We require some basic information at the time of account creation. When you create your own username and password, we ask you for a valid email address. - -##### Payment information -If you sign on to a paid Account with us, send funds through the GitHub Sponsors Program, or buy an application on GitHub Marketplace, we collect your full name, address, and credit card information or PayPal information. Please note, GitHub does not process or store your credit card information or PayPal information, but our third-party payment processor does. - -If you list and sell an application on [GitHub Marketplace](https://github.com/marketplace), we require your banking information. If you raise funds through the [GitHub Sponsors Program](https://github.com/sponsors), we require some [additional information](/github/supporting-the-open-source-community-with-github-sponsors/becoming-a-sponsored-developer#submitting-your-bank-information) through the registration process for you to participate in and receive funds through those services and for compliance purposes. - -##### Profile information -You may choose to give us more information for your Account profile, such as your full name, an avatar which may include a photograph, your biography, your location, your company, and a URL to a third-party website. This information may include User Personal Information. Please note that your profile information may be visible to other Users of our Service. - -#### Information GitHub automatically collects from your use of the Service - -##### Transactional information -If you have a paid Account with us, sell an application listed on [GitHub Marketplace](https://github.com/marketplace), or raise funds through the [GitHub Sponsors Program](https://github.com/sponsors), we automatically collect certain information about your transactions on the Service, such as the date, time, and amount charged. - -##### Usage information -If you're accessing our Service or Website, we automatically collect the same basic information that most services collect, subject, where necessary, to your consent. This includes information about how you use the Service, such as the pages you view, the referring site, your IP address and session information, and the date and time of each request. This is information we collect from every visitor to the Website, whether they have an Account or not. This information may include User Personal information. - -##### Cookies and similar technologies information -As further described below, and subject, where applicable, to your consent, we automatically collect information from cookies and similar technologies (such as cookie ID and settings) to keep you logged in, to remember your preferences, and to identify you and your device. - -##### Device information -We may collect certain information about your device, such as its IP address, browser or client application information, language preference, operating system and application version, device type and ID, and device model and manufacturer. This information may include User Personal information. - -#### Information we collect from third parties - -GitHub may collect User Personal Information from third parties. For example, this may happen if you sign up for training or to receive information about GitHub from one of our vendors, partners, or affiliates. GitHub does not purchase User Personal Information from third-party data brokers. - -### What information GitHub does not collect - -We do not intentionally collect “**[Sensitive Personal Information](https://gdpr-info.eu/art-9-gdpr/)**”, such as personal data revealing racial or ethnic origin, political opinions, religious or philosophical beliefs, or trade union membership, and the processing of genetic data, biometric data for the purpose of uniquely identifying a natural person, data concerning health or data concerning a natural person’s sex life or sexual orientation. If you choose to store any Sensitive Personal Information on our servers, you are responsible for complying with any regulatory controls regarding that data. - -If you are a child under the age of 13, you may not have an Account on GitHub. GitHub does not knowingly collect information from or direct any of our content specifically to children under 13. If we learn or have reason to suspect that you are a User who is under the age of 13, we will have to close your Account. We don't want to discourage you from learning to code, but those are the rules. Please see our [Terms of Service](/github/site-policy/github-terms-of-service) for information about Account termination. Different countries may have different minimum age limits, and if you are below the minimum age for providing consent for data collection in your country, you may not have an Account on GitHub. - -We do not intentionally collect User Personal Information that is **stored in your repositories** or other free-form content inputs. Any personal information within a user's repository is the responsibility of the repository owner. - -### How GitHub uses your information - -- We may use your information for the following purposes: -- We use your [Registration Information](#registration-information) to create your account, and to provide you the Service. -- We use your [Payment Information](#payment-information) to provide you with the Paid Account service, the Marketplace service, the Sponsors Program, or any other GitHub paid service you request. -- We use your User Personal Information, specifically your username, to identify you on GitHub. -- We use your [Profile Information](#profile-information) to fill out your Account profile and to share that profile with other users if you ask us to. -- We use your email address to communicate with you, if you've said that's okay, **and only for the reasons you’ve said that’s okay**. Please see our section on [email communication](#how-we-communicate-with-you) for more information. -- We use User Personal Information to respond to support requests. -- We use User Personal Information and other data to make recommendations for you, such as to suggest projects you may want to follow or contribute to. We learn from your public behavior on GitHub—such as the projects you star—to determine your coding interests, and we recommend similar projects. These recommendations are automated decisions, but they have no legal impact on your rights. -- We may use User Personal Information to invite you to take part in surveys, beta programs, or other research projects, subject, where necessary, to your consent . -- We use [Usage Information](#usage-information) and [Device Information](#device-information) to better understand how our Users use GitHub and to improve our Website and Service. -- We may use your User Personal Information if it is necessary for security purposes or to investigate possible fraud or attempts to harm GitHub or our Users. -- We may use your User Personal Information to comply with our legal obligations, protect our intellectual property, and enforce our [Terms of Service](/github/site-policy/github-terms-of-service). -- We limit our use of your User Personal Information to the purposes listed in this Privacy Statement. If we need to use your User Personal Information for other purposes, we will ask your permission first. You can always see what information we have, how we're using it, and what permissions you have given us in your [user profile](https://github.com/settings/admin). - -#### Our legal bases for processing information - -To the extent that our processing of your User Personal Information is subject to certain international laws (including, but not limited to, the European Union's General Data Protection Regulation (GDPR)), GitHub is required to notify you about the legal basis on which we process User Personal Information. GitHub processes User Personal Information on the following legal bases: - -- Contract Performance: - * When you create a GitHub Account, you provide your [Registration Information](#registration-information). We require this information for you to enter into the Terms of Service agreement with us, and we process that information on the basis of performing that contract. We also process your username and email address on other legal bases, as described below. - * If you have a paid Account with us, we collect and process additional [Payment Information](#payment-information) on the basis of performing that contract. - * When you buy or sell an application listed on our Marketplace or, when you send or receive funds through the GitHub Sponsors Program, we process [Payment Information](#payment-information) and additional elements in order to perform the contract that applies to those services. -- Consent: - * We rely on your consent to use your User Personal Information under the following circumstances: when you fill out the information in your [user profile](https://github.com/settings/admin); when you decide to participate in a GitHub training, research project, beta program, or survey; and for marketing purposes, where applicable. All of this User Personal Information is entirely optional, and you have the ability to access, modify, and delete it at any time. While you are not able to delete your email address entirely, you can make it private. You may withdraw your consent at any time. -- Legitimate Interests: - * Generally, the remainder of the processing of User Personal Information we perform is necessary for the purposes of our legitimate interest, for example, for legal compliance purposes, security purposes, or to maintain ongoing confidentiality, integrity, availability, and resilience of GitHub’s systems, Website, and Service. -- If you would like to request deletion of data we process on the basis of consent or if you object to our processing of personal information, please use our [Privacy contact form](https://support.github.com/contact/privacy). - -### How we share the information we collect - -We may share your User Personal Information with third parties under one of the following circumstances: - -#### With your consent -We share your User Personal Information, if you consent, after letting you know what information will be shared, with whom, and why. For example, if you purchase an application listed on our Marketplace, we share your username to allow the application Developer to provide you with services. Additionally, you may direct us through your actions on GitHub to share your User Personal Information. For example, if you join an Organization, you indicate your willingness to provide the owner of the Organization with the ability to view your activity in the Organization’s access log. - -#### With service providers -We share User Personal Information with a limited number of service providers who process it on our behalf to provide or improve our Service, and who have agreed to privacy restrictions similar to the ones in our Privacy Statement by signing data protection agreements or making similar commitments. Our service providers perform payment processing, customer support ticketing, network data transmission, security, and other similar services. While GitHub processes all User Personal Information in the United States, our service providers may process data outside of the United States or the European Union. If you would like to know who our service providers are, please see our page on [Subprocessors](/github/site-policy/github-subprocessors-and-cookies). - -#### For security purposes -If you are a member of an Organization, GitHub may share your username, [Usage Information](#usage-information), and [Device Information](#device-information) associated with that Organization with an owner and/or administrator of the Organization, to the extent that such information is provided only to investigate or respond to a security incident that affects or compromises the security of that particular Organization. - -#### For legal disclosure -GitHub strives for transparency in complying with legal process and legal obligations. Unless prevented from doing so by law or court order, or in rare, exigent circumstances, we make a reasonable effort to notify users of any legally compelled or required disclosure of their information. GitHub may disclose User Personal Information or other information we collect about you to law enforcement if required in response to a valid subpoena, court order, search warrant, a similar government order, or when we believe in good faith that disclosure is necessary to comply with our legal obligations, to protect our property or rights, or those of third parties or the public at large. - -For more information about our disclosure in response to legal requests, see our [Guidelines for Legal Requests of User Data](/github/site-policy/guidelines-for-legal-requests-of-user-data). - -#### Change in control or sale -We may share User Personal Information if we are involved in a merger, sale, or acquisition of corporate entities or business units. If any such change of ownership happens, we will ensure that it is under terms that preserve the confidentiality of User Personal Information, and we will notify you on our Website or by email before any transfer of your User Personal Information. The organization receiving any User Personal Information will have to honor any promises we made in our Privacy Statement or Terms of Service. - -#### Aggregate, non-personally identifying information -We share certain aggregated, non-personally identifying information with others about how our users, collectively, use GitHub, or how our users respond to our other offerings, such as our conferences or events. For example, [we may compile statistics on the open source activity across GitHub](https://octoverse.github.com/). - -We **do not** sell your User Personal Information for monetary or other consideration. - -Please note: The California Consumer Privacy Act of 2018 (“CCPA”) requires businesses to state in their privacy policy whether or not they disclose personal information in exchange for monetary or other valuable consideration. While CCPA only covers California residents, we voluntarily extend its core rights for people to control their data to _all_ of our users, not just those who live in California. You can learn more about the CCPA and how we comply with it [here](/github/site-policy/githubs-notice-about-the-california-consumer-privacy-act). - -### Other important information - -#### Repository contents - -GitHub personnel [do not access private repositories unless required to](/github/site-policy/github-terms-of-service#e-private-repositories) for security purposes, to assist the repository owner with a support matter, to maintain the integrity of the Service, or to comply with our legal obligations. However, while we do not generally search for content in your repositories, we may scan our servers and content to detect certain tokens or security signatures, known active malware, or other content known to violate our Terms, such as violent extremist or terrorist content or child exploitation imagery based on algorithmic fingerprinting techniques. Our Terms of Service provides [more details](/github/site-policy/github-terms-of-service#e-private-repositories). - -If your repository is public, anyone may view its contents. If you include private, confidential or [Sensitive Personal Information](https://gdpr-info.eu/art-9-gdpr/), such as email addresses or passwords, in your public repository, that information may be indexed by search engines or used by third parties. - -Please see more about [User Personal Information in public repositories](/github/site-policy/github-privacy-statement#public-information-on-github). - -#### Public information on GitHub - -Many of GitHub services and features are public-facing. If your content is public-facing, third parties may access and use it in compliance with our Terms of Service, such as by viewing your profile or repositories or pulling data via our API. We do not sell that content; it is yours. However, we do allow third parties, such as research organizations or archives, to compile public-facing GitHub information. Other third parties, such as data brokers, have been known to scrape GitHub and compile data as well. - -Your User Personal Information associated with your content could be gathered by third parties in these compilations of GitHub data. If you do not want your User Personal Information to appear in third parties’ compilations of GitHub data, please do not make your User Personal Information publicly available and be sure to [configure your email address to be private in your user profile](https://github.com/settings/emails) and in your [git commit settings](/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address). We currently set Users' email address to private by default, but legacy GitHub Users may need to update their settings. - -If you would like to compile GitHub data, you must comply with our Terms of Service regarding [scraping](/github/site-policy/github-acceptable-use-policies#5-scraping-and-api-usage-restrictions) and [privacy](/github/site-policy/github-acceptable-use-policies#6-privacy), and you may only use any public-facing User Personal Information you gather for the purpose for which our user authorized it. For example, where a GitHub user has made an email address public-facing for the purpose of identification and attribution, do not use that email address for commercial advertising. We expect you to reasonably secure any User Personal Information you have gathered from GitHub, and to respond promptly to complaints, removal requests, and "do not contact" requests from GitHub or GitHub users. - -Similarly, projects on GitHub may include publicly available User Personal Information collected as part of the collaborative process. If you have a complaint about any User Personal Information on GitHub, please see our section on [resolving complaints](/github/site-policy/github-privacy-statement#resolving-complaints). - - -#### Organizations - -You may indicate, through your actions on GitHub, that you are willing to share your User Personal Information. If you collaborate on or become a member of an Organization, then its Account owners may receive your User Personal Information. When you accept an invitation to an Organization, you will be notified of the types of information owners may be able to see (for more information, see [About Organization Membership](/github/setting-up-and-managing-your-github-user-account/about-organization-membership)). If you accept an invitation to an Organization with a [verified domain](/github/setting-up-and-managing-organizations-and-teams/verifying-your-organizations-domain), then the owners of that Organization will be able to see your full email address(es) within that Organization's verified domain(s). - -Please note, GitHub may share your username, [Usage Information](#usage-information), and [Device Information](#device-information) with the owner(s) of the Organization you are a member of, to the extent that your User Personal Information is provided only to investigate or respond to a security incident that affects or compromises the security of that particular Organization. - -If you collaborate on or become a member of an Account that has agreed to the [Corporate Terms of Service](/github/site-policy/github-corporate-terms-of-service) and a Data Protection Addendum (DPA) to this Privacy Statement, then that DPA governs in the event of any conflicts between this Privacy Statement and the DPA with respect to your activity in the Account. - -Please contact the Account owners for more information about how they might process your User Personal Information in their Organization and the ways for you to access, update, alter, or delete the User Personal Information stored in the Account. - -### Additional services - -#### Third party applications - -You have the option of enabling or adding third-party applications, known as "Developer Products," to your Account. These Developer Products are not necessary for your use of GitHub. We will share your User Personal Information with third parties when you ask us to, such as by purchasing a Developer Product from the Marketplace; however, you are responsible for your use of the third-party Developer Product and for the amount of User Personal Information you choose to share with it. You can check our [API documentation](/v3/users/) to see what information is provided when you authenticate into a Developer Product using your GitHub profile. - -#### GitHub Pages - -If you create a GitHub Pages website, it is your responsibility to post a privacy statement that accurately describes how you collect, use, and share personal information and other visitor information, and how you comply with applicable data privacy laws, rules, and regulations. Please note that GitHub may collect User Personal Information from visitors to your GitHub Pages website, including logs of visitor IP addresses, to comply with legal obligations, and to maintain the security and integrity of the Website and the Service. - -#### GitHub applications - -You can also add applications from GitHub, such as our Desktop app, our Atom application, or other application and account features, to your Account. These applications each have their own terms and may collect different kinds of User Personal Information; however, all GitHub applications are subject to this Privacy Statement, and we collect the amount of User Personal Information necessary, and use it only for the purpose for which you have given it to us. - -### How you can access and control the information we collect - -If you're already a GitHub user, you may access, update, alter, or delete your basic user profile information by [editing your user profile](https://github.com/settings/profile) or contacting [GitHub Support](https://support.github.com/contact) or [GitHub Premium Support](https://enterprise.githubsupport.com/hc/en-us). You can control the information we collect about you by limiting what information is in your profile, by keeping your information current, or by contacting [GitHub Support](https://support.github.com/contact) or [GitHub Premium Support](https://enterprise.githubsupport.com/hc/en-us). - -If GitHub processes information about you, such as information [GitHub receives from third parties](#information-we-collect-from-third-parties), and you do not have an account, then you may, subject to applicable law, access, update, alter, delete, or object to the processing of your personal information by contacting [GitHub Support](https://support.github.com/contact) or [GitHub Premium Support](https://enterprise.githubsupport.com/hc/en-us). - -#### Data portability - -As a GitHub User, you can always take your data with you. You can [clone your repositories to your desktop](/desktop/contributing-to-projects/cloning-a-repository-from-github-to-github-desktop), for example, or you can use our [Data Portability tools](https://developer.github.com/changes/2018-05-24-user-migration-api/) to download information we have about you. - -#### Data retention and deletion of data - -Generally, GitHub retains User Personal Information for as long as your account is active or as needed to provide you services. - -If you would like to cancel your account or delete your User Personal Information, you may do so in your [user profile](https://github.com/settings/admin). We retain and use your information as necessary to comply with our legal obligations, resolve disputes, and enforce our agreements, but barring legal requirements, we will delete your full profile (within reason) within 90 days of your request. You may contact [GitHub Support](https://support.github.com/contact) or [GitHub Premium Support](https://enterprise.githubsupport.com/hc/en-us) to request the erasure of the data we process on the basis of consent within 30 days. - -After an account has been deleted, certain data, such as contributions to other Users' repositories and comments in others' issues, will remain. However, we will delete or de-identify your User Personal Information, including your username and email address, from the author field of issues, pull requests, and comments by associating them with a [ghost user](https://github.com/ghost). - -That said, the email address you have supplied [via your Git commit settings](/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address) will always be associated with your commits in the Git system. If you choose to make your email address private, you should also update your Git commit settings. We are unable to change or delete data in the Git commit history — the Git software is designed to maintain a record — but we do enable you to control what information you put in that record. - -### Our use of cookies and tracking - -#### Cookies - -GitHub uses cookies and similar technologies (collectively, “cookies”) to make interactions with our service easy and meaningful. Cookies are small text files that websites often store on computer hard drives or mobile devices of visitors. We use cookies to provide you our services, for example, to keep you logged in, remember your preferences, identify your device for security purposes, and provide information for future development of GitHub. By using our Website, you agree that we can place these types of cookies on your computer or device. If you disable your browser or device’s ability to accept these cookies, you will not be able to log in or use GitHub’s services. - -We provide more information about [cookies on GitHub](/github/site-policy/github-subprocessors-and-cookies#cookies-on-github) on our [GitHub Subprocessors and Cookies](/github/site-policy/github-subprocessors-and-cookies) page that describes the cookies we set, the needs we have for those cookies, and the expiration of such cookies. It also lists our third-party analytics providers and how you can control your cookie preference settings for such cookies. - -#### Tracking and analytics - -We use a number of third-party analytics and service providers to help us evaluate our Users' use of GitHub, compile statistical reports on activity, and improve our content and Website performance. We only use these third-party analytics providers on certain areas of our Website, and all of them have signed data protection agreements with us that limit the type of User Personal Information they can collect and the purpose for which they can process the information. In addition, we use our own internal analytics software to provide features and improve our content and performance. - -Some browsers have incorporated "Do Not Track" (DNT) features that can send a signal to the websites you visit indicating you do not wish to be tracked. GitHub responds to browser DNT signals and follows the [W3C standard for responding to DNT signals](https://www.w3.org/TR/tracking-dnt/). If you have not enabled DNT on a browser that supports it, cookies on some parts of our Website will track your online browsing activity on other online services over time, though we do not permit third parties other than our analytics and service providers to track GitHub Users' activity over time on GitHub. You can read more about DNT in our [Tracking on GitHub](/github/site-policy/github-subprocessors-and-cookies#tracking-on-github) section of our [GitHub Subprocessors and Cookies](/github/site-policy/github-subprocessors-and-cookies) page. - -### How GitHub secures your information - -GitHub takes all measures reasonably necessary to protect User Personal Information from unauthorized access, alteration, or destruction; maintain data accuracy; and help ensure the appropriate use of User Personal Information. - -GitHub enforces a written security information program. Our program: -- aligns with industry recognized frameworks; -- includes security safeguards reasonably designed to protect the confidentiality, integrity, availability, and resilience of our Users' data; -- is appropriate to the nature, size, and complexity of GitHub’s business operations; -- includes incident response and data breach notification processes; and -- complies with applicable information security-related laws and regulations in the geographic regions where GitHub does business. - -In the event of a data breach that affects your User Personal Information, we will act promptly to mitigate the impact of a breach and notify any affected Users without undue delay. - -Transmission of data on GitHub is encrypted using SSH, HTTPS (TLS), and git repository content is encrypted at rest. We manage our own cages and racks at top-tier data centers with high level of physical and network security, and when data is stored with a third-party storage provider, it is encrypted. - -No method of transmission, or method of electronic storage, is 100% secure. Therefore, we cannot guarantee its absolute security. For more information, see our [security disclosures](https://github.com/security). - -### GitHub's global privacy practices - -GitHub, Inc. and, for those in the European Economic Area, the United Kingdom, and Switzerland, GitHub B.V. are the controllers responsible for the processing of your personal information in connection with the Service, except (a) with respect to personal information that was added to a repository by its contributors, in which case the owner of that repository is the controller and GitHub is the processor (or, if the owner acts as a processor, GitHub will be the subprocessor); or (b) when you and GitHub have entered into a separate agreement that covers data privacy (such as a Data Processing Agreement). - -Our addresses are: - -- GitHub, Inc., 88 Colin P. Kelly Jr. Street, San Francisco, CA 94107. -- GitHub B.V., Vijzelstraat 68-72, 1017 HL Amsterdam, The Netherlands. - -We store and process the information that we collect in the United States in accordance with this Privacy Statement, though our service providers may store and process data outside the United States. However, we understand that we have Users from different countries and regions with different privacy expectations, and we try to meet those needs even when the United States does not have the same privacy framework as other countries. - -We provide the same high standard of privacy protection—as described in this Privacy Statement—to all our users around the world, regardless of their country of origin or location, and we are proud of the levels of notice, choice, accountability, security, data integrity, access, and recourse we provide. We work hard to comply with the applicable data privacy laws wherever we do business, working with our Data Protection Officer as part of a cross-functional team that oversees our privacy compliance efforts. Additionally, if our vendors or affiliates have access to User Personal Information, they must sign agreements that require them to comply with our privacy policies and with applicable data privacy laws. - -In particular: - - - GitHub provides clear methods of unambiguous, informed, specific, and freely given consent at the time of data collection, when we collect your User Personal Information using consent as a basis. - - We collect only the minimum amount of User Personal Information necessary for our purposes, unless you choose to provide more. We encourage you to only give us the amount of data you are comfortable sharing. - - We offer you simple methods of accessing, altering, or deleting the User Personal Information we have collected, where legally permitted. - - We provide our Users notice, choice, accountability, security, and access regarding their User Personal Information, and we limit the purpose for processing it. We also provide our Users a method of recourse and enforcement. - -#### Cross-border data transfers - -GitHub processes personal information both inside and outside of the United States and relies on Standard Contractual Clauses as the legally provided mechanism to lawfully transfer data from the European Economic Area, the United Kingdom, and Switzerland to the United States. In addition, GitHub is certified to the EU-US and Swiss-US Privacy Shield Frameworks. To learn more about our cross-border data transfers, see our [Global Privacy Practices](/github/site-policy/global-privacy-practices). - -### How we communicate with you - -We use your email address to communicate with you, if you've said that's okay, **and only for the reasons you’ve said that’s okay**. For example, if you contact our Support team with a request, we respond to you via email. You have a lot of control over how your email address is used and shared on and through GitHub. You may manage your communication preferences in your [user profile](https://github.com/settings/emails). - -By design, the Git version control system associates many actions with a User's email address, such as commit messages. We are not able to change many aspects of the Git system. If you would like your email address to remain private, even when you’re commenting on public repositories, [you can create a private email address in your user profile](https://github.com/settings/emails). You should also [update your local Git configuration to use your private email address](/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address). This will not change how we contact you, but it will affect how others see you. We set current Users' email address private by default, but legacy GitHub Users may need to update their settings. Please see more about email addresses in commit messages [here](/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address). - -Depending on your [email settings](https://github.com/settings/emails), GitHub may occasionally send notification emails about changes in a repository you’re watching, new features, requests for feedback, important policy changes, or to offer customer support. We also send marketing emails, based on your choices and in accordance with applicable laws and regulations. There's an “unsubscribe” link located at the bottom of each of the marketing emails we send you. Please note that you cannot opt out of receiving important communications from us, such as emails from our Support team or system emails, but you can configure your notifications settings in your profile to opt out of other communications. - -Our emails may contain a pixel tag, which is a small, clear image that can tell us whether or not you have opened an email and what your IP address is. We use this pixel tag to make our email more effective for you and to make sure we’re not sending you unwanted email. - -### Resolving complaints - -If you have concerns about the way GitHub is handling your User Personal Information, please let us know immediately. We want to help. You may contact us by filling out the [Privacy contact form](https://support.github.com/contact/privacy). You may also email us directly at privacy@github.com with the subject line "Privacy Concerns." We will respond promptly — within 45 days at the latest. - -You may also contact our Data Protection Officer directly. - -| Our United States HQ | Our EU Office | -|---|---| -| GitHub Data Protection Officer | GitHub BV | -| 88 Colin P. Kelly Jr. St. | Vijzelstraat 68-72 | -| San Francisco, CA 94107 | 1017 HL Amsterdam | -| United States | The Netherlands | -| privacy@github.com | privacy@github.com | - -#### Dispute resolution process - -In the unlikely event that a dispute arises between you and GitHub regarding our handling of your User Personal Information, we will do our best to resolve it. Additionally, if you are a resident of an EU member state, you have the right to file a complaint with your local supervisory authority, and you might have more [options](/github/site-policy/global-privacy-practices#dispute-resolution-process). - -### Changes to our Privacy Statement - -Although most changes are likely to be minor, GitHub may change our Privacy Statement from time to time. We will provide notification to Users of material changes to this Privacy Statement through our Website at least 30 days prior to the change taking effect by posting a notice on our home page or sending email to the primary email address specified in your GitHub account. We will also update our [Site Policy repository](https://github.com/github/site-policy/), which tracks all changes to this policy. For changes to this Privacy Statement that are not material changes or that do not affect your rights, we encourage Users to check our Site Policy repository frequently. - -### License - -This Privacy Statement is licensed under this [Creative Commons Zero license](https://creativecommons.org/publicdomain/zero/1.0/). For details, see our [site-policy repository](https://github.com/github/site-policy#license). - -### Contacting GitHub -Questions regarding GitHub's Privacy Statement or information practices should be directed to our [Privacy contact form](https://support.github.com/contact/privacy). - -### Translations - -Below are translations of this document into other languages. In the event of any conflict, uncertainty, or apparent inconsistency between any of those versions and the English version, this English version is the controlling version. - -#### French -Cliquez ici pour obtenir la version française: [Déclaration de confidentialité de GitHub](/assets/images/help/site-policy/github-privacy-statement(07.22.20)(FR).pdf) - -#### Other translations - -For translations of this statement into other languages, please visit [https://docs.github.com/](/) and select a language from the drop-down menu under “English.” diff --git a/content/github/site-policy/github-registered-developer-agreement.md b/content/github/site-policy/github-registered-developer-agreement.md deleted file mode 100644 index f3b51033d0de..000000000000 --- a/content/github/site-policy/github-registered-developer-agreement.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: GitHub Registered Developer Agreement -redirect_from: - - /articles/github-registered-developer-agreement -versions: - free-pro-team: '*' ---- -GitHub is fortunate to have many developers integrating with our platform. We think that’s awesome, and we want to make that experience even better. GitHub’s Developer Program (the “Program”) helps us to connect with you, share information with you, and support your creative efforts better than ever before. The special relationship between GitHub and the developer community that the Program creates requires a special set of terms. Welcome to the Registered Developer Agreement (“Agreement”). - -This Agreement is a legal agreement between you (“you”) and GitHub, Inc. (“GitHub”, “we”, or “us”). Be sure to read this Agreement carefully - it governs your participation in the Program, and we’re only willing to let you participate in the Program if you accept all the terms of this Agreement. By clicking “I Agree” below, or by participating in the Program in any way – for example, by accessing information about GitHub products or features that aren’t yet available to the general public – you’re agreeing to be bound by all the terms of this Agreement. IF YOU’RE ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY, YOU REPRESENT THAT YOU HAVE THE LEGAL AUTHORITY TO BIND THE ENTITY TO THIS AGREEMENT, IN WHICH CASE "YOU" WILL MEAN THE ENTITY YOU REPRESENT. IF YOU DON’T HAVE SUCH AUTHORITY, OR IF YOU DON’T AGREE WITH THE TERMS AND CONDITIONS OF THIS AGREEMENT, YOU MUST SELECT THE "CANCEL" BUTTON AND YOU MAY NOT PARTICIPATE IN THE PROGRAM. IF YOU’RE A COMPANY OR OTHER LEGAL ENTITY, YOU REPRESENT THAT THE PERSON CLICKING “I AGREE” HAS THE AUTHORITY TO BIND YOU TO THIS AGREEMENT. - -1. **GitHub.com’s Terms of Use Will Apply** - - You need to have an account on GitHub.com in order to participate in the Program. By clicking “I Agree” at the bottom of this Agreement, you are also agreeing to be bound by the GitHub.com [Terms of Service](/articles/github-terms-of-service) (the “TOS”). In the event of a direct conflict between this Agreement and theTOS, this Agreement will control; otherwise, both agreements will apply to you concurrently. - -2. **Program Terms** - - We post the [Program’s benefits and guidelines](/program/) (the “Program Overview”). As you might expect, the Program Overview will change from time to time. These changes will apply to you as a participant in the Program, so we encourage you to periodically review the Program Overview to keep apprised of any changes. For a variety of reasons, we might need to change, suspend, or discontinue the Program, or some of the benefits we offer. You agree that we can do those things without liability to you, except as specified in Section 8. - -3. **API License** - - So long as you remain compliant with the TOS, this Agreement, and the Program Terms, we grant You a limited, worldwide, non-exclusive, non-transferable license during the term of this Agreement to access and use our API (as defined in the [TOS](/articles/github-terms-of-service)) solely for the purpose of developing, demonstrating, testing and supporting interoperability and integrations between your products and services and our products and services. - - You promise not to do bad things with our API. Among other things, this means you won’t – and won’t allow or permit others to – modify, publish, sell, lease, license, distribute, or sublicense our API; decompile, disassemble, reverse engineer, or otherwise attempt to derive source code from our API; reproduce, modify or create derivative works from our API; use our API to provide service bureau, application hosting, or processing services to third parties; incorporate or otherwise combine or integrate our API with any of your products or services; or use our API to engage in, support, or enable any kind of illegal activity. - - We reserve the right at any time to modify or discontinue, temporarily or permanently, your access to the API (or any part of it) with or without notice. It’s your sole responsibility to ensure that your use of the API is compatible with the then-current API. Other than the rights we expressly give you in this Agreement or the TOS, We don’t grant you any rights or licenses to our API, or to any other GitHub products or services. - -4. **Your Products, Services, and Integrations** - - Your products, services, and integrations (collectively, your “Products”) are your responsibility. That means that you’re solely responsible for developing, operating, and maintaining all aspects of your Products; ensuring that all materials used with or in your Products are legal in all the jurisdictions where your Products are used, and don’t promote illegal activities; obtaining any rights or licenses necessary to use and/or distribute any third-party software that you use, include, integrate, or distribute with your Products; and providing your end user customers with the same high-quality technical support for your Products when they operate in conjunction with our API or any other of our products and services as you do when they operate on their own. - -5. **Marketing and Publicity** - - Marketing and publicizing your integrations with GitHub is valuable to both of us. We want to be sure that happens in the right way, so we’ve included some language here to help clarify some basic “dos” and “don’ts”. - - You agree that you won’t make any representations, warranties, guarantees or endorsements to anyone on behalf of GitHub (including, among other things, any GitHub products or services). Unless we specifically say it’s okay in the Program Terms, you promise not to state or imply that we have developed, endorsed, reviewed or otherwise approved of any of your Products. - - If you decide to promote or publicize any of our products or services in connection with your Products, you’ll need to make sure that you abide by the terms of this Agreement, the Program Terms, the TOS, our [trademark policy](/articles/github-trademark-policy), and any other applicable GitHub policies. Subject to the terms and conditions of this Agreement and the TOS, and during the term of this Agreement, we grant you a limited, revocable, worldwide, non-exclusive, non-transferable license to use our trademarks, service marks, and logos (collectively, the “GitHub Marks”) in accordance with our [trademark policy](/articles/github-trademark-policy) and as specified in the Program Terms, solely for the purpose of publicizing your membership in the Program. - - We want to tell the world about you, and your participation in the Program. To help us do that, you grant us a limited, revocable, worldwide, non-exclusive, non-transferable license to use your trademarks, service marks, and logos (collectively, the “Partner Marks”) in our marketing materials, solely for the purpose of promoting the Program and publicizing your participation in it. - - Except as set forth in this Agreement and the TOS, nothing in this Agreement will be deemed to grant to one party any right, title or interest in or to the other party’s Marks. You agree not to, whether during or after the term of this Agreement: (i) challenge or assist others in challenging the GitHub Marks, or our registration or enforcement of the GitHub Marks; (ii) attempt to adopt, use, apply for, or register any trademark, service mark, logo, URL, Internet domain name, or symbol that is confusingly similar to the GitHub Marks; or (iii) make any negative, false, or disparaging statements (whether written or oral) to any third-party about us, our products, or our services. - -6. **Confidentiality; Pre-Release Materials** - - As a registered developer in the Program, you may get access to special information not available to the rest of the world. Due to the sensitive nature of this information, it’s important for us to make sure that you keep that information secret. - - You agree that any non-public information we give you, or that you may have access to as part of the Program, will be considered GitHub’s confidential information (collectively, “Confidential Information”), regardless of whether it is marked or identified as such. You agree to only use such Confidential Information for your authorized purposes as a participant in the Program (the “Purpose”), and not for any other purpose. You should take reasonable precautions to prevent any unauthorized use, disclosure, publication, or dissemination of our Confidential Information. You promise not to disclose, publish, or disseminate any Confidential Information to any third-party other than your employees and contractors, and then only to the extent that: (i) they need to know the Confidential Information for the Purpose; (ii) you make them aware of the confidential nature of the Confidential Information; (iii) you remain responsible for the acts and omissions of such employees and contractors; and (iv) we don’t otherwise prohibit or restrict such disclosure. - - You understand that unauthorized disclosure or use of our Confidential Information could cause us irreparable harm, and significant injury that may be difficult for us to quantify. Accordingly, you agree that we’ll have the right to seek immediate injunctive relief to make sure you comply with this Agreement, in addition to any other rights and remedies we may have. If you are required by law, regulation or a valid binding order of a court of competent jurisdiction to disclose our Confidential Information, you may do so, but only if you notify us before you do, and do your best to limit such disclosure and to seek confidential, protective treatment of such information. - - The obligations in this Section 6 won’t apply to information that you can prove: (i) was generally available to the public before we disclosed it to you; (ii) became generally available to the public after we disclosed it to you, through no action or inaction on your part, or on the part of your employees or contractors; (iii) you knew about before we disclosed it to you; (iv) was disclosed to you by a third-party, who didn’t have any confidentiality obligations with respect to it; (v) you independently developed without breach of any confidentiality obligation to us or any third-party; or (vi) we gave you permission to disclose, in a writing signed by one of our authorized representatives. - - If We give you any pre-release software or related documentation or materials, which may include videos or other forms of content (“Pre-release Materials”), then subject to your compliance with the terms and conditions of this Agreement and the TOS, we hereby grant you a nonexclusive, nontransferable, revocable right and license to use the Pre-release Materials solely to support your testing and/or development of products or services that are designed to operate in combination with the systems or programs for which the Pre-release Materials are designed. If the Pre-release Materials are accompanied by a separate license agreement, you agree that the separate license agreement (in addition to any more restrictive provisions contained in this Agreement or the TOS) will apply. You agree not to decompile, reverse engineer, disassemble, or otherwise reduce the Pre-release Materials to a human-perceivable form, and you promise not to modify, network, rent, lease, transmit, sell, or loan the Pre-release Materials, in whole or in part. You understand that we’re under no obligation to provide any Pre-release Materials to you, to provide you with updates, enhancements, or corrections to the Pre-release Materials, or to notify you of changes that we make to our products and services, now or in the future. - -7. **Fees and Payment** - - There may be fees associated with participating in the Program. We’ll tell you what those fees are in the Program Terms, as we update them from time to time (the “Program Fees”). If you gave us your payment information before, you agree that we can charge the same credit card or PayPal account as part of this Agreement. Otherwise, you’ll need to give us a valid payment account, and other supporting information. Except as otherwise expressly provided in Section 8, any payments you make to us for the Program are non-refundable. You give us permission to automatically charge your payment account on the anniversary of your first payment date to cover all of the coming year’s Program Fees, unless you terminate this Agreement first according to Section 8. All fees are due in U.S. Dollars, and are exclusive of all taxes, levies, or duties imposed by taxing authorities (you’re responsible for all of those, except for taxes based on our income). - -8. **Term and Termination** - - This Agreement begins on the date you click “Agree”, and continues for a period of one (1) year. This Agreement will automatically renew for successive one-year terms unless either party gives written notice at least thirty (30) days before the current term expires that it wants to terminate, or one of us terminates it earlier in accordance with this Section 8. - - Either you or GitHub may terminate this Agreement for any reason, without cause, upon thirty (30) days prior written notice to the other. If we terminate this Agreement or discontinue your access to the Program for any reason other than your breach of this Agreement, the Program Terms, or the TOS, we will, as your sole remedy and our sole obligation for such termination, refund you the pro rata portion of the Program Fees you paid us for the current term of this Agreement. This Agreement will terminate immediately, without the requirement of notice, if you breach any term of this Agreement, the Program Terms, or the TOS. - - The rights and obligations in Sections 1, 2, 3 (second and third paragraphs), 4, 5 (second and last paragraphs), 6, 7, and 9 through 21 of this Agreement will survive the termination or expiration of this Agreement. Upon termination or expiration of this Agreement all of the rights and licenses we granted you in this Agreement will immediately cease to exist, you will return (or, at our request, destroy) all of our Confidential Information and any copies (including electronic copies) which are in your possession or control, and you will certify in writing that you’ve complied with these requirements. - -9. **Warranties and Disclaimers** - - You warrant to us that you: (i) have the authority to execute this Agreement and to perform its obligations; (ii) will conduct business in a manner that reflects favorably at all times on GitHub’s products and services and our good name, goodwill and reputation; (iii) will make no false or misleading statements or representations regarding GitHub or our products and services; (iv) will not take on any obligation or responsibility, or make any representation, warranty, guarantee or endorsement to anyone on our behalf (including, without limitation, any of our products or services); and (v) will not state or imply that We have developed, endorsed, reviewed or otherwise approved of any of your Products. - - THE PROGRAM, THE API AND ANY CONFIDENTIAL INFORMATION WE GIVE YOU (INCLUDING, WITHOUT LIMITATION, THE PRE-RELEASE MATERIALS) ARE PROVIDED “AS IS”, AND WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. WE SPECIFICALLY DISCLAIM ANY AND ALL IMPLIED WARRANTIES OR CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE DO NOT WARRANT THAT ANY SERVICES OR PRODUCTS WE MAKE AVAILABLE TO YOU WILL MEET YOUR OR YOUR END USERS’ REQUIREMENTS. - -10. **Indemnity** - - We’re giving you lots of useful pre-release stuff as part of the Program, and there are ways that you could use that stuff improperly that could cause us harm. With that in mind, and since we can’t control the ways that you participate in the Program, you agree that you will indemnify, defend and hold us harmless from and against any and all claims which may arise under or out of your participation in the Program; your use of the API, our Confidential Information, or any other GitHub products and services; your negligence or intentional misconduct; your Products, or any integrations you develop, design, promote or distribute using our API or any Confidential Information; any misrepresentations you make with respect to us, or our products or services; or your violation of any part of this Agreement. - -11. **Limitation of Liability** - - IN NO EVENT WILL WE BE LIABLE TO YOU OR TO ANY THIRD PARTY FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, EXEMPLARY OR PUNITIVE DAMAGES, INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOST DATA, LOST PROFITS OR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, HOWEVER CAUSED AND UNDER ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, TORT (INCLUDING WITHOUT LIMITATION PRODUCTS LIABILITY, STRICT LIABILITY AND NEGLIGENCE), OR ANY OTHER THEORY, AND WHETHER OR NOT WE KNEW OR SHOULD HAVE KNOWN ABOUT THE POSSIBILITY OF SUCH DAMAGE. IN NO EVENT WILL OUR AGGREGATE LIABILITY TO YOU ARISING OUT OF OR RELATED TO THIS AGREEMENT FOR ANY CAUSE WHATSOEVER, AND REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT OR IN TORT, EXCEED THE GREATER OF (I) AMOUNTS YOU ACTUALLY PAID US UNDER THIS AGREEMENT; OR (II) FIVE HUNDRED DOLLARS ($500). THE FOREGOING LIMITATIONS WILL APPLY NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY STATED IN THIS AGREEMENT. - -12. **Export Control** - - You aren’t allowed to export or re-export any of our Confidential Information, except as authorized by United States law and the laws of the jurisdiction in which the Confidential Information was obtained. In particular, you aren’t allowed to export or re-export our Confidential Information into any U.S. embargoed countries, to anyone on the U.S. Treasury Department's list of Specially Designated Nationals, or to anyone on the U.S. Department of Commerce Denied Person's List or Entity List. By joining the Program or receiving any of our Confidential Information, you represent and warrant that you are not located in any such country or on any such list. - -13. **Proprietary Rights** - - You agree that GitHub and its licensors own all right, title and interest in and to the API, the Pre-release Materials, and all other GitHub products and services; all information and data relating to their configurations and combinations; and all modifications to and derivative works of any of the foregoing. You agree not to remove, alter, cover or obfuscate any copyright or other proprietary rights notices we place on or embed in the API, the Pre-release Materials, or any other other GitHub products and services. - -14. **Government Users** - - If you are a Government entity, this Section applies to you. Certain of our Confidential Information may be considered “Commercial Items”, as that term is defined at 48 C.F.R. §2.101, consisting of “Commercial Computer Software” and “Commercial Computer Software Documentation”, as such terms are used in 48 C.F.R. §12.212 or 48 C.F.R. §227.7202, as applicable. Consistent with 48 C.F.R. §12.212 or 48 C.F.R. §227.7202-1 through 227.7202-4, as applicable, the Commercial Computer Software and Commercial Computer Software Documentation are being licensed to U.S. Government end users (a) only as Commercial Items and (b) with only those rights as are granted to all other end users pursuant to the terms and conditions herein. GitHub, Inc. 88 Colin P. Kelly Street, San Francisco, CA 94107. - -15. **Independent Development** - - Nothing in this Agreement will impair our right to develop, acquire, license, market, promote or distribute products, software or technologies that may compete with your Products. - -16. **Feedback** - - We’re always trying to improve, and your feedback will help us do that. If you choose to give us feedback, suggestions or recommendations for the Program or for our products or services (collectively, “Feedback”), you acknowledge and agree that we’re free to use that Feedback in any way we want, without restriction (subject to any applicable patents or copyrights, of course). - -17. **Independent Contractors** - - The parties to this Agreement are independent contractors. Neither of us will be deemed to be an employee, agent, partner, franchisor, franchisee or legal representative of the other for any purpose and neither of us will have any right, power or authority to create any obligation or responsibility on behalf of the other. - -18. **Assignment** - - You aren’t allowed to assign or transfer this Agreement, or any of your rights under it, in whole or in part, by operation of law or otherwise, without our prior written consent. - -19. **Governing Law and Venue** - - This Agreement will be interpreted and construed in accordance with the laws of the State of California, without regard to conflict of law principles. All disputes arising out of this Agreement will be subject to the exclusive jurisdiction of the state and federal courts located in San Francisco County, California, and each of us hereby consents to personal jurisdiction there. - -20. **Amendments; Waivers; No Third-Party Beneficiaries** - - This Agreement may not be changed, except by a writing signed by both parties. Any waiver of the provisions of this Agreement or of a party's rights or remedies under this Agreement must be in writing to be effective. If any term, condition, or provision in this Agreement is found to be invalid or unenforceable, the remaining terms will continue to be valid and enforceable to the fullest extent permitted by law. We each expressly agree that there are no third-party beneficiaries to this Agreement. - -21. **Entire Agreement** - - This Agreement, the TOS, and the Program Terms contain the entire agreement of the parties with respect to its subject matter and supersede all prior communications, representations, understandings and agreements, whether written or oral. The terms or conditions of any of your purchase orders, acknowledgements, or other documents that you send us in connection with this Agreement will be null and void, and of no effect. diff --git a/content/github/site-policy/github-research-program-terms.md b/content/github/site-policy/github-research-program-terms.md deleted file mode 100644 index f16cccc3d9b1..000000000000 --- a/content/github/site-policy/github-research-program-terms.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: GitHub Research Program Terms -redirect_from: - - /articles/github-research-program-terms -versions: - free-pro-team: '*' ---- - -Welcome to the GitHub Research Program (the "Program")! To participate, we’ll need you to agree to a special set of terms, the GitHub Research Program Agreement (“Agreement”). - -This Agreement is a legal agreement between you (“you”, "your") and GitHub, Inc. (“GitHub”, “we”, or “us”). Be sure to read this Agreement carefully – you can only be a Program participant if you accept all the terms of this Agreement. By participating in the Program in any way – for example, by accessing information about GitHub products or services that aren’t yet available to the general public – you’re agreeing to be bound by all the terms of this Agreement. - -### A. Your Feedback - -We’re always trying to improve our products and services, and your feedback as a Program participant will help us do that. If you choose to give us any ideas, know-how, algorithms, code contributions, suggestions, enhancement requests, recommendations or any other feedback for our products or services through the Program (collectively, “Feedback”), then we need the legal rights to use and analyze that information for those purposes. In legalese, that means you grant GitHub a royalty-free, fully paid-up, worldwide, transferable, sub-licensable, irrevocable and perpetual license to implement, use, modify, commercially exploit and/or incorporate the Feedback into our products, services, and documentation. - -### B. Confidentiality - -GitHub may provide you with access to special information that isn’t available to the rest of the world for the purpose of providing feedback to us through the Program (the "Purpose"). Due to the sensitive nature of this information, it’s important for us to make sure that you keep that information secret. - -You agree that any non-public information we share with you or that you may have access to as a Program participant will be considered GitHub’s confidential information (collectively, “Confidential Information”), regardless of whether it is marked or identified as such. You agree to only use such Confidential Information for the Purpose stated above, and not for any other purpose. You should use the same degree of care as you would with your confidential information but no less than reasonable precautions to prevent any unauthorized use, disclosure, publication, or dissemination of our Confidential Information. You promise not to disclose, publish, or disseminate any Confidential Information to any third party. - -You understand that unauthorized disclosure or use of our Confidential Information could cause us irreparable harm, and significant injury that may be difficult for us to quantify. Accordingly, you agree that we’ll have the right to seek immediate injunctive relief to make sure you comply with this Agreement, in addition to any other rights and remedies we may have. If you are required by law, regulation or a valid binding order of a court of competent jurisdiction to disclose our Confidential Information, you may do so, but only if you notify us before you do, and do your best to limit such disclosure and to seek confidential, protective treatment of such information. - -The obligations in this Section 2 won’t apply to information that you can prove: (i) was generally available to the public before we disclosed it to you; (ii) became generally available to the public after we disclosed it to you, through no action or inaction on your part, or on the part of your employees or contractors; (iii) you knew about before we disclosed it to you; (iv) was disclosed to you by a third party, who didn’t have any confidentiality obligations with respect to it; (v) you independently developed without breach of any confidentiality obligation to us or any third party; or (vi) we gave you permission to disclose, in a writing signed by one of our authorized representatives. - -### C. Reservation of Rights - -All Confidential Information remains the sole and exclusive property of GitHub. Neither party acquires any intellectual property rights under this Agreement, unless expressly specified herein. - -### D. Privacy - -By participating in this Program, you consent to our use of your personal information for research purposes, and not for any other purposes. As part of the Program, we may use your personal information to contact you, or retain your information, to contact you at a later date. Personal information does not include aggregated, non-personally identifying information. We may use aggregated or other non-personally identifying information collected through the program to operate, analyze, and improve our products and services. - -You can withdraw your consent at any time, and request access to or the deletion of the personal information that we hold about you. For more information about how you can access, update, alter, or delete the personal information GitHub collects through the Program, please see the [GitHub Privacy Statement](/articles/github-privacy-statement/) or contact us through our {% data variables.contact.contact_privacy %}. - -### E. GitHub Services and Software Terms - -If access to GitHub's services or software are required to participate in certain Program studies or activities, then the applicable services or software agreement will apply to your use of those products (the "Generally Applicable Terms"). In the event of a direct conflict between this Agreement and the Generally Applicable Terms, your Generally Applicable Terms will control, except with respect to any use of Confidential Information (as defined below), in which case this Agreement will control. - -### F. Disclaimer of Warranties - -All Confidential Information and other materials you receive through the Program are provided “as is” and without warranty of any kind. Without limiting this, we expressly disclaim all warranties, whether express, implied or statutory, regarding the Program including without limitation any warranty of merchantability, fitness for a particular purpose, title, security, accuracy and non-infringement. - -### G. Limitation of Liability - -Except as prohibited by law, you understand and agree that we will not be liable to you or any third party for any loss of profits, use, goodwill, or data, or for any incidental, indirect, special, consequential or exemplary damages. - -Our liability is limited whether or not we have been informed of the possibility of such damages, and even if a remedy set forth in this Agreement is found to have failed of its essential purpose. We will have no liability for any failure or delay due to matters beyond our reasonable control. - -### H. Miscellaneous - -#### 1. Governing Law -Except to the extent applicable law provides otherwise, this Agreement between you and GitHub and any access to or use of the Website or the Service are governed by the federal laws of the United States of America and the laws of the State of California, without regard to conflict of law provisions. You and GitHub agree to submit to the exclusive jurisdiction and venue of the courts located in the City and County of San Francisco, California. - -#### 2. Non-Assignability -GitHub may assign or delegate this Agreement, in whole or in part, to any person or entity at any time with or without your consent, including the license grant in Section A. You may not assign or delegate any rights or obligations under this Agreement without our prior written consent, and any unauthorized assignment and delegation by you is void. - -#### 3. Severability, No Waiver, and Survival -If any part of this Agreement is held invalid or unenforceable, that portion of the Agreement will be construed to reflect the parties’ original intent. The remaining portions will remain in full force and effect. Any failure on the part of GitHub to enforce any provision of this Agreement will not be considered a waiver of our right to enforce such provision. Our rights under this Agreement will survive any termination of this Agreement. - -#### 4. Amendments; Complete Agreement -This Agreement may only be modified by a written amendment signed by an authorized representative of GitHub. This Agreement, together with the Generally Applicable Terms and the GitHub Privacy Statement, represent the complete and exclusive statement of the agreement between you and us. This Agreement supersedes any proposal or prior agreement oral or written, and any other communications between you and GitHub relating to the subject matter of these terms including any confidentiality or nondisclosure agreements. diff --git a/content/github/site-policy/github-sensitive-data-removal-policy.md b/content/github/site-policy/github-sensitive-data-removal-policy.md deleted file mode 100644 index bd37e5d32292..000000000000 --- a/content/github/site-policy/github-sensitive-data-removal-policy.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: GitHub Sensitive Data Removal Policy -redirect_from: - - /articles/github-sensitive-data-removal-policy -versions: - free-pro-team: '*' ---- -If you believe that content on GitHub infringes a valid copyright you own, please see our [DMCA Takedown Policy](/articles/dmca-takedown-policy/) and our [Guide to Submitting a DMCA Takedown Notice](/articles/guide-to-submitting-a-dmca-takedown-notice/). We rely on the DMCA notice and takedown process for the majority of our removal actions. - -However, we understand that sensitive, security-related content may get published on GitHub – whether accidentally or on purpose – from time to time. We provide our sensitive data removal process to remove this sensitive data in certain exceptional circumstances where the DMCA process would not be applicable, such as when your security is at risk from exposed passwords and you do not own the copyright to the specific content that you need removed, or the content is not protectable by copyright. This guide describes the information GitHub needs from you in order to process a request to remove sensitive data from a repository. - -### What is Sensitive Data? - -For the purposes of this document, “sensitive data” refers to content that (i) should have been kept confidential, *and* (ii) whose public availability poses a specific or targeted security risk to you or your organization. - -#### Sensitive data removal requests are appropriate for: -- Access credentials, such as user names combined with passwords, access tokens, or other sensitive secrets that can grant access to your organization's server, network, or domain. -- AWS tokens and other similar access credentials that grant access to a third party on your behalf. You must be able to show that the token does belong to you. -- Documentation (such as network diagrams) that poses a specific security risk for an organization. Internal server names, IP addresses, and URLs, on their own, are not sufficiently sensitive; you must be able to show that the internal server name's use in a particular file or piece of code poses a security threat. - -#### Sensitive data removal requests are _not_ appropriate for: -- Requests to remove content that may infringe your or your organization's copyright rights. If you have questions about how GitHub handles copyright-related matters or would like to report potentially infringing content, please review our [DMCA Takedown Policy](/articles/dmca-takedown-policy/). The sensitive data removal process is generally not intended for the removal of full files or repositories — only for the specific pieces of sensitive data in those files. While there may be cases where files are filled entirely with sensitive information, you must justify the security risk for the removal of such files, and this may increase the time required to process your request. -- Trademark disputes. If you have questions about how GitHub handles trademark-related matters or would like to report content containing your organization's trade or service marks, please review our [Trademark Policy](/articles/github-trademark-policy/). -- Mere mentions of your company's identity, name, brand, domain name, or other references to your company in files on GitHub. You must be able to articulate why a use of your company's identity is a threat to your company's security posture before we will take action under this policy. -- Privacy complaints. If you have concerns about your own privacy or you are contacting us on behalf of your employees due to a privacy concern — for example, if there are private email addresses or other personal information posted — please contact us via [our Privacy contact form](https://github.com/contact/privacy). -- Entire files or repositories that do not pose a specific security risk, but you believe are otherwise objectionable. -- Content governed by our [Community Guidelines](/articles/github-community-guidelines/), such as malware or general-purpose tools. If you have questions about our Community Guidelines or believe that content on GitHub might violate our guidelines, you can use {% data variables.contact.report_content %} to contact us. - -### Things to Know - -**Ask Nicely First.** A great first step before sending us a request to remove data is to try contacting the user directly. They may have listed contact information on their public profile page or in the repository's README or Support file, or you could get in touch by creating an issue or pull request in the repository. This is not strictly required, but it is appreciated. - -**No Bots.** You should have a trained professional evaluate the facts of every request you send. If you're outsourcing your efforts to a third party, make sure you know how they operate, and make sure they are not using automated bots to submit complaints in bulk. These complaints often include data that does not pose any security threats, and they do not include sufficient explanations, requiring additional back-and-forth and resulting in delays, even when the complaint is valid. - -**Send In The Correct Request.** We offer this sensitive data removal process as an exceptional service only for high-risk content. We are not able to use this process to remove other kinds of content, such as potentially infringing content, and we are not able to process any other kinds of removal requests simultaneously while processing sensitive removal requests. We will be able to help you more quickly if you send in your sensitive data removal requests separately from any requests to remove potentially infringing content. If you are unsure whether your request involves only sensitive data or also involves other legal matters, please consult legal counsel. - -**Processing Time.** While we do process sensitive data removal requests as quickly as possible, due to the volume of requests we process, it may take some time for your request to be reviewed. Additional requests, or multiple requests from additional points of contact, may result in delays. - -### How Does This Actually Work? - -1. **Complainant Investigates.** It is up to the requesting party to conduct their own investigation and to provide us with the [details we require](#your-request-must-include) — most importantly, an explanation of how the data poses a security risk. GitHub is not in a position to search for or make initial determinations about sensitive data on any individual's or organization's behalf. - -2. **Complainant Sends a Sensitive Data Removal Request.** After conducting an investigation, the complainant prepares and [sends a sensitive data removal request](#sending-a-sensitive-data-removal-request) to GitHub. If the request is not sufficiently detailed to demonstrate the security risk and for GitHub to locate the data, we will reply and ask for more information. - -3. **GitHub Asks User to Make Changes.** In most cases, we will contact the user who created the repository and give them an opportunity to delete or modify the sensitive data specified in the request or to dispute the claim. - -4. **User Notifies GitHub of Changes.** If the user chooses to make the specified changes, they must tell us so within the window of time they've been allowed. If they don't, we will disable the repository. If the user notifies us that they made changes, we will verify that the changes have been made and notify the complainant. - - OR - -5. **User May Dispute the Request.** If a user believes the content in question is not sensitive data subject to this Policy, they may dispute it. If they do, we will generally leave it up to the complainant to contact the user and work things out with them directly, within reason. - -6. **Complainant Reviews Changes.** If the user makes changes, the complainant must review them. If the changes are insufficient, the complainant must provide GitHub with details explaining why. GitHub may disable the repository or give the user an additional chance to make the changes. - -7. **User May Request an Additional Window to Make Changes.** If the user missed their opportunity to remove the sensitive data specified in the notice, we may allow them an additional window of approximately 1 business day, upon request, to make those changes. In that event, GitHub will notify the complainant. - -#### What About Forks? (or What's a Fork?) -One of the best features of GitHub is the ability for users to "fork" one another's repositories. What does that mean? In essence, it means that users can make a copy of a project on GitHub into their own repositories. As the license or the law allows, users can then make changes to that fork to either push back to the main project or just keep as their own variation of a project. Each of these copies is a "[fork](/articles/github-glossary/#fork)" of the original repository, which in turn may also be called the "parent" of the fork. - -GitHub will not automatically disable forks when disabling a parent repository. This is because forks belong to different users and may have been altered in significant ways. GitHub does not conduct any independent investigation into forks. We expect those sending sensitive data removal requests to conduct that investigation and, if they believe that the forks also contain sensitive data, expressly include forks in their request. - -### Sending A Sensitive Data Removal Request - -Due to the type of content GitHub hosts (mostly software code) and the way that content is managed (with Git), we need complaints to be as specific as possible. In order for us to verify that a user has removed reported sensitive data completely, we need to know exactly where to look. - -These guidelines are designed to make the processing of requests to remove sensitive data as straightforward as possible. - -#### Your Request Must Include: - -1. A working, clickable link to each file containing sensitive data. (Note that we're not able to work from search results, examples, or screenshots.) -2. Specific line numbers within each file containing the sensitive data. -3. A brief description of how each item you've identified poses a security risk to you or your organization. ***It is important that you provide an explanation of how the data poses a security risk beyond merely stating that it does.*** -4. If you are a third party acting as an agent for an organization facing a security risk, include a statement that you have a legal right to act on behalf of that organization. -5. OPTIONAL: Let us know if your request is particularly urgent, and why. We respond to all sensitive data removal requests as quickly as possible. However, if this request is especially time-sensitive, such as a very recent credential exposure, please explain why. - -### How to Submit Your Request - -You can submit your request to remove sensitive data via our [contact form](https://support.github.com/contact?tags=docs-sensitive-data). Please include a plain-text version of your request in the body of your message. Sending your request in an attachment may result in processing delays. - -### Disputes - -If you received a sensitive data removal request from us, you can dispute it by replying to our email and letting us know — in as much detail as possible — why you think the content in question is not sensitive data subject to this Policy. diff --git a/content/github/site-policy/github-sponsors-additional-terms.md b/content/github/site-policy/github-sponsors-additional-terms.md deleted file mode 100644 index 343c68a35c46..000000000000 --- a/content/github/site-policy/github-sponsors-additional-terms.md +++ /dev/null @@ -1,184 +0,0 @@ ---- -title: GitHub Sponsors Additional Terms -redirect_from: - - /articles/github-sponsors-additional-terms -versions: - free-pro-team: '*' ---- - -Your participation in the GitHub Sponsors Program (the "Program") is subject to the [GitHub Terms of Service](/github/site-policy/github-terms-of-service) (the "Agreement"), as well as the following additional terms ("Additional Terms"). Any use of the GitHub Sponsors Program that violates the Agreement will also be a violation of these Additional Terms. Any capitalized terms used but not defined below have the meanings in the Agreement. These Additional Terms for the GitHub Sponsors Program describe the relationship between GitHub and you, the "Sponsored Developer", for the Program. The Additional Terms are effective as of the date you accept them ("Effective Date"). - -### 1. Definitions. - -"**GitHub Policies**" means all then-current policies and procedures of GitHub that Sponsored Developer must follow as noted in the Program, including the [GitHub Community Guidelines](/github/site-policy/github-community-guidelines). - -"**Sponsor**" means the User who purchased a Subscription from or paid a Sponsorship to you through your Sponsored Developer Account. - -"**Sponsored Developer Account**" means the account that you establish through the Program to receive payment from Sponsors. - -"**Sponsored Developer Content**" means all content you submit to GitHub in connection with the Program, including User-Generated Content and Your Content; your brand names, trademarks, service marks, trade names, logos, or indicia of origin ("**Sponsored Developer Marks**"); and data associated with your Sponsored Developer Account. - -"**Sponsorship**" means a payment paid to you through the Program and the Service. - -"**Subscription**" means a recurring monthly Sponsorship in exchange for goods, services, or other offers you provide to Sponsors. - -"**Sponsored Developer Payment**" means the net of one hundred percent (100%) of GitHub's gross monthly payments received from Sponsorships and Subscriptions to Sponsored Developer Accounts, plus any applicable Matching Funds, and other proceeds from monetization options that the Sponsored Developer elects to use, as applicable, less any discounts, taxes, fees, amounts that GitHub did not collect or which were refunded or charged back, amounts owed to any third-party in connection with the Program with respect to a Sponsored Developer Account, and other Exclusions as outlined in Section 4. - -"**USD**" means United States Dollar. - -### 2. Acceptable Use. - -#### 2.1. GitHub Sponsors Program - -In order to participate in the Program, you must comply with your country's minimum age laws (for example, you must be at least 13 years of age if you live in the United States), have a valid GitHub account, and have agreed to the [Acceptable Use section](/github/site-policy/github-terms-of-service#c-acceptable-use) in the Agreement and applicable GitHub Policies, and these GitHub Sponsors Additional Terms. - -If you are over the age of 13 but are under 18, you can give and receive Sponsor funds, provided that Stripe, our payment processor, can collect verification information from your legal guardian. - -You will not under any circumstances allow payments or raise funds involving: - -* fraud, ransom, violations of intellectual property, or other illegal purposes; - -* misrepresentation or deception related to the reasons you're raising funds or requesting sponsorship; - -* the purchase or sale of ICOs, utility tokens, or other types of cryptocurrency; - -* the purchase or sale of securities, equity, or other types of investment offers; - -* the sale of personal information, or the processing of personal information in violation of any laws; - -* lotteries, raffles, gambling, pyramid schemes, self-dealing, "get rich quick schemes", deceptive marketing schemes, "donation for donation" schemes, or any attempts to game GitHub's or third parties' systems or services; and, - -* activities with, in, or involving countries, regions, governments, persons, or entities that are not permitted under U.S. and other economic sanctions under applicable law. - -#### 2.2. GitHub Sponsors Matching Fund -The GitHub Sponsors Matching Fund aims to encourage the community that participates in the Open Source Software (OSS) ecosystem to contribute sustainable funding to qualifying individuals with Sponsored Developer Accounts. All individuals who applied to the Program before January 1, 2020, will be reviewed for eligibility for the Matching Fund, but not all eligible individual Sponsored Developer Accounts will receive matching. Organizations cannot participate in the GitHub Sponsors Matching Fund, and Sponsorship from an organization to a qualifying Sponsored Developer Account will not be matched. See below for additional rules. - -##### 2.2.1. Matching Fund Terms. -Eligibility for the GitHub Sponsors Matching Fund is evaluated on a case-by-case basis and is subject to the following limitations: - -* You must have a GitHub account, be accepted into the Program as an individual, and be actively contributing to OSS. Please note, GitHub does not allow operating more than one free user account. As such, matching is available on an individual basis and will not be approved across multiple accounts. - -* Your use of GitHub and your Sponsored Developer Account must be, based on our determination, in our sole discretion, in accordance with the GitHub Sponsors mission to expand the opportunities to contribute to open source that upholds the [GitHub Community Guidelines](/github/site-policy/github-community-guidelines). - -* You cannot receive matching for any sponsorship that originates from a user or organization account with a published GitHub Sponsors profile. - -* GitHub reserves the right to withhold or rescind Matching Fund money and block any user from participation in the GitHub Sponsors Matching Fund for any reason, including but not limited to posting content or projects that GitHub determines are offensive or otherwise objectionable. - -##### 2.2.2. Matching Period. -The matching period begins after GitHub accepts an individual Sponsored Developer Account into GitHub Sponsors and publishes the sponsorship profile for the account. For each individual Sponsored Developer Account eligible for the GitHub Sponsors Matching Fund, GitHub can match community sponsorship up to $5,000 USD total during the Sponsored Developer Account's first 12 months in the Program. The matching period cannot be extended for any reason. During the matching period, GitHub will not charge any fees, so 100% of sponsorships will go to the sponsored developer. In the future, we may charge a nominal processing fee. - -* If a Sponsorship or Sponsoring Subscription stops for any reason, the associated matching will stop as well. Funds that are charged back to the Sponsor before the Sponsored Developer Payment date are not eligible for matching. - -* If you leave GitHub Sponsors and rejoin later, the gap between your participation periods may count toward your matching period or your matching period may expire. - - -* If GitHub discovers a potential policy violation, prior to payment of any matching funds granted during the matching period, GitHub may disable payouts until an investigation has been completed, and matched funds contributed to the sponsored developer may be revoked if they are found to be in violation of this policy. - -* {% data reusables.sponsors.github-contact-applicants %} - -### 3. Sponsored Developer Obligations. - -#### 3.1. General. -You will: (A) create a Sponsored Developer Account; (B) make Sponsored Developer Content available via the Program and Service; and, (C) comply with all GitHub Policies. You will be solely responsible for support, development, and maintenance of your Sponsored Developer Account and Sponsored Developer Content, and any complaints about them. - -#### 3.2. Registration. -If you choose to apply for the Program, entry into the Program is contingent upon your completion of the registration process and acceptance into the Program by GitHub. In addition, you may be required to register with the payment service provider(s) selected by GitHub (such as Stripe) in order to access and use certain features of the Program. You must register with your true identity, and you agree to provide and maintain true, accurate, current and complete information about yourself as requested by the Program's registration form. Registration data and certain other information about you are governed by our [Privacy Statement](/github/site-policy/github-privacy-statement), as well as any privacy statement provided by our payment processor. GitHub reserves the right to refuse acceptance into the Program. - -#### 3.3. Content Monetization. -Through the Program and Service, GitHub may provide you various options to monetize your Sponsored Developer Content. Some options may require you to update certain settings in your Sponsored Developer Account. In addition, the ways in which the Program supports each monetization option may vary. If you utilize one (or more) of these options by changing the applicable settings, then you agree to the terms that apply to that option. Some monetization options may require you to provide additional information to GitHub or its service providers, or to accept additional GitHub terms or third-party terms. - -##### 3.3.1. Subscriptions. -The Program provides you with the capability to offer Subscriptions. If you choose to offer Subscriptions, then GitHub will pay you the Subscription Sponsorship as provided in Section 4. You are responsible for determining the nature, content, and capabilities of your Subscription offer, subject to these Additional Terms and applicable GitHub Policies. - -##### 3.3.2. Other Sponsorships. -The Program or Service may provide you with the ability to accept a donation or other type of direct Sponsorship from another User without a Subscription offer. However, because GitHub does not fulfill those types of Sponsorships, you must establish a merchant account with a third-party payment service provider (such as Stripe) and be subject to that service provider's merchant account terms, conditions, and privacy policies. Any amounts contributed to you, donation or otherwise, will be paid directly to your merchant account and not included in any Sponsored Developer Payments. You agree that you will not have any claim or remedy against GitHub relating to donations and any disputes relating to a donation are solely between you and the third-party payment service provider. You are responsible for compliance with any third-party payment service provider's agreements, policies, and laws or regulations that may apply. GitHub may elect to provide you with information or a report on the amount of donations made to you for your convenience. - -##### 3.3.3. Advertising. -While we understand that you may want to promote your Sponsors by posting their names or logos in your account, the primary focus of your Sponsored Developer Content should not be advertising or promotional marketing. In addition, you may not enter into any advertising agreement to promote any product or brand if doing so would be prohibited by the [Agreement](/github/site-policy/github-terms-of-service) or GitHub's Community Guidelines. If you decide to host any advertising or promotional materials in your Sponsored Developer Content, you are solely responsible for complying with all applicable laws and regulations, including the U.S. Federal Trade Commission's Guidelines on Endorsements and Testimonials. - -### 4. Financial Terms. - -#### 4.1. Payment. -GitHub will pay you the Sponsored Developer Payment in accordance with this Section 4, so long as you meet the Sponsored Developer Obligations in Section 3 and are not in violation of these Additional Terms. If you fail to meet these obligations for any given month, we may at our sole discretion withhold the Sponsored Developer Payment for that month. If you fail to meet or maintain the Sponsored Developer Obligations for two (2) or more months during the Term (consecutively or non-consecutively), then GitHub may terminate these Additional Terms as provided in Section 6. - -#### 4.2. Sponsored Developer Payment Exclusions. -The following amounts are not included in Sponsored Developer Payments, or may be withheld by GitHub, as applicable. - -##### 4.2.1. Sponsored Developer Expenses. -You will bear all expenses you incur in connection with your performance under these Additional Terms. We will not reimburse or advance you for any expenses. - -##### 4.2.2. Taxes. -GitHub intends to comply with all applicable tax information reporting and tax withholding laws that GitHub reasonably determines in its judgment apply to these payments. If taxes are required to be withheld on any amounts to be paid by GitHub to you or from amounts which are subject to tax information reporting under applicable laws, GitHub will deduct such taxes from the amount owed and pay them to the appropriate taxing authority and, as required, will secure and deliver to you an official receipt for any such taxes withheld as required under applicable laws. GitHub will use reasonable efforts to minimize such taxes to the extent permissible under applicable law, and each party will reasonably cooperate with the other to obtain the lowest tax rates or elimination of such taxes pursuant to the applicable income tax laws or treaties. This includes you providing to GitHub adequate information required under applicable laws, such as IRS Forms W-8, W-9, or other information to establish exemptions from withholding. You will also be responsible for complying with any third-party payment processor’s terms and conditions regarding tax withholding and reporting, if applicable. Furthermore, GitHub reserves the right to suspend payments to your account until you provide GitHub with adequate documentation or information required under applicable laws for GitHub to determine any applicable tax withholding or reporting obligations that apply to the payments under these Additional Terms or Agreement. - -##### 4.2.3. Withholding of Sponsored Developer Payment for Breach. -In the event of a Sponsored Developer's breach, or suspected breach, of these Additional Terms or the Agreement, GitHub reserves the right to withhold payment to the Sponsored Developer under these Additional Terms or otherwise, pending GitHub's reasonable investigation of the same. If GitHub determines, in its sole discretion, that a Sponsored Developer is in breach of these Additional Terms or the Agreement, GitHub may permanently withhold any amounts due to the Sponsored Developer. - -#### 4.3. Payment Timing. -During the term, GitHub will remit to you all Sponsored Developer Payments received in a given month within 30 days after the close of that month, subject to the variables below. Payouts are sent through Stripe Connect, ACH transfer, or wire transfer to the bank account you provided when you applied for GitHub Sponsors. We are not responsible for delay or misapplication of any Sponsored Developer Payment because of incorrect or incomplete information supplied by you or a bank, or for failure of a bank to credit your account. - -- For newly created Sponsored Developer Accounts, GitHub will remit to you all Sponsored Developer Payments received in a given month within 90 days of the creation of your Sponsored Developer Account, subject to the variables below. Payments thereafter will be remitted within 30 days of the close of that month, in accordance with this section. - -- If you are paid through Stripe Connect, you will receive payouts on the 22nd of the month for your balance at the end of the previous month, regardless of the amount of the balance. - -- If you are paid through ACH transfer or wire transfer, you will receive payouts on the third Thursday of the month. GitHub will issue a payout to you for any month that your balance reaches $100 USD. Contributions from the GitHub Sponsors Matching Fund do not count towards this threshold. If your balance is below $100 at the end of the month, the balance will accrue until the next time your balance is above the threshold at the end of the month. If you leave GitHub Sponsors, GitHub will issue a payout for your remaining balance even if the balance is below $100. - -- After termination, we will remit to you all Sponsored Developer Payments received and unpaid within approximately 90 days after the end of the calendar month in which we recognize that these Additional Terms have been terminated. - -#### 4.4. Payment Method. -We will remit Sponsored Developer Payments by ACH/SEPA or wire to an account that you specify subject to the thresholds, methods and timeframes provided in our then-current payment policies, which we may update from time to time. The payment method and threshold may vary depending on the country and account information you provide. We may, at our sole discretion, combine the Sponsored Developer Payment with any other payments that may be owed to you. - -#### 4.5. Currency. -All references to currency are to USD. If you are outside of the United States, we may convert USD to the local currency of your address for payment, using our then-current conversion rates. - -#### 4.6. Refund Requirements. -You will be responsible for specifying the terms and conditions regarding any refunds, if any, to your Sponsors. In no event shall GitHub be responsible for providing any support for refunds, nor shall GitHub be liable for payment of any refund. - -#### 4.7. Requested Payment Information. -To pay you, you must provide us with complete and accurate financial, tax, and banking information that we request (for example, by means of account creation or setup, or otherwise). We will notify you, by any means of communication, of changes to what information is required. If you fail to accurately provide (or accurately maintain) such information, (a) we can deduct from your Sponsored Developer Payment any related bank fees, and (b) we can terminate these Additional Terms and you may forfeit any amounts owed to you by GitHub. - -### 5. Representations and Warranties; Limitation of Liability; Indemnification. - -#### 5.1. By Sponsored Developer. -Sponsored Developer represents and warrants that: - -* you have the authority to enter into and fully perform these Additional Terms; - -* your execution and performance of these Additional Terms will not violate any other agreement or obligation between you and any third party; - -* Sponsored Developer Content does not infringe, violate, or misappropriate any third-party right, including any copyright, trademark, patent, trade secret, moral right, privacy right, right of publicity, or any other intellectual property; - -* you will comply with all laws and regulations, and your Sponsored Developer Content is not illegal and does not violate any laws or regulations. - -#### 5.2. Disclaimer of Warranties; Limitation of Liability; Indemnification. -YOU EXPLICITLY AGREE THAT SECTIONS O (DISCLAIMER OF WARRANTIES), P (LIMITATION OF LIABILITY), AND Q (RELEASE AND INDEMNIFICATION) OF THE AGREEMENT APPLY TO THESE ADDITIONAL TERMS. - -### 6. Term and Termination. - -#### 6.1. Term. -These Additional Terms commence on the Effective Date and remain in effect as long as you participate in the Program. - -#### 6.2. Suspension. -GitHub may suspend your Sponsored Developer Account immediately if you violate these Additional Terms or the Agreement in any way, or if you are placed on a restricted trade list or located in or ordinarily resident in a country or territory subject to comprehensive sanctions administered by the U.S. Office of Foreign Assets Control (OFAC). Failure to correct or cure the cause for suspension may result in the termination of your Sponsored Developer Account. - -#### 6.3. Termination. -Either party may terminate these Additional Terms and your Sponsored Developer Account at any time with or without cause, with or without notice. If you breach these Additional Terms or the Agreement, we may, but are not obligated to, offer you a period of time to cure the breach. - -#### 6.4. Effect of Termination. -If either Party terminates under Section 6.3, GitHub’s sole obligation will be to pay Sponsored Developer the amount of the Sponsored Developer Payment accrued up until the date of termination, unless such payments are prohibited by law. - -### 7. Miscellaneous. - -#### 7.1. Entire Agreement. -These Additional Terms, together with the Agreement, the GitHub Policies, the GitHub Privacy Statement, and any additional terms for different monetization options represent the entire agreement between you and GitHub. - -#### 7.2. Changes to the Terms. -We reserve the right, at our sole discretion, to amend these Additional Terms at any time We will notify you of material changes to these Additional Terms, such as price changes, at least 30 days prior to the change taking effect by posting a notice on our Website. Your continued participation in the Program constitutes agreement to our revisions of these Additional Terms. You can view all changes to these Terms in our [Site Policy](https://github.com/github/site-policy) repository. - -#### 7.3. Third Party Beneficiaries. -Except as expressly stated, no person, firm, group or corporation other than the parties will be deemed to have acquired any rights by reason of anything contained in these Additional Terms. - -#### 7.4. Independent Contractors. -The parties are independent contractors. Neither party is an employer, employee, agent, partner or legal representative of the other for any purpose and neither has any right, power or authority to create any obligation or responsibility on the behalf of the other. - -#### 7.5. Publicity. -We can issue a press release or other public communication related to your participation in the Program. diff --git a/content/github/site-policy/github-statement-against-modern-slavery-and-child-labor.md b/content/github/site-policy/github-statement-against-modern-slavery-and-child-labor.md deleted file mode 100644 index 8d41be2fb7be..000000000000 --- a/content/github/site-policy/github-statement-against-modern-slavery-and-child-labor.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: GitHub Statement Against Modern Slavery and Child Labor -redirect_from: - - /articles/github-statement-against-modern-slavery-and-child-labor -versions: - free-pro-team: '*' ---- -*2018 statement* - -According to the International Labour Organization (ILO), [40 million people were victims of modern slavery and 152 million children were subject to child labor](https://www.ilo.org/global/about-the-ilo/newsroom/news/WCMS_574717/lang--en/index.htm) globally in 2016. As the [ILO reports](https://www.ilo.org/global/topics/forced-labour/lang--en/index.htm): - - 1 in 4 victims of modern slavery are children. - - Out of the 24.9 million people trapped in forced labour, 16 million people are exploited in the private sector such as domestic work, construction or agriculture; 4.8 million persons in forced sexual exploitation, and 4 million persons in forced labour imposed by state authorities. - - Women and girls are disproportionately affected by forced labour, accounting for 99% of victims in the commercial sex industry, and 58% in other sectors. - -GitHub deplores the presence and persistence of modern slavery and child labor, and takes seriously its responsibility to ensure that neither modern slavery nor child labor takes place in its supply chain or in any part of its business. ("Modern slavery" in this statement refers to slavery, forced or compulsory labor, trafficking, servitude, and workers who are imprisoned, indentured, or bonded. "Child labor" refers to work performed by someone under 16 years of age, or under 14 for light work, provided it is not confined to periods that interfere with the child's schooling and not in conditions that interfere with the child's health or well-being.) - -In accordance with the [UK Modern Slavery Act](https://www.legislation.gov.uk/ukpga/2015/30/section/54/enacted), and in alignment with the [ILO 2014 Protocol to its Forced Labour Convention](https://www.ilo.org/dyn/normlex/en/f?p=NORMLEXPUB:12100:0::NO::P12100_ILO_CODE:P029), [ILO Declaration on Fundamental Principles and Rights at Work](https://www.ilo.org/declaration/thedeclaration/textdeclaration/lang--en/index.htm), and [United Nations Sustainable Development Goals target 8.7](https://sustainabledevelopment.un.org/sdg8), this 2018 Statement Against Modern Slavery and Child Labor ("the Statement") describes the steps GitHub has taken to prevent modern slavery and child labor from occurring in its business or supply chain. - -### GitHub's structure, business, and supply chains - -GitHub is a software development platform with its headquarters in San Francisco, and employees and contractors working in numerous countries. - -All GitHub employees and individual independent contractors are voluntary and at-will. GitHub has a largely distributed workforce, and strives to provide competitive compensation and benefits to its employees and contractors regardless of location. This is true whether we hire independent contractors directly or through an intermediary. - -GitHub does not conduct manufacturing or produce hardware, nor does GitHub use recruitment agencies for the kinds of services often performed by migrant workers. The nature of GitHub's business does not subject it to sudden changes in workload or pricing pressures, which often drive demand for practices that increase the risk of forced labor in supply chains, such as forced overtime. - -GitHub offers free and paid software and web-based software as a service to customers all over the world. GitHub's products include: - - GitHub.com: web-based collaboration and code-hosting platform - - GitHub Enterprise: on-premises collaboration and code hosting software - - Atom: text editor - - Electron: framework for writing cross-platform desktop apps - - GitHub Desktop: desktop app for accessing GitHub.com and GitHub Enterprise - -GitHub's supply chain consists of goods and services for our products and operations including computing services, event planning, purchase of retail and promotional items, office supplies, and leasing of facilities such as office space and data centers. - -### Policies in relation to modern slavery and child labor - -#### Modern slavery and child labor - -**GitHub's Code of Ethics** prohibits knowingly using, participating in, supporting, or tolerating modern slavery (slavery, forced or compulsory labor, trafficking, servitude, or workers who are imprisoned, indentured, or bonded) or child labor in its business operations. Any GitHub employee or contractor who violates this prohibition will be subject to termination of employment or business relationship. - -**GitHub's Standards of Conduct** prohibit unsafe and illegal conduct, including knowingly using, participating in, supporting, or tolerating modern slavery (slavery, forced or compulsory labor, trafficking, servitude, or workers who are imprisoned, indentured, or bonded) or child labor. - -GitHub complies with laws prohibiting trafficking and child labor in the jurisdictions in which it operates, including [U.S. Federal Acquisition Regulation 22.17 on combatting human trafficking](https://www.govinfo.gov/content/pkg/CFR-2009-title48-vol1/pdf/CFR-2009-title48-vol1-part22-subpart22-17.pdf). - -In addition, GitHub established a partnership with the FairHotel Program, which means GitHub encourages its employees to choose FairHotel endorsed hotels-where workers have fair wages, adequate benefits, and a voice on the job. Being a FairHotel partner also signifies that GitHub provides business to hotels as a fair employer. - -Going forward, GitHub will communicate this Statement to all employees, contractors, and suppliers, including recruiters and employment agencies. In addition, GitHub is developing training for all GitHub employees on modern slavery and child labor. GitHub [posts its Statement Against Modern Slavery and Child Labor publicly](/articles/github-statement-against-modern-slavery-and-child-labor). - -GitHub has a non-retaliation policy for reporting workplace-related concerns. Consistent with this Statement, GitHub allows employees and contractors to report issues regarding modern slavery and child labor without fear of retaliation. - -### Labor laws and practices - -GitHub's labor practices are - -**fair**: - - GitHub pays its employees and contractors a fair wage, in accordance with applicable legal wages - - GitHub maintains humane working conditions - - GitHub does not require workers to exceed the maximum hours of daily labor set by local and national laws or regulations - - GitHub pays its employees and contractors in a timely manner, with documentation (such as a pay stub) stating the basis on which they are paid, and keeps employee records in accordance with local and national laws - -**humane and ethical**: - - GitHub uses only voluntary labor - - GitHub prohibits child labor - - GitHub does not engage in physical discipline or abuse - - GitHub does not tolerate harassment or unlawful discrimination in the workforce or workplace - -**respectful**: - - GitHub protects its employees' rights to freedom of association and collective bargaining in accordance with legal requirements, including to post legal notices of employees' rights under the National Labor Relations Act - - GitHub provides benefits to employees at or in excess of levels expected in the industry - - GitHub encourages employees to report any workplace complaint and does not tolerate retaliation for reporting - -### Due diligence processes in relation to modern slavery and child labor in its business and supply chains - -GitHub assesses its business and supply chain for risks related to modern slavery and child labor. Drawing on internal and external human rights expertise, GitHub engaged in a cross-functional analysis (including Policy, Legal, Procurement, Finance, and Operations, especially Human Resources) to determine where labor services exist in its business and supply chain and to identify potential risks related to modern slavery and child labor. GitHub prioritizes areas where those risks might be more significant in terms of severity, scale, or probability for greater due diligence, monitoring, and verification. GitHub continues to consider where risks may occur and how to address them. In addition, GitHub now obtains its suppliers' assurance that they have practices consistent with this Statement, including by complying with laws related to modern slavery or child labor. - -### Places in GitHub's business and supply chains where there is a risk of modern slavery and child labor, and steps GitHub has taken to assess and manage that risk - -GitHub has not identified any high-risk suppliers; however, modern slavery or child labor would be more likely to occur with suppliers for services involving manual labor, such as event support, construction, facilities services, and food services. GitHub will audit its existing suppliers and require those in such higher risk areas to confirm that they provide services consistent with this Statement. - -Although GitHub knows of no actual or alleged modern slavery or child labor in its business or supply chain, and has no credible basis to believe it is occurring, GitHub is committed to providing remedies if GitHub itself were to directly cause modern slavery or child labor and to remediation of broader patterns of non-conformance with this Statement caused by deficiencies in GitHub's systems or processes. GitHub's remediation to individual victims would include protocols for appropriate immediate action to eliminate the modern slavery and child labor practices, along with resources for reasonable and appropriate victim services designed to offset the harm experienced. - -### Effectiveness in ensuring neither modern slavery nor child labor is occurring in GitHub's business or supply chains - -GitHub complies and will continue to comply with laws related to modern slavery and child labor. - -Going forward, GitHub now requires its suppliers to comply with this Statement, as well as laws related to modern slavery and child labor. GitHub now also requires its suppliers to: - - not use, participate in, support, or tolerate modern slavery or child labor - - not use misleading or fraudulent recruitment or engagement practices for employees or contract workers - - not charge employees or contract workers recruitment or engagement fees - - not destroy, conceal, confiscate, or otherwise deny access by an employee or any contract worker to passport, driver's license, or other identity documents; - - allow us to terminate our agreements with them for any violation of its obligations related to modern slavery or child labor; and - - remediate any harms caused to any worker found to be subjected to any form of modern slavery or child labor, if required by law. - -In addition, GitHub strongly encourages its suppliers to: - - conduct anti-modern slavery and child labor due diligence processes, including risk assessments, for their suppliers; - - take steps to address risks identified; and - - use similar anti-modern slavery and child labor language with their suppliers. - -GitHub's procurement instructions to employees making company purchases now includes a reference to the requirement for suppliers to comply with Microsoft's Supplier Code of Conduct or this Statement. - -### Training for GitHub staff about modern slavery and human trafficking - -GitHub is developing modern slavery and child labor training that will be mandatory for all employees, with a view to GitHub's business and supply chain. GitHub will emphasize suppliers providing services involving manual labor, such as event support, construction, facilities services, and food services, as areas of greater potential risk. - -**GitHub's Board of Directors approved [this Statement](/assets/images/help/site-policy/github-statement-against-modern-slavery-and-child-labor.pdf).** diff --git a/content/github/site-policy/github-subprocessors-and-cookies.md b/content/github/site-policy/github-subprocessors-and-cookies.md deleted file mode 100644 index d796bcf72373..000000000000 --- a/content/github/site-policy/github-subprocessors-and-cookies.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: GitHub Subprocessors and Cookies -redirect_from: - - /subprocessors/ - - /github-subprocessors/ - - /github-tracking/ - - /github-cookies/ - - /articles/github-subprocessors-and-cookies -versions: - free-pro-team: '*' ---- - -Effective date: **October 2, 2020** - -GitHub provides a great deal of transparency regarding how we use your data, how we collect your data, and with whom we share your data. To that end, we provide this page, which details [our subprocessors](#github-subprocessors), how we use [cookies](#cookies-on-github), and where and how we perform any [tracking on GitHub](#tracking-on-github). - -### GitHub Subprocessors - -When we share your information with third party subprocessors, such as our vendors and service providers, we remain responsible for it. We work very hard to maintain your trust when we bring on new vendors, and we require all vendors to enter into data protection agreements with us that restrict their processing of Users' Personal Information (as defined in the [Privacy Statement](/articles/github-privacy-statement/)). - -| Name of Subprocessor | Description of Processing | Location of Processing | Corporate Location -|:---|:---|:---|:---| -| Automattic | Blogging service | United States | United States | -| AWS Amazon | Data hosting | United States | United States | -| Braintree (PayPal) | Subscription credit card payment processor | United States | United States | -| Clearbit | Marketing data enrichment service | United States | United States | -| Discourse | Community forum software provider | United States | United States | -| DiscoverOrg | Marketing data enrichment service | United States | United States | -| Eloqua | Marketing campaign automation | United States | United States | -| Google Apps | Internal company infrastructure | United States | United States | -| Google Analytics | Analytics and performance | United States | United States | -| LinkedIn Navigator | Marketing data enrichment service | United States | United States | -| Magic Robot | Campaign reporting (Salesforce Add-on) | United States | United States | -| MailChimp | Customer ticketing mail services provider | United States | United States | -| Mailgun | Transactional mail services provider | United States | United States | -| Microsoft | Microsoft Services | United States | United States | -| Monday.com | Team collaboration and project management platform | United States | Israel | -| Nexmo | SMS notification provider | United States | United States | -| Oracle | Corporate financial system | United States | United States | -| Salesforce.com | Customer relations management | United States | United States | -| Sendgrid | Transactional mail services provider | United States | United States | -| Sentry.io | Application monitoring provider | United States | United States | -| Stripe | Payment provider | United States | United States | -| Twilio | SMS notification provider | United States | United States | -| Zendesk | Customer support ticketing system | United States | United States | -| Zuora | Corporate billing system | United States | United States | - -When we bring on a new subprocessor who handles our Users' Personal Information, or remove a subprocessor, or we change how we use a subprocessor, we will update this page. If you have questions or concerns about a new subprocessor, we'd be happy to help. Please contact us via {% data variables.contact.contact_privacy %}. - -### Cookies on GitHub - -GitHub uses cookies and similar technologies (collectively, “cookies”) to provide and secure our websites, as well as to analyze the usage of our websites, in order to offer you a great user experience. Please take a look at our [Privacy Statement](/github/site-policy/github-privacy-statement#our-use-of-cookies-and-tracking) if you’d like more information about cookies, and on how and why we use them. - -Since the number and names of cookies may change,the table below may be updated from time to time. - -| Service Provider | Cookie Name | Description | Expiration* | -|:---|:---|:---|:---| -| GitHub | `app_manifest_token` | This cookie is used during the App Manifest flow to maintain the state of the flow during the redirect to fetch a user session. | five minutes | -| GitHub | `cookie-preferences` | This cookie is used to track user cookie preferences. | one year | -| GitHub | `_device_id` | This cookie is used to track recognized devices. | one year | -| GitHub | `dotcom_user` | This cookie is used to signal to us that the user is already logged in. | one year | -| GitHub | `_gh_ent` | This cookie is used for temporary application and framework state between pages like what step the customer is on in a multiple step form. | two weeks | -| GitHub | `_gh_sess` | This cookie is used for temporary application and framework state between pages like what step the user is on in a multiple step form. | session | -| GitHub | `gist_oauth_csrf` | This cookie is set by Gist to ensure the user that started the oauth flow is the same user that completes it. | deleted when oauth state is validated | -| GitHub | `gist_user_session` | This cookie is used by Gist when running on a separate host. | two weeks | -| GitHub | `has_recent_activity` | This cookie is used to prevent showing the security interstitial to users that have visited the app recently. | one hour | -| GitHub | `__Host-gist_user_session_same_site` | This cookie is set to ensure that browsers that support SameSite cookies can check to see if a request originates from GitHub. | two weeks | -| GitHub | `__Host-user_session_same_site` | This cookie is set to ensure that browsers that support SameSite cookies can check to see if a request originates from GitHub. | two weeks | -| GitHub | `logged_in` | This cookie is used to signal to us that the user is already logged in. | one year | -| GitHub | `marketplace_repository_ids` | This cookie is used for the marketplace installation flow. | one hour | -| GitHub | `marketplace_suggested_target_id` | This cookie is used for the marketplace installation flow. | one hour | -| GitHub | `_octo` | This cookie is used by our internal analytics service to distinguish unique users and clients. | one year | -| GitHub | `org_transform_notice` | This cookie is used to provide notice during organization transforms. | one hour | -| GitHub | `private_mode_user_session` | This cookie is used for Enterprise authentication requests. | two weeks | -| GitHub | `saml_csrf_token` | This cookie is set by SAML auth path method to associate a token with the client. | until user closes browser or completes authentication request | -| GitHub | `saml_csrf_token_legacy` | This cookie is set by SAML auth path method to associate a token with the client. | until user closes browser or completes authentication request | -| GitHub | `saml_return_to` | This cookie is set by the SAML auth path method to maintain state during the SAML authentication loop. | until user closes browser or completes authentication request | -| GitHub | `saml_return_to_legacy` | This cookie is set by the SAML auth path method to maintain state during the SAML authentication loop. | until user closes browser or completes authentication request | -| GitHub | `tz` | This cookie allows your browser to tell us what time zone you're in. | session | -| GitHub | `user_session` | This cookie is used to log you in. | two weeks | -| Google Analytics** | `_ga` | This cookie is used by Google Analytics. | two years | -| Google Analytics** | `_gat` | This cookie is used by Google Analytics. | one minute | -| Google Analytics** | `_gid` | This cookie is used by Google Analytics. | one day | - -_*_ The **expiration** dates for the cookies listed below generally apply on a rolling basis. - -_**_ We use **Google Analytics** as a third party analytics service to collect information about how our website performs and how our users, in general, navigate through and use GitHub. This helps us evaluate our users' use of GitHub, compile statistical reports on activity, and improve our content and website performance. - -You can control your Google Analytics cookie preferences through our cookie preference link located at the footer of our website. In addition, Google provides further information about its own privacy practices and [offers a browser add-on to opt out of Google Analytics tracking](https://tools.google.com/dlpage/gaoptout). - -(!) Please note certain pages on our website may set other third party cookies. For example, we may embed content, such as videos, from another site that sets a cookie. While we try to minimize these third party cookies, we can’t always control what cookies this third party content sets. - -### Tracking on GitHub - -"[Do Not Track](https://www.eff.org/issues/do-not-track)" (DNT) is a privacy preference you can set in your browser if you do not want online services to collect and share certain kinds of information about your online activity from third party tracking services. GitHub responds to browser DNT signals and follows the [W3C standard for responding to DNT signals](https://www.w3.org/TR/tracking-dnt/). If you would like to set your browser to signal that you would not like to be tracked, please check your browser's documentation for how to enable that signal. There are also good applications that block online tracking, such as [Privacy Badger](https://www.eff.org/privacybadger). - -If you have not enabled DNT on a browser that supports it, cookies on some parts of our website will track your online browsing activity on other online services over time, though we do not permit third parties other than our analytics and service providers to track GitHub users' activity over time on GitHub. We have agreements with certain vendors, such as analytics providers, who help us track visitors' movements on certain pages on our website. Only our vendors, who are collecting personal information on our behalf, may collect data on our pages, and we have signed data protection agreements with every vendor who collects this data on our behalf. We use the data we receive from these vendors to better understand our visitors' interests, to understand our website's performance, and to improve our content. Any analytics vendor will be listed in our [subprocessor list](#github-subprocessors), and you may see a list of every page where we collect this kind of data below. diff --git a/content/github/site-policy/github-supplemental-terms-for-microsoft-volume-licensing.md b/content/github/site-policy/github-supplemental-terms-for-microsoft-volume-licensing.md deleted file mode 100644 index 523adeb925c0..000000000000 --- a/content/github/site-policy/github-supplemental-terms-for-microsoft-volume-licensing.md +++ /dev/null @@ -1,321 +0,0 @@ ---- -title: GitHub Supplemental Terms for Microsoft Volume Licensing -redirect_from: - - /articles/GitHub-Supplemental-Terms-for-Microsoft-Volume-Licensing/ - - /articles/github-supplemental-terms-for-microsoft-volume-licensing -versions: - free-pro-team: '*' ---- - -Version Effective Date: July 20, 2020 - -The following GitHub Supplemental Terms (including any applicable Order Forms) supplement Customer's Microsoft volume licensing agreement ("**Microsoft Customer Agreement**") and, together with the Microsoft Customer Agreement, govern Customer's use of the Products (as defined below). The Microsoft Customer Agreement is incorporated herein by this reference. Capitalized terms used but not defined in these supplemental terms have the meanings assigned to them in the Microsoft Customer Agreement. - -These Supplemental Terms apply to the following GitHub Offerings, as further defined below (collectively, the "**Products**"): - -- GitHub Enterprise (comprised of GitHub Enterprise Server, which may include Add-on Software, and GitHub Enterprise Cloud) and GitHub One; - -- Any related Support; and - -- Any related Professional Services. - -These GitHub Supplemental Terms include the following Sections and Exhibits, each of which is incorporated by reference herein: - -* SECTION 1: GitHub Enterprise Server License Terms; - -* SECTION 2: GitHub Enterprise Cloud Terms of Service; - -* SECTION 3: General Provisions; and - -* EXHIBIT A: Definitions. - - - -## SECTION 1: GITHUB ENTERPRISE SERVER LICENSE TERMS - -This Section 1 details terms applicable to Customer’s use of the Software. - -### 1.1 License Grant. - -GitHub grants to Customer a non-exclusive, non-transferable, worldwide, royalty-free, limited-term license to install and use the Software for Customer’s internal business purposes during the applicable Subscription Term, in accordance with the Documentation, and only for the number of Subscription Licenses stated in Customer’s Order Form. The Software includes components licensed to GitHub by third parties, including software whose licenses require GitHub to make the source code for those components available. The source code for such components will be provided upon request. Without limiting the foregoing, this license permits Customer to download and run Microsoft SQL Server Standard Edition container image for Linux files (“**SQL Server Images**”), which may be used only with the Software as documented. Customer’s right to use the SQL Server Images ends when Customer no longer has rights to use the Software, and Customer must uninstall the SQL Server Images when its right to use them ends. Microsoft Corporation may disable SQL Server Images at any time. - -### 1.2 Restrictions. - -Except as expressly permitted by law or by applicable third-party license, Customer and its Affiliates must not and must not allow any third party to: (i) sublicense, sell, rent, lease, transfer, assign, or redistribute the Software; (ii) host the Software for the benefit of third parties; (iii) disclose or permit any third party to access the Software, except as expressly permitted in this Section 1; (iv) hack or modify the License Key, or avoid or change any license registration process; (v) except for Customer Modifications, modify or create derivative works of the Software, or merge the Software with other software; (vi) disassemble, decompile, bypass any code obfuscation, or otherwise reverse engineer the Software or attempt to derive any of its source code, in whole or in part; (vii) modify, obscure, or delete any proprietary rights notices included in or on the Software or Documentation; or (viii) otherwise use or copy the Software or Documentation in a manner not expressly permitted by these GitHub Supplemental Terms. - -### 1.3 Delivery. - -GitHub will make the License Key available for Customer to download on a secure, password-protected website. All deliveries under this Section 1 will be electronic. For the avoidance of doubt, Customer is responsible for installation of any Software and acknowledge that GitHub has no further delivery obligation with respect to the Software after delivery of the License Key. As Updates become available, GitHub will make those available for download on the same website. Customer must Update the Software on a commercially reasonable basis but no less than one (1) time per year. Customer is responsible for maintaining the confidentiality of Customer’s usernames and passwords. - -### 1.4 Verification. - -At GitHub's request, Customer will promptly provide GitHub with a Software-generated report verifying that Customer is using the Software in accordance with these GitHub Supplemental Terms. GitHub will invoice Customer for any additional use, effective from the date its use first exceeded the terms of these GitHub Supplemental Terms. - -### 1.5 Support - -GitHub will provide technical support for the Software as further described in the Microsoft Customer Agreement. GitHub may provide enhanced Support offerings for the Software and Service (including the Premium, Premium Plus, and Engineering Direct Support offerings) in accordance with the [Support terms](/enterprise/admin/enterprise-support/about-github-premium-support-for-github-enterprise), and at the Support level, Fees, and Subscription Term specified in an Order Form or SOW. Notwithstanding anything to the contrary in the Microsoft Customer Agreement, (i) GitHub will use reasonable efforts to correct any material, reproducible errors in the Software upon Customer's notification of an error but will not be responsible for providing Support where (a) someone (other than GitHub) modifies the Software; (b) Customer changes its operating system or environment in a way that adversely affects the Software or its performance; (c) Customer uses the Software in a manner other than as authorized under the Microsoft Customer Agreement, this Section 1 or the Documentation; or (d) there is a Customer accident or negligence, or misuse of the Software; and (ii) GitHub will only Support a given Release for one (1) year from the original Release date, or six (6) months from the last Update of the Release, whichever is longer. - -### 1.6 Updates; Releases. - -#### 1.6.1 Generally. - -GitHub will make Updates and Releases to the Software available to Customer on the same secure website where Customer downloaded the Software and the License Key. - -#### 1.6.2 Supported Releases. - -GitHub will only Support a given Release of the Software for one (1) year from the original Release date, or six (6) months from the last Update of the Release, whichever is longer. If Customer requires Support for earlier Releases of the Software, then Customer must pay for that Support in accordance with the terms of a mutually agreed upon Order Form or SOW. - -### 1.7 Add-On Software. - -Add-On Software is licensed on a per User basis. For the avoidance of doubt, and unless otherwise set forth in an Order Form, the number of Subscription Licenses Customer has at any given time for Add-On Software must equal the number of Subscription Licenses Customer has for the Products under this Agreement. For example, if Customer wishes to purchase a subscription to Insights and already holds Subscription Licenses for 100 Users for the Products, it must purchase Subscription Licenses for 100 Users for Insights. - -### 1.8 Data Protection Considerations for Use of GitHub Insights and Learning Lab for Enterprise Server. - -If Customer’s planned use of GitHub Insights or Learning Lab for Enterprise Server involves processing personal data, Customer is solely responsible for determining whether or not to complete a data protection impact assessment or otherwise secure formal legal analysis of Customer’s planned use. It is in Customer’s sole discretion whether to use GitHub Insights or Learning Lab for Enterprise Server to process Customer’s employees’ and/or users’ data, and if Customer does so, Customer is solely responsible for conducting such processing in compliance with applicable law. - -### 1.9 Limited Software Warranty. - -GitHub warrants that, for ninety (90) days from the date it is made available for initial download, the unmodified Software will substantially conform to its Documentation. GitHub does not warrant that Customer's use of the Software will be uninterrupted, or that the operation of the Software will be error-free. This warranty will not apply if Customer modifies or uses the Software in any way that is not expressly permitted by this Section 1 and the Documentation. GitHub's only obligation, and Customer's only remedy, for any breach of this limited warranty will be as set forth in the Microsoft Customer Agreement. - -## SECTION 2: GITHUB ENTERPRISE CLOUD TERMS OF SERVICE - -Upon creation of a Corporate Account and/or an Organization on the Service by Customer or by GitHub on Customer’s behalf, this Section 2 details terms applicable to Customer’s use of the Service. - -### 2.1 Account Terms. - -#### 2.1.1 Account Controls. - - **(i) Users.** Customer acknowledges that Users retain ultimate administrative control over their individual accounts and the Content within them. [GitHub's Standard Terms of Service](/github/site-policy/github-terms-of-service) govern Users' use of the Service, except with respect to Users' activities under this Section 2. - - **(ii) Organizations.** Customer retains ultimate administrative control over any Organization created on Customer’s behalf and User-Generated Content posted to the repositories within its Organization(s), subject to this Section 2. This Section 2 will govern the use of Customer’s Organization(s). - -#### 2.1.2 Account Requirements. - -In order to create an account, Customer must adhere to the following: - -**(i)** Customer must not create an account for use of any person under the age of 13. If GitHub learns of any User under the age of 13, it will terminate that User's account immediately. If Customer or its User(s) are located in a country outside the United States, that country's minimum age may be older; in such a case, Customer is responsible for complying with that country's laws. - -**(ii)** A User’s login may not be shared by multiple people. - -**(iii)** Customer must not use the Service (a) in violation of export control or sanctions laws of the United States or any other applicable jurisdiction, (b) if it is located in or ordinarily resident in a country or territory subject to comprehensive sanctions administered by the U.S. Office of Foreign Assets Control (OFAC), or (c) if Customer is or is working on behalf of a [Specially Designated National (SDN)](https://www.treasury.gov/resource-center/sanctions/SDN-List/Pages/default.aspx) or a person subject to similar blocking or denied party prohibitions. For more information, please see [GitHub’s Trade Controls policy](/github/site-policy/github-and-trade-controls). - -#### 2.1.3 Account Security. - -Customer is responsible for: (i) all Content posted and activity that occurs under its Corporate Account; (ii) maintaining the security of its account login credentials; and (iii) promptly [notifying GitHub](https://support.github.com/contact) upon becoming aware of any unauthorized use of, or access to, the Service through its account. GitHub will not be liable for any loss or damage from Customer’s failure to comply with this Section 2.1.3. - -#### 2.1.4 Additional Terms. - -In some situations, third parties' terms may apply to Customer’s use of the Service. For example, Customer may be a member of an Organization with its own terms or license agreements; Customer may download an application that integrates with the Service; or Customer may use the Service to authenticate to another service. While the Microsoft Customer Agreement, including these GitHub Supplemental Terms, are GitHub's full agreement with Customer, other parties' terms govern their relationships with Customer. - -#### 2.1.5 U.S. Federal Government Terms. - -If Customer is a U.S. federal government agency or otherwise accessing or using any portion of the Service in a government capacity, the [U.S. Federal Government Amendment](/github/site-policy/amendment-to-github-terms-of-service-applicable-to-us-federal-government-users) applies, and Customer agrees to its provisions. - -### 2.2 Compliance with Laws; Acceptable Use; Privacy. - -#### 2.2.1 Compliance with Laws and Regulations. - -Customer’s use of the Service must not violate any applicable laws, including copyright or trademark laws, export control laws, or regulations in its jurisdiction. - -#### 2.2.2 Acceptable Use. - -Customer’s use of the Service must comply with [GitHub's Acceptable Use Policies](/github/site-policy/github-acceptable-use-policies) and [GitHub’s Community Guidelines](/github/site-policy/github-community-guidelines). Customer must not use the Service in any jurisdiction for unlawful, obscene, offensive or fraudulent Content or activity, such as advocating or causing harm, interfering with or violating the integrity or security of a network or system, evading filters, sending unsolicited, abusive, or deceptive messages, viruses or harmful code, or violating third party rights. - -#### 2.2.3 Privacy. -[The GitHub Privacy Statement](/github/site-policy/github-privacy-statement) and the [GitHub Data Protection Addendum](/github/site-policy/github-data-protection-addendum) provide detailed notice of GitHub's privacy and data use practices as well as GitHub's processing and security obligations with respect to Customer Personal Data. Any person, entity, or service collecting data from the Service must comply with the [GitHub Privacy Statement](/github/site-policy/github-privacy-statement), particularly in regards to the collection of Users' Personal Information (as defined in the GitHub Privacy Statement). If Customer collects any User Personal Information from GitHub, Customer will only use it for the purpose for which the External User has authorized it. Customer will reasonably secure any such Personal Information, and Customer will respond promptly to complaints, removal requests, and "do not contact" requests from GitHub or External Users. - -### 2.3 Content Responsibility; Ownership; License Rights. - -#### 2.3.1 Responsibility for User-Generated Content. -Customer may create or upload User-Generated Content while using the Service. Customer is solely responsible for any User-Generated Content that it posts, uploads, links to or otherwise makes available via the Service, regardless of the form of that User-Generated Content. GitHub is not responsible for any public display or misuse of User-Generated Content. - -#### 2.3.2 Ownership of Content, Right to Post, and License Grants. - -**(i)** Customer retains ownership of Customer Content that Customer creates or owns. Customer acknowledges that it: (a) is responsible for Customer Content, (b) will only submit Customer Content that Customer has the right to post (including third party or User-Generated Content), and (c) Customer will fully comply with any third-party licenses relating to Customer Content that Customer posts. - -**(ii)** Customer grants the rights set forth in Sections 2.3.3 through 2.3.6, free of charge and for the purposes identified in those sections until such time as Customer removes Customer Content from GitHub servers, except for Content Customer has posted publicly and that External Users have Forked, in which case the license is perpetual until such time as all Forks of Customer Content have been removed from GitHub servers. If Customer uploads Customer Content that already comes with a license granting GitHub the permissions it needs to run the Service, no additional license is required. - -#### 2.3.3 License Grant to GitHub. -Customer grants to GitHub the right to store, parse, and display Customer Content, and make incidental copies only as necessary to provide the Service. This includes the right to copy Customer Content to GitHub's database and make backups; display Customer Content to Customer and those to whom Customer chooses to show it; parse Customer Content into a search index or otherwise analyze it on GitHub's servers; share Customer Content with External Users with whom Customer chooses to share it; and perform Customer Content, in case it is something like music or video. These rights apply to both public and Private Repositories. This license does not grant GitHub the right to sell Customer Content or otherwise distribute or use it outside of the Service. Customer grants to GitHub the rights it needs to use Customer Content without attribution and to make reasonable adaptations of Customer Content as necessary to provide the Service. - -#### 2.3.4 License Grant to External Users. -**(i)** Any Content that Customer posts publicly, including issues, comments, and contributions to External Users' repositories, may be viewed by others. By setting its repositories to be viewed publicly, Customer agree to allow External Users to view and Fork Customer’s repositories. - -**(ii)** If Customer sets its pages and repositories to be viewed publicly, Customer grants to External Users a nonexclusive, worldwide license to use, display, and perform Customer Content through the Service and to reproduce Customer Content solely on the Service as permitted through functionality provided by GitHub (for example, through Forking). Customer may grant further rights to Customer Content if Customer [adopts a license](/github/building-a-strong-community/adding-a-license-to-a-repository#including-an-open-source-license-in-your-repository). If Customer is uploading Customer Content that it did not create or own, Customer is responsible for ensuring that the Customer Content it uploads is licensed under terms that grant these permissions to External Users. - -#### 2.3.5 Contributions Under Repository License. -Whenever Customer makes a contribution to a repository containing notice of a license, Customer licenses such contribution under the same terms and agrees that it has the right to license such contribution under those terms. If Customer has a separate agreement to license its contributions under different terms, such as a contributor license agreement, that agreement will supersede. - -#### 2.3.6 Moral Rights. -Customer retains all moral rights to Customer Content that it uploads, publishes, or submits to any part of the Service, including the rights of integrity and attribution. However, Customer waives these rights and agrees not to assert them against GitHub, solely to enable GitHub to reasonably exercise the rights granted in Section 2.3, but not otherwise. - -### 2.4 Private Repositories. - -#### 2.4.1 Control. - -Customer is responsible for managing access to its Private Repositories, including invitations, administrative control of Organizations and teams, and termination of access. - -#### 2.4.2 Confidentiality. - -GitHub considers Customer Content in Customer’s Private Repositories to be Customer’s Confidential Information. GitHub will protect and keep strictly confidential the Customer Content of Private Repositories in accordance with the applicable confidentiality provision in the Microsoft Customer Agreement. - -#### 2.4.3 Access. - -GitHub may only access Customer’s Private Repositories (i) with Customer’s consent and knowledge, for support reasons, or (ii) when access is required for security reasons. Customer may choose to enable additional access to its Private Repositories. For example, Customer may enable various GitHub services or features that require additional rights to Customer Content in Private Repositories. These rights may vary depending on the service or feature, but GitHub will continue to treat Customer Content in Customer’s Private Repositories as Customer’s Confidential Information. If those services or features require rights in addition to those it needs to provide the Service, GitHub will provide an explanation of those rights. - -#### 2.4.4 Exclusions. - -If GitHub has reason to believe the Content of a Private Repository is in violation of the law or of these GitHub Supplemental Terms, GitHub has the right to access, review, and remove that Content. Additionally, GitHub may be compelled by law to disclose the Content of Customer’s Private Repositories. Unless otherwise bound by requirements under law or if in response to a security threat or other risk to security, GitHub will provide notice of such actions. - -### 2.5. Intellectual Property Notices. - -#### 2.5.1 GitHub's Rights to Content. - -The look and feel of the Service is copyright © GitHub, Inc. All rights reserved. Customer may not duplicate, copy, or reuse any portion of the HTML/CSS, Javascript, or visual design elements or concepts without express written permission from GitHub. - -#### 2.5.2 Copyright Infringement and DMCA Policy. - -If Customer is a copyright owner and believes that Content on the Service violates Customer’s copyright, Customer may contact GitHub in accordance with GitHub's [Digital Millennium Copyright Act Policy](https://github.com/contact/dmca) by notifying GitHub via its [DMCA Form](https://github.com/contact/dmca-notice) or by emailing copyright@github.com. - -#### 2.5.3 GitHub Trademarks and Logos. - -If Customer would like to use GitHub's trademarks, Customer must follow all of GitHub's trademark guidelines, including those on the [GitHub Logos and Usage page](https://github.com/logos). - -### 2.6 Suspension. - -GitHub has the right to suspend access to all or any part of the Service, including removing Content, at any time for violation of the Microsoft Customer Agreement, including these GitHub Supplemental Terms, or to protect the integrity, operability, and security of the Service, effective immediately, with or without notice. Unless prohibited by law or legal process or to prevent imminent harm to the Service or any third party, GitHub typically provides notice in the form of a banner or email on or before such suspension. GitHub will, in its discretion and using good faith, tailor any suspension as needed to preserve the integrity, operability, and security of the Service. - -### 2.7 Communications with GitHub. - -For contractual purposes, Customer (1) consents to receive communications in an electronic form via the email address it submitted or via the Service; and (2) agrees that all Terms of Service, agreements, notices, disclosures, and other communications that GitHub provides electronically satisfies any legal requirement that those communications would satisfy if they were on paper. This section does not affect Customer's non-waivable rights. - -### 2.8 Service Level Agreement. - -GitHub’s quarterly uptime commitment for the Service is provided in the [Enterprise Service Level Agreement](/github/site-policy/github-enterprise-service-level-agreement). Customer will be entitled to a service credit if GitHub does not meet its service level. - -### 2.9 Service Changes. - -GitHub changes the Service via Updates and addition of new features. Subject to Section 2.8, GitHub reserves the right at any time to modify or discontinue, temporarily or permanently, the Service (or any part of it) with or without notice. - -### 2.10 Additional Service Features. - -Some Service features may be subject to additional terms as set forth in the [GitHub Additional Product Terms](/github/site-policy/github-additional-product-terms). By accessing or using these features, Customer agrees to the GitHub Additional Product Terms. - -## SECTION 3: GENERAL PROVISIONS. - -This Section 3 sets forth the terms and conditions applicable to Customer’s purchase and use of any of the Products. - -### 3.1 Term; Termination; Effect of Termination. - -#### 3.1.1 Term. -These GitHub Supplemental Terms will continue in effect until terminated by a Party in accordance with this Section 3.1. - -#### 3.1.2 Termination for Convenience; Account Cancellation. -Either Party may terminate an Order Form or these GitHub Supplemental Terms, without cause, upon at least thirty (30) days' prior written notice before the end of the then-current Subscription Term. If Customer elects to terminate an Order Form or these GitHub Supplemental Terms, it is Customer's responsibility to properly cancel its account with GitHub by going into Settings in the global navigation bar at the top of the screen. GitHub cannot cancel accounts in response to an email or phone request. - -#### 3.1.3 Termination for Material Breach. -Either Party may terminate these GitHub Supplemental Terms immediately upon notice if the other Party breaches a material obligation under these GitHub Supplemental Terms and fails to cure the breach within thirty (30) days from the date it receives notification. GitHub may terminate these GitHub Supplemental Terms if Customer's Account has been suspended for more than 90 days. - -#### 3.1.4 Effect of Termination. -Upon termination of these GitHub Supplemental Terms, Customer may not execute additional Order Forms; however, these GitHub Supplemental Terms will remain in effect for the remainder of any active Order Forms. When an Order Form terminates or expires, as to that Order Form: (i) the Subscription Term will immediately end; (ii) any Subscription Licenses in the Order Form will automatically terminate, and Customer will no longer have the right to use the Products; (iii) if any Fees were owed prior to termination, Customer must pay those Fees immediately; (iv) Customer must destroy all copies of the Software in Customer’s possession or control, and certify in writing to GitHub that Customer has done so; (v) each Party will promptly return (or, if the other party requests it, destroy) all Confidential Information belonging to the other to the extent permitted by the Service. Notwithstanding the foregoing, Customer may continue to access the Software to migrate Customer’s data and may request migration of the data in its repositories for up to ninety (90) days after termination or expiration of this Agreement or an Order Form; however, Customer may not use the Software or Service on a production basis during that time. Any provisions which by their nature should reasonably survive will survive the termination or expiration of this Agreement or an Order Form. - -### 3.2 Feedback. -Customer may provide Feedback to GitHub regarding the Products. Feedback is voluntary and is not Customer Confidential Information, even if designated as such. GitHub may fully exercise and exploit such Feedback for the purpose of (i) improving the operation, functionality and use of GitHub’s existing and future product offerings and commercializing such offerings; and (ii) publishing aggregated statistics about the quality of the Products, provided that no data in any such publication will be used to specifically identify Customer, its employees or Customer’s proprietary software code. - -### 3.3 Compliance with Laws and Regulations. -Customer will comply with all applicable laws and regulations, including, but not limited to, data protection and employment laws and regulations, in its use of the Products. - -### 3.4 Order of Precedence -In the event of a conflict between the Supplemental Terms, on one hand, and an Order Form, on the other, the Order Form will govern with respect to that order only. In the event of a conflict between the Supplemental Terms (including any Order Form) and the Microsoft Customer Agreement, the Supplemental Terms will govern with respect to the subject matter only. - -## EXHIBIT A: DEFINITIONS - -**"Active User"** means a User trying to access the Service at the time of an Outage. - -**”Add-On Software”** means Advanced Security, Insights, Learning Lab for Enterprise Server, and other additional Software add-on products that GitHub may offer from time to time. - -**“Advanced Security”** means the Software feature which enables Customer to identify security vulnerabilities through customizable and automated semantic code analysis. - -**"Affiliate"** means any entity that directly or indirectly controls, is controlled by, or is under common control with a party where "control" means having more than fifty percent (50%) ownership or the right to direct the management of the entity. - -**“All Users”** means, collectively, Customer’s Users and External Users who use the Service. - -**“Connect”** or **“GitHub Connect”** means a feature included in the Software that enables Customer to connect the Software with the Service. Use of GitHub Connect is subject to the GitHub Connect terms set forth in the [GitHub Additional Product Terms](/github/site-policy/github-additional-product-terms). - -**"Content"** means, without limitation, text, data, articles, images, photographs, graphics, software, applications, designs, features, and other materials that are featured, displayed, or otherwise made available through the Service. - -**"Corporate Account"** means an account created by a User on behalf of an entity. - -**"Customer"** means, collectively, the company or organization that has entered into these GitHub Supplemental Terms with GitHub by clicking on the "I AGREE" or similar button or by accessing the Products, and Customer's Affiliates and Representatives. - -**"Customer Content"** means Content that Customer creates, owns, or to which Customer holds the rights. - -**“Customer Modifications”** means Software modifications Customer may make solely for the purpose of developing bug fixes, customizations, or additional features to any libraries licensed under open source licenses that may be included with or linked to by the Software. - -**"Documentation"** means any manuals, documentation and other supporting materials relating to the Software or Service that GitHub provides or makes available to Customer. - -**"Effective Date"** is the earlier of the date on which Customer (i) agrees to the terms and conditions of these GitHub Supplemental Terms as described above, or (ii) first places an order for the Products. - -**"Essential Services"** means the services essential to GitHub's core version control functionality, including creating, Forking, and cloning repositories; creating, committing, and merging branches; creating, reviewing, and merging pull requests; and, web, API, and Git client interfaces to the core Git workflows. The following are examples of peripheral features and services not included: webhooks, Gists, Pages, and email notifications. - -**"External User"** means an individual, not including Customer’s Users, who visit or use the Service. - -**"Fees"** means the fees Customer is required to pay GitHub to (i) use the Products during the applicable Subscription Term or (ii) receive Professional Services, as such fees are reflected on an Order Form or SOW. - -**“Feedback”** means any ideas, know-how, algorithms, code contributions, suggestions, enhancement requests, recommendations or any other feedback on GitHub products or services. - -**“Fork”** means to copy the Content of one repository into another repository. - -**"GitHub"** means, collectively, GitHub, Inc., its Affiliates and Representatives. - -**"GitHub Content"** means Content that GitHub creates, owns, or to which it holds the rights. - -**"GitHub Insights"** or **“Insights”** means the Software feature which provides Customer with metrics, analytics, and recommendations relating to their use of the Software. GitHub Insights does not include legacy features of GitHub including organization insights and repository insights. - -**“GitHub One”** means the Product bundle which includes GitHub Enterprise, Advanced Security, Insights, Learning Lab for Enterprise Server, and Premium Plus or Engineering Direct Support. - -**"Learning Lab for Enterprise Server"** means the Software feature that enables Users to learn about GitHub functionality, including associated Documentation. - -**"License Key"** means the data file used by the Software's access control mechanism that allows Customer to install, operate, and use the Software. - -**“Machine Account”** means an account registered by an individual human who accepts the applicable terms of service on behalf of the Machine Account, provides a valid email address, and is responsible for its actions. A Machine Account is used exclusively for performing automated tasks. Multiple Users may direct the actions of a Machine Account, but the owner of the account is ultimately responsible for the machine's actions. - -**"Order Form"** means written or electronic documentation (including a quote) that the Parties use to order the Products. - -**“Organization”** means a shared workspace that may be associated with a single entity or with one or more Users where multiple Users can collaborate across many projects at once. A User can be a member of more than one Organization. - -**"Outage"** means the interruption of an Essential Service that affects more than 50% of Active Users. - -**“Private Repository”** means a repository which allows a User to control access to Content. - -**"Professional Services"** means training, consulting, or implementation services that GitHub provides pursuant to a mutually executed SOW. Professional Services do not include Support. - -**“Public Repository”** means a repository whose Content is visible to All Users. - -**"Release"** means a Software release that GitHub makes generally available to its customers, along with any corresponding changes to Documentation, that contains enhancements, new features, or new functionality, generally indicated by a change in the digit to the right of the first decimal point (e.g., x.x.x to x.y.x) or to the left of the first decimal point (e.g., x.x.x to y.x.x). - -**"Representatives"** means a Party’s employees, agents, independent contractors, consultants, and legal and financial advisors. - -**“Scraping”** means extracting data from the Service via an automated process, such as a bot or webcrawler, and does not include the collection of information through GitHub's API. - -**"Service"** means the hosted GitHub Enterprise Cloud service. The Service includes: Organization account(s), SAML single sign-on, access provisioning, and any applicable Documentation. This list of features and services is non-exhaustive and may be updated from time to time. - -**"Service Credit"** means a dollar credit, calculated as set forth below, that GitHub may credit back to an eligible account. - -**"Software"** means GitHub Enterprise Server on-premises software. Software includes the GitHub Connect feature, any applicable Documentation, any Updates to the Software that GitHub provides to Customer or that it can access under these GitHub Supplemental Terms, and, if included in Customer’s subscription, Add-On Software. - -**"SOW"** means a mutually executed statement of work detailing the Professional Services GitHub will perform, any related Fees, and each Party's related obligations. - -**“Subscription License”** means the license assigned to each User to install, operate, access, and use the Products on Customer’s behalf. Customer may only assign one Subscription License per User across its GitHub Enterprise Server instances and GitHub Enterprise Cloud Organizations. Each User will have access to as many of Customer’s Enterprise Server instances or Enterprise Cloud Organizations, as Customer permits. For clarity, however, once Customer assigns a Subscription License to a User, Customer will not be authorized to bifurcate the Subscription License so that one User can use a Subscription License on Enterprise Server while another User uses the same Subscription License on another instance of GitHub Enterprise Server or on an Organization on GitHub Enterprise Cloud. Subscription Licenses are granted on a per User basis and multiple Users may not use the same Subscription License. Customer may reassign a Subscription License to a new User only after ninety (90) days from the last reassignment of that same Subscription License, unless the reassignment is due to (i) permanent hardware failure or loss, (ii) termination of the User’s employment or contract, or (iii) temporary reallocation of Subscription Licenses to cover a User’s absence. When Customer reassigns a Subscription License from one User to another, Customer must block the former User’s access to the Subscription License and Customer’s Organizations. - -**“Subscription Term”** means one (1) year from the applicable effective date of an order or as otherwise stated in the Order Form. - -**“Support”** means technical support for the Software or Service that GitHub may provide. - -**“Update”** means a Software release that GitHub makes generally available to its customers, along with any corresponding changes to Documentation, that contains error corrections or bug fixes, generally indicated by a change in the digit to the right of the second decimal point (e.g., x.x.x to x.x.y). - -**“Uptime”** means the percentage of time in a given quarter where GitHub's Essential Services will not be interrupted by an Outage affecting more than 50% of Active Users - -**“User”** means (i) with respect to the Software, a single person or Machine Account that initiates the execution of the Software or interacts with or directs the Software in the performance of its functions; and (ii) with respect to the Service, an individual or Machine Account who (a) accesses or uses the Service, (b) accesses or uses any part of Customer’s account, or (c) directs the use of Customer’s account in the performance of functions, in each case on Customer’s behalf. The number of Users should not exceed the number of Subscription Licenses that Customer has purchased. - -**“User-Generated Content”** means Content created or owned by a third party or External User. diff --git a/content/github/site-policy/github-terms-of-service.md b/content/github/site-policy/github-terms-of-service.md deleted file mode 100644 index 368578fb34bf..000000000000 --- a/content/github/site-policy/github-terms-of-service.md +++ /dev/null @@ -1,313 +0,0 @@ ---- -title: GitHub Terms of Service -redirect_from: - - /tos/ - - /terms/ - - /terms-of-service/ - - /github-terms-of-service-draft/ - - /articles/github-terms-of-service -versions: - free-pro-team: '*' ---- - -Thank you for using GitHub! We're happy you're here. Please read this Terms of Service agreement carefully before accessing or using GitHub. Because it is such an important contract between us and our users, we have tried to make it as clear as possible. For your convenience, we have presented these terms in a short non-binding summary followed by the full legal terms. - -### Summary - -| Section | What can you find there? | -| --- | --- | -| [A. Definitions](#a-definitions) | Some basic terms, defined in a way that will help you understand this agreement. Refer back up to this section for clarification. | -| [B. Account Terms](#b-account-terms) | These are the basic requirements of having an Account on GitHub. | -| [C. Acceptable Use](#c-acceptable-use)| These are the basic rules you must follow when using your GitHub Account. | -| [D. User-Generated Content](#d-user-generated-content) | You own the content you post on GitHub. However, you have some responsibilities regarding it, and we ask you to grant us some rights so we can provide services to you. | -| [E. Private Repositories](#e-private-repositories) | This section talks about how GitHub will treat content you post in private repositories. | -| [F. Copyright & DMCA Policy](#f-copyright-infringement-and-dmca-policy) | This section talks about how GitHub will respond if you believe someone is infringing your copyrights on GitHub. | -| [G. Intellectual Property Notice](#g-intellectual-property-notice) | This describes GitHub's rights in the website and service. | -| [H. API Terms](#h-api-terms) | These are the rules for using GitHub's APIs, whether you are using the API for development or data collection. | -| [I. Additional Product Terms](#i-github-additional-product-terms) | We have a few specific rules for GitHub's features and products. | -| [J. Beta Previews](#j-beta-previews) | These are some of the additional terms that apply to GitHub's features that are still in development. | -| [K. Payment](#k-payment) | You are responsible for payment. We are responsible for billing you accurately. | -| [L. Cancellation and Termination](#l-cancellation-and-termination) | You may cancel this agreement and close your Account at any time. | -| [M. Communications with GitHub](#m-communications-with-github) | We only use email and other electronic means to stay in touch with our users. We do not provide phone support. | -| [N. Disclaimer of Warranties](#n-disclaimer-of-warranties) | We provide our service as is, and we make no promises or guarantees about this service. **Please read this section carefully; you should understand what to expect.** | -| [O. Limitation of Liability](#o-limitation-of-liability) | We will not be liable for damages or losses arising from your use or inability to use the service or otherwise arising under this agreement. **Please read this section carefully; it limits our obligations to you.** | -| [P. Release and Indemnification](#p-release-and-indemnification) | You are fully responsible for your use of the service. | -| [Q. Changes to these Terms of Service](#q-changes-to-these-terms) | We may modify this agreement, but we will give you 30 days' notice of changes that affect your rights. | -| [R. Miscellaneous](#r-miscellaneous) | Please see this section for legal details including our choice of law. | - -### The GitHub Terms of Service -Effective date: April 2, 2020 - - -### A. Definitions -**Short version:** *We use these basic terms throughout the agreement, and they have specific meanings. You should know what we mean when we use each of the terms. There's not going to be a test on it, but it's still useful information.* - -1. An "Account" represents your legal relationship with GitHub. A “User Account” represents an individual User’s authorization to log in to and use the Service and serves as a User’s identity on GitHub. “Organizations” are shared workspaces that may be associated with a single entity or with one or more Users where multiple Users can collaborate across many projects at once. A User Account can be a member of any number of Organizations. -2. The “Agreement” refers, collectively, to all the terms, conditions, notices contained or referenced in this document (the “Terms of Service” or the "Terms") and all other operating rules, policies (including the GitHub Privacy Statement, available at [github.com/site/privacy](https://github.com/site/privacy)) and procedures that we may publish from time to time on the Website. Most of our site policies are available at [docs.github.com/categories/site-policy](/categories/site-policy). -3. "Beta Previews" mean software, services, or features identified as alpha, beta, preview, early access, or evaluation, or words or phrases with similar meanings. -4. “Content” refers to content featured or displayed through the Website, including without limitation code, text, data, articles, images, photographs, graphics, software, applications, packages, designs, features, and other materials that are available on the Website or otherwise available through the Service. "Content" also includes Services. “User-Generated Content” is Content, written or otherwise, created or uploaded by our Users. "Your Content" is Content that you create or own. -5. “GitHub,” “We,” and “Us” refer to GitHub, Inc., as well as our affiliates, directors, subsidiaries, contractors, licensors, officers, agents, and employees. -6. The “Service” refers to the applications, software, products, and services provided by GitHub, including any Beta Previews. -7. “The User,” “You,” and “Your” refer to the individual person, company, or organization that has visited or is using the Website or Service; that accesses or uses any part of the Account; or that directs the use of the Account in the performance of its functions. A User must be at least 13 years of age. Special terms may apply for business or government Accounts (See [Section B(5): Additional Terms](#5-additional-terms)). -8. The “Website” refers to GitHub’s website located at [github.com](https://github.com/), and all content, services, and products provided by GitHub at or through the Website. It also refers to GitHub-owned subdomains of github.com, such as [education.github.com](https://education.github.com/) and [pages.github.com](https://pages.github.com/). These Terms also govern GitHub’s conference websites, such as [githubuniverse.com](https://githubuniverse.com/), and product websites, such as [atom.io](https://atom.io/). Occasionally, websites owned by GitHub may provide different or additional terms of service. If those additional terms conflict with this Agreement, the more specific terms apply to the relevant page or service. - -### B. Account Terms -**Short version:** *User Accounts and Organizations have different administrative controls; a human must create your Account; you must be 13 or over; you must provide a valid email address; and you may not have more than one free Account. You alone are responsible for your Account and anything that happens while you are signed in to or using your Account. You are responsible for keeping your Account secure.* - -#### 1. Account Controls -- Users. Subject to these Terms, you retain ultimate administrative control over your User Account and the Content within it. - -- Organizations. The "owner" of an Organization that was created under these Terms has ultimate administrative control over that Organization and the Content within it. Within the Service, an owner can manage User access to the Organization’s data and projects. An Organization may have multiple owners, but there must be at least one User Account designated as an owner of an Organization. If you are the owner of an Organization under these Terms, we consider you responsible for the actions that are performed on or through that Organization. - -#### 2. Required Information -You must provide a valid email address in order to complete the signup process. Any other information requested, such as your real name, is optional, unless you are accepting these terms on behalf of a legal entity (in which case we need more information about the legal entity) or if you opt for a [paid Account](#k-payment), in which case additional information will be necessary for billing purposes. - -#### 3. Account Requirements -We have a few simple rules for User Accounts on GitHub's Service. -- You must be a human to create an Account. Accounts registered by "bots" or other automated methods are not permitted. We do permit machine accounts: -- A machine account is an Account set up by an individual human who accepts the Terms on behalf of the Account, provides a valid email address, and is responsible for its actions. A machine account is used exclusively for performing automated tasks. Multiple users may direct the actions of a machine account, but the owner of the Account is ultimately responsible for the machine's actions. You may maintain no more than one free machine account in addition to your free User Account. -- One person or legal entity may maintain no more than one free Account (if you choose to control a machine account as well, that's fine, but it can only be used for running a machine). -- You must be age 13 or older. While we are thrilled to see brilliant young coders get excited by learning to program, we must comply with United States law. GitHub does not target our Service to children under 13, and we do not permit any Users under 13 on our Service. If we learn of any User under the age of 13, we will [terminate that User’s Account immediately](#l-cancellation-and-termination). If you are a resident of a country outside the United States, your country’s minimum age may be older; in such a case, you are responsible for complying with your country’s laws. -- Your login may only be used by one person — i.e., a single login may not be shared by multiple people. A paid Organization may only provide access to as many User Accounts as your subscription allows. -- You may not use GitHub in violation of export control or sanctions laws of the United States or any other applicable jurisdiction. You may not use GitHub if you are or are working on behalf of a [Specially Designated National (SDN)](https://www.treasury.gov/resource-center/sanctions/SDN-List/Pages/default.aspx) or a person subject to similar blocking or denied party prohibitions administered by a U.S. government agency. GitHub may allow persons in certain sanctioned countries or territories to access certain GitHub services pursuant to U.S. government authorizations. For more information, please see our [Export Controls policy](/articles/github-and-export-controls). - -#### 4. User Account Security -You are responsible for keeping your Account secure while you use our Service. We offer tools such as two-factor authentication to help you maintain your Account's security, but the content of your Account and its security are up to you. -- You are responsible for all content posted and activity that occurs under your Account (even when content is posted by others who have Accounts under your Account). -- You are responsible for maintaining the security of your Account and password. GitHub cannot and will not be liable for any loss or damage from your failure to comply with this security obligation. -- You will promptly [notify GitHub](https://support.github.com/contact) if you become aware of any unauthorized use of, or access to, our Service through your Account, including any unauthorized use of your password or Account. - -#### 5. Additional Terms -In some situations, third parties' terms may apply to your use of GitHub. For example, you may be a member of an organization on GitHub with its own terms or license agreements; you may download an application that integrates with GitHub; or you may use GitHub to authenticate to another service. Please be aware that while these Terms are our full agreement with you, other parties' terms govern their relationships with you. - -If you are a government User or otherwise accessing or using any GitHub Service in a government capacity, this [Government Amendment to GitHub Terms of Service](/articles/amendment-to-github-terms-of-service-applicable-to-u-s-federal-government-users/) applies to you, and you agree to its provisions. - -If you have signed up for GitHub Enterprise Cloud, the [Enterprise Cloud Addendum](/articles/github-enterprise-cloud-addendum/) applies to you, and you agree to its provisions. - -### C. Acceptable Use -**Short version:** *GitHub hosts a wide variety of collaborative projects from all over the world, and that collaboration only works when our users are able to work together in good faith. While using the service, you must follow the terms of this section, which include some restrictions on content you can post, conduct on the service, and other limitations. In short, be excellent to each other.* - -Your use of the Website and Service must not violate any applicable laws, including copyright or trademark laws, export control or sanctions laws, or other laws in your jurisdiction. You are responsible for making sure that your use of the Service is in compliance with laws and any applicable regulations. - -You agree that you will not under any circumstances violate our [Acceptable Use Policies](/articles/github-acceptable-use-policies) or [Community Guidelines](/articles/github-community-guidelines). - -### D. User-Generated Content -**Short version:** *You own content you create, but you allow us certain rights to it, so that we can display and share the content you post. You still have control over your content, and responsibility for it, and the rights you grant us are limited to those we need to provide the service. We have the right to remove content or close Accounts if we need to.* - -#### 1. Responsibility for User-Generated Content -You may create or upload User-Generated Content while using the Service. You are solely responsible for the content of, and for any harm resulting from, any User-Generated Content that you post, upload, link to or otherwise make available via the Service, regardless of the form of that Content. We are not responsible for any public display or misuse of your User-Generated Content. - -#### 2. GitHub May Remove Content -We do not pre-screen User-Generated Content, but we have the right (though not the obligation) to refuse or remove any User-Generated Content that, in our sole discretion, violates any [GitHub terms or policies](/github/site-policy). - -#### 3. Ownership of Content, Right to Post, and License Grants -You retain ownership of and responsibility for Your Content. If you're posting anything you did not create yourself or do not own the rights to, you agree that you are responsible for any Content you post; that you will only submit Content that you have the right to post; and that you will fully comply with any third party licenses relating to Content you post. - -Because you retain ownership of and responsibility for Your Content, we need you to grant us — and other GitHub Users — certain legal permissions, listed in Sections D.4 — D.7. These license grants apply to Your Content. If you upload Content that already comes with a license granting GitHub the permissions we need to run our Service, no additional license is required. You understand that you will not receive any payment for any of the rights granted in Sections D.4 — D.7. The licenses you grant to us will end when you remove Your Content from our servers, unless other Users have forked it. - -#### 4. License Grant to Us -We need the legal right to do things like host Your Content, publish it, and share it. You grant us and our legal successors the right to store, parse, and display Your Content, and make incidental copies as necessary to render the Website and provide the Service. This includes the right to do things like copy it to our database and make backups; show it to you and other users; parse it into a search index or otherwise analyze it on our servers; share it with other users; and perform it, in case Your Content is something like music or video. - -This license does not grant GitHub the right to sell Your Content or otherwise distribute or use it outside of our provision of the Service. - -#### 5. License Grant to Other Users -Any User-Generated Content you post publicly, including issues, comments, and contributions to other Users' repositories, may be viewed by others. By setting your repositories to be viewed publicly, you agree to allow others to view and "fork" your repositories (this means that others may make their own copies of Content from your repositories in repositories they control). - -If you set your pages and repositories to be viewed publicly, you grant each User of GitHub a nonexclusive, worldwide license to use, display, and perform Your Content through the GitHub Service and to reproduce Your Content solely on GitHub as permitted through GitHub's functionality (for example, through forking). You may grant further rights if you [adopt a license](/articles/adding-a-license-to-a-repository/#including-an-open-source-license-in-your-repository). If you are uploading Content you did not create or own, you are responsible for ensuring that the Content you upload is licensed under terms that grant these permissions to other GitHub Users. - -#### 6. Contributions Under Repository License -Whenever you make a contribution to a repository containing notice of a license, you license your contribution under the same terms, and you agree that you have the right to license your contribution under those terms. If you have a separate agreement to license your contributions under different terms, such as a contributor license agreement, that agreement will supersede. - -Isn't this just how it works already? Yep. This is widely accepted as the norm in the open-source community; it's commonly referred to by the shorthand "inbound=outbound". We're just making it explicit. - -#### 7. Moral Rights -You retain all moral rights to Your Content that you upload, publish, or submit to any part of the Service, including the rights of integrity and attribution. However, you waive these rights and agree not to assert them against us, to enable us to reasonably exercise the rights granted in Section D.4, but not otherwise. - -To the extent this agreement is not enforceable by applicable law, you grant GitHub the rights we need to use Your Content without attribution and to make reasonable adaptations of Your Content as necessary to render the Website and provide the Service. - -### E. Private Repositories -**Short version:** *You may have access to private repositories. We treat the content of private repositories as confidential, and we only access it for support reasons, with your consent, or if required to for security reasons.* - -#### 1. Control of Private Repositories -Some Accounts may have private repositories, which allow the User to control access to Content. - -#### 2. Confidentiality of Private Repositories -GitHub considers the contents of private repositories to be confidential to you. GitHub will protect the contents of private repositories from unauthorized use, access, or disclosure in the same manner that we would use to protect our own confidential information of a similar nature and in no event with less than a reasonable degree of care. - -#### 3. Access -GitHub personnel may only access the content of your private repositories in the following situations: -- With your consent and knowledge, for support reasons. If GitHub accesses a private repository for support reasons, we will only do so with the owner’s consent and knowledge. -- When access is required for security reasons, including when access is required to maintain ongoing confidentiality, integrity, availability and resilience of GitHub's systems and Service. - -You may choose to enable additional access to your private repositories. For example: -- You may enable various GitHub services or features that require additional rights to Your Content in private repositories. These rights may vary depending on the service or feature, but GitHub will continue to treat your private repository Content as confidential. If those services or features require rights in addition to those we need to provide the GitHub Service, we will provide an explanation of those rights. - -#### 4. Exclusions -If we have reason to believe the contents of a private repository are in violation of the law or of these Terms, we have the right to access, review, and remove them. Additionally, we may be [compelled by law](/github/site-policy/github-privacy-statement#for-legal-disclosure) to disclose the contents of your private repositories. - -### F. Copyright Infringement and DMCA Policy -If you believe that content on our website violates your copyright, please contact us in accordance with our [Digital Millennium Copyright Act Policy](/articles/dmca-takedown-policy/). If you are a copyright owner and you believe that content on GitHub violates your rights, please contact us via [our convenient DMCA form](https://github.com/contact/dmca) or by emailing copyright@github.com. There may be legal consequences for sending a false or frivolous takedown notice. Before sending a takedown request, you must consider legal uses such as fair use and licensed uses. - -We will terminate the Accounts of [repeat infringers](/articles/dmca-takedown-policy/#e-repeated-infringement) of this policy. - -### G. Intellectual Property Notice -**Short version:** *We own the service and all of our content. In order for you to use our content, we give you certain rights to it, but you may only use our content in the way we have allowed.* - -#### 1. GitHub's Rights to Content -GitHub and our licensors, vendors, agents, and/or our content providers retain ownership of all intellectual property rights of any kind related to the Website and Service. We reserve all rights that are not expressly granted to you under this Agreement or by law. The look and feel of the Website and Service is copyright © GitHub, Inc. All rights reserved. You may not duplicate, copy, or reuse any portion of the HTML/CSS, Javascript, or visual design elements or concepts without express written permission from GitHub. - -#### 2. GitHub Trademarks and Logos -If you’d like to use GitHub’s trademarks, you must follow all of our trademark guidelines, including those on our logos page: https://github.com/logos. - -#### 3. License to GitHub Policies -This Agreement is licensed under this [Creative Commons Zero license](https://creativecommons.org/publicdomain/zero/1.0/). For details, see our [site-policy repository](https://github.com/github/site-policy#license). - -### H. API Terms -**Short version:** *You agree to these Terms of Service, plus this Section H, when using any of GitHub's APIs (Application Provider Interface), including use of the API through a third party product that accesses GitHub.* - -Abuse or excessively frequent requests to GitHub via the API may result in the temporary or permanent suspension of your Account's access to the API. GitHub, in our sole discretion, will determine abuse or excessive usage of the API. We will make a reasonable attempt to warn you via email prior to suspension. - -You may not share API tokens to exceed GitHub's rate limitations. - -You may not use the API to download data or Content from GitHub for spamming purposes, including for the purposes of selling GitHub users' personal information, such as to recruiters, headhunters, and job boards. - -All use of the GitHub API is subject to these Terms of Service and the [GitHub Privacy Statement](https://github.com/site/privacy). - -GitHub may offer subscription-based access to our API for those Users who require high-throughput access or access that would result in resale of GitHub's Service. - -### I. GitHub Additional Product Terms -**Short version:** *You need to follow certain specific terms and conditions for GitHub's various features and products, and you agree to the Supplemental Terms and Conditions when you agree to this Agreement.* - -Some Service features may be subject to additional terms specific to that feature or product as set forth in the GitHub Additional Product Terms. By accessing or using the Services, you also agree to the [GitHub Additional Product Terms](/github/site-policy/github-additional-product-terms). - -### J. Beta Previews -**Short version:** *Beta Previews may not be supported or may change at any time, you may receive confidential information through those programs that must remain confidential while the program is private, and we'd love your feedback to make our Beta Previews better.* - -#### 1. Subject to Change - -Beta Previews may not be supported and may be changed at any time without notice. In addition, Beta Previews are not subject to the same security measures and auditing to which the Service has been and is subject. **By using a Beta Preview, you use it at your own risk.** - -#### 2. Confidentiality - -As a user of Beta Previews, you may get access to special information that isn’t available to the rest of the world. Due to the sensitive nature of this information, it’s important for us to make sure that you keep that information secret. - -**Confidentiality Obligations.** You agree that any non-public Beta Preview information we give you, such as information about a private Beta Preview, will be considered GitHub’s confidential information (collectively, “Confidential Information”), regardless of whether it is marked or identified as such. You agree to only use such Confidential Information for the express purpose of testing and evaluating the Beta Preview (the “Purpose”), and not for any other purpose. You should use the same degree of care as you would with your own confidential information, but no less than reasonable precautions to prevent any unauthorized use, disclosure, publication, or dissemination of our Confidential Information. You promise not to disclose, publish, or disseminate any Confidential Information to any third party, unless we don’t otherwise prohibit or restrict such disclosure (for example, you might be part of a GitHub-organized group discussion about a private Beta Preview feature). - -**Exceptions.** Confidential Information will not include information that is: (a) or becomes publicly available without breach of this Agreement through no act or inaction on your part (such as when a private Beta Preview becomes a public Beta Preview); (b) known to you before we disclose it to you; (c) independently developed by you without breach of any confidentiality obligation to us or any third party; or (d) disclosed with permission from GitHub. You will not violate the terms of this Agreement if you are required to disclose Confidential Information pursuant to operation of law, provided GitHub has been given reasonable advance written notice to object, unless prohibited by law. - -#### 3. Feedback - -We’re always trying to improve of products and services, and your feedback as a Beta Preview user will help us do that. If you choose to give us any ideas, know-how, algorithms, code contributions, suggestions, enhancement requests, recommendations or any other feedback for our products or services (collectively, “Feedback”), you acknowledge and agree that GitHub will have a royalty-free, fully paid-up, worldwide, transferable, sub-licensable, irrevocable and perpetual license to implement, use, modify, commercially exploit and/or incorporate the Feedback into our products, services, and documentation. - -### K. Payment -**Short version:** *You are responsible for any fees associated with your use of GitHub. We are responsible for communicating those fees to you clearly and accurately, and letting you know well in advance if those prices change.* - -#### 1. Pricing -Our pricing and payment terms are available at [github.com/pricing](https://github.com/pricing). If you agree to a subscription price, that will remain your price for the duration of the payment term; however, prices are subject to change at the end of a payment term. - -#### 2. Upgrades, Downgrades, and Changes -- We will immediately bill you when you upgrade from the free plan to any paying plan. -- If you change from a monthly billing plan to a yearly billing plan, GitHub will bill you for a full year at the next monthly billing date. -- If you upgrade to a higher level of service, we will bill you for the upgraded plan immediately. -- You may change your level of service at any time by [choosing a plan option](https://github.com/pricing) or going into your [Billing settings](https://github.com/settings/billing). If you choose to downgrade your Account, you may lose access to Content, features, or capacity of your Account. Please see our section on [Cancellation](#l-cancellation-and-termination) for information on getting a copy of that Content. - -#### 3. Billing Schedule; No Refunds -**Payment Based on Plan** For monthly or yearly payment plans, the Service is billed in advance on a monthly or yearly basis respectively and is non-refundable. There will be no refunds or credits for partial months of service, downgrade refunds, or refunds for months unused with an open Account; however, the service will remain active for the length of the paid billing period. In order to treat everyone equally, no exceptions will be made. - -**Payment Based on Usage** Some Service features are billed based on your usage. A limited quantity of these Service features may be included in your plan for a limited term without additional charge. If you choose to purchase paid Service features beyond the quantity included in your plan, you pay for those Service features based on your actual usage in the preceding month. Monthly payment for these purchases will be charged on a periodic basis in arrears. See [GitHub Additional Product Terms for Details](/github/site-policy/github-additional-product-terms). - -**Invoicing** For invoiced Users, User agrees to pay the fees in full, up front without deduction or setoff of any kind, in U.S. Dollars. User must pay the fees within thirty (30) days of the GitHub invoice date. Amounts payable under this Agreement are non-refundable, except as otherwise provided in this Agreement. If User fails to pay any fees on time, GitHub reserves the right, in addition to taking any other action at law or equity, to (i) charge interest on past due amounts at 1.0% per month or the highest interest rate allowed by law, whichever is less, and to charge all expenses of recovery, and (ii) terminate the applicable order form. User is solely responsible for all taxes, fees, duties and governmental assessments (except for taxes based on GitHub's net income) that are imposed or become due in connection with this Agreement. - -#### 4. Authorization -By agreeing to these Terms, you are giving us permission to charge your on-file credit card, PayPal account, or other approved methods of payment for fees that you authorize for GitHub. - -#### 5. Responsibility for Payment -You are responsible for all fees, including taxes, associated with your use of the Service. By using the Service, you agree to pay GitHub any charge incurred in connection with your use of the Service. If you dispute the matter, contact [GitHub Support](https://support.github.com/contact). You are responsible for providing us with a valid means of payment for paid Accounts. Free Accounts are not required to provide payment information. - -### L. Cancellation and Termination -**Short version:** *You may close your Account at any time. If you do, we'll treat your information responsibly.* - -#### 1. Account Cancellation -It is your responsibility to properly cancel your Account with GitHub. You can [cancel your Account at any time](/articles/how-do-i-cancel-my-account/) by going into your Settings in the global navigation bar at the top of the screen. The Account screen provides a simple, no questions asked cancellation link. We are not able to cancel Accounts in response to an email or phone request. - -#### 2. Upon Cancellation -We will retain and use your information as necessary to comply with our legal obligations, resolve disputes, and enforce our agreements, but barring legal requirements, we will delete your full profile and the Content of your repositories within 90 days of cancellation or termination (though some information may remain in encrypted backups). This information can not be recovered once your Account is cancelled. - -We will not delete Content that you have contributed to other Users' repositories or that other Users have forked. - -Upon request, we will make a reasonable effort to provide an Account owner with a copy of your lawful, non-infringing Account contents after Account cancellation, termination, or downgrade. You must make this request within 90 days of cancellation, termination, or downgrade. - -#### 3. GitHub May Terminate -GitHub has the right to suspend or terminate your access to all or any part of the Website at any time, with or without cause, with or without notice, effective immediately. GitHub reserves the right to refuse service to anyone for any reason at any time. - -#### 4. Survival -All provisions of this Agreement which, by their nature, should survive termination *will* survive termination — including, without limitation: ownership provisions, warranty disclaimers, indemnity, and limitations of liability. - -### M. Communications with GitHub -**Short version:** *We use email and other electronic means to stay in touch with our users.* - -#### 1. Electronic Communication Required -For contractual purposes, you (1) consent to receive communications from us in an electronic form via the email address you have submitted or via the Service; and (2) agree that all Terms of Service, agreements, notices, disclosures, and other communications that we provide to you electronically satisfy any legal requirement that those communications would satisfy if they were on paper. This section does not affect your non-waivable rights. - -#### 2. Legal Notice to GitHub Must Be in Writing -Communications made through email or GitHub Support's messaging system will not constitute legal notice to GitHub or any of its officers, employees, agents or representatives in any situation where notice to GitHub is required by contract or any law or regulation. Legal notice to GitHub must be in writing and [served on GitHub's legal agent](/articles/guidelines-for-legal-requests-of-user-data/#submitting-requests). - -#### 3. No Phone Support -GitHub only offers support via email, in-Service communications, and electronic messages. We do not offer telephone support. - -### N. Disclaimer of Warranties -**Short version:** *We provide our service as is, and we make no promises or guarantees about this service. Please read this section carefully; you should understand what to expect.* - -GitHub provides the Website and the Service “as is” and “as available,” without warranty of any kind. Without limiting this, we expressly disclaim all warranties, whether express, implied or statutory, regarding the Website and the Service including without limitation any warranty of merchantability, fitness for a particular purpose, title, security, accuracy and non-infringement. - -GitHub does not warrant that the Service will meet your requirements; that the Service will be uninterrupted, timely, secure, or error-free; that the information provided through the Service is accurate, reliable or correct; that any defects or errors will be corrected; that the Service will be available at any particular time or location; or that the Service is free of viruses or other harmful components. You assume full responsibility and risk of loss resulting from your downloading and/or use of files, information, content or other material obtained from the Service. - -### O. Limitation of Liability -**Short version:** *We will not be liable for damages or losses arising from your use or inability to use the service or otherwise arising under this agreement. Please read this section carefully; it limits our obligations to you.* - -You understand and agree that we will not be liable to you or any third party for any loss of profits, use, goodwill, or data, or for any incidental, indirect, special, consequential or exemplary damages, however arising, that result from - -- the use, disclosure, or display of your User-Generated Content; -- your use or inability to use the Service; -- any modification, price change, suspension or discontinuance of the Service; -- the Service generally or the software or systems that make the Service available; -- unauthorized access to or alterations of your transmissions or data; -- statements or conduct of any third party on the Service; -- any other user interactions that you input or receive through your use of the Service; or -- any other matter relating to the Service. - -Our liability is limited whether or not we have been informed of the possibility of such damages, and even if a remedy set forth in this Agreement is found to have failed of its essential purpose. We will have no liability for any failure or delay due to matters beyond our reasonable control. - -### P. Release and Indemnification -**Short version:** *You are responsible for your use of the service. If you harm someone else or get into a dispute with someone else, we will not be involved.* - -If you have a dispute with one or more Users, you agree to release GitHub from any and all claims, demands and damages (actual and consequential) of every kind and nature, known and unknown, arising out of or in any way connected with such disputes. - -You agree to indemnify us, defend us, and hold us harmless from and against any and all claims, liabilities, and expenses, including attorneys’ fees, arising out of your use of the Website and the Service, including but not limited to your violation of this Agreement, provided that GitHub (1) promptly gives you written notice of the claim, demand, suit or proceeding; (2) gives you sole control of the defense and settlement of the claim, demand, suit or proceeding (provided that you may not settle any claim, demand, suit or proceeding unless the settlement unconditionally releases GitHub of all liability); and (3) provides to you all reasonable assistance, at your expense. - -### Q. Changes to These Terms -**Short version:** *We want our users to be informed of important changes to our terms, but some changes aren't that important — we don't want to bother you every time we fix a typo. So while we may modify this agreement at any time, we will notify users of any changes that affect your rights and give you time to adjust to them.* - -We reserve the right, at our sole discretion, to amend these Terms of Service at any time and will update these Terms of Service in the event of any such amendments. We will notify our Users of material changes to this Agreement, such as price changes, at least 30 days prior to the change taking effect by posting a notice on our Website. For non-material modifications, your continued use of the Website constitutes agreement to our revisions of these Terms of Service. You can view all changes to these Terms in our [Site Policy](https://github.com/github/site-policy) repository. - -We reserve the right at any time and from time to time to modify or discontinue, temporarily or permanently, the Website (or any part of it) with or without notice. - -### R. Miscellaneous - -#### 1. Governing Law -Except to the extent applicable law provides otherwise, this Agreement between you and GitHub and any access to or use of the Website or the Service are governed by the federal laws of the United States of America and the laws of the State of California, without regard to conflict of law provisions. You and GitHub agree to submit to the exclusive jurisdiction and venue of the courts located in the City and County of San Francisco, California. - -#### 2. Non-Assignability -GitHub may assign or delegate these Terms of Service and/or the [GitHub Privacy Statement](https://github.com/site/privacy), in whole or in part, to any person or entity at any time with or without your consent, including the license grant in Section D.4. You may not assign or delegate any rights or obligations under the Terms of Service or Privacy Statement without our prior written consent, and any unauthorized assignment and delegation by you is void. - -#### 3. Section Headings and Summaries -Throughout this Agreement, each section includes titles and brief summaries of the following terms and conditions. These section titles and brief summaries are not legally binding. - -#### 4. Severability, No Waiver, and Survival -If any part of this Agreement is held invalid or unenforceable, that portion of the Agreement will be construed to reflect the parties’ original intent. The remaining portions will remain in full force and effect. Any failure on the part of GitHub to enforce any provision of this Agreement will not be considered a waiver of our right to enforce such provision. Our rights under this Agreement will survive any termination of this Agreement. - -#### 5. Amendments; Complete Agreement -This Agreement may only be modified by a written amendment signed by an authorized representative of GitHub, or by the posting by GitHub of a revised version in accordance with [Section Q. Changes to These Terms](#q-changes-to-these-terms). These Terms of Service, together with the GitHub Privacy Statement, represent the complete and exclusive statement of the agreement between you and us. This Agreement supersedes any proposal or prior agreement oral or written, and any other communications between you and GitHub relating to the subject matter of these terms including any confidentiality or nondisclosure agreements. - -#### 6. Questions -Questions about the Terms of Service? [Contact us](https://support.github.com/contact). diff --git a/content/github/site-policy/github-trademark-policy.md b/content/github/site-policy/github-trademark-policy.md deleted file mode 100644 index e2dd80c88adb..000000000000 --- a/content/github/site-policy/github-trademark-policy.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: GitHub Trademark Policy -redirect_from: - - /articles/github-trademark-policy -versions: - free-pro-team: '*' ---- -### What is a GitHub Trademark Policy Violation? - -Using a company or business name, logo, or other trademark-protected materials in a manner that may mislead or confuse others with regard to its brand or business affiliation may be considered a trademark policy violation. - -### What is not a GitHub Trademark Policy Violation? - -Using another's trademark in a way that has nothing to do with the product or service for which the trademark was granted is not a trademark policy violation. GitHub user names are available on a first come, first served basis and may not be reserved. A GitHub account with a user name that happens to be the same as a registered trademark is not, by itself, necessarily a violation of our trademark policy. - -### How Does GitHub Respond To Reported Trademark Policy Violations? - -When we receive reports of trademark policy violations from holders of federal or international trademark registrations, we review the account and may take the following actions: - -* When there is a clear intent to mislead others through the unauthorized use of a trademark, GitHub will suspend the account and notify the account holder. -* When we determine that an account appears to be confusing users, but is not purposefully passing itself off as the trademarked good or service, we give the account holder an opportunity to clear up any potential confusion. We may also release a username for the trademark holder's active use. - -### How Do I Report a Trademark Policy Violation? - -Holders of registered trademarks can report possible trademark policy violations to GitHub via our [contact form](https://support.github.com/contact?tags=docs-trademark). Please submit trademark-related requests using your company email address and include all the information requested below to help expedite our response. Also be sure to clearly describe to us why the account may cause confusion with your mark or how the account may dilute or tarnish your mark. - -### What Information is Required When Reporting Trademark Policy Violations? - -In order to investigate trademark policy violations, please provide all of the following information: - -* Username of the reported account -* Your company name -* Your company GitHub account (if there is one) -* Company website -* Your trademarked word, symbol, etc. -* Trademark registration number -* Trademark registration office (e.g., USPTO) -* Description of confusion (e.g., passing off as your company, including specific descriptions of content or behavior) -* Requested Action (e.g., removal of violating account or transfer of trademarked username to an existing company account) -* Include the following statement: "I have a good faith belief that use of the trademark described above is not authorized by the trademark owner, or its agent, or the law. I have taken nominative and other fair uses into consideration." -* Also include the following statement: "I swear, under penalty of perjury, that the information in this notification is accurate and that I am the trademark owner, or am authorized to act on behalf of the owner, of an exclusive right that is allegedly infringed." -* Include your physical or electronic signature. - -* Note: A federal or international trademark registration number is required. If the name you are reporting is **not** a registered mark (e.g., a government agency or non-profit organization), please let us know: - * Your first and last name - * Title - * Address - * Phone - * Email (must be from company domain) diff --git a/content/github/site-policy/github-username-policy.md b/content/github/site-policy/github-username-policy.md deleted file mode 100644 index 532399005d27..000000000000 --- a/content/github/site-policy/github-username-policy.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: GitHub Username Policy -redirect_from: - - /articles/name-squatting-policy/ - - /articles/github-username-policy -versions: - free-pro-team: '*' ---- - -GitHub account names are available on a first-come, first-served basis, and are intended for immediate and active use. - -#### What if the username I want is already taken? - -Keep in mind that not all activity on GitHub is publicly visible; accounts with no visible activity may be in active use. - -If the username you want has already been claimed, consider other names or unique variations. Using a number, hyphen, or an alternative spelling might help you identify a desirable username still available. - -#### Trademark Policy - -If you believe someone's account is violating your trademark rights, you can find more information about making a trademark complaint on our [Trademark Policy](/articles/github-trademark-policy/) page. - -#### Name Squatting Policy - -GitHub prohibits account name squatting, and account names may not be reserved or inactively held for future use. Accounts violating this name squatting policy may be removed or renamed without notice. Attempts to sell, buy, or solicit other forms of payment in exchange for account names are prohibited and may result in permanent account suspension. diff --git a/content/github/site-policy/githubs-notice-about-the-california-consumer-privacy-act.md b/content/github/site-policy/githubs-notice-about-the-california-consumer-privacy-act.md deleted file mode 100644 index 2a27804e2046..000000000000 --- a/content/github/site-policy/githubs-notice-about-the-california-consumer-privacy-act.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: GitHub's Notice about the California Consumer Privacy Act -versions: - free-pro-team: '*' ---- - -Effective January 1, 2020 - -### GitHub's Notice to California Residents - -The [California Consumer Privacy Act](https://leginfo.legislature.ca.gov/faces/billCompareClient.xhtml?bill_id=201720180AB375) of 2018, (Cal. Civ. Code §1798.100 et seq., as amended, “CCPA”) gives California residents rights and control over their personal information. GitHub, Inc. ("GitHub", "we") provides this statement to those residents ("you") in accordance with requirements under the CCPA to make certain disclosures about the collection and processing of their personal information. This is GitHub’s California-specific description of consumers’ privacy rights under the CCPA. For information about how we’ve extended the CCPA core rights to control personal information to all of our users in the United States, please see our [Privacy Statement](/github/site-policy/github-privacy-statement). - -### We do not sell your personal information - -Under the CCPA, a business that sells California residents' personal information to others: 1) must give notice to California residents before selling their personal information to others; and 2) must provide the right to opt out of the sale of their personal information. - -GitHub _does not_ sell personal information, including personal information of anyone under 16 years old. Thus, these notification and opt-out requirements do not apply to GitHub. - -## Your rights under the CCPA - -The CCPA provides California residents with certain rights related to their personal information. To submit a request based on these rights, please contact us via our [contact form](https://support.github.com/contact). - -When receiving a request, we will verify that the individual making the request is the resident to whom the personal information subject to the request pertains. California residents may exercise their rights themselves or may use an authorized agent to make requests to disclose certain information about the processing of their personal information or to delete personal information on their behalf. If you use an authorized agent to submit a request, we may require that you provide us additional information demonstrating that the agent is acting on your behalf. - -With respect to their personal information, California residents may exercise the rights described below. - -### 1. Right to know what personal information is being collected, for what purposes and with whom it is shared - -California residents have the right to request from a business disclosure of the categories and specific pieces of personal information it has collected from them in the preceding 12 months, the categories of sources from which such personal information is collected, the business or commercial purpose for collecting or selling such personal information, and the categories of third parties with whom the business shares personal information. - -If you request that a business disclose categories and specific pieces of personal information collected about you, you have the right to receive that information, free of charge, twice a year. The information may be delivered by mail or electronically and, if provided electronically, shall be in a portable and, to the extent technically feasible, readily usable format that allows the California resident to relatively easily transmit this information to another entity. You can use GitHub’s [User Migration API](/v3/migrations/users/) to access and download your data. Learn more [here](https://github.blog/2018-12-19-download-your-data/). - -### 2. Right to know whether your personal information is sold or disclosed for a business purpose and to whom - -California residents have the right to request from a business that sells or discloses personal information for a business purpose separate lists of the categories of personal information collected, sold or disclosed for a business purpose in the preceding 12 months, including the categories of third parties to whom the personal information was sold or disclosed for a business purpose. - -### 3. Right to say no to the sale of your personal information - -As explained above, the CCPA requires businesses that sell personal information to allow residents the ability to opt out of the selling of their information. - -Again, GitHub does not sell personal information. - -### 4. Right to non-discrimination of service or price if you exercise your privacy rights - -The CCPA prohibits businesses from discriminating against a California resident for exercising any of their rights under the CCPA, including by -- denying goods or services -- charging different prices or rates for goods or services, including through the use of discounts or other benefits or by imposing penalties -- providing a different level or quality of goods or services -- suggesting that the person exercising their rights will receive a different price or rate for goods or services or a different level or quality of goods or services - -### 5. Right to deletion - -California residents have the right to request that a business delete any of their personal information that the business collected from them, subject to the exceptions in CCPA §1798.105. - -## Our Handling of Personal Information - -While the table below contains information about the categories of personal information we collect process and share, please see the [GitHub Privacy Statement](/github/site-policy/github-privacy-statement) for full details. - -| **Category of personal information collected in last 12 months** | **Category of sources from which the personal information has been collected** | **Business or commercial purpose(s) for collecting the personal information** | **Categories of third parties with whom the personal information is shared** | **Categories of personal information disclosed for a business or commercial purpose** | -| --- | --- | --- | --- | --- | -| Identifiers (such as real name, alias, postal address, unique personal identifier, online identifier Internet Protocol address, email address, account name, or other similar identifiers) | Information consumer provides directly or automatically through their interaction with our Service and/or Website | Detecting security incidents, protecting against malicious, deceptive, fraudulent, or illegal activity, and prosecuting those responsible for that activity

Debugging to identify and repair errors that impair existing intended functionality

Performing services on behalf of the business or service provider

Undertaking internal research for technological development and demonstration

Undertaking activities to verify or maintain the quality or safety of a service, and to improve, upgrade, or enhance the service | Service providers, applicable customers, law enforcement | This category of personal information has been disclosed for a business or commercial purpose | -| Any categories of personal information described in subdivision (e) of Cal. Civ. Code §1798.80 ( which defines “personal information” as “any information that identifies, relates to, describes, or is capable of being associated with, a particular individual”— with examples including name, address, credit card or debit card number—and excludes publicly available information) | Information consumer provides directly | Prosecuting those responsible for malicious, deceptive, fraudulent, or illegal activity.

Performing services on behalf of the business or service provider | Service providers, law enforcement | This category of personal information has been disclosed for a business or commercial purpose | -| Characteristics of protected classifications under California or federal law (such as gender, age) | Information consumer may choose to provide directly | Performing services (user profile) | Service providers | This category of personal information has been disclosed for a business or commercial purpose | -| Commercial information (such as about products or services purchased, obtained, or considered, or other purchasing or consuming histories or tendencies) | Information consumer provides directly or automatically through their interaction with our Services | Debugging to identify and repair errors that impair existing intended functionality

Performing services on behalf of the business or service provider | Service providers | This category of personal information has been disclosed for a business or commercial purpose | | Internet or other electronic network activity information (such as browsing history, search history, and information regarding a consumer’s interaction with an internet website, or application) | Information consumer provides automatically through their interaction with our Services | Detecting security incidents, protecting against malicious, deceptive, fraudulent, or illegal activity, and prosecuting those responsible for that activity

Debugging to identify and repair errors that impair existing intended functionality

Performing services on behalf of the business or service provider

Undertaking internal research for technological development and demonstration

Undertaking activities to verify or maintain the quality or safety of a service, and to improve, upgrade, or enhance the service | Service providers, applicable customers, law enforcement | This category of personal information has been disclosed for a business or commercial purpose | -Geolocation data (such as IP address) | Information consumer provides automatically through their interaction with our Services | Detecting security incidents, protecting against malicious, deceptive, fraudulent, or illegal activity, and prosecuting those responsible for that activity

Debugging to identify and repair errors that impair existing intended functionality

Performing services on behalf of the business or service provider

Undertaking internal research for technological development and demonstration

Undertaking activities to verify or maintain the quality or safety of a service, and to improve, upgrade, or enhance the service | Service providers, applicable customers, law enforcement | This category of personal information has been disclosed for a business or commercial purpose | -Audio, electronic, visual, or similar information | Information consumer may choose to provide directly | Performing services (user profile) | Service providers | This category of personal information has been disclosed for a business or commercial purpose | Professional or employment-related information | Information consumer may choose to provide directly | Performing services (user profile) | Service providers | This category of personal information has been disclosed for a business or commercial purpose | Education information that is not publicly available personally identifiable | This category of personal information has been disclosed for a business or commercial purpose | -Information as defined in the Family Educational Rights and Privacy Act (20 U.S.C. Sec. 1232g; 34 C.F.R. Part 99) | Information consumer may choose to provide directly | Performing services (user profile) | Service providers | This category of personal information has been disclosed for a business or commercial purpose | - Inferences drawn from any of the information identified in this table to create a profile about a consumer reflecting the consumer’s preferences | Information consumer provides directly or automatically through their interaction with our Services | Performing services on behalf of the business or service provider | Service providers | This category of personal information has been disclosed for a business or commercial purpose | - -## Exemptions under the CCPA - -The CCPA provides exemptions, until and including December 31, 2020, from certain of the above described disclosures pertaining to the last 12 months including a **business-to-business exemption**: - - personal information reflecting a written or verbal communication or a transaction between GitHub and a natural person, where the natural person is acting as an employee, owner, director, officer, or contractor of a company, partnership, sole proprietorship, nonprofit, or government agency and whose communications or transaction with GitHub occur solely within the context of GitHub conducting due diligence regarding, or providing or receiving a product or service to or from such company, partnership, sole proprietorship, nonprofit or government agency. - -If you have any questions about this page, please contact us via our [contact form](https://support.github.com/contact). diff --git a/content/github/site-policy/global-privacy-practices.md b/content/github/site-policy/global-privacy-practices.md deleted file mode 100644 index 492baa42d6ac..000000000000 --- a/content/github/site-policy/global-privacy-practices.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Global Privacy Practices -redirect_from: - - /eu-safe-harbor/ - - /articles/global-privacy-practices -versions: - free-pro-team: '*' ---- - -Effective date: July 22, 2020 - -GitHub provides the same high standard of privacy protection—as described in GitHub’s [Privacy Statement](/github/site-policy/github-privacy-statement#githubs-global-privacy-practices)—to all our users and customers around the world, regardless of their country of origin or location, and GitHub is proud of the level of notice, choice, accountability, security, data integrity, access, and recourse we provide. - -GitHub also complies with certain legal frameworks relating to the transfer of data from the European Economic Area, the United Kingdom, and Switzerland (collectively, “EU”) to the United States. When GitHub engages in such transfers, GitHub relies on Standard Contractual Clauses as the legal mechanism to help ensure your rights and protections travel with your personal information. In addition, GitHub is certified to the EU-US and Swiss-US Privacy Shield Frameworks. To learn more about the European Commission’s decisions on international data transfer, see this article on the [European Commission website](https://ec.europa.eu/info/law/law-topic/data-protection/international-dimension-data-protection_en). - -### Standard Contractual Clauses - -GitHub relies on the European Commission-approved Standard Contractual Clauses (“SCCs”) as a legal mechanism for data transfers from the EU. SCCs are contractual commitments between companies transferring personal data, binding them to protect the privacy and security of such data. GitHub adopted SCCs so that the necessary data flows can be protected when transferred outside the EU to countries which have not been deemed by the European Commission to adequately protect personal data, including protecting data transfers to the United States. - -To learn more about SCCs, see this article on the [European Commission website](https://ec.europa.eu/info/law/law-topic/data-protection/international-dimension-data-protection/standard-contractual-clauses-scc_en). - -### Privacy Shield Framework - -GitHub is certified to the EU-US and Swiss-US Privacy Shield Frameworks and the commitments they entail, although GitHub does not rely on the EU-US Privacy Shield Framework as a legal basis for transfers of personal information in light of the judgment of the Court of Justice of the EU in Case C-311/18. - -The EU-US and Swiss-US Privacy Shield Frameworks are set forth by the US Department of Commerce regarding the collection, use, and retention of User Personal Information transferred from the European Union, the UK, and Switzerland to the United States. GitHub has certified to the Department of Commerce that it adheres to the Privacy Shield Principles. If our vendors or affiliates process User Personal Information on our behalf in a manner inconsistent with the principles of either Privacy Shield Framework, GitHub remains liable unless we prove we are not responsible for the event giving rise to the damage. - -For purposes of our certifications under the Privacy Shield Frameworks, if there is any conflict between the terms in these Global Privacy Practices and the Privacy Shield Principles, the Privacy Shield Principles shall govern. To learn more about the Privacy Shield program, and to view our certification, visit the [Privacy Shield website](https://www.privacyshield.gov/). - -The Privacy Shield Frameworks are based on seven principles, and GitHub adheres to them in the following ways: - -- **Notice** - - We let you know when we're collecting your personal information. - - We let you know, in our [Privacy Statement](/articles/github-privacy-statement/), what purposes we have for collecting and using your information, who we share that information with and under what restrictions, and what access you have to your data. - - We let you know that we're participating in the Privacy Shield framework, and what that means to you. - - We have a {% data variables.contact.contact_privacy %} where you can contact us with questions about your privacy. - - We let you know about your right to invoke binding arbitration, provided at no cost to you, in the unlikely event of a dispute. - - We let you know that we are subject to the jurisdiction of the Federal Trade Commission. -- **Choice** - - We let you choose what happens to your data. Before we use your data for a purpose other than the one for which you gave it to us, we will let you know and get your permission. - - We will provide you with reasonable mechanisms to make your choices. -- **Accountability for Onward Transfer** - - When we transfer your information to third party vendors that are processing it on our behalf, we are only sending your data to third parties, under contract with us, that will safeguard it consistently with our Privacy Statement. When we transfer your data to our vendors under Privacy Shield, we remain responsible for it. - - We share only the amount of data with our third party vendors as is necessary to complete their transaction. -- **Security** - - We will protect your personal information with [all reasonable and appropriate security measures](https://github.com/security). -- **Data Integrity and Purpose Limitation** - - We only collect your data for the purposes relevant for providing our services to you. - - We collect as little information about you as we can, unless you choose to give us more. - - We take reasonable steps to ensure that the data we have about you is accurate, current, and reliable for its intended use. -- **Access** - - You are always able to access the data we have about you in your [user profile](https://github.com/settings/profile). You may access, update, alter, or delete your information there. -- **Recourse, Enforcement and Liability** - - If you have questions about our privacy practices, you can reach us with our {% data variables.contact.contact_privacy %} and we will respond within 45 days at the latest. - - In the unlikely event of a dispute that we cannot resolve, you have access to binding arbitration at no cost to you. Please see our [Privacy Statement](/articles/github-privacy-statement/) for more information. - - We will conduct regular audits of our relevant privacy practices to verify compliance with the promises we have made. - - We require our employees to respect our privacy promises, and violation of our privacy policies is subject to disciplinary action up to and including termination of employment. - - -#### Dispute resolution process - -As further explained in the [Resolving Complaints](/github/site-policy/github-privacy-statement#resolving-complaints) section of our [Privacy Statement](/github/site-policy/github-privacy-statement), we encourage you to contact us should you have a Privacy Shield-related (or general privacy-related) complaint. For any complaints that cannot be resolved with GitHub directly, we have selected to cooperate with the relevant EU Data Protection Authority, or a panel established by the European data protection authorities, for resolving disputes with EU individuals, and with the Swiss Federal Data Protection and Information Commissioner (FDPIC) for resolving disputes with Swiss individuals. Please contact us if you’d like us to direct you to your data protection authority contacts. - -Additionally, if you are a resident of an EU member state, you have the right to file a complaint with your local supervisory authority. - -#### Independent arbitration - -Under certain limited circumstances, EU, European Economic Area (EEA), Swiss, and UK individuals may invoke binding Privacy Shield arbitration as a last resort if all other forms of dispute resolution have been unsuccessful. To learn more about this method of resolution and its availability to you, please read more about [Privacy Shield](https://www.privacyshield.gov/article?id=ANNEX-I-introduction). Arbitration is not mandatory; it is a tool you can use if you so choose. - -We are subject to the jurisdiction of the US Federal Trade Commission (FTC). - -Please see our [Privacy Statement](/articles/github-privacy-statement/) for more information. diff --git a/content/github/site-policy/guide-to-submitting-a-dmca-counter-notice.md b/content/github/site-policy/guide-to-submitting-a-dmca-counter-notice.md deleted file mode 100644 index 67029fd81ebf..000000000000 --- a/content/github/site-policy/guide-to-submitting-a-dmca-counter-notice.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Guide to Submitting a DMCA Counter Notice -redirect_from: - - /dmca-counter-notice-how-to/ - - /articles/dmca-counter-notice-how-to/ - - /articles/guide-to-submitting-a-dmca-counter-notice -versions: - free-pro-team: '*' ---- - -This guide describes the information that GitHub needs in order to process a counter notice to a DMCA takedown request. If you have more general questions about what the DMCA is or how GitHub processes DMCA takedown requests, please review our [DMCA Takedown Policy](/articles/dmca-takedown-policy). - -If you believe your content on GitHub was mistakenly disabled by a DMCA takedown request, you have the right to contest the takedown by submitting a counter notice. If you do, we will wait 10-14 days and then re-enable your content unless the copyright owner initiates a legal action against you before then. Our counter-notice form, set forth below, is consistent with the form suggested by the DMCA statute, which can be found at the U.S. Copyright Office's official website: . - -As with all legal matters, it is always best to consult with a professional about your specific questions or situation. We strongly encourage you to do so before taking any action that might impact your rights. This guide isn't legal advice and shouldn't be taken as such. - -### Before You Start - -***Tell the Truth.*** -The DMCA requires that you swear to your counter notice *under penalty of perjury*. It is a federal crime to intentionally lie in a sworn declaration. (*See* [U.S. Code, Title 18, Section 1621](https://www.gpo.gov/fdsys/pkg/USCODE-2011-title18/html/USCODE-2011-title18-partI-chap79-sec1621.htm).) Submitting false information could also result in civil liability—that is, you could get sued for money damages. - -***Investigate.*** -Submitting a DMCA counter notice can have real legal consequences. If the complaining party disagrees that their takedown notice was mistaken, they might decide to file a lawsuit against you to keep the content disabled. You should conduct a thorough investigation into the allegations made in the takedown notice and probably talk to a lawyer before submitting a counter notice. - -***You Must Have a Good Reason to Submit a Counter Notice.*** -In order to file a counter notice, you must have "a good faith belief that the material was removed or disabled as a result of mistake or misidentification of the material to be removed or disabled." ([U.S. Code, Title 17, Section 512(g)](https://www.copyright.gov/title17/92chap5.html#512).) Whether you decide to explain why you believe there was a mistake is up to you and your lawyer, but you *do* need to identify a mistake before you submit a counter notice. In the past, we have received counter notices citing mistakes in the takedown notice such as: the complaining party doesn't have the copyright; I have a license; the code has been released under an open-source license that permits my use; or the complaint doesn't account for the fact that my use is protected by the fair-use doctrine. Of course, there could be other defects with the takedown notice. - -***Copyright Laws Are Complicated.*** -Sometimes a takedown notice might allege infringement in a way that seems odd or indirect. Copyright laws are complicated and can lead to some unexpected results. In some cases a takedown notice might allege that your source code infringes because of what it can do after it is compiled and run. For example: - - The notice may claim that your software is used to [circumvent access controls](https://www.copyright.gov/title17/92chap12.html) to copyrighted works. - - [Sometimes](https://www.copyright.gov/docs/mgm/) distributing software can be copyright infringement, if you induce end users to use the software to infringe copyrighted works. - - A copyright complaint might also be based on [non-literal copying](https://en.wikipedia.org/wiki/Substantial_similarity) of design elements in the software, rather than the source code itself — in other words, someone has sent a notice saying they think your *design* looks too similar to theirs. - -These are just a few examples of the complexities of copyright law. Since there are many nuances to the law and some unsettled questions in these types of cases, it is especially important to get professional advice if the infringement allegations do not seem straightforward. - -***A Counter Notice Is A Legal Statement.*** -We require you to fill out all fields of a counter notice completely, because a counter notice is a legal statement — not just to us, but to the complaining party. As we mentioned above, if the complaining party wishes to keep the content disabled after receiving a counter notice, they will need to initiate a legal action seeking a court order to restrain you from engaging in infringing activity relating to the content on GitHub. In other words, you might get sued (and you consent to that in the counter notice). - -***Your Counter Notice Will Be Published.*** -As noted in our [DMCA Takedown Policy](/articles/dmca-takedown-policy#d-transparency), **after redacting personal information,** we publish all complete and actionable counter notices at . Please also note that, although we will only publicly publish redacted notices, we may provide a complete unredacted copy of any notices we receive directly to any party whose rights would be affected by it. If you are concerned about your privacy, you may have a lawyer or other legal representative file the counter notice on your behalf. - -***GitHub Isn't The Judge.*** -GitHub exercises little discretion in this process other than determining whether the notices meet the minimum requirements of the DMCA. It is up to the parties (and their lawyers) to evaluate the merit of their claims, bearing in mind that notices must be made under penalty of perjury. - -***Additional Resources.*** -If you need additional help, there are many self-help resources online. Lumen has an informative set of guides on [copyright](https://www.lumendatabase.org/topics/5) and [DMCA safe harbor](https://www.lumendatabase.org/topics/14). If you are involved with an open-source project in need of legal advice, you can contact the [Software Freedom Law Center](https://www.softwarefreedom.org/about/contact/). And if you think you have a particularly challenging case, non-profit organizations such as the [Electronic Frontier Foundation](https://www.eff.org/pages/legal-assistance) may also be willing to help directly or refer you to a lawyer. - -### Your Counter Notice Must... - -1. **Include the following statement: "I have read and understand GitHub's Guide to Filing a DMCA Counter Notice."** -We won't refuse to process an otherwise complete counter notice if you don't include this statement; however, we will know that you haven't read these guidelines and may ask you to go back and do so. - -2. ***Identify the content that was disabled and the location where it appeared.*** -The disabled content should have been identified by URL in the takedown notice. You simply need to copy the URL(s) that you want to challenge. - -3. **Provide your contact information.** -Include your email address, name, telephone number, and physical address. - -4. ***Include the following statement: "I swear, under penalty of perjury, that I have a good-faith belief that the material was removed or disabled as a result of a mistake or misidentification of the material to be removed or disabled."*** -You may also choose to communicate the reasons why you believe there was a mistake or misidentification. If you think of your counter notice as a "note" to the complaining party, this is a chance to explain why they should not take the next step and file a lawsuit in response. This is yet another reason to work with a lawyer when submitting a counter notice. - -5. ***Include the following statement: "I consent to the jurisdiction of Federal District Court for the judicial district in which my address is located (if in the United States, otherwise the Northern District of California where GitHub is located), and I will accept service of process from the person who provided the DMCA notification or an agent of such person."*** - -6. **Include your physical or electronic signature.** - -### How to Submit Your Counter Notice - -The fastest way to get a response is to enter your information and answer all the questions on our {% data variables.contact.contact_dmca %}. - -You can also send an email notification to . You may include an attachment if you like, but please also include a plain-text version of your letter in the body of your message. - -If you must send your notice by physical mail, you can do that too, but it will take *substantially* longer for us to receive and respond to it—and the 10-14 day waiting period starts from when we *receive* your counter notice. Notices we receive via plain-text email have a much faster turnaround than PDF attachments or physical mail. If you still wish to mail us your notice, our physical address is: - -``` -GitHub, Inc -Attn: DMCA Agent -88 Colin P Kelly Jr St -San Francisco, CA. 94107 -``` diff --git a/content/github/site-policy/guide-to-submitting-a-dmca-takedown-notice.md b/content/github/site-policy/guide-to-submitting-a-dmca-takedown-notice.md deleted file mode 100644 index 65d7f81d864f..000000000000 --- a/content/github/site-policy/guide-to-submitting-a-dmca-takedown-notice.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Guide to Submitting a DMCA Takedown Notice -redirect_from: - - /dmca-notice-how-to/ - - /articles/dmca-notice-how-to/ - - /articles/guide-to-submitting-a-dmca-takedown-notice -versions: - free-pro-team: '*' ---- - -This guide describes the information that GitHub needs in order to process a DMCA takedown request. If you have more general questions about what the DMCA is or how GitHub processes DMCA takedown requests, please review our [DMCA Takedown Policy](/articles/dmca-takedown-policy). - -Due to the type of content GitHub hosts (mostly software code) and the way that content is managed (with Git), we need complaints to be as specific as possible. These guidelines are designed to make the processing of alleged infringement notices as straightforward as possible. Our form of notice set forth below is consistent with the form suggested by the DMCA statute, which can be found at the U.S. Copyright Office's official website: . - -As with all legal matters, it is always best to consult with a professional about your specific questions or situation. We strongly encourage you to do so before taking any action that might impact your rights. This guide isn't legal advice and shouldn't be taken as such. - -### Before You Start - -***Tell the Truth.*** The DMCA requires that you swear to the facts in your copyright complaint *under penalty of perjury*. It is a federal crime to intentionally lie in a sworn declaration. (*See* [U.S. Code, Title 18, Section 1621](https://www.gpo.gov/fdsys/pkg/USCODE-2011-title18/html/USCODE-2011-title18-partI-chap79-sec1621.htm).) Submitting false information could also result in civil liability — that is, you could get sued for money damages. The DMCA itself [provides for damages](https://en.wikipedia.org/wiki/Online_Copyright_Infringement_Liability_Limitation_Act#%C2%A7_512(f)_Misrepresentations) against any person who knowingly materially misrepresents that material or activity is infringing. - -***Investigate.*** Millions of users and organizations pour their hearts and souls into the projects they create and contribute to on GitHub. Filing a DMCA complaint against such a project is a serious legal allegation that carries real consequences for real people. Because of that, we ask that you conduct a thorough investigation and consult with an attorney before submitting a takedown to make sure that the use isn't actually permissible. - -***Ask Nicely First.*** A great first step before sending us a takedown notice is to try contacting the user directly. They may have listed contact information on their public profile page or in the repository's README, or you could get in touch by opening an issue or pull request on the repository. This is not strictly required, but it is classy. - -***Send In The Correct Request.*** We can only accept DMCA takedown notices for works that are protected by copyright, and that identify a specific copyrightable work. If you have a complaint about trademark abuse, please see our [trademark policy](/articles/github-trademark-policy/). If you wish to remove sensitive data such as passwords, please see our [policy on sensitive data](/articles/github-sensitive-data-removal-policy/). If you are dealing with defamation or other abusive behavior, please see our [Community Guidelines](/articles/github-community-guidelines/). - -***Code Is Different From Other Creative Content.*** GitHub is built for collaboration on software code. This makes identifying a valid copyright infringement more complicated than it might otherwise be for, say, photos, music, or videos. - -There are a number of reasons why code is different from other creative content. For instance: - -- A repository may include bits and pieces of code from many different people, but only one file or even a sub-routine within a file infringes your copyrights. -- Code mixes functionality with creative expression, but copyright only protects the expressive elements, not the parts that are functional. -- There are often licenses to consider. Just because a piece of code has a copyright notice does not necessarily mean that it is infringing. It is possible that the code is being used in accordance with an open-source license. -- A particular use may be [fair-use](https://www.lumendatabase.org/topics/22) if it only uses a small amount of copyrighted content, uses that content in a transformative way, uses it for educational purposes, or some combination of the above. Because code naturally lends itself to such uses, each use case is different and must be considered separately. -- Code may be alleged to infringe in many different ways, requiring detailed explanations and identifications of works. - -This list isn't exhaustive, which is why speaking to a legal professional about your proposed complaint is doubly important when dealing with code. - -***No Bots.*** You should have a trained professional evaluate the facts of every takedown notice you send. If you are outsourcing your efforts to a third party, make sure you know how they operate, and make sure they are not using automated bots to submit complaints in bulk. These complaints are often invalid and processing them results in needlessly taking down projects! - -***Matters of Copyright Are Hard.*** It can be very difficult to determine whether or not a particular work is protected by copyright. For example, facts (including data) are generally not copyrightable. Words and short phrases are generally not copyrightable. URLs and domain names are generally not copyrightable. Since you can only use the DMCA process to target content that is protected by copyright, you should speak with a lawyer if you have questions about whether or not your content is protectable. - -***You May Receive a Counter Notice.*** Any user affected by your takedown notice may decide to submit a [counter notice](/articles/guide-to-submitting-a-dmca-counter-notice). If they do, we will re-enable their content within 10-14 days unless you notify us that you have initiated a legal action seeking to restrain the user from engaging in infringing activity relating to the content on GitHub. - -***Your Complaint Will Be Published.*** As noted in our [DMCA Takedown Policy](/articles/dmca-takedown-policy#d-transparency), after redacting personal information, we publish all complete and actionable takedown notices at . - -***GitHub Isn't The Judge.*** -GitHub exercises little discretion in the process other than determining whether the notices meet the minimum requirements of the DMCA. It is up to the parties (and their lawyers) to evaluate the merit of their claims, bearing in mind that notices must be made under penalty of perjury. - -### Your Complaint Must ... - -1. **Include the following statement: "I have read and understand GitHub's Guide to Filing a DMCA Notice."** We won't refuse to process an otherwise complete complaint if you don't include this statement. But we'll know that you haven't read these guidelines and may ask you to go back and do so. - -2. **Identify the copyrighted work you believe has been infringed.** This information is important because it helps the affected user evaluate your claim and give them the ability to compare your work to theirs. The specificity of your identification will depend on the nature of the work you believe has been infringed. If you have published your work, you might be able to just link back to a web page where it lives. If it is proprietary and not published, you might describe it and explain that it is proprietary. If you have registered it with the Copyright Office, you should include the registration number. If you are alleging that the hosted content is a direct, literal copy of your work, you can also just explain that fact. - -3. **Identify the material that you allege is infringing the copyrighted work listed in item #2, above.** It is important to be as specific as possible in your identification. This identification needs to be reasonably sufficient to permit GitHub to locate the material. At a minimum, this means that you should include the URL to the material allegedly infringing your copyright. If you allege that less than a whole repository infringes, identify the specific file(s) or line numbers within a file that you allege infringe. If you allege that all of the content at a URL infringes, please be explicit about that as well. Finally, please note that GitHub will *not* automatically disable [forks](/articles/dmca-takedown-policy#b-what-about-forks-or-whats-a-fork) when disabling a parent repository. If you have investigated and analyzed the forks of a repository and believe that they are also infringing, please explicitly identify each allegedly infringing fork. Please also confirm that you have investigated each individual case and that your sworn statements apply to each identified fork. - -4. **Explain what the affected user would need to do in order to remedy the infringement.** Again, specificity is important. When we pass your complaint along to the user, this will tell them what they need to do in order to avoid having the rest of their content disabled. Does the user just need to add a statement of attribution? Do they need to delete certain lines within their code, or entire files? Of course, we understand that in some cases, all of a user's content may be alleged to infringe and there's nothing they could do short of deleting it all. If that's the case, please make that clear as well. - -5. **Provide your contact information.** Include your email address, name, telephone number and physical address. - -6. **Provide contact information, if you know it, for the alleged infringer.** Usually this will be satisfied by providing the GitHub username associated with the allegedly infringing content. But there may be cases where you have additional knowledge about the alleged infringer. If so, please share that information with us. - -7. **Include the following statement: "I have a good faith belief that use of the copyrighted materials described above on the infringing web pages is not authorized by the copyright owner, or its agent, or the law. I have taken fair use into consideration."** - -8. **Also include the following statement: "I swear, under penalty of perjury, that the information in this notification is accurate and that I am the copyright owner, or am authorized to act on behalf of the owner, of an exclusive right that is allegedly infringed."** - -9. **Include your physical or electronic signature.** - -### Complaints about Anti-Circumvention Technology - -The Copyright Act also prohibits the circumvention of technological measures that effectively control access to works protected by copyright. If you believe that content hosted on GitHub violates this prohibition, please send us a report through our {% data variables.contact.contact_dmca %}, and include specific information about what content violates that prohibition, what technological measures you had in place, and why the content violates the prohibition. - -### How to Submit Your Complaint - -The fastest way to get a response is to enter your information and answer all the questions on our {% data variables.contact.contact_dmca %}. - -You can also send an email notification to . You may include an attachment if you like, but please also include a plain-text version of your letter in the body of your message. - -If you must send your notice by physical mail, you can do that too, but it will take *substantially* longer for us to receive and respond to it. Notices we receive via plain-text email have a much faster turnaround than PDF attachments or physical mail. If you still wish to mail us your notice, our physical address is: - -``` -GitHub, Inc -Attn: DMCA Agent -88 Colin P Kelly Jr St -San Francisco, CA. 94107 -``` diff --git a/content/github/site-policy/guidelines-for-legal-requests-of-user-data.md b/content/github/site-policy/guidelines-for-legal-requests-of-user-data.md deleted file mode 100644 index 5336dba56411..000000000000 --- a/content/github/site-policy/guidelines-for-legal-requests-of-user-data.md +++ /dev/null @@ -1,241 +0,0 @@ ---- -title: Guidelines for Legal Requests of User Data -redirect_from: - - /law-enforcement-guidelines/ - - /articles/guidelines-for-legal-requests-of-user-data -versions: - free-pro-team: '*' ---- - -Are you a law enforcement officer conducting an investigation that may involve user content hosted on GitHub? -Or maybe you're a privacy-conscious person who would like to know what information we share with law enforcement and under what circumstances. -Either way, you're on the right page. - -In these guidelines, we provide a little background about what GitHub is, the types of data we have, and the conditions under which we will disclose private user information. -Before we get into the details, however, here are a few important details you may want to know: - -- We will [**notify affected users**](#we-will-notify-any-affected-account-owners) about any requests for their account information, unless prohibited from doing so by law or court order. -- We will not disclose **location-tracking data**, such as IP address logs, without a [valid court order or search warrant](#with-a-court-order-or-a-search-warrant). -- We will not disclose any **private user content**, including the contents of private repositories, without a valid [search warrant](#only-with-a-search-warrant). - -### About these guidelines - -Our users trust us with their software projects and code—often some of their most valuable business or personal assets. -Maintaining that trust is essential to us, which means keeping user data safe, secure, and private. - -While the overwhelming majority of our users use GitHub's services to create new businesses, build new technologies, and for the general betterment of humankind, we recognize that with millions of users spread all over the world, there are bound to be a few bad apples in the bunch. -In those cases, we want to help law enforcement serve their legitimate interest in protecting the public. - -By providing guidelines for law enforcement personnel, we hope to strike a balance between the often competing interests of user privacy and justice. -We hope these guidelines will help to set expectations on both sides, as well as to add transparency to GitHub's internal processes. -Our users should know that we value their private information and that we do what we can to protect it. -At a minimum, this means only releasing data to third-parties when the appropriate legal requirements have been satisfied. -By the same token, we also hope to educate law enforcement professionals about GitHub's systems so that they can more efficiently tailor their data requests and target just that information needed to conduct their investigation. - -### GitHub terminology - -Before asking us to disclose data, it may be useful to understand how our system is implemented. -GitHub hosts millions of data repositories using the [Git version control system](https://git-scm.com/video/what-is-version-control). -Repositories on GitHub—which may be public or private—are most commonly used for software development projects, but are also often used to work on content of all kinds. - -- [**Users**](/articles/github-glossary#user) — -Users are represented in our system as personal GitHub accounts. -Each user has a personal profile, and can own multiple repositories. -Users can create or be invited to join organizations or to collaborate on another user's repository. - -- [**Collaborators**](/articles/github-glossary#collaborator) — -A collaborator is a user with read and write access to a repository who has been invited to contribute by the repository owner. - -- [**Organizations**](/articles/github-glossary#organization) — -Organizations are a group of two or more users that typically mirror real-world organizations, such as businesses or projects. -They are administered by users and can contain both repositories and teams of users. - -- [**Repositories**](/articles/github-glossary#repository) — -A repository is one of the most basic GitHub elements. -They may be easiest to imagine as a project's folder. -A repository contains all of the project files (including documentation), and stores each file's revision history. -Repositories can have multiple collaborators and, at its administrators' discretion, may be publicly viewable or not. - -- [**Pages**](/articles/what-is-github-pages) — -GitHub Pages are public webpages freely hosted by GitHub that users can easily publish through code stored in their repositories. -If a user or organization has a GitHub Page, it can usually be found at a URL such as `https://username.github.io` or they may have the webpage mapped to their own custom domain name. - -- [**Gists**](/articles/creating-gists) — -Gists are snippets of source code or other text that users can use to store ideas or share with friends. -Like regular GitHub repositories, Gists are created with Git, so they are automatically versioned, forkable and downloadable. -Gists can either be public or secret (accessible only through a known URL). Public Gists cannot be converted into secret Gists. - -### User data on GitHub.com - -Here is a non-exhaustive list of the kinds of data we maintain about users and projects on GitHub. - -- -**Public account data** — -There is a variety of information publicly available on GitHub about users and their repositories. -User profiles can be found at a URL such as `https://github.com/username`. -User profiles display information about when the user created their account as well their public activity on GitHub.com and social interactions. -Public user profiles can also include additional information that a user may have chosen to share publicly. -All user public profiles display: - - Username - - The repositories that the user has starred - - The other GitHub users the user follows - - The users that follow them - - Optionally, a user may also choose to share the following information publicly: - - Their real name - - An avatar - - An affiliated company - - Their location - - A public email address - - Their personal web page - - Organizations to which the user is a member (*depending on either the organizations' or the users' preferences*) - -- -**Private account data** — -GitHub also collects and maintains certain private information about users as outlined in our [Privacy Policy](/articles/github-privacy-statement). -This may include: - - Private email addresses - - Payment details - - Security access logs - - Data about interactions with private repositories - - To get a sense of the type of private account information that GitHub collects, you can visit your {% data reusables.user_settings.personal_dashboard %} and browse through the sections in the left-hand menubar. - -- -**Organization account data** — -Information about organizations, their administrative users and repositories is publicly available on GitHub. -Organization profiles can be found at a URL such as `https://github.com/organization`. -Public organization profiles can also include additional information that the owners have chosen to share publicly. -All organization public profiles display: - - The organization name - - The repositories that the owners have starred - - All GitHub users that are owners of the organization - - Optionally, administrative users may also choose to share the following information publicly: - - An avatar - - An affiliated company - - Their location - - Direct Members and Teams - - Collaborators - -- -**Public repository data** — -GitHub is home to millions of public, open-source software projects. -You can browse almost any public repository (for example, the [Atom Project](https://github.com/atom/atom)) to get a sense for the information that GitHub collects and maintains about repositories. -This can include: - - - The code itself - - Previous versions of the code - - Stable release versions of the project - - Information about collaborators, contributors and repository members - - Logs of Git operations such as commits, branching, pushing, pulling, forking and cloning - - Conversations related to Git operations such as comments on pull requests or commits - - Project documentation such as Issues and Wiki pages - - Statistics and graphs showing contributions to the project and the network of contributors - -- -**Private repository data** — -GitHub collects and maintains the same type of data for private repositories that can be seen for public repositories, except only specifically invited users may access private repository data. - -- -**Other data** — -Additionally, GitHub collects analytics data such as page visits and information occasionally volunteered by our users (such as communications with our support team, survey information and/or site registrations). - -### We will notify any affected account owners - -It is our policy to notify users about any pending requests regarding their accounts or repositories, unless we are prohibited by law or court order from doing so. Before disclosing user information, we will make a reasonable effort to notify any affected account owner(s) by sending a message to their verified email address providing them with a copy of the subpoena, court order, or warrant so that they can have an opportunity to challenge the legal process if they wish. In (rare) exigent circumstances, we may delay notification if we determine delay is necessary to prevent death or serious harm. - -### Disclosure of non-public information - -It is our policy to disclose non-public user information in connection with a civil or criminal investigation only with user consent or upon receipt of a valid subpoena, civil investigative demand, court order, search warrant, or other similar valid legal process. In certain exigent circumstances (see below), we also may share limited information but only corresponding to the nature of the circumstances, and would require legal process for anything beyond that. -GitHub reserves the right to object to any requests for non-public information. -Where GitHub agrees to produce non-public information in response to a lawful request, we will conduct a reasonable search for the requested information. -Here are the kinds of information we will agree to produce, depending on the kind of legal process we are served with: - -- -**With user consent** — -GitHub will provide private account information, if requested, directly to the user (or an owner, in the case of an organization account), or to a designated third party with the user's written consent once GitHub is satisfied that the user has verified his or her identity. - -- -**With a subpoena** — -If served with a valid subpoena, civil investigative demand, or similar legal process issued in connection with an official criminal or civil investigation, we can provide certain non-public account information, which may include: - - - Name(s) associated with the account - - Email address(es) associated with the account - - Billing information - - Registration date and termination date - - IP address, date, and time at the time of account registration - - IP address(es) used to access the account at a specified time or event relevant to the investigation - -In the case of organization accounts, we can provide the name(s) and email address(es) of the account owner(s) as well as the date and IP address at the time of creation of the organization account. We will not produce information about other members or contributors, if any, to the organization account or any additional information regarding the identified account owner(s) without a follow-up request for those specific users. - -Please note that the information available will vary from case to case. Some of the information is optional for users to provide. In other cases, we may not have collected or retained the information. - -- -**With a court order *or* a search warrant** — We will not disclose account access logs unless compelled to do so by either -(i) a court order issued under 18 U.S.C. Section 2703(d), upon a showing of specific and articulable facts showing that there are reasonable grounds to believe that the information sought is relevant and material to an ongoing criminal investigation; or -(ii) a search warrant issued under the procedures described in the Federal Rules of Criminal Procedure or equivalent state warrant procedures, upon a showing of probable cause. -In addition to the non-public user account information listed above, we can provide account access logs in response to a court order or search warrant, which may include: - - - Any logs which would reveal a user's movements over a period of time - - Account or private repository settings (for example, which users have certain permissions, etc.) - - User- or IP-specific analytic data such as browsing history - - Security access logs other than account creation or for a specific time and date - -- -**Only with a search warrant** — -We will not disclose the private contents of any user account unless compelled to do so under a search warrant issued under the procedures described in the Federal Rules of Criminal Procedure or equivalent state warrant procedures upon a showing of probable cause. -In addition to the non-public user account information and account access logs mentioned above, we will also provide private user account contents in response to a search warrant, which may include: - - - Contents of secret Gists - - Source code or other content in private repositories - - Contribution and collaboration records for private repositories - - Communications or documentation (such as Issues or Wikis) in private repositories - - Any security keys used for authentication or encryption - -- - -**Under exigent circumstances** — -If we receive a request for information under certain exigent circumstances (where we believe the disclosure is necessary to prevent an emergency involving danger of death or serious physical injury to a person), we may disclose limited information that we determine necessary to enable law enforcement to address the emergency. For any information beyond that, we would require a subpoena, search warrant, or court order, as described above. For example, we will not disclose contents of private repositories without a search warrant. Before disclosing information, we confirm that the request came from a law enforcement agency, an authority sent an official notice summarizing the emergency, and how the information requested will assist in addressing the emergency. - -### Cost reimbursement - -We reserve the right to seek reimbursement for administrative costs associated with responding to requests for information, as allowed by law. - -### Data preservation - -We will take steps to preserve account records for up to 90 days upon formal request from U.S. law enforcement in connection with official criminal investigations, and pending the issuance of a court order or other process. - -### Submitting requests - -Please serve requests to: - -``` -GitHub, Inc. -c/o Corporation Service Company -2710 Gateway Oaks Drive, Suite 150N -Sacramento, CA 95833-3505 -``` - -You may also send a courtesy copy to legal@support.github.com. - -Please make your requests as specific and narrow as possible, including the following information: - -- Full information about authority issuing the request for information -- The name and badge/ID of the responsible agent -- An official email address and contact phone number -- The user, organization, repository name(s) of interest -- The URLs of any pages, gists or files of interest -- The description of the types of records you need - -Please allow at least two weeks for us to be able to look into your request. - -### Requests from foreign law enforcement - -As a United States company based in California, GitHub is not required to provide data to foreign governments in response to legal process issued by foreign authorities. -Foreign law enforcement officials wishing to request information from GitHub should contact the United States Department of Justice Criminal Division's Office of International Affairs. -GitHub will promptly respond to requests that are issued via U.S. court by way of a mutual legal assistance treaty (“MLAT”) or letter rogatory. - -### Questions - -Do you have other questions, comments or suggestions? Please contact {% data variables.contact.contact_support %}. diff --git a/content/github/site-policy/index.md b/content/github/site-policy/index.md deleted file mode 100644 index 7154afd2f75c..000000000000 --- a/content/github/site-policy/index.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Site policy -redirect_from: - - /categories/61/articles/ - - /categories/site-policy -versions: - free-pro-team: '*' ---- - - -### Table of Contents - -{% link_in_list /github-terms-of-service %} -{% link_in_list /github-corporate-terms-of-service %} -{% link_in_list /github-privacy-statement %} -{% link_in_list /github-data-protection-addendum %} -{% link_in_list /global-privacy-practices %} -{% link_in_list /github-enterprise-server-license-agreement %} -{% link_in_list /github-enterprise-service-level-agreement %} -{% link_in_list /github-connect-addendum-to-the-github-enterprise-license-agreement %} -{% link_in_list /github-supplemental-terms-for-microsoft-volume-licensing %} -{% link_in_list /github-enterprise-subscription-agreement %} -{% link_in_list /github-insights-and-data-protection-for-your-organization %} -{% link_in_list /github-enterprise-cloud-evaluation-agreement %} -{% link_in_list /github-sponsors-additional-terms %} -{% link_in_list /github-additional-product-terms %} -{% link_in_list /github-logo-policy %} -{% link_in_list /github-username-policy %} -{% link_in_list /submitting-content-removal-requests %} -{% link_in_list /dmca-takedown-policy %} -{% link_in_list /guide-to-submitting-a-dmca-takedown-notice %} -{% link_in_list /guide-to-submitting-a-dmca-counter-notice %} -{% link_in_list /github-trademark-policy %} -{% link_in_list /github-sensitive-data-removal-policy %} -{% link_in_list /github-subprocessors-and-cookies %} -{% link_in_list /github-bug-bounty-program-legal-safe-harbor %} -{% link_in_list /responsible-disclosure-of-security-vulnerabilities %} -{% link_in_list /amendment-to-github-terms-of-service-applicable-to-us-federal-government-users %} -{% link_in_list /guidelines-for-legal-requests-of-user-data %} -{% link_in_list /github-government-takedown-policy %} -{% link_in_list /github-acceptable-use-policies %} -{% link_in_list /githubs-notice-about-the-california-consumer-privacy-act %} -{% link_in_list /github-community-guidelines %} -{% link_in_list /github-community-forum-code-of-conduct %} -{% link_in_list /github-registered-developer-agreement %} -{% link_in_list /github-marketplace-terms-of-service %} -{% link_in_list /github-marketplace-developer-agreement %} -{% link_in_list /github-pre-release-program %} -{% link_in_list /github-research-program-terms %} -{% link_in_list /github-open-source-applications-terms-and-conditions %} -{% link_in_list /github-and-trade-controls %} -{% link_in_list /github-deceased-user-policy %} -{% link_in_list /github-statement-against-modern-slavery-and-child-labor %} -{% link_in_list /github-anti-bribery-statement %} -{% link_in_list /github-gifts-and-entertainment-policy %} -{% link_in_list /github-event-terms %} -{% link_in_list /github-event-code-of-conduct %} -{% link_in_list /github-gpl-cooperation-commitment %} diff --git a/content/github/site-policy/responsible-disclosure-of-security-vulnerabilities.md b/content/github/site-policy/responsible-disclosure-of-security-vulnerabilities.md deleted file mode 100644 index 34dd98fa5d5d..000000000000 --- a/content/github/site-policy/responsible-disclosure-of-security-vulnerabilities.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Responsible Disclosure of Security Vulnerabilities -redirect_from: - - /responsible-disclosure/ - - /articles/responsible-disclosure-of-security-vulnerabilities -versions: - free-pro-team: '*' ---- -We want to keep GitHub safe for everyone. If you've discovered a security vulnerability in GitHub, we appreciate your help in disclosing it to us in a responsible manner. - -### Bounty Program - -Like several other large software companies, GitHub provides a bug bounty to better engage with security researchers. The idea is simple: hackers and security researchers (like you) find and report vulnerabilities through our responsible disclosure process. Then, to recognize the significant effort that these researchers often put forth when hunting down bugs, we reward them with some cold hard cash. - -Check out the [GitHub Bug Bounty](https://bounty.github.com) site for bounty details, review our comprehensive [Legal Safe Harbor Policy](/articles/github-bug-bounty-program-legal-safe-harbor) terms as well, and happy hunting! diff --git a/content/github/site-policy/submitting-content-removal-requests.md b/content/github/site-policy/submitting-content-removal-requests.md deleted file mode 100644 index ce08d2770667..000000000000 --- a/content/github/site-policy/submitting-content-removal-requests.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Submitting content removal requests -redirect_from: - - /articles/submitting-content-removal-requests -versions: - free-pro-team: '*' ---- - -We understand that copyrighted, trademarked, or sensitive content may get published on GitHub – either accidentally or on purpose – sometimes in repositories that you do not own. Because the nature of this content varies, and because of different applicable laws, each category has its own, distinct reporting requirements outlined in our policies. - -If you'd like to request that content be removed from GitHub, please take some time to acquaint yourself with each of these policies and their respective reporting requirements before submitting a report. If we receive an incomplete report, we'll need to ask for clarifications or revisions and you’ll need to re-submit a revised report. - -Please note that we're not able to help you determine which policy is appropriate for your specific situation. If you’ve reviewed the policies below and still have questions about whether or not content should be reported as copyright, trademark, or sensitive data, we recommend consulting with independent legal counsel. - -### [DMCA Takedown Policy](/articles/dmca-takedown-policy) -The DMCA Takedown Policy can be used to report content that you believe infringes a copyright owned by you or your organization. Once you have reviewed the policy, you may also want to review our [Guide to Submitting a DMCA Takedown Notice](/articles/guide-to-submitting-a-dmca-takedown-notice/) before submitting a report. - -### [GitHub Trademark Policy](/articles/github-trademark-policy) -The GitHub Trademark Policy can be used to report content that appears to use your company or business name, logo, or other trademark-protected materials in a manner that may mislead or confuse others about brand or business affiliation. - -### [GitHub Sensitive Data Removal Policy](/articles/github-sensitive-data-removal-policy) -The GitHub Sensitive Data Removal Policy can be used to report data that is sensitive or confidential and poses a security risk, but that is not necessarily protected by copyright or trademark. diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/about-github-sponsors-for-open-source-contributors.md b/content/github/supporting-the-open-source-community-with-github-sponsors/about-github-sponsors-for-open-source-contributors.md deleted file mode 100644 index 003da8a970d5..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/about-github-sponsors-for-open-source-contributors.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: About GitHub Sponsors for open source contributors -intro: 'If you provide value to an open source project, you can become a sponsored contributor to receive payments for your work.' -redirect_from: - - /articles/about-github-sponsors-for-sponsored-developers - - /github/supporting-the-open-source-community-with-github-sponsors/about-github-sponsors-for-sponsored-developers -versions: - free-pro-team: '*' ---- - -### Joining {% data variables.product.prodname_sponsors %} - -{% data reusables.sponsors.you-can-be-a-sponsored-developer %} For more information, see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)." - -{% data reusables.sponsors.you-can-be-a-sponsored-organization %} For more information, see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)." - -After you join {% data variables.product.prodname_sponsors %}, you can add a sponsor button to the open source repository you contribute to, to increase the visibility of your {% data variables.product.prodname_sponsors %} profile and other funding platforms. For more information, see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)." - -You can set a goal for your sponsorships. For more information, see "[Managing your sponsorship goal](/github/supporting-the-open-source-community-with-github-sponsors/managing-your-sponsorship-goal)." - -{% data reusables.sponsors.github-contact-applicants %} - -### Sponsorship tiers - -{% data reusables.sponsors.tier-details %} For more information, see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)," "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization), and "[Changing your sponsorship tiers](/articles/changing-your-sponsorship-tiers)." - -### Sponsorship payouts - -{% data reusables.sponsors.no-fees %} - -{% data reusables.sponsors.payout-info %} - -For more information, see "[Managing your payouts from {% data variables.product.prodname_sponsors %}](/github/supporting-the-open-source-community-with-github-sponsors/managing-your-payouts-from-github-sponsors)." - -### Further reading -- "[FAQ with the {% data variables.product.prodname_sponsors %} team](https://github.blog/2019-06-12-faq-with-the-github-sponsors-team/)" on {% data variables.product.prodname_blog %} diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/about-github-sponsors.md b/content/github/supporting-the-open-source-community-with-github-sponsors/about-github-sponsors.md deleted file mode 100644 index f3297bfd7ebe..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/about-github-sponsors.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: About GitHub Sponsors -intro: '{% data variables.product.prodname_sponsors %} allows the developer community to financially support the people and organizations who design, build, and maintain the open source projects they depend on, directly on {% data variables.product.product_name %}.' -redirect_from: - - /articles/about-github-sponsors -versions: - free-pro-team: '*' ---- - -### About {% data variables.product.prodname_sponsors %} - -{% data reusables.sponsors.sponsorship-details %} {% data reusables.sponsors.no-fees %} For more information, see "[About billing for {% data variables.product.prodname_sponsors %}](/articles/about-billing-for-github-sponsors)." - -{% data reusables.sponsors.you-can-be-a-sponsored-developer %} For more information, see "[About {% data variables.product.prodname_sponsors %} for open source contributors](/github/supporting-the-open-source-community-with-github-sponsors/about-github-sponsors-for-open-source-contributors)" and "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)." - -{% data reusables.sponsors.you-can-be-a-sponsored-organization %} For more information, see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)." - -When you become a sponsored developer or sponsored organization, additional terms for {% data variables.product.prodname_sponsors %} apply. For more information, see "[GitHub Sponsors Additional Terms](/github/site-policy/github-sponsors-additional-terms)." - -### About the {% data variables.product.prodname_matching_fund %} - -{% note %} - -**Note:** {% data reusables.sponsors.matching-fund-eligible %} - -{% endnote %} - -The {% data variables.product.prodname_matching_fund %} aims to benefit members of the {% data variables.product.prodname_dotcom %} community who develop open source software that promotes the [{% data variables.product.prodname_dotcom %} Community Guidelines](/github/site-policy/github-community-guidelines). Sponsored organizations are not eligible for {% data variables.product.prodname_matching_fund %}. - -To be eligible for the {% data variables.product.prodname_matching_fund %}, you must create a profile that will attract a community that will sustain you for the long term. For more information about creating a strong profile, see "[Editing your profile details for {% data variables.product.prodname_sponsors %}](/github/supporting-the-open-source-community-with-github-sponsors/editing-your-profile-details-for-github-sponsors)." - -{% data reusables.sponsors.legal-additional-terms %} - -### Sharing feedback about {% data variables.product.prodname_sponsors %} - -This is just the beginning — we'd love your input to make sure {% data variables.product.prodname_sponsors %} serves your needs into the future. Please send us your feedback or suggestions by contacting [{% data variables.contact.github_support %}](https://support.github.com/contact?form%5Bsubject%5D=GitHub+Sponsors). - -Currently, only individual users can sponsor developers and organizations. If your organization is interested in sponsoring developers, please let us know by contacting [{% data variables.contact.github_support %}](https://support.github.com/contact?form%5Bsubject%5D=GitHub+Sponsors). - -### Further reading -- "[Sponsoring open source contributors](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-open-source-contributors)" -- "[Receiving sponsorships through {% data variables.product.prodname_sponsors %}](/github/supporting-the-open-source-community-with-github-sponsors/receiving-sponsorships-through-github-sponsors)" -- "[FAQ with the {% data variables.product.prodname_sponsors %} team](https://github.blog/2019-06-12-faq-with-the-github-sponsors-team/)" on {% data variables.product.prodname_blog %} diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/changing-your-sponsorship-tiers.md b/content/github/supporting-the-open-source-community-with-github-sponsors/changing-your-sponsorship-tiers.md deleted file mode 100644 index 4bed524e3cda..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/changing-your-sponsorship-tiers.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Changing your sponsorship tiers -intro: 'You can add a new sponsorship tier, or edit or retire an existing tier.' -redirect_from: - - /articles/changing-your-sponsorship-tiers -versions: - free-pro-team: '*' ---- - -### About sponsorship tiers - -{% data reusables.sponsors.tier-details %} - -{% data reusables.sponsors.maximum-tier %} - -### Adding a tier for your sponsored developer profile - -{% data reusables.sponsors.navigate-to-dev-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-sponsor-tiers-tab %} -{% data reusables.sponsors.click-add-tier %} -{% data reusables.sponsors.tier-price-description %} -{% data reusables.sponsors.save-tier-draft %} -{% data reusables.sponsors.review-and-publish-tier %} - -### Adding a tier for your sponsored organization profile - -{% data reusables.sponsors.navigate-to-org-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-sponsor-tiers-tab %} -{% data reusables.sponsors.click-add-tier %} -{% data reusables.sponsors.tier-price-description %} -{% data reusables.sponsors.save-tier-draft %} -{% data reusables.sponsors.review-and-publish-tier %} - -### Editing or retiring a tier for your sponsored developer profile - -{% data reusables.sponsors.navigate-to-dev-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-sponsor-tiers-tab %} -{% data reusables.sponsors.edit-tier %} -{% data reusables.sponsors.tier-price-description %} -{% data reusables.sponsors.tier-update %} -{% data reusables.sponsors.retire-tier %} - -### Editing or retiring a tier for your sponsored organization profile - -{% data reusables.sponsors.navigate-to-org-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-sponsor-tiers-tab %} -{% data reusables.sponsors.edit-tier %} -{% data reusables.sponsors.tier-price-description %} -{% data reusables.sponsors.tier-update %} -{% data reusables.sponsors.retire-tier %} diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/configuring-webhooks-for-events-in-your-sponsored-account.md b/content/github/supporting-the-open-source-community-with-github-sponsors/configuring-webhooks-for-events-in-your-sponsored-account.md deleted file mode 100644 index f73cfc6f93f6..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/configuring-webhooks-for-events-in-your-sponsored-account.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Configuring webhooks for events in your sponsored account -intro: You can configure webhooks to alert you when you receive new sponsorships or existing sponsors make changes to their sponsorships. -versions: - free-pro-team: '*' ---- - -To monitor changes to your sponsorships, such as cancellations at the end of a pay period, you can create webhooks for your sponsored user or organization account. When you set up a webhook for your sponsored user or organization account, you'll receive updates when sponsorships are created, edited, or deleted. For more information, see the [`sponsorship` webhook event](/webhooks/event-payloads/#sponsorship). - -### Managing webhooks for your sponsored user account - -{% data reusables.sponsors.navigate-to-dev-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-webhooks-tab %} -{% data reusables.sponsors.add-webhook %} -{% data reusables.sponsors.add-payload-url %} -{% data reusables.sponsors.webhook-content-formatting %} -{% data reusables.sponsors.webhook-secret-token %} -{% data reusables.sponsors.add-active-triggers %} -{% data reusables.sponsors.confirm-add-webhook %} -{% data reusables.sponsors.manage-existing-webhooks %} - -### Managing webhooks for your sponsored organization - -Organization owners can configure webhooks for a sponsored organization. - -{% data reusables.sponsors.navigate-to-org-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-webhooks-tab %} -{% data reusables.sponsors.add-webhook %} -{% data reusables.sponsors.add-payload-url %} -{% data reusables.sponsors.webhook-content-formatting %} -{% data reusables.sponsors.webhook-secret-token %} -{% data reusables.sponsors.add-active-triggers %} -{% data reusables.sponsors.confirm-add-webhook %} -{% data reusables.sponsors.manage-existing-webhooks %} diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/contacting-your-sponsors.md b/content/github/supporting-the-open-source-community-with-github-sponsors/contacting-your-sponsors.md deleted file mode 100644 index 80e23f3cf58b..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/contacting-your-sponsors.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Contacting your sponsors -intro: You can send an email to your sponsors who have opted in to receive updates about your work. -redirect_from: - - /articles/contacting-your-sponsors -versions: - free-pro-team: '*' ---- - -Your sponsors can choose whether they receive email updates about your work. For more information, see "[Managing your sponsorship](/articles/managing-your-sponsorship)." - -The update will come from your user account's primary email address or organization account's `noreply@github.com` email address. If you've enabled email address privacy on your user account, the update will come from `noreply@github.com` instead. For more information, see "[Setting your commit email address](/articles/setting-your-commit-email-address)." - -### Contacting your user account's sponsors - -{% data reusables.sponsors.navigate-to-dev-sponsors-dashboard %} -{% data reusables.sponsors.sponsors-updates-tab %} -{% data reusables.sponsors.draft-new-update %} -{% data reusables.sponsors.send-update-to-sponsors %} -{% data reusables.sponsors.write-sponsor-update %} -{% data reusables.sponsors.publish-sponsor-update %} - -### Contacting your organization's sponsors - -{% data reusables.sponsors.navigate-to-org-sponsors-dashboard %} -{% data reusables.sponsors.sponsors-updates-tab %} -{% data reusables.sponsors.draft-new-update %} -{% data reusables.sponsors.send-update-to-sponsors %} -{% data reusables.sponsors.write-sponsor-update %} -{% data reusables.sponsors.publish-sponsor-update %} diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/editing-your-profile-details-for-github-sponsors.md b/content/github/supporting-the-open-source-community-with-github-sponsors/editing-your-profile-details-for-github-sponsors.md deleted file mode 100644 index e841276f04cb..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/editing-your-profile-details-for-github-sponsors.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Editing your profile details for GitHub Sponsors -intro: You can update the information that potential sponsors see about your work. -redirect_from: - - /articles/editing-your-sponsored-developer-profile - - /github/supporting-the-open-source-community-with-github-sponsors/editing-your-sponsored-developer-profile -versions: - free-pro-team: '*' ---- - -### About sponsor profiles - -Your {% data variables.product.prodname_sponsors %} profile tells potential sponsors why they should support you. People see your sponsor profile when they click the **Sponsor** button on your personal or organization profile. We recommend including the following information. - -- Open source work that you contribute to. -- Why you are committed to open source development. - -You can also set goals to explain what different of levels of sponsorship will allow you to do for the community. - -### Editing your sponsored developer profile - -{% data reusables.sponsors.navigate-to-dev-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-profile-tab %} -{% data reusables.sponsors.short-bio %} -{% data reusables.sponsors.add-introduction %} -{% data reusables.sponsors.edit-featured-work %} -{% data reusables.sponsors.opt-in-to-being-featured %} -{% data reusables.sponsors.save-profile %} - -### Editing your sponsored organization profile - -{% data reusables.sponsors.navigate-to-org-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-profile-tab %} -{% data reusables.sponsors.short-bio %} -{% data reusables.sponsors.add-introduction %} -{% data reusables.sponsors.meet-the-team %} -{% data reusables.sponsors.edit-featured-work %} -{% data reusables.sponsors.opt-in-to-being-featured %} -{% data reusables.sponsors.save-profile %} diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/index.md b/content/github/supporting-the-open-source-community-with-github-sponsors/index.md deleted file mode 100644 index def51bcb47e8..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Supporting the open source community with GitHub Sponsors -shortTitle: GitHub Sponsors -intro: 'You can support the people and organizations who design, build, and maintain the open source projects you depend on by compensating them via {% data variables.product.prodname_dotcom %}.' -redirect_from: - - /categories/supporting-the-open-source-community-with-github-sponsors -versions: - free-pro-team: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /overview %} - {% link_in_list /about-github-sponsors %} -{% topic_link_in_list /sponsoring-open-source-contributors %} - {% link_in_list /sponsoring-an-open-source-contributor %} - {% link_in_list /managing-your-sponsorship %} -{% topic_link_in_list /receiving-sponsorships-through-github-sponsors %} - {% link_in_list /about-github-sponsors-for-open-source-contributors %} - {% link_in_list /setting-up-github-sponsors-for-your-user-account %} - {% link_in_list /setting-up-github-sponsors-for-your-organization %} - {% link_in_list /editing-your-profile-details-for-github-sponsors %} - {% link_in_list /managing-your-sponsorship-goal %} - {% link_in_list /changing-your-sponsorship-tiers %} - {% link_in_list /viewing-your-sponsors-and-sponsorships %} - {% link_in_list /managing-your-payouts-from-github-sponsors %} - {% link_in_list /configuring-webhooks-for-events-in-your-sponsored-account %} - {% link_in_list /contacting-your-sponsors %} - {% link_in_list /tax-information-for-github-sponsors %} diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/managing-your-payouts-from-github-sponsors.md b/content/github/supporting-the-open-source-community-with-github-sponsors/managing-your-payouts-from-github-sponsors.md deleted file mode 100644 index 295daca88896..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/managing-your-payouts-from-github-sponsors.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Managing your payouts from GitHub Sponsors -intro: 'You can view information about past and future payouts from {% data variables.product.prodname_sponsors %} and edit your bank information.' -redirect_from: - - /articles/managing-your-payouts-from-github-sponsors -versions: - free-pro-team: '*' ---- - -### About payouts from {% data variables.product.prodname_sponsors %} - -You can only manage your payouts from {% data variables.product.prodname_sponsors %} if you are paid through Stripe Connect. If you are paid through ACH transfer or wire transfer for your sponsored user account, you will not see the **Payouts** tab on your sponsored open source contributor dashboard. Sponsored organizations can only use Stripe Connect for payouts. For more information, see "[About {% data variables.product.prodname_sponsors %} for open source contributors](/github/supporting-the-open-source-community-with-github-sponsors/about-github-sponsors-for-open-source-contributors#sponsorship-payouts)." - -{% data reusables.sponsors.payout-info %} - -### Viewing and editing payout information for your sponsored user account - -{% data reusables.sponsors.navigate-to-dev-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-payouts-tab %} -{% data reusables.sponsors.edit-bank-information %} - -### Viewing and editing payout information for your sponsored organization - -{% data reusables.sponsors.navigate-to-org-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-payouts-tab %} -{% data reusables.sponsors.edit-bank-information %} diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/managing-your-sponsorship-goal.md b/content/github/supporting-the-open-source-community-with-github-sponsors/managing-your-sponsorship-goal.md deleted file mode 100644 index 07a67e1a88a9..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/managing-your-sponsorship-goal.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Managing your sponsorship goal -intro: You can set a goal for your sponsored developer or sponsored organization profile to help the community understand the impact of sponsoring you. -versions: - free-pro-team: '*' ---- - -### About sponsorship goals - -You can set a funding goal for your sponsored developer or organization profile and share the goal with your community. Goals help you understand the impact you have in the open source community and build up your presence in the {% data variables.product.prodname_sponsors %} program. - -Your goal can set a target for the number of sponsors you want to have or the amount of money you want to earn each month. You can only set one goal up at a time. After you reach a goal, you can set another goal. - -### Setting a goal for a sponsored organization - -{% data reusables.sponsors.navigate-to-org-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-your-goals-tab %} -{% data reusables.sponsors.set-a-goal %} -{% data reusables.sponsors.select-goal-type %} -{% data reusables.sponsors.publish-goal %} - -### Setting a goal for a sponsored developer - -{% data reusables.sponsors.navigate-to-dev-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-your-goals-tab %} -{% data reusables.sponsors.set-a-goal %} -{% data reusables.sponsors.select-goal-type %} -{% data reusables.sponsors.publish-goal %} - -### Editing a goal - -When you edit a goal, you can't choose a goal you've already achieved. For example, if you already have 5 sponsors, you can't edit your goal so that you're aiming for 4 sponsors. - -{% data reusables.sponsors.navigate-to-your-goals-tab %} -{% data reusables.sponsors.edit-goal %} -{% data reusables.sponsors.select-goal-type %} -{% data reusables.sponsors.publish-goal %} - -### Retiring a goal - -After you retire a goal, you won't be able to reactivate the goal. You must create a new goal instead. - -{% data reusables.sponsors.navigate-to-your-goals-tab %} -{% data reusables.sponsors.edit-goal %} -{% data reusables.sponsors.retire-goal %} diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/managing-your-sponsorship.md b/content/github/supporting-the-open-source-community-with-github-sponsors/managing-your-sponsorship.md deleted file mode 100644 index 17c1100ced0d..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/managing-your-sponsorship.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Managing your sponsorship -intro: You can manage who can see your sponsorship and whether you receive email updates from the sponsored open source contributor. -redirect_from: - - /articles/managing-your-sponsorship -versions: - free-pro-team: '*' ---- - -For information about changing your sponsorship tier, see "[Upgrading a sponsorship](/articles/upgrading-a-sponsorship)" and "[Downgrading a sponsorship](/articles/downgrading-a-sponsorship)." - -### Managing the privacy setting for your developer sponsorship - -{% data reusables.sponsors.navigate-to-sponsored-developer %} -{% data reusables.sponsors.manage-developer-sponsorship %} -{% data reusables.sponsors.who-can-see-your-sponsorship %} -{% data reusables.sponsors.update-sponsorship %} - -### Managing the privacy setting for your organization sponsorship - -{% data reusables.sponsors.navigate-to-sponsored-org %} -{% data reusables.sponsors.manage-org-sponsorship %} -{% data reusables.sponsors.who-can-see-your-sponsorship %} -{% data reusables.sponsors.update-sponsorship %} - -### Managing email updates from a sponsored developer - -You can choose whether a sponsored developer can send you email updates about their work. The sponsored developer will not have access to your email address. - -{% data reusables.sponsors.navigate-to-sponsored-developer %} -{% data reusables.sponsors.manage-developer-sponsorship %} -{% data reusables.sponsors.developer-sponsored-choose-updates %} -{% data reusables.sponsors.update-sponsorship %} - -### Managing email updates from a sponsored organization - -You can choose whether a sponsored organization can send you email updates about their work. The sponsored organization will not have access to your email address. - -{% data reusables.sponsors.navigate-to-sponsored-org %} -{% data reusables.sponsors.manage-org-sponsorship %} -{% data reusables.sponsors.org-sponsored-choose-updates %} -{% data reusables.sponsors.update-sponsorship %} diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/overview.md b/content/github/supporting-the-open-source-community-with-github-sponsors/overview.md deleted file mode 100644 index f5271481a4bd..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/overview.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Overview -intro: 'Learn about {% data variables.product.prodname_sponsors %} and how you can get involved as a sponsor or open source contributor.' -mapTopic: true -versions: - free-pro-team: '*' ---- - diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/receiving-sponsorships-through-github-sponsors.md b/content/github/supporting-the-open-source-community-with-github-sponsors/receiving-sponsorships-through-github-sponsors.md deleted file mode 100644 index 02aec92e58a0..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/receiving-sponsorships-through-github-sponsors.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Receiving sponsorships through GitHub Sponsors -shortTitle: Receiving sponsorships -intro: 'You or your organization can become a sponsored open source contributor to receive payments for your work, update your sponsorship details, and view and contact your sponsors.' -mapTopic: true -redirect_from: - - /articles/receiving-sponsorships-as-a-sponsored-developer - - /github/supporting-the-open-source-community-with-github-sponsors/receiving-sponsorships-as-a-sponsored-developer -versions: - free-pro-team: '*' ---- - diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization.md b/content/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization.md deleted file mode 100644 index 41edca34c234..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Setting up GitHub Sponsors for your organization -intro: 'Your organization can join {% data variables.product.prodname_sponsors %} to receive payments for your work.' -redirect_from: - - /articles/setting-up-github-sponsorship-for-your-organization - - /articles/receiving-sponsorships-as-a-sponsored-organization -permissions: 'Organization owners can set up {% data variables.product.prodname_sponsors %} for an organization.' -versions: - free-pro-team: '*' ---- - -### Joining {% data variables.product.prodname_sponsors %} - -{% data reusables.sponsors.you-can-be-a-sponsored-organization %} {% data reusables.sponsors.stripe-supported-regions %} - -After you receive an invitation for your organization to join {% data variables.product.prodname_sponsors %}, you can complete the steps below to become a sponsored organization. - -To join {% data variables.product.prodname_sponsors %} as an individual contributor outside an organization, see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)." - -{% data reusables.sponsors.navigate-to-github-sponsors %} -{% data reusables.sponsors.view-eligible-accounts %} -3. To the right of your organization, click **Join the waitlist**. -{% data reusables.sponsors.contact-info %} -{% data reusables.sponsors.accept-legal-terms %} - -### Completing your sponsored organization profile - -{% data reusables.sponsors.navigate-to-org-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-profile-tab %} -{% data reusables.sponsors.short-bio %} -{% data reusables.sponsors.add-introduction %} -{% data reusables.sponsors.meet-the-team %} -{% data reusables.sponsors.edit-featured-work %} -{% data reusables.sponsors.opt-in-to-being-featured %} -{% data reusables.sponsors.save-profile %} - -### Creating sponsorship tiers - -{% data reusables.sponsors.tier-details %} - -{% data reusables.sponsors.maximum-tier %} - -{% data reusables.sponsors.navigate-to-org-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-sponsor-tiers-tab %} -{% data reusables.sponsors.click-add-tier %} -{% data reusables.sponsors.tier-price-description %} -{% data reusables.sponsors.save-tier-draft %} -{% data reusables.sponsors.review-and-publish-tier %} -{% data reusables.sponsors.add-more-tiers %} - -### Submitting your bank information - -As a sponsored organization, you must receive payouts to a dedicated bank account for your organization in a supported region. You can get a business bank account through services like [Open Collective](https://opencollective.com/) and [Stripe Atlas](https://stripe.com/atlas). The region your organization legally operates in and the region of your bank account must match. The person setting up {% data variables.product.prodname_sponsors %} for the organization must live in the same supported region, too. {% data reusables.sponsors.stripe-supported-regions %} - -{% data reusables.sponsors.double-check-stripe-info %} - -{% data reusables.sponsors.navigate-to-org-sponsors-dashboard %} -{% data reusables.sponsors.create-stripe-account %} - -For more information about setting up Stripe Connect using Open Collective, see [Setting up {% data variables.product.prodname_sponsors %}](https://docs.opencollective.com/help/collectives/github-sponsors) in the Open Collective Docs. - -### Submitting your tax information - -{% data reusables.sponsors.tax-form-information-org %} - -{% data reusables.sponsors.navigate-to-org-sponsors-dashboard %} -{% data reusables.sponsors.settings-tab %} -{% data reusables.sponsors.country-of-residence %} -{% data reusables.sponsors.overview-tab %} -{% data reusables.sponsors.tax-form-link %} - -### Enabling two-factor authentication (2FA) on your {% data variables.product.prodname_dotcom %} account - -Before your organization can become a sponsored organization, you must enable 2FA on your {% data variables.product.product_name %} account. For more information, see "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication)." - -### Submitting your application to {% data variables.product.prodname_dotcom %} for approval - -{% data reusables.sponsors.navigate-to-org-sponsors-dashboard %} -{% data reusables.sponsors.request-approval %} - -{% data reusables.sponsors.github-review-app %} - -### Further reading -- "[About {% data variables.product.prodname_sponsors %}](/articles/about-github-sponsors)" -- "[Receiving sponsorships through {% data variables.product.prodname_sponsors %}](/github/supporting-the-open-source-community-with-github-sponsors/receiving-sponsorships-through-github-sponsors)" diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account.md b/content/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account.md deleted file mode 100644 index 96b1f5d89bc1..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Setting up GitHub Sponsors for your user account -intro: 'You can become a sponsored developer by joining {% data variables.product.prodname_sponsors %}, completing your sponsored developer profile, creating sponsorship tiers, submitting your bank and tax information, and enabling two-factor authentication on your {% data variables.product.prodname_dotcom %} account.' -redirect_from: - - /articles/becoming-a-sponsored-developer - - /github/supporting-the-open-source-community-with-github-sponsors/becoming-a-sponsored-developer -versions: - free-pro-team: '*' ---- - -### Joining {% data variables.product.prodname_sponsors %} - -{% data reusables.sponsors.you-can-be-a-sponsored-developer %} {% data reusables.sponsors.stripe-supported-regions %} - -To join {% data variables.product.prodname_sponsors %} as an organization, see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)." - -{% data reusables.sponsors.navigate-to-github-sponsors %} -2. If you are an organization owner, you have more than one eligible account. Click **View your eligible accounts**, then in the list of accounts, find your user account. -3. Click **Join the waitlist**. -{% data reusables.sponsors.contact-info %} -{% data reusables.sponsors.accept-legal-terms %} - -If you have a bank account in a supported region, {% data variables.product.prodname_dotcom %} will review your application within two weeks. - -### Completing your sponsored developer profile - -After {% data variables.product.prodname_dotcom %} reviews your application, you can set up your sponsored developer profile so that people can start sponsoring you. - -{% data reusables.sponsors.navigate-to-dev-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-profile-tab %} -{% data reusables.sponsors.short-bio %} -{% data reusables.sponsors.add-introduction %} -{% data reusables.sponsors.edit-featured-work %} -{% data reusables.sponsors.opt-in-to-being-featured %} -{% data reusables.sponsors.save-profile %} - -### Creating sponsorship tiers - -{% data reusables.sponsors.tier-details %} - -{% data reusables.sponsors.maximum-tier %} - -{% data reusables.sponsors.navigate-to-dev-sponsors-dashboard %} -{% data reusables.sponsors.navigate-to-sponsor-tiers-tab %} -{% data reusables.sponsors.click-add-tier %} -{% data reusables.sponsors.tier-price-description %} -{% data reusables.sponsors.save-tier-draft %} -{% data reusables.sponsors.review-and-publish-tier %} -{% data reusables.sponsors.add-more-tiers %} - -### Submitting your bank information - -If you live in a supported region, you can follow these instructions to submit your bank information by creating a Stripe Connect account. Your region of residence and the region of your bank account must match. {% data reusables.sponsors.stripe-supported-regions %} - -{% data reusables.sponsors.double-check-stripe-info %} - -If you live in an unsupported region and are accepted to the beta of {% data variables.product.prodname_sponsors %}, you will receive an email with instructions to provide your bank information so that you can receive payments via ACH transfer or wire transfer. - -{% data reusables.sponsors.navigate-to-dev-sponsors-dashboard %} -{% data reusables.sponsors.create-stripe-account %} - -### Submitting your tax information - -{% data reusables.sponsors.tax-form-information-dev %} - -{% data reusables.sponsors.navigate-to-dev-sponsors-dashboard %} -{% data reusables.sponsors.settings-tab %} -{% data reusables.sponsors.country-of-residence %} -{% data reusables.sponsors.overview-tab %} -{% data reusables.sponsors.tax-form-link %} - -### Enabling two-factor authentication (2FA) on your {% data variables.product.prodname_dotcom %} account - -Before you can become a sponsored developer, you must enable 2FA on your {% data variables.product.product_name %} account. For more information, see "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication)." - -### Submitting your application to {% data variables.product.prodname_dotcom %} for approval - -{% data reusables.sponsors.navigate-to-dev-sponsors-dashboard %} -4. Click **Request approval**. - ![Request approval button](/assets/images/help/sponsors/request-approval-button.png) - -{% data reusables.sponsors.github-review-app %} diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-an-open-source-contributor.md b/content/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-an-open-source-contributor.md deleted file mode 100644 index 62b7234dcd26..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-an-open-source-contributor.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Sponsoring an open source contributor -intro: 'You can make a monthly recurring payment to a developer or organization who designs, creates, or maintains open source projects you depend on.' -redirect_from: - - /articles/sponsoring-a-developer - - /articles/sponsoring-an-open-source-contributor - - /github/supporting-the-open-source-community-with-github-sponsors/sponsoring-a-developer -versions: - free-pro-team: '*' ---- - -### About sponsoring developers and organizations - -{% data reusables.sponsors.sponsorship-details %} {% data reusables.sponsors.no-fees %} For more information, see "[About billing for {% data variables.product.prodname_sponsors %}](/articles/about-billing-for-github-sponsors)." - -When you sponsor an open source contributor, the change will become effective immediately. {% data reusables.sponsors.prorated-sponsorship %} - -If the sponsored open source contributor retires your tier, the tier will remain in place for you until you choose a different tier or cancel your subscription. For more information, see "[Upgrading a sponsorship](/articles/upgrading-a-sponsorship)" and "[Downgrading a sponsorship](/articles/downgrading-a-sponsorship)." - -If the open source contributor you want to sponsor does not have a sponsored developer or organization profile, you can encourage the contributor to create a sponsored developer or organization profile. For more information, see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)" and "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)." - -{% data reusables.sponsors.sponsorships-not-tax-deductible %} - -{% note %} - -**Note:** {% data variables.product.prodname_dotcom %} is not responsible for how developers represent themselves nor does {% data variables.product.prodname_dotcom %} endorse any sponsored open source projects. The claims are solely the responsibility of the developer receiving the funds. Make sure you trust a person before offering a sponsorship. For more information, see the [{% data variables.product.prodname_sponsors %} Additional Terms](/github/site-policy/github-sponsors-additional-terms). - -{% endnote %} - -### Sponsoring a developer - -Before you can sponsor a developer, you must have a verified email address. For more information, see "[Verifying your email address](/github/getting-started-with-github/verifying-your-email-address)." - -1. On {% data variables.product.product_name %}, navigate to the profile of the person you want to sponsor. -2. Under the developer's name, click **Sponsor**. - ![Sponsor button](/assets/images/help/profile/sponsor-button.png) -{% data reusables.sponsors.select-a-tier %} -{% data reusables.sponsors.select-sponsorship-billing %} - ![Edit payment button](/assets/images/help/sponsors/edit-sponsorship-payment-button.png) -{% data reusables.sponsors.who-can-see-your-sponsorship %} - ![Radio buttons to choose who can see your sponsorship](/assets/images/help/sponsors/who-can-see-sponsorship.png) -{% data reusables.sponsors.developer-sponsored-choose-updates %} -7. Click **Sponsor _DEVELOPER_**. - ![Sponsor developer button](/assets/images/help/sponsors/sponsor-developer-button.png) - -### Sponsoring an organization - -Before you can sponsor an organization, you must have a verified email address. For more information, see "[Verifying your email address](/github/getting-started-with-github/verifying-your-email-address)." - -1. On {% data variables.product.product_name %}, navigate to the page of the organization you want to sponsor. -2. Next to the the organization's name, click **Sponsor**. - ![Sponsor button](/assets/images/help/sponsors/sponsor-org-button.png) -{% data reusables.sponsors.select-a-tier %} -{% data reusables.sponsors.select-sponsorship-billing %} - ![Edit payment button](/assets/images/help/sponsors/edit-org-sponsorship-payment-button.png) -{% data reusables.sponsors.who-can-see-your-sponsorship %} - ![Radio buttons to choose who can see your sponsorship](/assets/images/help/sponsors/who-can-see-org-sponsorship.png) -{% data reusables.sponsors.org-sponsored-choose-updates %} -7. Click **Sponsor _ORGANIZATION_**. - ![Sponsor organization button](/assets/images/help/sponsors/sponsor-org-confirm-button.png) diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-open-source-contributors.md b/content/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-open-source-contributors.md deleted file mode 100644 index dd52943a774e..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-open-source-contributors.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Sponsoring open source contributors -intro: 'You can sponsor contributors, receive updates on developers and organizations you sponsor, and display a sponsor badge throughout {% data variables.product.product_name %}.' -mapTopic: true -redirect_from: - - /articles/sponsoring-open-source-developers - - /github/supporting-the-open-source-community-with-github-sponsors/sponsoring-open-source-developers -versions: - free-pro-team: '*' ---- - diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/tax-information-for-github-sponsors.md b/content/github/supporting-the-open-source-community-with-github-sponsors/tax-information-for-github-sponsors.md deleted file mode 100644 index 2f881fc29ab8..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/tax-information-for-github-sponsors.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Tax information for GitHub Sponsors -intro: 'Sponsored developers and organizations must submit tax information to {% data variables.product.prodname_dotcom %} and are responsible for evaluating and paying their own taxes.' -redirect_from: - - /articles/tax-information-for-sponsored-developers - - /github/supporting-the-open-source-community-with-github-sponsors/tax-information-for-sponsored-developers -versions: - free-pro-team: '*' ---- - -If you are a taxpayer in the United States, you must submit a W-9 before you can receive payments. If you are a taxpayer in any other region besides the United States, you must submit a W-8BEN before you can receive payments. For more information, see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account#submitting-your-tax-information)" and "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization#submitting-your-tax-information)." {% data variables.product.prodname_dotcom %} will send you the appropriate forms, notify you when they are due, and give you a reasonable amount of time to complete and send in the forms. - -If you are a taxpayer in the United States and earn more than $600 in a tax year, {% data variables.product.prodname_dotcom %} will send you a 1099 before January 31 of the next calendar year. We do not provide tax forms for international taxpayers. - -{% data variables.product.prodname_dotcom %} does not withhold tax from {% data variables.product.prodname_sponsors %} payments. Sponsored developers are responsible for evaluating and paying their own taxes. - -{% data reusables.sponsors.sponsorships-not-tax-deductible %} - -### Further reading - -- [Viewing your sponsors and sponsorships](/github/supporting-the-open-source-community-with-github-sponsors/viewing-your-sponsors-and-sponsorships) diff --git a/content/github/supporting-the-open-source-community-with-github-sponsors/viewing-your-sponsors-and-sponsorships.md b/content/github/supporting-the-open-source-community-with-github-sponsors/viewing-your-sponsors-and-sponsorships.md deleted file mode 100644 index 3de93a42e17c..000000000000 --- a/content/github/supporting-the-open-source-community-with-github-sponsors/viewing-your-sponsors-and-sponsorships.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Viewing your sponsors and sponsorships -intro: You can view and export detailed information and analytics about your sponsors and sponsorships. -redirect_from: - - /articles/viewing-your-sponsors-and-sponsorships -versions: - free-pro-team: '*' ---- - -You can view analytics on your current and past sponsorships, the payments you've received from sponsors, and events, such as cancellations and sponsor tier changes for your sponsorships. You can also view activity such as new sponsorships, changes to sponsorships, and canceled sponsorships. You can filter the list of activities by date. You can also export sponsorship data for the account you're viewing in CSV or JSON format. - -You access all of this information from your Sponsors dashboard. - -### Viewing your Sponsors dashboard - -1. In the upper-right corner of any page, click your profile photo, then click **{% data variables.product.prodname_sponsors %}**. -![{% data variables.product.prodname_sponsors %} button](/assets/images/help/sponsors/access-github-sponsors-dashboard.png) -2. In the list that's displayed, to the right of the account or organization whose Sponsors dashboard you want to view, click **Dashboard**. -![Developer sponsors dashboard button](/assets/images/help/sponsors/dev-sponsors-dashboard-button.png) - -### Viewing your sponsors and sponsorships - -1. Go to your Sponsors dashboard, see [Viewing your Sponsors dashboard](#viewing-your-sponsors-dashboard). -{% data reusables.sponsors.navigate-to-sponsors-tab %} -1. Optionally, to filter your sponsors by tier, use the **Filter** drop-down menu, click **Active tiers** or **Retired tiers**, and select a tier. - ![Drop-down menu to filter by tier](/assets/images/help/sponsors/filter-drop-down.png) - -### Viewing recent sponsorship activity - -1. Go to your your Sponsors dashboard, see [Viewing your Sponsors dashboard](#viewing-your-sponsors-dashboard). -1. In the left sidebar, click **Activity**. - ![Activity tab](/assets/images/help/sponsors/activity-tab.png) - -### Exporting your sponsorship data - -1. Go to your your Sponsors dashboard, see [Viewing your Sponsors dashboard](#viewing-your-sponsors-dashboard). -{% data reusables.sponsors.navigate-to-sponsors-tab %} -1. Click **Export all**. - ![Export all button](/assets/images/help/sponsors/export-all.png) - - This button is not displayed if you don't have any sponsors. - -1. Choose a timeframe and a format for the data you'd like to export, then click **Start export**. - ![Options for data export](/assets/images/help/sponsors/export-your-sponsors.png) - - {% data variables.product.prodname_dotcom %} starts exporting data for all of your sponsors for the month you selected. You'll be emailed shortly with an attachment containing the data. After the export is complete you can export another month of data. You can export up to 10 sets of data an hour for any of your sponsored organizations or user accounts. diff --git a/content/github/teaching-and-learning-with-github-education/about-campus-advisors.md b/content/github/teaching-and-learning-with-github-education/about-campus-advisors.md deleted file mode 100644 index a4c42db03a36..000000000000 --- a/content/github/teaching-and-learning-with-github-education/about-campus-advisors.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: About Campus Advisors -intro: 'As an instructor or mentor, learn to use {% data variables.product.prodname_dotcom %} at your school with Campus Advisors training and support.' -redirect_from: - - /articles/about-campus-advisors -versions: - free-pro-team: '*' ---- - -Professors, teachers and mentors can use the Campus Advisors online training to master Git and {% data variables.product.prodname_dotcom %} and learn best practices for teaching students with {% data variables.product.prodname_dotcom %}. For more information, see "[Campus Advisors](https://education.github.com/teachers/advisors)." - -{% note %} - -**Note:** As an instructor, you can't create {% data variables.product.prodname_dotcom %} accounts for your students. Students must create their own {% data variables.product.prodname_dotcom %} accounts. - -{% endnote %} diff --git a/content/github/teaching-and-learning-with-github-education/about-campus-experts.md b/content/github/teaching-and-learning-with-github-education/about-campus-experts.md deleted file mode 100644 index fde19a2db92a..000000000000 --- a/content/github/teaching-and-learning-with-github-education/about-campus-experts.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: About Campus Experts -intro: 'As a student, learn the skills you need to build your school''s technology community and a real-world portfolio, with {% data variables.product.prodname_dotcom %} Campus Experts training.' -redirect_from: - - /articles/about-campus-experts -versions: - free-pro-team: '*' ---- - -Learn public speaking skills, technical writing, community leadership, and software development skills as a {% data variables.product.prodname_dotcom %} Campus Expert. For more information, see "[Campus Experts](https://education.github.com/students/experts)." diff --git a/content/github/teaching-and-learning-with-github-education/about-github-education-for-educators-and-researchers.md b/content/github/teaching-and-learning-with-github-education/about-github-education-for-educators-and-researchers.md deleted file mode 100644 index c73600b86da5..000000000000 --- a/content/github/teaching-and-learning-with-github-education/about-github-education-for-educators-and-researchers.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: About GitHub Education for educators and researchers -intro: '{% data variables.product.prodname_education %} offers a variety of tools to help educators and researchers work more effectively inside and outside of the classroom.' -redirect_from: - - /articles/about-github-education-for-educators-and-researchers -versions: - free-pro-team: '*' ---- - -{% data reusables.education.about-github-education-link %} - -### {% data variables.product.prodname_education %} for educators - -With {% data variables.product.prodname_education %}'s tools and services for educators of all levels, you can: - - Use [{% data variables.product.prodname_classroom %}](https://classroom.github.com) to distribute code, give students feedback, and collect assignments on {% data variables.product.prodname_dotcom %}. - - Join our [{% data variables.product.prodname_education_community %}](https://education.github.com/forum) to discuss current trends in technology education with your peers from around the world. - - Access and adapt our [open source lesson plans](https://education.github.community/t/open-source-lesson-plans/1591) for teaching Git and {% data variables.product.prodname_dotcom %}. - - [Request a {% data variables.product.prodname_dotcom %} swag bag](https://education.github.community/t/get-a-github-swag-bag-for-your-classroom/33) with educational materials and goodies for your students. - {% data reusables.education.apply-for-team %} - -### {% data variables.product.prodname_education %} for researchers - -With {% data variables.product.prodname_education %}'s tools and services for researchers, you can: - - Collaborate with others on your research work around the world on {% data variables.product.prodname_dotcom %}. - - [Learn](https://education.github.com/stories) how academic institutions around the world are using {% data variables.product.prodname_dotcom %} for their research. - {% data reusables.education.apply-for-team %} - -### Further reading - -- "[About {% data variables.product.prodname_education %} for students](/articles/about-github-education-for-students)" diff --git a/content/github/teaching-and-learning-with-github-education/about-github-education-for-students.md b/content/github/teaching-and-learning-with-github-education/about-github-education-for-students.md deleted file mode 100644 index 353ce56d77f2..000000000000 --- a/content/github/teaching-and-learning-with-github-education/about-github-education-for-students.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: About GitHub Education for students -intro: '{% data variables.product.prodname_education %} offers students real-world experience with free access to various developer tools from {% data variables.product.prodname_dotcom %}''s partners.' -redirect_from: - - /articles/about-github-education-for-students -versions: - free-pro-team: '*' ---- - -Using {% data variables.product.prodname_dotcom %} for your school projects is a practical way to collaborate with others and build a portfolio that showcases real-world experience. - -{% data reusables.education.about-github-education-link %} - -Everyone with a {% data variables.product.prodname_dotcom %} account can collaborate in unlimited public and private repositories with {% data variables.product.prodname_free_user %}. As a student, you can also apply for the {% data variables.product.prodname_student_pack %}, which offers free access to tools and services used by professional developers. For more information, see "[Applying for a student developer pack](/articles/applying-for-a-student-developer-pack)" and [{% data variables.product.prodname_education %}](https://education.github.com/pack). - -If you're a member of a FIRST robotics club, your mentor can apply for an educator discount so your team can collaborate using {% data variables.product.prodname_team %}, which allows unlimited users and private repositories, for free. For more information, see "[Applying for an educator or researcher discount](/articles/applying-for-an-educator-or-researcher-discount)." - -### Further reading - -- "[About {% data variables.product.prodname_education %} for educators and researchers](/articles/about-github-education-for-educators-and-researchers)" diff --git a/content/github/teaching-and-learning-with-github-education/about-github-education.md b/content/github/teaching-and-learning-with-github-education/about-github-education.md deleted file mode 100644 index 0e61a46e5660..000000000000 --- a/content/github/teaching-and-learning-with-github-education/about-github-education.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: About GitHub Education -intro: '{% data variables.product.prodname_education %} offers a special free product for schools that want to make the most of {% data variables.product.prodname_dotcom %} for their community and agree to specific program requirements.' -redirect_from: - - /articles/about-github-education -versions: - free-pro-team: '*' ---- - -If your school agrees to meet certain requirements, your secondary school, university, or bootcamp can get {% data variables.product.prodname_education %}, which offers the best of {% data variables.product.prodname_dotcom %} for free, including: -- {% data variables.product.prodname_ghe_cloud %} and/or {% data variables.product.prodname_ghe_server %} -- Teacher training to master Git and {% data variables.product.prodname_dotcom %} with our Campus Advisor program -- Automated access to premium {% data variables.product.prodname_education %} features, like the {% data variables.product.prodname_student_pack %} -- Leadership development and technical training for students with the Campus Experts program - -For more information, see the [official {% data variables.product.prodname_education %}](https://education.github.com/partners/schools) page. To learn more about training programs for student leaders and teachers, see "[{% data variables.product.prodname_dotcom %} Campus Experts](https://education.github.com/students/experts)" and "[Campus Advisors](https://education.github.com/teachers/advisors)." - -If you're a student or academic faculty and your school isn't partnered with {% data variables.product.prodname_dotcom %} as a {% data variables.product.prodname_education %} school, then you can still individually apply for discounts to use {% data variables.product.prodname_dotcom %}. For more information, see "[Using {% data variables.product.prodname_dotcom %} for your schoolwork](/articles/using-github-for-your-schoolwork/)" or "[Using {% data variables.product.prodname_dotcom %} in your classroom and research](/articles/using-github-in-your-classroom-and-research/)." diff --git a/content/github/teaching-and-learning-with-github-education/applying-for-a-student-developer-pack.md b/content/github/teaching-and-learning-with-github-education/applying-for-a-student-developer-pack.md deleted file mode 100644 index 72dba5844b1d..000000000000 --- a/content/github/teaching-and-learning-with-github-education/applying-for-a-student-developer-pack.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Applying for a student developer pack -intro: 'As a student, you can apply for the {% data variables.product.prodname_student_pack %}, which includes offers and benefits from {% data variables.product.prodname_dotcom %} partners.' -redirect_from: - - /articles/applying-for-a-student-developer-pack -versions: - free-pro-team: '*' ---- - -{% data reusables.education.about-github-education-link %} - -### Requirements - -To be eligible for the {% data variables.product.prodname_student_pack %}, you must: -- Be currently enrolled in a degree or diploma granting course of study such as a high school, secondary school, college, university, homeschool, or similar educational institution -- Have a verifiable school-issued email address or upload documents that prove your current student status -- Have a [{% data variables.product.prodname_dotcom %} user account](/articles/signing-up-for-a-new-github-account) -- Be at least 13 years old - -Documents that prove your current student status include a picture of your school ID, class schedule, transcript, and affiliation or enrollment verification letter. - -During your tenure as a student, you may be prompted to periodically re-verify your current academic status. - -{% note %} - -**Note:** You cannot transfer academic discounts from one account to another. If you have more than one account you want to apply the discount to, consider [merging](/articles/merging-multiple-user-accounts) your user accounts and [renaming](/articles/changing-your-github-username) the retained account if desired. - -{% endnote %} - -For information about renewing your {% data variables.product.prodname_student_pack %}, see "[Expiration and renewals](/articles/applying-for-a-student-developer-pack/#expiration-and-renewals)." - -### Applying for a {% data variables.product.prodname_student_pack %} - -{% data reusables.education.benefits-page %} -3. Under "Which best describes your academic status?", select **Student**. - ![Select academic status](/assets/images/help/education/academic-status-student.png) -{% data reusables.education.select-email-address %} -{% data reusables.education.upload-proof-status %} -{% data reusables.education.school-name %} -{% data reusables.education.plan-to-use-github %} -{% data reusables.education.submit-application %} - -### Expiration and renewals - -Once your {% data variables.product.prodname_student_pack %} access expires, you may reapply if you're still eligible, although some of our partner offers cannot renew. Most of the timed offers from our partners start once you set them up. For more information, see the [{% data variables.product.prodname_student_pack %}](https://education.github.com/pack) page. - -To see when your free access to the {% data variables.product.prodname_student_pack %} expires, visit your account's [billing settings](https://github.com/settings/billing). - -### Further reading - -- "[Why wasn't my application for a {% data variables.product.prodname_student_pack %} approved?](/articles/why-wasn-t-my-application-for-a-student-developer-pack-approved)" -- "[Signing up for a new {% data variables.product.prodname_dotcom %} account](/articles/signing-up-for-a-new-github-account)" -- [{% data variables.product.prodname_education %}](https://education.github.com) diff --git a/content/github/teaching-and-learning-with-github-education/applying-for-an-educator-or-researcher-discount.md b/content/github/teaching-and-learning-with-github-education/applying-for-an-educator-or-researcher-discount.md deleted file mode 100644 index dd76dfae0893..000000000000 --- a/content/github/teaching-and-learning-with-github-education/applying-for-an-educator-or-researcher-discount.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Applying for an educator or researcher discount -intro: 'If you''re an educator or a researcher, you can apply to receive {% data variables.product.prodname_team %} for your organization account for free.' -redirect_from: - - /articles/applying-for-a-classroom-discount/ - - /articles/applying-for-a-discount-for-your-school-club/ - - /articles/applying-for-an-academic-research-discount/ - - /articles/applying-for-a-discount-for-your-first-robotics-team/ - - /articles/applying-for-an-educator-or-researcher-discount -versions: - free-pro-team: '*' ---- - -### About educator and researcher discounts - -{% data reusables.education.about-github-education-link %} - -To apply for an educator or researcher discount, you must: -- Be an educator, faculty member, or researcher -- Have a verifiable school-issued email address -- Upload documents that prove your school affiliation -- Have a [{% data variables.product.prodname_dotcom %} user account](/articles/signing-up-for-a-new-github-account) - -### Applying for an educator or researcher discount - -{% data reusables.education.benefits-page %} -3. Under "Which best describes your academic status?", select **Faculty**. - ![Select academic status](/assets/images/help/education/academic-status-faculty.png) -{% data reusables.education.select-email-address %} -{% data reusables.education.upload-proof-status %} -{% data reusables.education.school-name %} -{% data reusables.education.plan-to-use-github %} -{% data reusables.education.submit-application %} - -### Upgrading your organization - -After your request for an educator or researcher discount has been approved, you can upgrade the organizations you use with your learning community to {% data variables.product.prodname_team %}, which allows unlimited users and private repositories with full features, for free. You can upgrade an existing organization or create a new organization to upgrade. - -#### Upgrading an existing organization - -{% data reusables.education.upgrade-page %} -{% data reusables.education.upgrade-organization %} - -#### Upgrading a new organization - -{% data reusables.education.upgrade-page %} -1. Click {% octicon "plus" aria-label="The plus symbol" %} **Create an organization**. - ![Create an organization button](/assets/images/help/education/create-org-button.png) -3. Read the information, then click **Create organization**. - ![Create organization button](/assets/images/help/education/create-organization-button.png) -4. Under "Choose your plan", click **Choose {% data variables.product.prodname_free_team %}**. -5. Follow the prompts to create your organization. -{% data reusables.education.upgrade-page %} -{% data reusables.education.upgrade-organization %} - -### Further reading - -- "[Why wasn't my application for an educator or researcher discount approved?](/articles/why-wasn-t-my-application-for-an-educator-or-researcher-discount-approved)" -- [{% data variables.product.prodname_education %}](https://education.github.com) -- [{% data variables.product.prodname_classroom %} Videos](https://classroom.github.com/videos) -- [{% data variables.product.prodname_education_community %}](https://education.github.community/) diff --git a/content/github/teaching-and-learning-with-github-education/index.md b/content/github/teaching-and-learning-with-github-education/index.md deleted file mode 100644 index b48ba4589877..000000000000 --- a/content/github/teaching-and-learning-with-github-education/index.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Teaching and learning with GitHub Education -redirect_from: - - /categories/teaching-and-learning-with-github-education -versions: - free-pro-team: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /using-github-at-your-educational-institution %} - {% link_in_list /about-github-education %} - {% link_in_list /about-campus-experts %} - {% link_in_list /about-campus-advisors %} -{% topic_link_in_list /using-github-for-your-schoolwork %} - {% link_in_list /about-github-education-for-students %} - {% link_in_list /applying-for-a-student-developer-pack %} - {% link_in_list /why-wasnt-my-application-for-a-student-developer-pack-approved %} -{% topic_link_in_list /using-github-in-your-classroom-and-research %} - {% link_in_list /about-github-education-for-educators-and-researchers %} - {% link_in_list /applying-for-an-educator-or-researcher-discount %} - {% link_in_list /why-wasnt-my-application-for-an-educator-or-researcher-discount-approved %} diff --git a/content/github/teaching-and-learning-with-github-education/using-github-at-your-educational-institution.md b/content/github/teaching-and-learning-with-github-education/using-github-at-your-educational-institution.md deleted file mode 100644 index a572f5eedfb2..000000000000 --- a/content/github/teaching-and-learning-with-github-education/using-github-at-your-educational-institution.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Using GitHub at your educational institution -intro: 'Maximize the benefits of using {% data variables.product.prodname_dotcom %} at your institution for your students, instructors, and IT staff with {% data variables.product.prodname_education %} and our various training programs for students and instructors.' -mapTopic: true -redirect_from: - - /articles/using-github-at-your-educational-institution -versions: - free-pro-team: '*' ---- - diff --git a/content/github/teaching-and-learning-with-github-education/using-github-for-your-schoolwork.md b/content/github/teaching-and-learning-with-github-education/using-github-for-your-schoolwork.md deleted file mode 100644 index 41b965569daa..000000000000 --- a/content/github/teaching-and-learning-with-github-education/using-github-for-your-schoolwork.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Using GitHub for your schoolwork -intro: 'As a student, use {% data variables.product.prodname_dotcom %} to collaborate on your school projects and build real-world experience.' -mapTopic: true -redirect_from: - - /articles/using-github-for-your-schoolwork -versions: - free-pro-team: '*' ---- - diff --git a/content/github/teaching-and-learning-with-github-education/using-github-in-your-classroom-and-research.md b/content/github/teaching-and-learning-with-github-education/using-github-in-your-classroom-and-research.md deleted file mode 100644 index 733a45488191..000000000000 --- a/content/github/teaching-and-learning-with-github-education/using-github-in-your-classroom-and-research.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Using GitHub in your classroom and research -intro: 'As an educator or researcher, use {% data variables.product.prodname_dotcom %} to collaborate on your work in a classroom, student or research group, and more.' -mapTopic: true -redirect_from: - - /articles/using-github-in-your-classroom-and-research -versions: - free-pro-team: '*' ---- - diff --git a/content/github/teaching-and-learning-with-github-education/why-wasnt-my-application-for-a-student-developer-pack-approved.md b/content/github/teaching-and-learning-with-github-education/why-wasnt-my-application-for-a-student-developer-pack-approved.md deleted file mode 100644 index 907fef8ffee7..000000000000 --- a/content/github/teaching-and-learning-with-github-education/why-wasnt-my-application-for-a-student-developer-pack-approved.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Why wasn't my application for a student developer pack approved? -intro: 'Review common reasons that applications for the {% data variables.product.prodname_student_pack %} are not approved and learn tips for reapplying successfully.' -redirect_from: - - /articles/why-was-my-application-for-a-student-developer-pack-denied/ - - /articles/why-wasn-t-my-application-for-a-student-developer-pack-approved - - /articles/why-wasnt-my-application-for-a-student-developer-pack-approved -versions: - free-pro-team: '*' ---- - -{% tip %} - -**Tip:** {% data reusables.education.about-github-education-link %} - -{% endtip %} - -### Unclear academic affiliation documents - -If the image you uploaded doesn't clearly identify your current academic status, we require further proof of your academic status. {% data reusables.education.upload-proof-reapply %} - -{% data reusables.education.pdf-support %} - -### Using an academic email with an unverified domain - -If your academic email address has an unverified domain, we require further proof of your academic status. {% data reusables.education.upload-proof-reapply %} - -{% data reusables.education.pdf-support %} - -### Using an academic email from a school with lax email policies - -If your school issues email addresses prior to paid student enrollment, we require further proof of your academic status. {% data reusables.education.upload-proof-reapply %} - -{% data reusables.education.pdf-support %} - -If you have other questions or concerns about the school domain please ask your school IT staff to contact us. - -### Academic email address already used - -If your academic email address was already used to request a {% data variables.product.prodname_student_pack %} for a different {% data variables.product.prodname_dotcom %} account, you cannot reuse the academic email address to successfully apply for another {% data variables.product.prodname_student_pack %} until that discount expires. - -{% note %} - -**Note:** It is against the {% data variables.product.prodname_dotcom %} [Terms of Service](/articles/github-terms-of-service/#3-account-requirements) to maintain more than one individual account. - -{% endnote %} - -If you have more than one personal user account, you must merge your accounts. To retain the discount, keep the account that was granted the discount. You can rename the retained account and keep your contribution history by adding all your email addresses to the retained account. - -For more information, see: -- "[Merging multiple user accounts](/articles/merging-multiple-user-accounts)" -- "[Changing your {% data variables.product.prodname_dotcom %} username](/articles/changing-your-github-username)" -- "[Adding an email address to your {% data variables.product.prodname_dotcom %} account](/articles/adding-an-email-address-to-your-github-account)" - -### Ineligible student status - -You're ineligible for a {% data variables.product.prodname_student_pack %} if: -- You’re enrolled in an informal learning program that is not part of the [{% data variables.product.prodname_dotcom %} Campus Program](https://education.github.com/schools) and not enrolled in a degree or diploma granting course of study. -- You're under 13 years old. - -Your instructor may still apply for a {% data variables.product.prodname_education %} discount for classroom use. If you're a student at a coding school or bootcamp, you will become eligible for a {% data variables.product.prodname_student_pack %} if your school joins the [{% data variables.product.prodname_dotcom %} Campus Program](https://education.github.com/schools). - -### Further reading - -- "[How to get the GitHub Student Developer Pack without a student ID](https://github.blog/2019-07-30-how-to-get-the-github-student-developer-pack-without-a-student-id/)" on {% data variables.product.prodname_blog %} -- "[Applying for a student developer pack](/articles/applying-for-a-student-developer-pack)" diff --git a/content/github/teaching-and-learning-with-github-education/why-wasnt-my-application-for-an-educator-or-researcher-discount-approved.md b/content/github/teaching-and-learning-with-github-education/why-wasnt-my-application-for-an-educator-or-researcher-discount-approved.md deleted file mode 100644 index 8ce2885141a7..000000000000 --- a/content/github/teaching-and-learning-with-github-education/why-wasnt-my-application-for-an-educator-or-researcher-discount-approved.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Why wasn't my application for an educator or researcher discount approved? -intro: Review common reasons that applications for an educator or researcher discount are not approved and learn tips for reapplying successfully. -redirect_from: - - /articles/why-was-my-application-for-an-educator-or-researcher-discount-denied/ - - /articles/why-wasn-t-my-application-for-an-educator-or-researcher-discount-approved - - /articles/why-wasnt-my-application-for-an-educator-or-researcher-discount-approved -versions: - free-pro-team: '*' ---- - -{% tip %} - -**Tip:** {% data reusables.education.about-github-education-link %} - -{% endtip %} - -### Unclear proof of affiliation documents - -If the image you uploaded doesn't clearly identify your current employment with a school or university, you must reapply and upload another image of your faculty ID or employment verification letter with clear information. - -{% data reusables.education.pdf-support %} - -### Using an academic email with an unverified domain - -If your academic email address has an unverified domain, we may require further proof of your academic status. {% data reusables.education.upload-different-image %} - -{% data reusables.education.pdf-support %} - -### Using an academic email from a school with lax email policies - -If alumni and retired faculty of your school have lifetime access to school-issued email addresses, we may require further proof of your academic status. {% data reusables.education.upload-different-image %} - -{% data reusables.education.pdf-support %} - -If you have other questions or concerns about the school domain, please ask your school IT staff to contact us. - -### Non-student applying for Student Developer Pack - -Educators and researchers are not eligible for the partner offers that come with the [{% data variables.product.prodname_student_pack %}](https://education.github.com/pack). When you reapply, make sure that you choose **Faculty** to describe your academic status. - -### Further reading - -- "[Applying for an educator or researcher discount](/articles/applying-for-an-educator-or-researcher-discount)" diff --git a/content/github/understanding-how-github-uses-and-protects-your-data/about-githubs-use-of-your-data.md b/content/github/understanding-how-github-uses-and-protects-your-data/about-githubs-use-of-your-data.md deleted file mode 100644 index 6f402fa2851b..000000000000 --- a/content/github/understanding-how-github-uses-and-protects-your-data/about-githubs-use-of-your-data.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: About GitHub's use of your data -redirect_from: - - /articles/about-github-s-use-of-your-data - - /articles/about-githubs-use-of-your-data -intro: '{% data variables.product.product_name %} uses your repository''s data to connect you to relevant tools, people, projects, and information.' -versions: - free-pro-team: '*' ---- - -### About {% data variables.product.product_name %}'s use of your data - -{% data variables.product.product_name %} aggregates metadata and parses content patterns for the purposes of delivering generalized insights within the product. It uses data from public repositories, and also uses metadata and aggregate data from private repositories when a repository's owner has chosen to share the data with {% data variables.product.product_name %} through an opt-in. If you opt a private repository into data use, then it will perform read-only analysis of that specific private repository. - -{% data reusables.repositories.about-github-archive-program %} For more information, see "[About archiving content and data on {% data variables.product.prodname_dotcom %}](/github/creating-cloning-and-archiving-repositories/about-archiving-content-and-data-on-github#about-the-github-archive-program)." - -{% data reusables.user_settings.export-data %} For more information, see "[Requesting an archive of your personal account's data](/articles/requesting-an-archive-of-your-personal-account-s-data)." - -If you opt in to data use for a private repository, we will continue to treat your private data, source code, or trade secrets as confidential and private consistent with our [Terms of Service](/articles/github-terms-of-service/). The information we learn only comes from aggregated data. For more information, see "[Managing data use settings for your private repository](/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository)." - -We'll announce substantial new features that use metadata or aggregate data on the [{% data variables.product.prodname_dotcom %} blog](https://github.com/blog). - -### How data improves security recommendations - -As an example of how your data might be used, we can detect and alert you to a security vulnerability in your public repository's dependencies. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." - -To detect potential security vulnerabilities, {% data variables.product.product_name %} scans the contents of your dependency manifest file to draw a list of your project's dependencies. - -{% data variables.product.product_name %} also learns from changes you make to your dependency manifest. For example, if you upgrade a vulnerable dependency to a safe version after getting a security alert and others do the same, {% data variables.product.product_name %} learns how to patch the vulnerability and can recommend a similar patch to affected repos. - -### Privacy and data sharing - -Private repository data is scanned by machine and never read by {% data variables.product.product_name %} staff. Human eyes will never see the contents of your private repositories, except as described in our [Terms of Service](/articles/github-terms-of-service/#3-access). - -Your individual personal or repository data will not be shared with third parties. We may share aggregate data learned from our analysis with our partners. diff --git a/content/github/understanding-how-github-uses-and-protects-your-data/index.md b/content/github/understanding-how-github-uses-and-protects-your-data/index.md deleted file mode 100644 index d63f5264f6d9..000000000000 --- a/content/github/understanding-how-github-uses-and-protects-your-data/index.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Understanding how GitHub uses and protects your data -redirect_from: - - /categories/understanding-how-github-uses-and-protects-your-data -versions: - free-pro-team: '*' ---- - - -### Table of Contents - -{% link_in_list /about-githubs-use-of-your-data %} -{% link_in_list /requesting-an-archive-of-your-personal-accounts-data %} -{% link_in_list /managing-data-use-settings-for-your-private-repository %} -{% link_in_list /opting-into-or-out-of-the-github-archive-program-for-your-public-repository %} diff --git a/content/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository.md b/content/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository.md deleted file mode 100644 index fe736eb9c6dd..000000000000 --- a/content/github/understanding-how-github-uses-and-protects-your-data/managing-data-use-settings-for-your-private-repository.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Managing data use settings for your private repository -intro: 'To help {% data variables.product.product_name %} connect you to relevant tools, people, projects, and information, you can configure data use for your private repository.' -redirect_from: - - /articles/opting-into-or-out-of-data-use-for-your-private-repository - - /github/understanding-how-github-uses-and-protects-your-data/opting-into-or-out-of-data-use-for-your-private-repository -versions: - free-pro-team: '*' ---- - -### About data use for your private repository - -When you enable data use for your private repository, you'll be able to access the dependency graph, where you can track your repository's dependencies and receive {% data variables.product.prodname_dependabot_short %} alerts when {% data variables.product.product_name %} detects vulnerable dependencies. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies#github-dependabot-alerts-for-vulnerable-dependencies)." - -### Enabling or disabling data use features - -{% data reusables.security.some-security-and-analysis-features-are-enabled-by-default %} - -{% data reusables.security.security-and-analysis-features-enable-read-only %} - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-security-and-analysis %} -4. Under "Configure security and analysis features", to the right of the feature, click **Disable** or **Enable**. - !["Enable" or "Disable" button for "Configure security and analysis" features](/assets/images/help/repository/security-and-analysis-disable-or-enable.png) - -### Further reading - -- "[About {% data variables.product.prodname_dotcom %}'s use of your data](/articles/about-github-s-use-of-your-data)" -- "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)" -- "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)" diff --git a/content/github/understanding-how-github-uses-and-protects-your-data/opting-into-or-out-of-the-github-archive-program-for-your-public-repository.md b/content/github/understanding-how-github-uses-and-protects-your-data/opting-into-or-out-of-the-github-archive-program-for-your-public-repository.md deleted file mode 100644 index 33b5ccc1213a..000000000000 --- a/content/github/understanding-how-github-uses-and-protects-your-data/opting-into-or-out-of-the-github-archive-program-for-your-public-repository.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Opting into or out of the GitHub Archive Program for your public repository -intro: 'You can manage whether {% data variables.product.prodname_dotcom %} includes your public repository in the {% data variables.product.prodname_archive %} to help ensure the long-term preservation of the world''s open source software.' -permissions: 'People with admin permissions to a public repository can opt into or out of the {% data variables.product.prodname_archive %}.' -versions: - free-pro-team: '*' ---- - -{% data reusables.repositories.about-github-archive-program %} For more information, see "[About archiving content and data on {% data variables.product.prodname_dotcom %}](/github/creating-cloning-and-archiving-repositories/about-archiving-content-and-data-on-github#about-the-github-archive-program)." - -If you opt out of the {% data variables.product.prodname_archive %} for a repository, the repository will be excluded from any long-term archives that {% data variables.product.prodname_dotcom %} may create in the future. We will also send a request to each of our partner organizations to remove the repository from their data. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "Features", select or unselect **Preserve this repository**. - ![Checkbox for allowing {% data variables.product.prodname_dotcom %} to include your code in the {% data variables.product.prodname_archive %}](/assets/images/help/repository/github-archive-program-checkbox.png) - -### Further reading -- [{% data variables.product.prodname_archive %} FAQ](https://archiveprogram.github.com/faq/) diff --git a/content/github/understanding-how-github-uses-and-protects-your-data/requesting-an-archive-of-your-personal-accounts-data.md b/content/github/understanding-how-github-uses-and-protects-your-data/requesting-an-archive-of-your-personal-accounts-data.md deleted file mode 100644 index 8f4d9344417c..000000000000 --- a/content/github/understanding-how-github-uses-and-protects-your-data/requesting-an-archive-of-your-personal-accounts-data.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Requesting an archive of your personal account’s data -redirect_from: - - /articles/requesting-an-archive-of-your-personal-account-s-data - - /articles/requesting-an-archive-of-your-personal-accounts-data -intro: '{% data reusables.user_settings.export-data %}' -versions: - free-pro-team: '*' ---- - -{% data variables.product.product_name %} stores repository and profile metadata from your personal account's activity. You can export your personal account's data through settings on {% data variables.product.prodname_dotcom_the_website %} or with the User Migration API. - -For more information about the data {% data variables.product.product_name %} stores that is available for exporting, see "[Download a user migration archive](/v3/migrations/users/#download-a-user-migration-archive)" and "[About {% data variables.product.product_name %}'s use of your data](/articles/about-github-s-use-of-your-data). - -When you request an export of your personal data through settings on {% data variables.product.prodname_dotcom_the_website %}, {% data variables.product.product_name %} packages your personal data in a `tar.gz` file and sends you an email to your primary email address with a download link. - -By default, the download link expires after seven days. At any time before the download link expires, you can disable the link from your user settings. For more information, see "[Deleting access to an archive of your personal account's data](/articles/requesting-an-archive-of-your-personal-account-s-data/#deleting-access-to-an-archive-of-your-personal-accounts-data)." - -If your operating system cannot natively unpack the `tar.gz` file, you can use a third-party tool to extract the archived files. For more information, see "[How to unzip a tar.gz file](https://opensource.com/article/17/7/how-unzip-targz-file)" on Opensource.com. - -The generated `tar.gz` file reflects the data stored at the time you started the data export. - -### Downloading an archive of your personal account's data - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.account_settings %} -3. Under "Export account data", click **Start export** or **New export**. -![Start personal data export button highlighted](/assets/images/help/repository/export-personal-data.png) -![New personal data export button highlighted](/assets/images/help/repository/new-export.png) -4. Once the export is ready to download, {% data variables.product.product_name %} will send you a download link to your primary email address. -5. Click the download link in your email and re-enter your password if prompted. -6. You'll be redirected to a `tar.gz` file that you can download. - -### Deleting access to an archive of your personal account's data - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.account_settings %} -3. To disable the download link sent to your email before it expires, under "Export account data", find the data export download you want to disable and click **Delete**. -![Delete personal data export package button highlighted](/assets/images/help/repository/delete-export-personal-account-data.png) diff --git a/content/github/using-git/about-git-rebase.md b/content/github/using-git/about-git-rebase.md deleted file mode 100644 index e3152f07bb9a..000000000000 --- a/content/github/using-git/about-git-rebase.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: About Git rebase -redirect_from: - - /rebase/ - - articles/interactive-rebase/ - - /articles/about-git-rebase -intro: 'The `git rebase` command allows you to easily change a series of commits, modifying the history of your repository. You can reorder, edit, or squash commits together.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - - -Typically, you would use `git rebase` to: - -* Edit previous commit messages -* Combine multiple commits into one -* Delete or revert commits that are no longer necessary - -{% warning %} - -**Warning**: Because changing your commit history can make things difficult for everyone else using the repository, it's considered bad practice to rebase commits when you've already pushed to a repository. To learn how to safely rebase on {% data variables.product.product_location %}, see "[About pull request merges](/articles/about-pull-request-merges)." - -{% endwarning %} - -### Rebasing commits against a branch - -To rebase all the commits between another branch and the current branch state, you can enter the following command in your shell (either the command prompt for Windows, or the terminal for Mac and Linux): - -```shell -$ git rebase --interactive other_branch_name -``` - -### Rebasing commits against a point in time - -To rebase the last few commits in your current branch, you can enter the following command in your shell: - -```shell -$ git rebase --interactive HEAD~7 -``` - -### Commands available while rebasing - -There are six commands available while rebasing: - -
-
pick
-
pick simply means that the commit is included. Rearranging the order of the pick commands changes the order of the commits when the rebase is underway. If you choose not to include a commit, you should delete the entire line.
- -
reword
-
The reword command is similar to pick, but after you use it, the rebase process will pause and give you a chance to alter the commit message. Any changes made by the commit are not affected.
- -
edit
-
If you choose to edit a commit, you'll be given the chance to amend the commit, meaning that you can add or change the commit entirely. You can also make more commits before you continue the rebase. This allows you to split a large commit into smaller ones, or, remove erroneous changes made in a commit.
- -
squash
-
This command lets you combine two or more commits into a single commit. A commit is squashed into the commit above it. Git gives you the chance to write a new commit message describing both changes.
- -
fixup
-
This is similar to squash, but the commit to be merged has its message discarded. The commit is simply merged into the commit above it, and the earlier commit's message is used to describe both changes.
- -
exec
-
This lets you run arbitrary shell commands against a commit.
-
- -### An example of using `git rebase` - -No matter which command you use, Git will launch [your default text editor](/articles/associating-text-editors-with-git) and open a file that details the commits in the range you've chosen. That file looks something like this: - -``` -pick 1fc6c95 Patch A -pick 6b2481b Patch B -pick dd1475d something I want to split -pick c619268 A fix for Patch B -pick fa39187 something to add to patch A -pick 4ca2acc i cant' typ goods -pick 7b36971 something to move before patch B - -# Rebase 41a72e6..7b36971 onto 41a72e6 -# -# Commands: -# p, pick = use commit -# r, reword = use commit, but edit the commit message -# e, edit = use commit, but stop for amending -# s, squash = use commit, but meld into previous commit -# f, fixup = like "squash", but discard this commit's log message -# x, exec = run command (the rest of the line) using shell -# -# If you remove a line here THAT COMMIT WILL BE LOST. -# However, if you remove everything, the rebase will be aborted. -# -``` - -Breaking this information, from top to bottom, we see that: - -- Seven commits are listed, which indicates that there were seven changes between our starting point and our current branch state. -- The commits you chose to rebase are sorted in the order of the oldest changes (at the top) to the newest changes (at the bottom). -- Each line lists a command (by default, `pick`), the commit SHA, and the commit message. The entire `git rebase` procedure centers around your manipulation of these three columns. The changes you make are *rebased* onto your repository. -- After the commits, Git tells you the range of commits we're working with (`41a72e6..7b36971`). -- Finally, Git gives some help by telling you the commands that are available to you when rebasing commits. - -### Further reading - -- "[Using Git rebase](/articles/using-git-rebase)" -- [The "Git Branching" chapter from the _Pro Git_ book](https://git-scm.com/book/en/Git-Branching-Rebasing) -- [The "Interactive Rebasing" chapter from the _Pro Git_ book](https://git-scm.com/book/en/Git-Tools-Rewriting-History#_changing_multiple) -- "[Squashing commits with rebase](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html)" -- "[Syncing your branch](/desktop/contributing-to-projects/syncing-your-branch)" in the {% data variables.product.prodname_desktop %} documentation diff --git a/content/github/using-git/about-git-subtree-merges.md b/content/github/using-git/about-git-subtree-merges.md deleted file mode 100644 index 65964f52f0e5..000000000000 --- a/content/github/using-git/about-git-subtree-merges.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: About Git subtree merges -redirect_from: - - /articles/working-with-subtree-merge/ - - /subtree-merge/ - - /articles/about-git-subtree-merges -intro: 'If you need to manage multiple projects within a single repository, you can use a *subtree merge* to handle all the references.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Typically, a subtree merge is used to contain a repository within a repository. The "subrepository" is stored in a folder of the main repository. - -The best way to explain subtree merges is to show by example. We will: - -- Make an empty repository called `test` that represents our project -- Merge another repository into it as a subtree called `Spoon-Knife`. -- The `test` project will use that subproject as if it were part of the same repository. -- Fetch updates from `Spoon-Knife` into our `test` project. - -### Setting up the empty repository for a subtree merge - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Create a new directory and navigate to it. - ```shell - $ mkdir test - $ cd test - ``` -3. Initialize a new Git repository. - ```shell - $ git init - > Initialized empty Git repository in /Users/octocat/tmp/test/.git/ - ``` -4. Create and commit a new file. - ```shell - $ touch .gitignore - $ git add .gitignore - $ git commit -m "initial commit" - > [main (root-commit) 3146c2a] initial commit - > 0 files changed, 0 insertions(+), 0 deletions(-) - > create mode 100644 .gitignore - ``` - -### Adding a new repository as a subtree - -1. Add a new remote URL pointing to the separate project that we're interested in. - ```shell - $ git remote add -f spoon-knife git@github.com:octocat/Spoon-Knife.git - > Updating spoon-knife - > warning: no common commits - > remote: Counting objects: 1732, done. - > remote: Compressing objects: 100% (750/750), done. - > remote: Total 1732 (delta 1086), reused 1558 (delta 967) - > Receiving objects: 100% (1732/1732), 528.19 KiB | 621 KiB/s, done. - > Resolving deltas: 100% (1086/1086), done. - > From git://github.com/octocat/Spoon-Knife - > * [new branch] main -> Spoon-Knife/main - ``` -2. Merge the `Spoon-Knife` project into the local Git project. This doesn't change any of your files locally, but it does prepare Git for the next step. - - If you're using Git 2.9 or above: - ```shell - $ git merge -s ours --no-commit --allow-unrelated-histories spoon-knife/main - > Automatic merge went well; stopped before committing as requested - ``` - - If you're using Git 2.8 or below: - ```shell - $ git merge -s ours --no-commit spoon-knife/main - > Automatic merge went well; stopped before committing as requested - ``` -3. Create a new directory called **spoon-knife**, and copy the Git history of the `Spoon-Knife` project into it. - ```shell - $ git read-tree --prefix=spoon-knife/ -u spoon-knife/main - ``` -4. Commit the changes to keep them safe. - ```shell - $ git commit -m "Subtree merged in spoon-knife" - > [main fe0ca25] Subtree merged in spoon-knife - ``` - -Although we've only added one subproject, any number of subprojects can be incorporated into a Git repository. - -{% tip %} - -**Tip**: If you create a fresh clone of the repository in the future, the remotes you've added will not be created for you. You will have to add them again using [the `git remote add` command](/articles/adding-a-remote). - -{% endtip %} - -### Synchronizing with updates and changes - -When a subproject is added, it is not automatically kept in sync with the upstream changes. You will need to update the subproject with the following command: - -```shell -$ git pull -s subtree remotename branchname -``` - -For the example above, this would be: - -```shell -$ git pull -s subtree spoon-knife main -``` - -### Further reading - -- [The "Subtree Merging" chapter from the _Pro Git_ book](https://git-scm.com/book/en/Git-Tools-Subtree-Merging) -- "[How to use the subtree merge strategy](https://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html)" diff --git a/content/github/using-git/about-remote-repositories.md b/content/github/using-git/about-remote-repositories.md deleted file mode 100644 index befcceca2777..000000000000 --- a/content/github/using-git/about-remote-repositories.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: About remote repositories -redirect_from: - - /articles/working-when-github-goes-down/ - - /articles/sharing-repositories-without-github/ - - /articles/about-remote-repositories -intro: 'GitHub''s collaborative approach to development depends on publishing commits from your local repository for other people to view, fetch, and update.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -A remote URL is Git's fancy way of saying "the place where your code is stored." -That URL could be your repository on GitHub, or another user's fork, or even on -a completely different server. - -You can only push to two types of URL addresses: - -* An HTTPS URL like `https://{% data variables.command_line.backticks %}/user/repo.git` -* An SSH URL, like `git@{% data variables.command_line.backticks %}:user/repo.git` - -Git associates a remote URL with a name, and your default remote is usually called `origin`. - -For information on the differences between these URLs, see "[Which remote URL should I use?](/articles/which-remote-url-should-i-use)" - -### Creating remotes - -You can use the `git remote add` command to match a remote URL with a name. -For example, you'd type the following in the command line: - -```shell -git remote add origin <REMOTE_URL> -``` - -This associates the name `origin` with the `REMOTE_URL`. - -You can use the command `git remote set-url` to [change a remote's URL](/articles/changing-a-remote-s-url). diff --git a/content/github/using-git/adding-a-remote.md b/content/github/using-git/adding-a-remote.md deleted file mode 100644 index 6edb29843060..000000000000 --- a/content/github/using-git/adding-a-remote.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Adding a remote -intro: 'To add a new remote, use the `git remote add` command on the terminal, in the directory your repository is stored at.' -redirect_from: - - /articles/adding-a-remote -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The `git remote add` command takes two arguments: - -* A remote name, for example, `origin` -* A remote URL, for example, `https://{% data variables.command_line.backticks %}/user/repo.git` - -For example: - -```shell -$ git remote add origin https://{% data variables.command_line.codeblock %}/user/repo.git -# Set a new remote - -$ git remote -v -# Verify new remote -> origin https://{% data variables.command_line.codeblock %}/user/repo.git (fetch) -> origin https://{% data variables.command_line.codeblock %}/user/repo.git (push) -``` - -Not sure which URL to use? Check out "[Which remote URL should I use?](/articles/which-remote-url-should-i-use)" - -### Troubleshooting - -You may encounter these errors when trying to add a remote. - -#### Remote `name` already exists - -This error means you've tried to add a remote with a name that already exists in your local repository: - -```shell -$ git remote add origin https://{% data variables.command_line.codeblock %}/octocat/Spoon-Knife -> fatal: remote origin already exists. -``` - -To fix this, you can - -* Use a different name for the new remote -* [Rename the existing remote](/articles/renaming-a-remote) -* [Delete the existing remote](/articles/removing-a-remote) - -### Further reading - -- "[Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/Git-Basics-Working-with-Remotes) diff --git a/content/github/using-git/associating-text-editors-with-git.md b/content/github/using-git/associating-text-editors-with-git.md deleted file mode 100644 index fa4e879af067..000000000000 --- a/content/github/using-git/associating-text-editors-with-git.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: Associating text editors with Git -intro: Use a text editor to open and edit your files with Git. -redirect_from: - - /textmate/ - - /articles/using-textmate-as-your-default-editor/ - - /articles/using-sublime-text-2-as-your-default-editor/ - - /articles/associating-text-editors-with-git -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% mac %} - -### Using Atom as your editor - -1. Install [Atom](https://atom.io/). For more information, see "[Installing Atom](https://flight-manual.atom.io/getting-started/sections/installing-atom/)" in the Atom documentation. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Type this command: - ```shell - $ git config --global core.editor "atom --wait" - ``` - -### Using Visual Studio Code as your editor - -1. Install [Visual Studio Code](https://code.visualstudio.com/) (VS Code). For more information, see "[Setting up Visual Studio Code](https://code.visualstudio.com/Docs/setup/setup-overview)" in the VS Code documentation. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Type this command: - ```shell - $ git config --global core.editor "code --wait" - ``` - -### Using Sublime Text as your editor - -1. Install [Sublime Text](https://www.sublimetext.com/). For more information, see "[Installation](https://docs.sublimetext.io/guide/getting-started/installation.html)" in the Sublime Text documentation. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Type this command: - ```shell - $ git config --global core.editor "subl -n -w" - ``` - -### Using TextMate as your editor - -1. Install [TextMate](https://macromates.com/). -2. Install TextMate's `mate` shell utility. For more information, see "[mate and rmate](https://macromates.com/blog/2011/mate-and-rmate/)" in the TextMate documentation. -{% data reusables.command_line.open_the_multi_os_terminal %} -4. Type this command: - ```shell - $ git config --global core.editor "mate -w" - ``` -{% endmac %} - -{% windows %} - -### Using Atom as your editor - -1. Install [Atom](https://atom.io/). For more information, see "[Installing Atom](https://flight-manual.atom.io/getting-started/sections/installing-atom/)" in the Atom documentation. -3. Type this command: - ```shell - $ git config --global core.editor "atom --wait" - ``` - -### Using Visual Studio Code as your editor - -1. Install [Visual Studio Code](https://code.visualstudio.com/) (VS Code). For more information, see "[Setting up Visual Studio Code](https://code.visualstudio.com/Docs/setup/setup-overview)" in the VS Code documentation. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Type this command: - ```shell - $ git config --global core.editor "code --wait" - ``` - -### Using Sublime Text as your editor - -1. Install [Sublime Text](https://www.sublimetext.com/). For more information, see "[Installation](https://docs.sublimetext.io/guide/getting-started/installation.html)" in the Sublime Text documentation. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Type this command: - ```shell - $ git config --global core.editor "'C:/Program Files (x86)/sublime text 3/subl.exe' -w" - ``` - -### Using Notepad++ as your editor - -1. Install Notepad++ from https://notepad-plus-plus.org/. For more information, see "[Getting started](https://npp-user-manual.org/docs/getting-started/)" in the Notepad++ documentation. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Type this command: - ```shell - $ git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin" - ``` -{% endwindows %} - -{% linux %} - -### Using Atom as your editor - -1. Install [Atom](https://atom.io/). For more information, see "[Installing Atom](https://flight-manual.atom.io/getting-started/sections/installing-atom/)" in the Atom documentation. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Type this command: - ```shell - $ git config --global core.editor "atom --wait" - ``` - -### Using Visual Studio Code as your editor - -1. Install [Visual Studio Code](https://code.visualstudio.com/) (VS Code). For more information, see "[Setting up Visual Studio Code](https://code.visualstudio.com/Docs/setup/setup-overview)" in the VS Code documentation. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Type this command: - ```shell - $ git config --global core.editor "code --wait" - ``` - -### Using Sublime Text as your editor - -1. Install [Sublime Text](https://www.sublimetext.com/). For more information, see "[Installation](https://docs.sublimetext.io/guide/getting-started/installation.html)" in the Sublime Text documentation. -{% data reusables.command_line.open_the_multi_os_terminal %} -3. Type this command: - ```shell - $ git config --global core.editor "subl -n -w" - ``` - -{% endlinux %} diff --git a/content/github/using-git/caching-your-github-credentials-in-git.md b/content/github/using-git/caching-your-github-credentials-in-git.md deleted file mode 100644 index 4756ae184787..000000000000 --- a/content/github/using-git/caching-your-github-credentials-in-git.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Caching your GitHub credentials in Git -redirect_from: - - /firewalls-and-proxies/ - - /articles/caching-your-github-password-in-git - - /github/using-git/caching-your-github-password-in-git -intro: 'If you''re [cloning {% data variables.product.product_name %} repositories using HTTPS](/github/using-git/which-remote-url-should-i-use), you can use a credential helper to tell Git to remember your credentials.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If you clone {% data variables.product.product_name %} repositories using SSH, then you authenticate using an SSH key instead of using other credentials. For information about setting up an SSH connection, see "[Generating an SSH Key](/articles/generating-an-ssh-key)." - -{% mac %} - -{% tip %} - -**Tips:** - -- You need Git **1.7.10** or newer to use the osxkeychain credential helper. -- If you installed Git using [Homebrew](http://brew.sh/), the `osxkeychain helper` will already be installed. -- If you're running Mac OS X 10.7 and above and you installed Git through Apple's Xcode Command Line Tools, then `osxkeychain helper` is automatically included in your Git installation. - -{% endtip %} - -Install Git and the `osxkeychain helper` and tell Git to use it. - -1. Find out if Git and the `osxkeychain helper` are already installed: - ```shell - $ git credential-osxkeychain - # Test for the cred helper - > Usage: git credential-osxkeychain <get|store|erase> - ``` -2. If the `osxkeychain helper` isn't installed and you're running OS X version 10.9 or above, your computer will prompt you to download it as a part of the Xcode Command Line Tools: - ```shell - $ git credential-osxkeychain - > xcode-select: note: no developer tools were found at '/Applications/Xcode.app', - > requesting install. Choose an option in the dialog to download the command line developer tools. - ``` - - Alternatively, you can install Git and the `osxkeychain helper` by using [Homebrew](http://brew.sh/): - ```shell - $ brew install git - ``` - -4. Tell Git to use `osxkeychain helper` using the global `credential.helper` config: - ```shell - $ git config --global credential.helper osxkeychain - # Set git to use the osxkeychain credential helper - ``` - -The next time you clone an HTTPS URL that requires authentication, Git will prompt you for your username and password. {% data reusables.user_settings.password-authentication-deprecation %} - -Once you've authenticated successfully, your credentials are stored in the macOS keychain and will be used every time you clone an HTTPS URL. You won't be required to type your credentials in to Git again unless you change your credentials. - -{% endmac %} - -{% windows %} - -{% tip %} - -**Tip:** You need Git **1.7.10** or newer to use the credential helper. - -{% endtip %} - -You can also install a native Git shell, such as [Git for Windows](https://git-for-windows.github.io/). With Git for Windows, running the following in the command line will store your credentials: - -```shell -$ git config --global credential.helper wincred -``` - -{% endwindows %} - -{% linux %} - -{% tip %} - -**Tip:** You need Git **1.7.10** or newer to use the credential helper. - -{% endtip %} - -Turn on the credential helper so that Git will save your password in memory for some time. By default, Git will cache your password for 15 minutes. - -1. In Terminal, enter the following: - ```shell - $ git config --global credential.helper cache - # Set git to use the credential memory cache - ``` -2. To change the default password cache timeout, enter the following: - ```shell - $ git config --global credential.helper 'cache --timeout=3600' - # Set the cache to timeout after 1 hour (setting is in seconds) - ``` - -{% endlinux %} - -### Further reading - -- "[Updating credentials from the OSX Keychain](/articles/updating-credentials-from-the-osx-keychain/)" -- "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)" diff --git a/content/github/using-git/changing-a-remotes-url.md b/content/github/using-git/changing-a-remotes-url.md deleted file mode 100644 index 1da6b1c8bae4..000000000000 --- a/content/github/using-git/changing-a-remotes-url.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Changing a remote's URL -redirect_from: - - /articles/changing-a-remote-s-url - - /articles/changing-a-remotes-url -intro: The `git remote set-url` command changes an existing remote repository URL. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% tip %} - -**Tip:** For information on the difference between HTTPS and SSH URLs, see "[Which remote URL should I use?](/articles/which-remote-url-should-i-use)" - -{% endtip %} - -The `git remote set-url` command takes two arguments: - -* An existing remote name. For example, `origin` or `upstream` are two common choices. -* A new URL for the remote. For example: - * If you're updating to use HTTPS, your URL might look like: -```shell -https://{% data variables.command_line.backticks %}/USERNAME/REPOSITORY.git -``` - * If you're updating to use SSH, your URL might look like: -```shell -git@{% data variables.command_line.codeblock %}:USERNAME/REPOSITORY.git -``` - -### Switching remote URLs from SSH to HTTPS - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Change the current working directory to your local project. -3. List your existing remotes in order to get the name of the remote you want to change. - ```shell - $ git remote -v - > origin git@{% data variables.command_line.codeblock %}:USERNAME/REPOSITORY.git (fetch) - > origin git@{% data variables.command_line.codeblock %}:USERNAME/REPOSITORY.git (push) - ``` -4. Change your remote's URL from SSH to HTTPS with the `git remote set-url` command. - ```shell - $ git remote set-url origin https://{% data variables.command_line.codeblock %}/USERNAME/REPOSITORY.git - ``` -5. Verify that the remote URL has changed. - ```shell - $ git remote -v - # Verify new remote URL - > origin https://{% data variables.command_line.codeblock %}/USERNAME/REPOSITORY.git (fetch) - > origin https://{% data variables.command_line.codeblock %}/USERNAME/REPOSITORY.git (push) - ``` - -The next time you `git fetch`, `git pull`, or `git push` to the remote repository, you'll be asked for your GitHub username and password. {% data reusables.user_settings.password-authentication-deprecation %} - -- If you have [two-factor authentication](/articles/securing-your-account-with-two-factor-authentication-2fa) enabled, you must [create a personal access token](/github/authenticating-to-github/creating-a-personal-access-token) to use instead of your GitHub password. -- You can [use a credential helper](/github/using-git/caching-your-github-credentials-in-git) so Git will remember your GitHub username and password every time it talks to GitHub. - -### Switching remote URLs from HTTPS to SSH - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Change the current working directory to your local project. -3. List your existing remotes in order to get the name of the remote you want to change. - ```shell - $ git remote -v - > origin https://{% data variables.command_line.codeblock %}/USERNAME/REPOSITORY.git (fetch) - > origin https://{% data variables.command_line.codeblock %}/USERNAME/REPOSITORY.git (push) - ``` -4. Change your remote's URL from HTTPS to SSH with the `git remote set-url` command. - ```shell - $ git remote set-url origin git@{% data variables.command_line.codeblock %}:USERNAME/REPOSITORY.git - ``` -5. Verify that the remote URL has changed. - ```shell - $ git remote -v - # Verify new remote URL - > origin git@{% data variables.command_line.codeblock %}:USERNAME/REPOSITORY.git (fetch) - > origin git@{% data variables.command_line.codeblock %}:USERNAME/REPOSITORY.git (push) - ``` - -### Troubleshooting - -You may encounter these errors when trying to change a remote. - -#### No such remote '[name]' - -This error means that the remote you tried to change doesn't exist: - -```shell -$ git remote set-url sofake https://{% data variables.command_line.codeblock %}/octocat/Spoon-Knife -> fatal: No such remote 'sofake' -``` - -Check that you've correctly typed the remote name. - -### Further reading - -- ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/Git-Basics-Working-with-Remotes) diff --git a/content/github/using-git/configuring-git-to-handle-line-endings.md b/content/github/using-git/configuring-git-to-handle-line-endings.md deleted file mode 100644 index 0c1601dab80d..000000000000 --- a/content/github/using-git/configuring-git-to-handle-line-endings.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Configuring Git to handle line endings -intro: 'To avoid problems in your diffs, you can configure Git to properly handle line endings.' -redirect_from: - - /dealing-with-lineendings/ - - /line-endings/ - - /articles/dealing-with-line-endings/ - - /articles/configuring-git-to-handle-line-endings -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Every time you press return on your keyboard you insert an invisible character called a line ending. Different operating systems handle line endings differently. - -When you're collaborating on projects with Git and {% data variables.product.product_name %}, Git might produce unexpected results if, for example, you're working on a Windows machine, and your collaborator has made a change in OS X. - -You can configure Git to handle line endings automatically so you can collaborate effectively with people who use different operating systems. - -### Global settings for line endings - -The `git config core.autocrlf` command is used to change how Git handles line endings. It takes a single argument. - -{% mac %} - -On OS X, you simply pass `input` to the configuration. For example: - -```shell -$ git config --global core.autocrlf input -# Configure Git to ensure line endings in files you checkout are correct for OS X -``` - -{% endmac %} - -{% windows %} - -On Windows, you simply pass `true` to the configuration. For example: - -```shell -$ git config --global core.autocrlf true -# Configure Git to ensure line endings in files you checkout are correct for Windows. -# For compatibility, line endings are converted to Unix style when you commit files. -``` - -{% endwindows %} - -{% linux %} - -On Linux, you simply pass `input` to the configuration. For example: - -```shell -$ git config --global core.autocrlf input -# Configure Git to ensure line endings in files you checkout are correct for Linux -``` - -{% endlinux %} - -### Per-repository settings - -Optionally, you can configure a *.gitattributes* file to manage how Git reads line endings in a specific repository. When you commit this file to a repository, it overrides the `core.autocrlf` setting for all repository contributors. This ensures consistent behavior for all users, regardless of their Git settings and environment. - -The *.gitattributes* file must be created in the root of the repository and committed like any other file. - -A *.gitattributes* file looks like a table with two columns: - -* On the left is the file name for Git to match. -* On the right is the line ending configuration that Git should use for those files. - -#### Example - -Here's an example *.gitattributes* file. You can use it as a template for your repositories: - -``` -# Set the default behavior, in case people don't have core.autocrlf set. -* text=auto - -# Explicitly declare text files you want to always be normalized and converted -# to native line endings on checkout. -*.c text -*.h text - -# Declare files that will always have CRLF line endings on checkout. -*.sln text eol=crlf - -# Denote all files that are truly binary and should not be modified. -*.png binary -*.jpg binary -``` - -You'll notice that files are matched—`*.c`, `*.sln`, `*.png`—, separated by a space, then given a setting—`text`, `text eol=crlf`, `binary`. We'll go over some possible settings below. - -- `text=auto` Git will handle the files in whatever way it thinks is best. This is a good default option. - -- `text eol=crlf` Git will always convert line endings to `CRLF` on checkout. You should use this for files that must keep `CRLF` endings, even on OSX or Linux. - -- `text eol=lf` Git will always convert line endings to `LF` on checkout. You should use this for files that must keep LF endings, even on Windows. - -- `binary` Git will understand that the files specified are not text, and it should not try to change them. The `binary` setting is also an alias for `-text -diff`. - -### Refreshing a repository after changing line endings - -When you set the `core.autocrlf` option or commit a *.gitattributes* file, you may find that Git reports changes to files that you have not modified. Git has changed line endings to match your new configuration. - -To ensure that all the line endings in your repository match your new configuration, backup your files with Git, delete all files in your repository (except the `.git` directory), then restore the files all at once. - -1. Save your current files in Git, so that none of your work is lost. - ```shell - $ git add . -u - $ git commit -m "Saving files before refreshing line endings" - ``` -2. Add all your changed files back and normalize the line endings. - ```shell - $ git add --renormalize . - ``` -3. Show the rewritten, normalized files. - ```shell - $ git status - ``` -4. Commit the changes to your repository. - ```shell - $ git commit -m "Normalize all the line endings" - ``` - -### Further reading - -- [Customizing Git - Git Attributes](https://git-scm.com/book/en/Customizing-Git-Git-Attributes) in the Pro Git book -- [git-config](https://git-scm.com/docs/git-config) in the man pages for Git -- [Getting Started - First-Time Git Setup](https://git-scm.com/book/en/Getting-Started-First-Time-Git-Setup) in the Pro Git book -- [Mind the End of Your Line](http://adaptivepatchwork.com/2012/03/01/mind-the-end-of-your-line/) by [Tim Clem](https://github.com/tclem) diff --git a/content/github/using-git/dealing-with-non-fast-forward-errors.md b/content/github/using-git/dealing-with-non-fast-forward-errors.md deleted file mode 100644 index 84fcb3d3c645..000000000000 --- a/content/github/using-git/dealing-with-non-fast-forward-errors.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Dealing with non-fast-forward errors -intro: 'Sometimes, Git can''t make your change to a remote repository without losing commits. When this happens, your push is refused.' -redirect_from: - - /articles/dealing-with-non-fast-forward-errors -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If another person has pushed to the same branch as you, Git won't be able to push your changes: - -```shell -$ git push origin main -> To https://{% data variables.command_line.codeblock %}/USERNAME/REPOSITORY.git -> ! [rejected] main -> main (non-fast-forward) -> error: failed to push some refs to 'https://{% data variables.command_line.codeblock %}/USERNAME/REPOSITORY.git' -> To prevent you from losing history, non-fast-forward updates were rejected -> Merge the remote changes (e.g. 'git pull') before pushing again. See the -> 'Note about fast-forwards' section of 'git push --help' for details. -``` - -You can fix this by [fetching and merging](/articles/getting-changes-from-a-remote-repository) the changes made on the remote branch with the changes that you have made locally: - -```shell -$ git fetch origin -# Fetches updates made to an online repository -$ git merge origin YOUR_BRANCH_NAME -# Merges updates made online with your local work -``` - -Or, you can simply use `git pull` to perform both commands at once: - -```shell -$ git pull origin YOUR_BRANCH_NAME -# Grabs online updates and merges them with your local work -``` diff --git a/content/github/using-git/getting-changes-from-a-remote-repository.md b/content/github/using-git/getting-changes-from-a-remote-repository.md deleted file mode 100644 index 653661d216d0..000000000000 --- a/content/github/using-git/getting-changes-from-a-remote-repository.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Getting changes from a remote repository -intro: You can use common Git commands to access remote repositories. -redirect_from: - - /articles/fetching-a-remote/ - - /articles/getting-changes-from-a-remote-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -These commands are very useful when interacting with [a remote repository](/articles/about-remote-repositories). `clone` and `fetch` download remote code from a repository's remote URL to your local computer, `merge` is used to merge different people's work together with yours, and `pull` is a combination of `fetch` and `merge`. - -### Cloning a repository - -To grab a complete copy of another user's repository, use `git clone` like this: - -```shell -$ git clone https://{% data variables.command_line.codeblock %}/USERNAME/REPOSITORY.git -# Clones a repository to your computer -``` - -You can choose from [several different URLs](/articles/which-remote-url-should-i-use) when cloning a repository. While logged in to {% data variables.product.prodname_dotcom %}, these URLs are available below the repository details: - -![Remote URL list](/assets/images/help/repository/remotes-url.png) - -When you run `git clone`, the following actions occur: -- A new folder called `repo` is made -- It is initialized as a Git repository -- A remote named `origin` is created, pointing to the URL you cloned from -- All of the repository's files and commits are downloaded there -- The default branch is checked out - -For every branch `foo` in the remote repository, a corresponding remote-tracking branch -`refs/remotes/origin/foo` is created in your local repository. You can usually abbreviate -such remote-tracking branch names to `origin/foo`. - -### Fetching changes from a remote repository - -Use `git fetch` to retrieve new work done by other people. Fetching from a repository grabs all the new remote-tracking branches and tags *without* merging those changes into your own branches. - -If you already have a local repository [with a remote URL](/articles/adding-a-remote) set up for the desired project, you can grab all the new information by using `git fetch *remotename*` in the terminal: - -```shell -$ git fetch remotename -# Fetches updates made to a remote repository -``` - -Otherwise, you can always [add a new remote](/articles/adding-a-remote) -and then fetch. - -### Merging changes into your local branch - -Merging combines your local changes with changes made by others. - -Typically, you'd merge a remote-tracking branch (i.e., a branch fetched from a remote repository) with your local branch: - -```shell -$ git merge remotename/branchname -# Merges updates made online with your local work -``` - -### Pulling changes from a remote repository - -`git pull` is a convenient shortcut for completing both `git fetch` and `git merge `in the same command: - -```shell -$ git pull remotename branchname -# Grabs online updates and merges them with your local work -``` - -Because `pull` performs a merge on the retrieved changes, you should ensure that -your local work is committed before running the `pull` command. If you run into -[a merge conflict](/articles/resolving-a-merge-conflict-using-the-command-line) -you cannot resolve, or if you decide to quit the merge, you can use `git merge --abort` -to take the branch back to where it was in before you pulled. - -### Further reading - -- ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/Git-Basics-Working-with-Remotes)"{% if currentVersion == "free-pro-team@latest" %} -- "[Troubleshooting connectivity problems](/articles/troubleshooting-connectivity-problems)"{% endif %} diff --git a/content/github/using-git/getting-started-with-git-and-github.md b/content/github/using-git/getting-started-with-git-and-github.md deleted file mode 100644 index 4b31343ae613..000000000000 --- a/content/github/using-git/getting-started-with-git-and-github.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Getting started with Git and GitHub -intro: '' -mapTopic: true -redirect_from: - - /articles/getting-started-with-git-and-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/using-git/git-workflows.md b/content/github/using-git/git-workflows.md deleted file mode 100644 index 136cbca51cdc..000000000000 --- a/content/github/using-git/git-workflows.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Git workflows -intro: '{% data variables.product.prodname_dotcom %} flow is a lightweight, branch-based workflow that supports teams and projects that deploy regularly.' -redirect_from: - - /articles/what-is-a-good-git-workflow/ - - /articles/git-workflows -versions: - free-pro-team: '*' - enterprise-server: '*' ---- -You can adopt the {% data variables.product.prodname_dotcom %} flow method to standardize how your team functions and collaborates on {% data variables.product.prodname_dotcom %}. For more information, see "[GitHub flow](/github/collaborating-with-issues-and-pull-requests/github-flow)" and "[Understanding the GitHub flow](http://guides.github.com/overviews/flow/)" in the {% data variables.product.prodname_dotcom %} Guides. diff --git a/content/github/using-git/ignoring-files.md b/content/github/using-git/ignoring-files.md deleted file mode 100644 index 1339137d66be..000000000000 --- a/content/github/using-git/ignoring-files.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Ignoring files -redirect_from: - - /git-ignore/ - - /ignore-files/ - - /articles/ignoring-files -intro: 'You can configure Git to ignore files you don''t want to check in to {% data variables.product.product_name %}.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Configuring ignored files for a single repository - -You can create a *.gitignore* file in your repository's root directory to tell Git which files and directories to ignore when you make a commit. -To share the ignore rules with other users who clone the repository, commit the *.gitignore* file in to your repository. - -GitHub maintains an official list of recommended *.gitignore* files for many popular operating systems, environments, and languages in the `github/gitignore` public repository. You can also use gitignore.io to create a *.gitignore* file for your operating system, programming language, or IDE. For more information, see "[github/gitignore](https://github.com/github/gitignore)" and the "[gitignore.io](https://www.gitignore.io/)" site. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Navigate to the location of your Git repository. -3. Create a *.gitignore* file for your repository. - ```shell - $ touch .gitignore - ``` - -For an example *.gitignore* file, see "[Some common .gitignore configurations](https://gist.github.com/octocat/9257657)" in the Octocat repository. - -If you want to ignore a file that is already checked in, you must untrack the file before you add a rule to ignore it. From your terminal, untrack the file. - -```shell -$ git rm --cached FILENAME -``` - -### Configuring ignored files for all repositories on your computer - -You can also create a global *.gitignore* file to define a list of rules for ignoring files in every Git repository on your computer. For example, you might create the file at *~/.gitignore_global* and add some rules to it. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Configure Git to use the exclude file *~/.gitignore_global* for all Git repositories. - ```shell - $ git config --global core.excludesfile ~/.gitignore_global - ``` - -### Excluding local files without creating a *.gitignore* file - -If you don't want to create a *.gitignore* file to share with others, you can create rules that are not committed with the repository. You can use this technique for locally-generated files that you don't expect other users to generate, such as files created by your editor. - -Use your favorite text editor to open the file called *.git/info/exclude* within the root of your Git repository. Any rule you add here will not be checked in, and will only ignore files for your local repository. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Navigate to the location of your Git repository. -3. Using your favorite text editor, open the file *.git/info/exclude*. - -### Further Reading - -* [Ignoring files](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository#_ignoring) in the Pro Git book -* [.gitignore](https://git-scm.com/docs/gitignore) in the man pages for Git -* [A collection of useful *.gitignore* templates](https://github.com/github/gitignore) in the github/gitignore repository -* [gitignore.io](https://www.gitignore.io/) site diff --git a/content/github/using-git/index.md b/content/github/using-git/index.md deleted file mode 100644 index abe69c20f752..000000000000 --- a/content/github/using-git/index.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Using Git -intro: 'Learn common and advanced workflows in Git to enhance your experience using {% data variables.product.prodname_dotcom %}.' -redirect_from: - - /categories/19/articles/ - - /categories/using-git -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /getting-started-with-git-and-github %} - {% link_in_list /setting-your-username-in-git %} - {% link_in_list /caching-your-github-credentials-in-git %} - {% link_in_list /why-is-git-always-asking-for-my-password %} - {% link_in_list /updating-credentials-from-the-macos-keychain %} -{% topic_link_in_list /learning-about-git %} - {% link_in_list /git-workflows %} - {% link_in_list /associating-text-editors-with-git %} - {% link_in_list /configuring-git-to-handle-line-endings %} - {% link_in_list /ignoring-files %} -{% topic_link_in_list /using-common-git-commands %} - {% link_in_list /pushing-commits-to-a-remote-repository %} - {% link_in_list /getting-changes-from-a-remote-repository %} - {% link_in_list /dealing-with-non-fast-forward-errors %} -{% topic_link_in_list /managing-remote-repositories %} - {% link_in_list /about-remote-repositories %} - {% link_in_list /which-remote-url-should-i-use %} - {% link_in_list /adding-a-remote %} - {% link_in_list /changing-a-remotes-url %} - {% link_in_list /renaming-a-remote %} - {% link_in_list /removing-a-remote %} -{% topic_link_in_list /using-advanced-git-commands %} - {% link_in_list /about-git-rebase %} - {% link_in_list /using-git-rebase-on-the-command-line %} - {% link_in_list /resolving-merge-conflicts-after-a-git-rebase %} - {% link_in_list /about-git-subtree-merges %} - {% link_in_list /splitting-a-subfolder-out-into-a-new-repository %} diff --git a/content/github/using-git/learning-about-git.md b/content/github/using-git/learning-about-git.md deleted file mode 100644 index 538320413716..000000000000 --- a/content/github/using-git/learning-about-git.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Learning about Git -intro: '' -mapTopic: true -redirect_from: - - /articles/learning-about-git -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/using-git/managing-remote-repositories.md b/content/github/using-git/managing-remote-repositories.md deleted file mode 100644 index bbcaba6f79b7..000000000000 --- a/content/github/using-git/managing-remote-repositories.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Managing remote repositories -intro: 'Learn to work with your local repositories on your computer and remote repositories hosted on {% data variables.product.product_name %}.' -mapTopic: true -redirect_from: - - /categories/18/articles/ - - /remotes/ - - /categories/managing-remotes/ - - /articles/managing-remote-repositories -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/using-git/pushing-commits-to-a-remote-repository.md b/content/github/using-git/pushing-commits-to-a-remote-repository.md deleted file mode 100644 index 6bf2846fc41c..000000000000 --- a/content/github/using-git/pushing-commits-to-a-remote-repository.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Pushing commits to a remote repository -intro: Use `git push` to push commits made on your local branch to a remote repository. -redirect_from: - - /articles/pushing-to-a-remote/ - - /articles/pushing-commits-to-a-remote-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The `git push` command takes two arguments: - -* A remote name, for example, `origin` -* A branch name, for example, `main` - -For example: - -```shell -git push <REMOTENAME> <BRANCHNAME> -``` - -As an example, you usually run `git push origin main` to push your local changes -to your online repository. - -### Renaming branches - -To rename a branch, you'd use the same `git push` command, but you would add -one more argument: the name of the new branch. For example: - -```shell -git push <REMOTENAME> <LOCALBRANCHNAME>:<REMOTEBRANCHNAME> -``` - -This pushes the `LOCALBRANCHNAME` to your `REMOTENAME`, but it is renamed to `REMOTEBRANCHNAME`. - -### Dealing with "non-fast-forward" errors - -If your local copy of a repository is out of sync with, or "behind," the upstream -repository you're pushing to, you'll get a message saying `non-fast-forward updates were rejected`. -This means that you must retrieve, or "fetch," the upstream changes, before -you are able to push your local changes. - -For more information on this error, see "[Dealing with non-fast-forward errors](/articles/dealing-with-non-fast-forward-errors)." - -### Pushing tags - -By default, and without additional parameters, `git push` sends all matching branches -that have the same names as remote branches. - -To push a single tag, you can issue the same command as pushing a branch: - -```shell -git push <REMOTENAME> <TAGNAME> -``` - -To push all your tags, you can type the command: - -```shell -git push <REMOTENAME> --tags -``` - -### Deleting a remote branch or tag - -The syntax to delete a branch is a bit arcane at first glance: - -```shell -git push <REMOTENAME> :<BRANCHNAME> -``` - -Note that there is a space before the colon. The command resembles the same steps -you'd take to rename a branch. However, here, you're telling Git to push _nothing_ -into `BRANCHNAME` on `REMOTENAME`. Because of this, `git push` deletes the branch -on the remote repository. - -### Remotes and forks - -You might already know that [you can "fork" repositories](https://guides.github.com/overviews/forking/) on GitHub. - -When you clone a repository you own, you provide it with a remote URL that tells -Git where to fetch and push updates. If you want to collaborate with the original -repository, you'd add a new remote URL, typically called `upstream`, to -your local Git clone: - -```shell -git remote add upstream <THEIR_REMOTE_URL> -``` - -Now, you can fetch updates and branches from *their* fork: - -```shell -git fetch upstream -# Grab the upstream remote's branches -> remote: Counting objects: 75, done. -> remote: Compressing objects: 100% (53/53), done. -> remote: Total 62 (delta 27), reused 44 (delta 9) -> Unpacking objects: 100% (62/62), done. -> From https://{% data variables.command_line.codeblock %}/octocat/repo -> * [new branch] main -> upstream/main -``` - -When you're done making local changes, you can push your local branch to GitHub -and [initiate a pull request](/articles/about-pull-requests). - -For more information on working with forks, see "[Syncing a fork](/articles/syncing-a-fork)". - -### Further reading - -- [The "Remotes" chapter from the "Pro Git" book](https://git-scm.com/book/ch5-2.html) -- [`git remote` man page](https://git-scm.com/docs/git-remote.html) -- "[Git cheatsheet](/articles/git-cheatsheet)" -- "[Git workflows](/articles/git-workflows)" -- "[Git Handbook](https://guides.github.com/introduction/git-handbook/)" diff --git a/content/github/using-git/removing-a-remote.md b/content/github/using-git/removing-a-remote.md deleted file mode 100644 index e426d9c4e8ee..000000000000 --- a/content/github/using-git/removing-a-remote.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Removing a remote -intro: Use the `git remote rm` command to remove a remote URL from your repository. -redirect_from: - - /articles/removing-a-remote -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The `git remote rm` command takes one argument: - -* A remote name, for example, `destination` - -### Example - -These examples assume you're [cloning using HTTPS](/articles/which-remote-url-should-i-use/#cloning-with-https-urls), which is recommended. - -```shell -$ git remote -v -# View current remotes -> origin https://{% data variables.command_line.codeblock %}/OWNER/REPOSITORY.git (fetch) -> origin https://{% data variables.command_line.codeblock %}/OWNER/REPOSITORY.git (push) -> destination https://{% data variables.command_line.codeblock %}/FORKER/REPOSITORY.git (fetch) -> destination https://{% data variables.command_line.codeblock %}/FORKER/REPOSITORY.git (push) - -$ git remote rm destination -# Remove remote -$ git remote -v -# Verify it's gone -> origin https://{% data variables.command_line.codeblock %}/OWNER/REPOSITORY.git (fetch) -> origin https://{% data variables.command_line.codeblock %}/OWNER/REPOSITORY.git (push) -``` - -{% warning %} - -**Note**: `git remote rm` does not delete the remote repository from the server. It simply -removes the remote and its references from your local repository. - -{% endwarning %} - -### Troubleshooting - -You may encounter these errors when trying to remove a remote. - -#### Could not remove config section 'remote.[name]' - -This error means that the remote you tried to delete doesn't exist: - -```shell -$ git remote rm sofake -> error: Could not remove config section 'remote.sofake' -``` - -Check that you've correctly typed the remote name. - -### Further reading - -- ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/Git-Basics-Working-with-Remotes) diff --git a/content/github/using-git/renaming-a-remote.md b/content/github/using-git/renaming-a-remote.md deleted file mode 100644 index b4f85e17b65a..000000000000 --- a/content/github/using-git/renaming-a-remote.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Renaming a remote -intro: Use the `git remote rename` command to rename an existing remote. -redirect_from: - - /articles/renaming-a-remote -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The `git remote rename` command takes two arguments: - -* An existing remote name, for example, `origin` -* A new name for the remote, for example, `destination` - -### Example - -These examples assume you're [cloning using HTTPS](/articles/which-remote-url-should-i-use/#cloning-with-https-urls), which is recommended. - -```shell -$ git remote -v -# View existing remotes -> origin https://{% data variables.command_line.codeblock %}/OWNER/REPOSITORY.git (fetch) -> origin https://{% data variables.command_line.codeblock %}/OWNER/REPOSITORY.git (push) - -$ git remote rename origin destination -# Change remote name from 'origin' to 'destination' - -$ git remote -v -# Verify remote's new name -> destination https://{% data variables.command_line.codeblock %}/OWNER/REPOSITORY.git (fetch) -> destination https://{% data variables.command_line.codeblock %}/OWNER/REPOSITORY.git (push) -``` - -### Troubleshooting - -You may encounter these errors when trying to rename a remote. - -#### Could not rename config section 'remote.[old name]' to 'remote.[new name]' - -This error means that the remote you tried the old remote name you typed doesn't exist. - -You can check which remotes currently exist with the `git remote -v` command: - -```shell -$ git remote -v -# View existing remotes -> origin https://{% data variables.command_line.codeblock %}/OWNER/REPOSITORY.git (fetch) -> origin https://{% data variables.command_line.codeblock %}/OWNER/REPOSITORY.git (push) -``` - -#### Remote [new name] already exists. - -This error means that the remote name you want to use already exists. To solve this, -either use a different remote name, or rename the original remote. - -### Further reading - -- ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/Git-Basics-Working-with-Remotes) diff --git a/content/github/using-git/resolving-merge-conflicts-after-a-git-rebase.md b/content/github/using-git/resolving-merge-conflicts-after-a-git-rebase.md deleted file mode 100644 index c1319bff007d..000000000000 --- a/content/github/using-git/resolving-merge-conflicts-after-a-git-rebase.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Resolving merge conflicts after a Git rebase -intro: 'When you perform a `git rebase` operation, you''re typically moving commits around. Because of this, you might get into a situation where a merge conflict is introduced. That means that two of your commits modified the same line in the same file, and Git doesn''t know which change to apply.' -redirect_from: - - /articles/resolving-merge-conflicts-after-a-git-rebase -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -After you reorder and manipulate commits using `git rebase`, should a merge conflict occur, Git will tell you so with the following message printed to the terminal: - -```shell -error: could not apply fa39187... something to add to patch A - -When you have resolved this problem, run "git rebase --continue". -If you prefer to skip this patch, run "git rebase --skip" instead. -To check out the original branch and stop rebasing, run "git rebase --abort". -Could not apply fa39187f3c3dfd2ab5faa38ac01cf3de7ce2e841... Change fake file -``` - -Here, Git is telling you which commit is causing the conflict (`fa39187`). You're given three choices: - -* You can run `git rebase --abort` to completely undo the rebase. Git will return you to your branch's state as it was before `git rebase` was called. -* You can run `git rebase --skip` to completely skip the commit. That means that none of the changes introduced by the problematic commit will be included. It is very rare that you would choose this option. -* You can fix the conflict. - -To fix the conflict, you can follow [the standard procedures for resolving merge conflicts from the command line](/articles/resolving-a-merge-conflict-using-the-command-line). When you're finished, you'll need to call `git rebase --continue` in order for Git to continue processing the rest of the rebase. diff --git a/content/github/using-git/setting-your-username-in-git.md b/content/github/using-git/setting-your-username-in-git.md deleted file mode 100644 index 82e47d0917fc..000000000000 --- a/content/github/using-git/setting-your-username-in-git.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Setting your username in Git -intro: 'Git uses a username to associate commits with an identity. The Git username is not the same as your {% data variables.product.product_name %} username.' -redirect_from: - - /articles/setting-your-username-in-git -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can change the name that is associated with your Git commits using the `git config` command. The new name you set will be visible in any future commits you push to {% data variables.product.product_name %} from the command line. If you'd like to keep your real name private, you can use any text as your Git username. - -Changing the name associated with your Git commits using `git config` will only affect future commits and will not change the name used for past commits. - -### Setting your Git username for *every* repository on your computer - -{% data reusables.command_line.open_the_multi_os_terminal %} - -2. {% data reusables.user_settings.set_your_git_username %} - ```shell - $ git config --global user.name "Mona Lisa" - ``` - -3. {% data reusables.user_settings.confirm_git_username_correct %} - ```shell - $ git config --global user.name - > Mona Lisa - ``` - -### Setting your Git username for a single repository - -{% data reusables.command_line.open_the_multi_os_terminal %} - -2. Change the current working directory to the local repository where you want to configure the name that is associated with your Git commits. - -3. {% data reusables.user_settings.set_your_git_username %} - ```shell - $ git config user.name "Mona Lisa" - ``` - -3. {% data reusables.user_settings.confirm_git_username_correct %} - ```shell - $ git config user.name - > Mona Lisa - ``` - -### Further reading - -- "[Setting your commit email address](/articles/setting-your-commit-email-address)" -- ["Git Configuration" from the _Pro Git_ book](https://git-scm.com/book/en/Customizing-Git-Git-Configuration) diff --git a/content/github/using-git/splitting-a-subfolder-out-into-a-new-repository.md b/content/github/using-git/splitting-a-subfolder-out-into-a-new-repository.md deleted file mode 100644 index 99e981512049..000000000000 --- a/content/github/using-git/splitting-a-subfolder-out-into-a-new-repository.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Splitting a subfolder out into a new repository -redirect_from: - - /articles/splitting-a-subpath-out-into-a-new-repository/ - - /articles/splitting-a-subfolder-out-into-a-new-repository -intro: You can turn a folder within a Git repository into a brand new repository. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -If you create a new clone of the repository, you won't lose any of your Git history or changes when you split a folder into a separate repository. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Change the current working directory to the location where you want to create your new repository. -3. Clone the repository that contains the subfolder. - ```shell - $ git clone https://{% data variables.command_line.codeblock %}/USERNAME/REPOSITORY-NAME - ``` -4. Change the current working directory to your cloned repository. - ```shell - $ cd REPOSITORY-NAME - ``` -5. To filter out the subfolder from the rest of the files in the repository, run [`git filter-branch`](https://git-scm.com/docs/git-filter-branch), supplying this information: - - `FOLDER-NAME`: The folder within your project that you'd like to create a separate repository from. - - {% windows %} - - {% tip %} - - **Tip:** Windows users should use `/` to delimit folders. - - {% endtip %} - - {% endwindows %} - - `BRANCH-NAME`: The default branch for your current project, for example, `main` or `gh-pages`. - ```shell - $ git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME BRANCH-NAME - # Filter the specified branch in your directory and remove empty commits - > Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (89/89) - > Ref 'refs/heads/BRANCH-NAME' was rewritten - ``` - The repository should now only contain the files that were in your subfolder. - -6. [Create a new repository](/articles/creating-a-new-repository/) on {% data variables.product.product_name %}. -7. At the top of your new {% data variables.product.product_name %} repository's Quick Setup page, click {% octicon "clippy" aria-label="The copy to clipboard icon" %} to copy the remote repository URL. - ![Copy remote repository URL field](/assets/images/help/repository/copy-remote-repository-url-quick-setup.png) - - {% tip %} - - **Tip:** For information on the difference between HTTPS and SSH URLs, see "[Which remote URL should I use?](/articles/which-remote-url-should-i-use)" - - {% endtip %} - -8. Check the existing remote name for your repository. For example, `origin` or `upstream` are two common choices. - ```shell - $ git remote -v - > origin https://{% data variables.command_line.codeblock %}/USERNAME/REPOSITORY-NAME.git (fetch) - > origin https://{% data variables.command_line.codeblock %}/USERNAME/REPOSITORY-NAME.git (push) - ``` - -9. Set up a new remote URL for your new repository using the existing remote name and the remote repository URL you copied in step 7. - ```shell - git remote set-url origin https://{% data variables.command_line.codeblock %}/USERNAME/NEW-REPOSITORY-NAME.git - ``` -10. Verify that the remote URL has changed with your new repository name. - ```shell - $ git remote -v - # Verify new remote URL - > origin https://{% data variables.command_line.codeblock %}/USERNAME/NEW-REPOSITORY-NAME.git (fetch) - > origin https://{% data variables.command_line.codeblock %}/USERNAME/NEW-REPOSITORY-NAME.git (push) - ``` -11. Push your changes to the new repository on {% data variables.product.product_name %}. - ```shell - git push -u origin BRANCH-NAME - ``` diff --git a/content/github/using-git/updating-credentials-from-the-macos-keychain.md b/content/github/using-git/updating-credentials-from-the-macos-keychain.md deleted file mode 100644 index 7dcf8250da2d..000000000000 --- a/content/github/using-git/updating-credentials-from-the-macos-keychain.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Updating credentials from the macOS Keychain -intro: 'You''ll need to update your saved credentials in the `git-credential-osxkeychain` helper if you change your username, password, or personal access token on {% data variables.product.product_name %}.' -redirect_from: - - /articles/updating-credentials-from-the-osx-keychain - - /github/using-git/updating-credentials-from-the-osx-keychain -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.user_settings.password-authentication-deprecation %} - -### Updating your credentials via Keychain Access - -1. Click on the Spotlight icon (magnifying glass) on the right side of the menu bar. Type `Keychain access` then press the Enter key to launch the app. - ![Spotlight Search bar](/assets/images/help/setup/keychain-access.png) -2. In Keychain Access, search for **{% data variables.command_line.backticks %}**. -3. Find the "internet password" entry for `{% data variables.command_line.backticks %}`. - ![GitHub Password Entry in Keychain](/assets/images/help/setup/keychain-entry.png) -4. Edit or delete the entry accordingly. - -### Deleting your credentials via the command line - -Through the command line, you can use the credential helper directly to erase the -keychain entry. - -To do this, type the following command: - -```shell -$ git credential-osxkeychain erase -host={% data variables.command_line.codeblock %} -protocol=https -> [Press Return] -``` - -If it's successful, nothing will print out. To test that it works, try and clone -a repository from {% data variables.product.product_location %}. If you are prompted for a password, the keychain -entry was deleted. - -### Further reading - -- "[Caching your {% data variables.product.prodname_dotcom %} credentials in Git](/github/using-git/caching-your-github-credentials-in-git/)" diff --git a/content/github/using-git/using-advanced-git-commands.md b/content/github/using-git/using-advanced-git-commands.md deleted file mode 100644 index 8d389b6c675a..000000000000 --- a/content/github/using-git/using-advanced-git-commands.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Using advanced Git commands -intro: '' -mapTopic: true -redirect_from: - - /categories/52/articles/ - - /categories/advanced-git/ - - /articles/using-advanced-git-commands - - /github/using-git/changing-author-info -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/using-git/using-common-git-commands.md b/content/github/using-git/using-common-git-commands.md deleted file mode 100644 index 723eb414d7ad..000000000000 --- a/content/github/using-git/using-common-git-commands.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Using common Git commands -intro: '' -mapTopic: true -redirect_from: - - /articles/using-common-git-commands -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/using-git/using-git-rebase-on-the-command-line.md b/content/github/using-git/using-git-rebase-on-the-command-line.md deleted file mode 100644 index 2bdf61c4abf9..000000000000 --- a/content/github/using-git/using-git-rebase-on-the-command-line.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Using Git rebase on the command line -redirect_from: - - /articles/using-git-rebase/ - - /articles/using-git-rebase-on-the-command-line -intro: Here's a short tutorial on using `git rebase` on the command line. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -In this example, we will cover all of the `git rebase` commands available, except for `exec`. - -We'll start our rebase by entering `git rebase --interactive HEAD~7` on the terminal. Our favorite text editor will display the following lines: - -``` -pick 1fc6c95 Patch A -pick 6b2481b Patch B -pick dd1475d something I want to split -pick c619268 A fix for Patch B -pick fa39187 something to add to patch A -pick 4ca2acc i cant' typ goods -pick 7b36971 something to move before patch B -``` - -In this example, we're going to: - -* Squash the fifth commit (`fa39187`) into the `"Patch A"` commit (`1fc6c95`), using `squash`. -* Move the last commit (`7b36971`) up before the `"Patch B"` commit (`6b2481b`), and keep it as `pick`. -* Merge the `"A fix for Patch B"` commit (`c619268`) into the `"Patch B"` commit (`6b2481b`), and disregard the commit message using `fixup`. -* Split the third commit (`dd1475d`) into two smaller commits, using `edit`. -* Fix the commit message of the misspelled commit (`4ca2acc`), using `reword`. - -Phew! This sounds like a lot of work, but by taking it one step at a time, we can easily make those changes. - -To start, we'll need to modify the commands in the file to look like this: - -``` -pick 1fc6c95 Patch A -squash fa39187 something to add to patch A -pick 7b36971 something to move before patch B -pick 6b2481b Patch B -fixup c619268 A fix for Patch B -edit dd1475d something I want to split -reword 4ca2acc i cant' typ goods -``` - -We've changed each line's command from `pick` to the command we're interested in. - -Now, save and close the editor; this will start the interactive rebase. - -Git skips the first rebase command, `pick 1fc6c95`, since it doesn't need to do anything. It goes to the next command, `squash fa39187`. Since this operation requires your input, Git opens your text editor once again. The file it opens up looks something like this: - -``` -# This is a combination of two commits. -# The first commit's message is: - -Patch A - -# This is the 2nd commit message: - -something to add to patch A - -# Please enter the commit message for your changes. Lines starting -# with '#' will be ignored, and an empty message aborts the commit. -# Not currently on any branch. -# Changes to be committed: -# (use "git reset HEAD ..." to unstage) -# -# modified: a -# -``` - -This file is Git's way of saying, "Hey, here's what I'm about to do with this `squash`." It lists the first commit's message (`"Patch A"`), and the second commit's message (`"something to add to patch A"`). If you're happy with these commit messages, you can save the file, and close the editor. Otherwise, you have the option of changing the commit message by simply changing the text. - -When the editor is closed, the rebase continues: - -``` -pick 1fc6c95 Patch A -squash fa39187 something to add to patch A -pick 7b36971 something to move before patch B -pick 6b2481b Patch B -fixup c619268 A fix for Patch B -edit dd1475d something I want to split -reword 4ca2acc i cant' typ goods -``` - -Git processes the two `pick` commands (for `pick 7b36971` and `pick 6b2481b`). It *also* processes the `fixup` command (`fixup c619268`), since it doesn't require any interaction. `fixup` merges the changes from `c619268` into the commit before it, `6b2481b`. Both changes will have the same commit message: `"Patch B"`. - -Git gets to the `edit dd1475d` operation, stops, and prints the following message to the terminal: - -```shell -You can amend the commit now, with - - git commit --amend - -Once you are satisfied with your changes, run - - git rebase --continue -``` - -At this point, you can edit any of the files in your project to make any additional changes. For each change you make, you'll need to perform a new commit, and you can do that by entering the `git commit --amend` command. When you're finished making all your changes, you can run `git rebase --continue`. - -Git then gets to the `reword 4ca2acc` command. It opens up your text editor one more time, and presents the following information: - -``` -i cant' typ goods - -# Please enter the commit message for your changes. Lines starting -# with '#' will be ignored, and an empty message aborts the commit. -# Not currently on any branch. -# Changes to be committed: -# (use "git reset HEAD^1 ..." to unstage) -# -# modified: a -# -``` - -As before, Git is showing the commit message for you to edit. You can change the text (`"i cant' typ goods"`), save the file, and close the editor. Git will finish the rebase and return you to the terminal. - -### Pushing rebased code to GitHub - -Since you've altered Git history, the usual `git push origin` **will not** work. You'll need to modify the command by "force-pushing" your latest changes: - -```shell -$ git push origin main --force -``` - -{% warning %} - -Force pushing has serious implications because it changes the historical sequence of commits for the branch. Use it with caution, especially if your repository is being accessed by multiple people. - -{% endwarning %} - -### Further reading - -* "[Resolving merge conflicts after a Git rebase](/articles/resolving-merge-conflicts-after-a-git-rebase)" diff --git a/content/github/using-git/which-remote-url-should-i-use.md b/content/github/using-git/which-remote-url-should-i-use.md deleted file mode 100644 index 1d90c78f9079..000000000000 --- a/content/github/using-git/which-remote-url-should-i-use.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Which remote URL should I use? -redirect_from: - - /articles/which-url-should-i-use/ - - /articles/which-remote-url-should-i-use -intro: 'There are several ways to clone repositories available on {% data variables.product.prodname_dotcom %}.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When you view a repository while signed in to your account, the URLs you can use to clone the project onto your computer are available below the repository details: - -For information on setting or changing your remote URL, see "[Changing a remote's URL](/articles/changing-a-remote-s-url)." - -### Cloning with HTTPS URLs - -The `https://` clone URLs are available on all repositories, public and private. These URLs work even if you are behind a firewall or proxy. - -When you `git clone`, `git fetch`, `git pull`, or `git push` to a remote repository using HTTPS URLs on the command line, Git will ask for your {% data variables.product.product_name %} username and password. {% data reusables.user_settings.password-authentication-deprecation %} - -{% data reusables.command_line.provide-an-access-token %} - -{% tip %} - -**Tips**: - -- You can use a credential helper so Git will remember your {% data variables.product.prodname_dotcom %} credentials every time it talks to {% data variables.product.prodname_dotcom %}. For more information, see "[Caching your {% data variables.product.prodname_dotcom %} credentials in Git](/github/using-git/caching-your-github-credentials-in-git)." - -- To clone a repository without authenticating to {% data variables.product.product_name %} on the command line, you can use {% data variables.product.prodname_desktop %} to clone instead. For more information, see "[Cloning a repository from {% data variables.product.prodname_dotcom %} to {% data variables.product.prodname_dotcom %} Desktop](/desktop/contributing-to-projects/cloning-a-repository-from-github-to-github-desktop)." - -{% endtip %} - - {% if currentVersion == "free-pro-team@latest" %}If you'd rather use SSH but cannot connect over port 22, you might be able to use SSH over the HTTPS port. For more information, see "[Using SSH over the HTTPS port](/github/authenticating-to-github/using-ssh-over-the-https-port)."{% endif %} - -### Cloning with SSH URLs - -SSH URLs provide access to a Git repository via SSH, a secure protocol. To use these URLs, you must generate an SSH keypair on your computer and add the **public** key to your {% data variables.product.product_name %} account. For more information, see "[Connecting to {% data variables.product.prodname_dotcom %} with SSH](/github/authenticating-to-github/connecting-to-github-with-ssh)." - -When you `git clone`, `git fetch`, `git pull`, or `git push` to a remote repository using SSH URLs, you'll be prompted for a password and must provide your SSH key passphrase. For more information, see "[Working with SSH key passphrases](/github/authenticating-to-github/working-with-ssh-key-passphrases)." - -{% if currentVersion == "free-pro-team@latest" %}If you are accessing an organization that uses SAML single sign-on (SSO), you must authorize your SSH key to access the organization before you authenticate. For more information, see "[About authentication with SAML single sign-on](/github/authenticating-to-github/about-authentication-with-saml-single-sign-on)" and "[Authorizing an SSH key for use with SAML single sign-on](/github/authenticating-to-github/authorizing-an-ssh-key-for-use-with-saml-single-sign-on)."{% endif %} - -{% tip %} - -**Tip**: You can use an SSH URL to clone a repository to your computer, or as a secure way of deploying your code to production servers. You can also use SSH agent forwarding with your deploy script to avoid managing keys on the server. For more information, see "[Using SSH Agent Forwarding](/v3/guides/using-ssh-agent-forwarding/)." - -{% endtip %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} - -### Cloning with {% data variables.product.prodname_cli %} - -You can also install {% data variables.product.prodname_cli %} to use {% data variables.product.product_name %} workflows in your terminal. For more information, the [{% data variables.product.prodname_cli %}](https://cli.github.com/manual/) documentation. - -{% endif %} - -### Cloning with Subversion - -You can also use a [Subversion](https://subversion.apache.org/) client to access any repository on {% data variables.product.prodname_dotcom %}. Subversion offers a different feature set than Git. For more information, see "[What are the differences between Subversion and Git?](/github/importing-your-projects-to-github/what-are-the-differences-between-subversion-and-git)" - -You can also access repositories on {% data variables.product.prodname_dotcom %} from Subversion clients. For more information, see "[Support for Subversion clients](/github/importing-your-projects-to-github/support-for-subversion-clients)." - -### Further reading - -- [Working with Remotes](https://git-scm.com/book/en/Git-Basics-Working-with-Remotes) from the _Pro Git_ book site diff --git a/content/github/using-git/why-is-git-always-asking-for-my-password.md b/content/github/using-git/why-is-git-always-asking-for-my-password.md deleted file mode 100644 index 300725069b9d..000000000000 --- a/content/github/using-git/why-is-git-always-asking-for-my-password.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Why is Git always asking for my password? -intro: 'If Git prompts you for a username and password every time you try to interact with GitHub, you''re probably using the HTTPS clone URL for your repository.' -redirect_from: - - /articles/why-is-git-always-asking-for-my-password -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Using an HTTPS remote URL has some advantages compared with using SSH. It's easier to set up than SSH, and usually works through strict firewalls and proxies. However, it also prompts you to enter your GitHub credentials every time you pull or push a repository. - -You can avoid being prompted for your password by configuring Git to [cache your credentials](/github/using-git/caching-your-github-credentials-in-git) for you. {% data reusables.user_settings.password-authentication-deprecation %} - -Once you've configured credential caching, Git automatically uses your cached personal access token in place of a password when you pull or push a repository using HTTPS. - - -### Further reading - -* "[Which remote URL should I use](/articles/which-remote-url-should-i-use/#cloning-with-https-urls)" -* "[About authentication to {% data variables.product.prodname_dotcom %}](/github/authenticating-to-github/about-authentication-to-github)" -* "[Adding your SSH key to the ssh-agent](/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#adding-your-ssh-key-to-the-ssh-agent)" diff --git a/content/github/visualizing-repository-data-with-graphs/about-repository-graphs.md b/content/github/visualizing-repository-data-with-graphs/about-repository-graphs.md deleted file mode 100644 index f536b35100ff..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/about-repository-graphs.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: About repository graphs -intro: Repository graphs help you view and analyze data for your repository. -redirect_from: - - /articles/using-graphs/ - - /articles/about-repository-graphs -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -A repository's graphs give you information on {% if currentVersion == "free-pro-team@latest" %} traffic, projects that depend on the repository,{% endif %} contributors and commits to the repository, and a repository's forks and network. If you maintain a repository, you can use this data to get a better understanding of who's using your repository and why they're using it. - -{% if currentVersion == "free-pro-team@latest" %} - -Some repository graphs are available only in public repositories with {% data variables.product.prodname_free_user %}: -- Pulse -- Contributors -- Traffic -- Commits -- Code frequency -- Network - -All other repository graphs are available in all repositories. Every repository graph is available in public and private repositories with {% data variables.product.prodname_pro %}, {% data variables.product.prodname_team %}, and {% data variables.product.prodname_ghe_cloud %}. {% data reusables.gated-features.more-info %} - -{% endif %} - -### Further reading - -- "[Accessing basic repository data](/articles/accessing-basic-repository-data)" -- "[Analyzing changes to a repository's content](/articles/analyzing-changes-to-a-repository-s-content)" -- "[Understanding connections between repositories](/articles/understanding-connections-between-repositories)" diff --git a/content/github/visualizing-repository-data-with-graphs/about-the-dependency-graph.md b/content/github/visualizing-repository-data-with-graphs/about-the-dependency-graph.md deleted file mode 100644 index e674add35621..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/about-the-dependency-graph.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: About the dependency graph -intro: 'Detailed information about the dependency graph, the ecosystems it supports, and how it determines which packages a repository depends on.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Dependency graph availability - -The dependency graph is available for every{% if currentVersion == "free-pro-team@latest" %} public{% endif %} repository that defines dependencies in a supported package ecosystem using a supported file format.{% if currentVersion == "free-pro-team@latest" %} Repository administrators can also set up the dependency graph for private repositories.{% endif %} - -{% data reusables.repositories.enable-security-alerts %} - -### About the dependency graph - -The dependency graph is a summary of the manifest and lock files stored in a repository. For each repository, it shows{% if currentVersion == "free-pro-team@latest" %}: - -- Dependencies, the ecosystems and packages it depends on -- Dependents, the repositories and packages that depend on it{% else %} dependencies, that is, the ecosystems and packages it depends on. {% data variables.product.prodname_ghe_server %} does not calculate information about dependents, the repositories and packages that depend on a repository.{% endif %} - -When you push a commit to {% data variables.product.product_name %} that changes or adds a supported manifest or lock file to the default branch, the dependency graph is automatically updated.{% if currentVersion == "free-pro-team@latest" %} In addition, the graph is updated when anyone pushes a change to the repository of one of your dependencies.{% endif %} For information on the supported ecosystems and manifest files, see "[Supported package ecosystems](#supported-package-ecosystems)" below. - -### Dependencies included - -The dependency graph includes all the dependencies of a repository that are detailed in the manifest and lock files, or their equivalent, for supported ecosystems. This includes: - -- Direct dependencies, that are explicitly defined in a manifest or lock file -- Indirect dependencies of these direct dependencies, also known as transitive dependencies or sub-dependencies - -The dependency graph identifies indirect dependencies{% if currentVersion == "free-pro-team@latest" %} either explicitly from a lock file or by checking the dependencies of your direct dependencies. For the most reliable graph, you should use lock files (or their equivalent) because they define exactly which versions of the direct and indirect dependencies you currently use. If you use lock files, you also ensure that all contributors to the repository are using the same versions, which will make it easier for you to test and debug code{% else %} from the lock files{% endif %}. - -{% if currentVersion == "free-pro-team@latest" %} -### Dependents included - -For public repositories, only public repositories that depend on it or on packages that it publishes are reported. This information is not reported for private repositories.{% endif %} - -### Using the dependency graph - -You can use the dependency graph to: - -- Explore the repositories your code depends on{% if currentVersion == "free-pro-team@latest" %}, and those that depend on it{% endif %}. For more information, see "[Exploring the dependencies of a repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository)." {% if currentVersion == "free-pro-team@latest" %} -- View a summary of the dependencies used in your organization's repositories in a single dashboard. For more information, see "[Viewing insights for your organization](/articles/viewing-insights-for-your-organization#viewing-organization-dependency-insights)."{% endif %} -- View and update vulnerable dependencies for your repository. The dependency graph lists vulnerable dependencies before other dependencies. For more information, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies)." - -### Enabling the dependency graph - -{% if currentVersion == "free-pro-team@latest" %}To generate a dependency graph, {% data variables.product.product_name %} needs read-only access to the dependency manifest and lock files for a repository. The dependency graph is automatically generated for all public repositories and you can choose to enable it for private repositories. For information about enabling or disabling it for private repositories, see "[Exploring the dependencies of a repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository)."{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.21" %}If the dependency graph is not available in your system, your site administrator can enable the dependency graph and {% data variables.product.prodname_dependabot_short %} alerts. For more information, see "[Enabling alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)."{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} If the dependency graph is not available in your system, your site administrator can enable the dependency graph and security alerts. For more information, see "[Enabling alerts for vulnerable dependencies on {% data variables.product.prodname_ghe_server %}](/enterprise/{{ currentVersion }}/admin/configuration/enabling-alerts-for-vulnerable-dependencies-on-github-enterprise-server)." - -{% endif %} - -When the dependency graph is first enabled, any manifest and lock files for supported ecosystems are parsed immediately. The graph is usually populated within minutes but this may take longer for repositories with many dependencies. Once enabled, the graph is automatically updated with every push to the repository{% if currentVersion == "free-pro-team@latest" %} and every push to other repositories in the graph{% endif %}. - -### Supported package ecosystems - -The recommended formats explicitly define which versions are used for all direct and all indirect dependencies. If you use these formats, your dependency graph is more accurate. It also reflects the current build set up and enables the dependency graph to report vulnerabilities in both direct and indirect dependencies.{% if currentVersion == "free-pro-team@latest" %} Indirect dependencies that are inferred from a manifest file (or equivalent) are excluded from the checks for vulnerable dependencies.{% endif %} - -| Package manager | Languages | Recommended formats | All supported formats | -| --- | --- | --- | ---| -| Composer | PHP | `composer.lock` | `composer.json`, `composer.lock` | -| `dotnet` CLI | .NET languages (C#, C++, F#, VB) | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj` | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj`, `packages.config` | -| Maven | Java, Scala | `pom.xml` | `pom.xml` | -| npm | JavaScript | `package-lock.json` | `package-lock.json`, `package.json`| -| Python PIP | Python | `requirements.txt`, `pipfile.lock` | `requirements.txt`, `pipfile.lock`, `setup.py`* | -| RubyGems | Ruby | `Gemfile.lock` | `Gemfile.lock`, `Gemfile`, `*.gemspec` | -| Yarn | JavaScript | `yarn.lock` | `package.json`, `yarn.lock` | - -{% note %} - -**Note:** If you list your Python dependencies within a `setup.py` file, we may not be able to parse and list every dependency in your project. - -{% endnote %} - -### Further reading - -- "[Dependency graph](https://en.wikipedia.org/wiki/Dependency_graph)" on Wikipedia -- "[Exploring the dependencies of a repository](/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository)"{% if currentVersion == "free-pro-team@latest" %} -- "[Viewing insights for your organization](/github/setting-up-and-managing-organizations-and-teams/viewing-insights-for-your-organization)" -- "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)" -- "[Troubleshooting the detection of vulnerable dependencies](/github/managing-security-vulnerabilities/troubleshooting-the-detection-of-vulnerable-dependencies)"{% endif %} diff --git a/content/github/visualizing-repository-data-with-graphs/accessing-basic-repository-data.md b/content/github/visualizing-repository-data-with-graphs/accessing-basic-repository-data.md deleted file mode 100644 index 03f4ae908a19..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/accessing-basic-repository-data.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Accessing basic repository data -intro: 'You can view basic information about a repository, such as the repository''s activity{% if currentVersion == "free-pro-team@latest" %}, traffic,{% endif %} and contribution activity.' -mapTopic: true -redirect_from: - - /articles/accessing-basic-repository-data -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/visualizing-repository-data-with-graphs/analyzing-changes-to-a-repositorys-content.md b/content/github/visualizing-repository-data-with-graphs/analyzing-changes-to-a-repositorys-content.md deleted file mode 100644 index be9f00d68ed9..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/analyzing-changes-to-a-repositorys-content.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Analyzing changes to a repository's content -intro: 'You can see the changes to the content of a repository by analyzing the repository''s commits, commit frequency, and content additions and deletions.' -redirect_from: - - /articles/viewing-commit-frequency-in-a-repository/ - - /articles/analyzing-changes-to-a-repository-s-content - - /articles/analyzing-changes-to-a-repositorys-content -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository.md b/content/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository.md deleted file mode 100644 index 3b3df2d46e4f..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/exploring-the-dependencies-of-a-repository.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Exploring the dependencies of a repository -intro: 'Using the dependency graph, you can see the packages your project depends on{% if currentVersion == "free-pro-team@latest" %} and the repositories that depend on it{% endif %}. In addition, you can see any vulnerabilities detected in its dependencies.' -redirect_from: - - /articles/listing-the-packages-that-a-repository-depends-on - - /github/visualizing-repository-data-with-graphs/listing-the-packages-that-a-repository-depends-on - - /articles/listing-the-projects-that-depend-on-a-repository - - /github/visualizing-repository-data-with-graphs/listing-the-projects-that-depend-on-a-repository - - /github/visualizing-repository-data-with-graphs/exploring-the-dependencies-and-dependents-of-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Viewing the dependency graph - -{% data reusables.repositories.enable-security-alerts %} - -The dependency graph shows the dependencies{% if currentVersion == "free-pro-team@latest" %} and dependents{% endif %} of your repository. For information about the detection of dependencies and which ecosystems are supported, see "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -{% data reusables.repositories.click-dependency-graph %}{% if currentVersion == "free-pro-team@latest" %} -4. Optionally, under "Dependency graph", click **Dependents**. -![Dependents tab on the dependency graph page](/assets/images/help/graphs/dependency-graph-dependents-tab.png){% endif %} - -#### Dependencies view - -{% if currentVersion == "free-pro-team@latest" %} -Dependencies are grouped by ecosystem. You can expand a dependency to view its dependencies. For dependencies on public repositories hosted on {% data variables.product.product_name %}, you can also click a dependency to view the repository. Dependencies on private repositories, private packages, or unrecognized files are shown in plain text. - -If vulnerabilities have been detected in the repository, these are shown at the top of the view for users with access to {% data variables.product.prodname_dependabot_alerts %}. - -![Dependencies graph](/assets/images/help/graphs/dependencies_graph.png) - -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_gt "enterprise-server@2.21" %} -Any direct and indirect dependencies that are specified in the repository's manifest or lock files are listed, grouped by ecosystem. If vulnerabilities have been detected in the repository, these are shown at the top of the view for users with access to {% data variables.product.prodname_dependabot_short %} alerts. - -{% note %} - -**Note:** {% data variables.product.prodname_ghe_server %} does not populate the **Dependents** view. - -{% endnote %} - -![Dependencies graph](/assets/images/help/graphs/dependencies_graph_server.png) - -{% note %} - -**Note:** {% data variables.product.prodname_ghe_server %} does not populate the **Dependents** view. - -{% endnote %} - -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} -Any direct and indirect dependencies that are specified in the repository's manifest or lock files are listed, grouped by ecosystem. If vulnerabilities have been detected in the repository, these are shown at the top of the view for users with access to security alerts. - -{% note %} - -**Note:** {% data variables.product.prodname_ghe_server %} does not populate the **Dependents** view. - -{% endnote %} - -![Dependencies graph](/assets/images/help/graphs/dependencies_graph_server.png) - -{% note %} - -**Note:** {% data variables.product.prodname_ghe_server %} does not populate the **Dependents** view. - -{% endnote %} - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -#### Dependents view - -For public repositories, the dependents view shows how the repository is used by other repositories. To show only the repositories that contain a library in a package manager, click **NUMBER Packages** immediately above the list of dependent repositories. The dependent counts are approximate and may not always match the dependents listed. - -![Dependents graph](/assets/images/help/graphs/dependents_graph.png) - -### Enabling and disabling the dependency graph for a private repository - -Repository administrators can enable or disable the dependency graph for private repositories. - -You can also enable or disable the dependency graph for all repositories owned by your user account or organization. For more information, see "[Managing security and analysis settings for your user account](/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account)" or "[Managing security and analysis settings for your organization](/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization)." - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.repositories.navigate-to-security-and-analysis %} -4. Read the message about granting {% data variables.product.product_name %} read-only access to the repository data to enable the dependency graph, then next to "Dependency Graph", click **Enable**. - !["Enable" button for the dependency graph](/assets/images/help/repository/dependency-graph-enable-button.png) - -You can disable the dependency graph at any time by clicking **Disable** next to "Dependency Graph" on the Security & analysis tab. -{% endif %} - -### Troubleshooting the dependency graph - -If your dependency graph is empty, there may be a problem with the file containing your dependencies. Check the file to ensure that it's correctly formatted for the file type. - -{% if currentVersion == "free-pro-team@latest" %} -If the file is correctly formatted, then check its size. The dependency graph ignores individual manifest and lock files that are over 0.5 Mb, unless you are a {% data variables.product.prodname_enterprise %} user. It processes up to 20 manifest or lock files per repository by default, so you can split dependencies into smaller files in subdirectories of the repository.{% endif %} - -If a manifest or lock file is not processed, its dependencies are omitted from the dependency graph and they can't be checked for vulnerable dependencies. - -### Further reading - -- "[About the dependency graph](/github/visualizing-repository-data-with-graphs/about-the-dependency-graph)"{% if currentVersion == "free-pro-team@latest" %} -- "[Viewing insights for your organization](/github/setting-up-and-managing-organizations-and-teams/viewing-insights-for-your-organization)" -- "[Viewing and updating vulnerable dependencies in your repository](/github/managing-security-vulnerabilities/viewing-and-updating-vulnerable-dependencies-in-your-repository)" -- "[Understanding how {% data variables.product.product_name %} uses and protects your data](/github/understanding-how-github-uses-and-protects-your-data)" -{% endif %} diff --git a/content/github/visualizing-repository-data-with-graphs/index.md b/content/github/visualizing-repository-data-with-graphs/index.md deleted file mode 100644 index ec458b1c5c0a..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/index.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Visualizing repository data with graphs -redirect_from: - - /categories/44/articles/ - - /categories/graphs-and-contributions/ - - /categories/graphs/ - - /categories/visualizing-repository-data-with-graphs -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /accessing-basic-repository-data %} - {% link_in_list /about-repository-graphs %} - {% link_in_list /viewing-a-summary-of-repository-activity %} - {% link_in_list /viewing-a-projects-contributors %} - - {% link_in_list /viewing-traffic-to-a-repository %} - -{% topic_link_in_list /analyzing-changes-to-a-repositorys-content %} - {% link_in_list /visualizing-commits-in-a-repository %} - {% link_in_list /visualizing-additions-and-deletions-to-content-in-a-repository %} -{% topic_link_in_list /understanding-connections-between-repositories %} - {% link_in_list /viewing-a-repositorys-network %} - {% link_in_list /listing-the-forks-of-a-repository %} - - {% link_in_list /about-the-dependency-graph %} - {% link_in_list /exploring-the-dependencies-of-a-repository %} - diff --git a/content/github/visualizing-repository-data-with-graphs/listing-the-forks-of-a-repository.md b/content/github/visualizing-repository-data-with-graphs/listing-the-forks-of-a-repository.md deleted file mode 100644 index aeb0b6a6f103..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/listing-the-forks-of-a-repository.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Listing the forks of a repository -intro: The Members graph displays all the forks of a repository. -redirect_from: - - /articles/listing-the-forks-of-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Forks are listed alphabetically by the username of the person who forked the repository. You can click on the username to be redirected to the user's {% data variables.product.product_name %} profile page or click on the fork name to be redirected to the specific fork of the repository. - -{% if currentVersion == "free-pro-team@latest" %} - -![Repository members graph](/assets/images/help/graphs/repo_forks_graph_dotcom.png) - -{% else %} - -![Repository members graph](/assets/images/help/graphs/repo_members_graph.png) - -{% endif %} - -### Accessing the Members graph - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -3. In the left sidebar, click **Forks**. -![Forks tab](/assets/images/help/graphs/graphs-sidebar-forks-tab.png) diff --git a/content/github/visualizing-repository-data-with-graphs/understanding-connections-between-repositories.md b/content/github/visualizing-repository-data-with-graphs/understanding-connections-between-repositories.md deleted file mode 100644 index 2b985da2fabe..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/understanding-connections-between-repositories.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Understanding connections between repositories -intro: 'You can better understand the connections that exist between repositories by viewing a repository''s network{% if currentVersion == "free-pro-team@latest" %}, projects that depend on the repository,{% endif %} and its forks.' -mapTopic: true -redirect_from: - - /articles/understanding-connections-between-repositories -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/visualizing-repository-data-with-graphs/viewing-a-projects-contributors.md b/content/github/visualizing-repository-data-with-graphs/viewing-a-projects-contributors.md deleted file mode 100644 index b93a7ed74081..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/viewing-a-projects-contributors.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Viewing a project's contributors -intro: 'You can see who contributed commits to a repository{% if currentVersion == "free-pro-team@latest" %} and its dependencies{% endif %}.' -redirect_from: - - /articles/i-don-t-see-myself-in-the-contributions-graph/ - - /articles/viewing-contribution-activity-in-a-repository/ - - /articles/viewing-a-projects-contributors -product: '{% data reusables.gated-features.repository-insights %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About contributors - -You can view the top 100 contributors to a repository{% if enterpriseServerVersions contains currentVersion %}, including commit co-authors,{% endif %} in the contributors graph. Merge commits and empty commits aren't counted as contributions for this graph. - -{% if currentVersion == "free-pro-team@latest" %} -You can also see a list of people who have contributed to the project's Python dependencies. To access this list of community contributors, visit `https://github.com/REPO-OWNER/REPO-NAME/community_contributors`. -{% endif %} - -### Accessing the contributors graph - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -3. In the left sidebar, click **Contributors**. - ![Contributors tab](/assets/images/help/graphs/contributors_tab.png) -4. Optionally, to view contributors during a specific time period, click, then drag until the time period is selected. - ![Selected time range in the contributors graph](/assets/images/help/graphs/repo_contributors_click_drag_graph.png) - -### Troubleshooting contributors - -If you don't appear in a repository's contributors graph, it may be because: -- You aren't one of the top 100 contributors. -- Your commits haven't been merged into the default branch. -- The email address you used to author the commits hasn't been added to your {% data variables.product.product_name %} account. - -{% tip %} - -**Tip:** To list all commit contributors in a repository, see "[Repositories](/v3/repos/#list-contributors)." - -{% endtip %} - -If all your commits in the repository are on non-default branches, you won't be in the contributors graph. For example, commits on the `gh-pages` branch aren't included in the graph unless `gh-pages` is the repository's default branch. To have your commits merged into the default branch, you can create a pull request. For more information, see "[About pull requests](/articles/about-pull-requests)." - -If the email address you used to author the commits has not been added to your {% data variables.product.product_name %} account, your commits won't be linked to your account, and you won't appear in the contributors graph. For more information, see "[Setting your commit email address](/articles/setting-your-commit-email-address)" and "[Adding an email address to your {% data variables.product.product_name %} account](/articles/adding-an-email-address-to-your-github-account)." diff --git a/content/github/visualizing-repository-data-with-graphs/viewing-a-repositorys-network.md b/content/github/visualizing-repository-data-with-graphs/viewing-a-repositorys-network.md deleted file mode 100644 index d7ff2fb82dc6..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/viewing-a-repositorys-network.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Viewing a repository's network -intro: 'The network graph displays the branch history of the entire repository network, including branches of the root repository and branches of forks that contain commits unique to the network.' -product: '{% data reusables.gated-features.repository-insights %}' -redirect_from: - - /articles/viewing-a-repository-s-network - - /articles/viewing-a-repositorys-network -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -![Repository network graph](/assets/images/help/graphs/repo_network_graph.png) - -{% tip %} - -**Tip:** To see older branches, click and drag within the graph. - -{% endtip %} - -### Accessing the network graph - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -3. In the left sidebar, click **Network**. -![Network tab](/assets/images/help/graphs/network_tab.png) diff --git a/content/github/visualizing-repository-data-with-graphs/viewing-a-summary-of-repository-activity.md b/content/github/visualizing-repository-data-with-graphs/viewing-a-summary-of-repository-activity.md deleted file mode 100644 index 920ce7163c11..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/viewing-a-summary-of-repository-activity.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Viewing a summary of repository activity -intro: 'You can view an overview of a repository''s activity through Pulse. Pulse includes a list of open and merged pull requests, open and closed issues, and a graph showing the commit activity for the top 15 users who committed to the default branch of the project in the selected [time period](/articles/viewing-a-summary-of-repository-activity#filtering-by-time).' -product: '{% data reusables.gated-features.repository-insights %}' -redirect_from: - - /articles/viewing-a-summary-of-repository-activity -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Commit co-authors are included in the commit activity summary if their commits were merged into the repository's default branch and they're in the top 15 users who have contributed the most commits. - -### Accessing pulse - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} - -### Filtering by time - -By default, Pulse shows the last seven days of repository activity. To choose a different time period, click the **Period** dropdown in the upper-right corner of the Pulse overview. - -![Filtering Pulse activity by time](/assets/images/help/pulse/pulse_time_filter_dropdown.png) diff --git a/content/github/visualizing-repository-data-with-graphs/viewing-traffic-to-a-repository.md b/content/github/visualizing-repository-data-with-graphs/viewing-traffic-to-a-repository.md deleted file mode 100644 index 5597ba968207..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/viewing-traffic-to-a-repository.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Viewing traffic to a repository -intro: 'Anyone with push access to a repository can view its traffic, including full clones (not fetches), visitors from the past 14 days, referring sites, and popular content in the traffic graph.' -product: 'This repository insights graph is available in public repositories with {% data variables.product.prodname_free_user %} and {% data variables.product.prodname_free_team %} for organizations, and in public and private repositories with {% data variables.product.prodname_pro %}, {% data variables.product.prodname_team %}, and {% data variables.product.prodname_ghe_cloud %}.{% if currentVersion == "free-pro-team@latest" %} For more information, see "[About repository graphs](/articles/about-repository-graphs)" and "[{% data variables.product.prodname_dotcom %}''s products](/articles/github-s-products)."{% endif %}' -redirect_from: - - /articles/viewing-traffic-to-a-repository -versions: - free-pro-team: '*' ---- - -You can navigate to referring sites, excluding search engines and {% data variables.product.product_name %} itself, from the links the specific paths were referred from. The popular content links to the specific content that generated traffic. - -Referring sites and popular content are ordered by views and unique visitors. Full clones and visitor information update hourly, while referring sites and popular content sections update daily. All data in the traffic graph uses the UTC+0 timezone, regardless of your location. - -{% tip %} - -**Tip:** You can hover over a specific day in the traffic graph to view the exact data for that day. - -{% endtip %} - -![Repository traffic graphs with tooltip](/assets/images/help/graphs/repo_traffic_graphs_tooltip_dotcom.png) - -### Accessing the traffic graph - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -3. In the left sidebar, click **Traffic**. -![Traffic tab](/assets/images/help/graphs/traffic_tab.png) diff --git a/content/github/visualizing-repository-data-with-graphs/visualizing-additions-and-deletions-to-content-in-a-repository.md b/content/github/visualizing-repository-data-with-graphs/visualizing-additions-and-deletions-to-content-in-a-repository.md deleted file mode 100644 index 891553932bf7..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/visualizing-additions-and-deletions-to-content-in-a-repository.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Visualizing additions and deletions to content in a repository -intro: The code frequency graph displays the content additions and deletions for each week in a repository's history. -product: '{% data reusables.gated-features.repository-insights %}' -redirect_from: - - /articles/visualizing-additions-and-deletions-to-content-in-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% if currentVersion == "free-pro-team@latest" %} - -![Code frequency graph](/assets/images/help/graphs/repo_code_frequency_graph_dotcom.png) - -{% endif %} - -### Accessing the code frequency graph - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -3. In the left sidebar, click **Code frequency**. -![Code frequency tab](/assets/images/help/graphs/code_frequency_tab.png) diff --git a/content/github/visualizing-repository-data-with-graphs/visualizing-commits-in-a-repository.md b/content/github/visualizing-repository-data-with-graphs/visualizing-commits-in-a-repository.md deleted file mode 100644 index 51eb201915a7..000000000000 --- a/content/github/visualizing-repository-data-with-graphs/visualizing-commits-in-a-repository.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Visualizing commits in a repository -intro: You can see all commits made to a repository in the past year (excluding merge commits) in the Commit graph. -product: '{% data reusables.gated-features.repository-insights %}' -redirect_from: - - /articles/visualizing-commits-in-a-repository -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The top graph shows commits for the entire year by week. - -![Repository commit year graph](/assets/images/help/graphs/repo_commit_activity_year_graph.png) - -The bottom graph shows the average number of commits by day of the week for the selected week. - -![Repository commit week graph](/assets/images/help/graphs/repo_commit_activity_week_graph.png) - -### Accessing the commits graph - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.accessing-repository-graphs %} -3. In the left sidebar, click **Commits**. -![Commits tab](/assets/images/help/graphs/commits_tab.png) diff --git a/content/github/working-with-github-pages/about-custom-domains-and-github-pages.md b/content/github/working-with-github-pages/about-custom-domains-and-github-pages.md deleted file mode 100644 index 6e91515f9288..000000000000 --- a/content/github/working-with-github-pages/about-custom-domains-and-github-pages.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: About custom domains and GitHub Pages -intro: '{% data variables.product.prodname_pages %} supports using custom domains, or changing the root of your site''s URL from the default, like `octocat.github.io`, to any domain you own.' -redirect_from: - - /articles/about-custom-domains-for-github-pages-sites/ - - /articles/about-supported-custom-domains/ - - /articles/custom-domain-redirects-for-your-github-pages-site/ - - /articles/about-custom-domains-and-github-pages -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' ---- - -### Supported custom domains - -{% data variables.product.prodname_pages %} works with two types of domains: subdomains and apex domains. For a list of unsupported custom domains, see "[Troubleshooting custom domains and {% data variables.product.prodname_pages %}](/articles/troubleshooting-custom-domains-and-github-pages/#custom-domain-names-that-are-unsupported)." - -| Supported custom domain type | Example | -|---|---| -| `www` subdomain | `www.example.com` | -| Custom subdomain | `blog.example.com` | -| Apex domain | `example.com` | - -You can set up either or both types of custom domains for your site. We recommend always using a `www` subdomain, even if you also use an apex domain. For more information, see "[Using an apex domain for your {% data variables.product.prodname_pages %} site](#using-an-apex-domain-for-your-github-pages-site)." - -After you configure a custom domain for a user or organization site, the custom domain will replace the `.github.io` or `.github.io` portion of the URL for any project sites owned by the account that do not have a custom domain configured. For example, if the custom domain for your user site is `www.octocat.com`, and you have a project site with no custom domain configured that is published from a repository called `octo-project`, the {% data variables.product.prodname_pages %} site for that repository will be available at `www.octocat.com/octo-project`. - -### Using a subdomain for your {% data variables.product.prodname_pages %} site - -A subdomain is the part of a URL before the root domain. You can configure your subdomain as `www` or as a distinct section of your site, like `blog.example.com`. - -Subdomains are configured with a `CNAME` record through your DNS provider. For more information, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site#configuring-a-subdomain)." - -#### `www` subdomains - -A `www` subdomain is the most commonly used type of subdomain. For example, `www.example.com` includes a `www` subdomain. - -`www` subdomains are the most stable type of custom domain because `www` subdomains are not affected by changes to the IP addresses of {% data variables.product.product_name %}'s servers. Your site will also load faster because Denial of Service (DoS) attack protection can be implemented more efficiently. - -#### Custom subdomains - -A custom subdomain is a type of subdomain that doesn't use the standard `www` subdomain. Custom subdomains are mostly used when you want two distinct sections of your site. For example, you can create a site called `blog.example.com` and customize that section independently from `www.example.com`. - -### Using an apex domain for your {% data variables.product.prodname_pages %} site - -An apex domain is a custom domain that does not contain a subdomain, such as `example.com`. Apex domains are also known as base, bare, naked, root apex, or zone apex domains. - -An apex domain is configured with an `A`, `ALIAS`, or `ANAME` record through your DNS provider. For more information, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site#configuring-an-apex-domain)." - -{% data reusables.pages.www-and-apex-domain-recommendation %} - -### Updating custom domains when your {% data variables.product.prodname_pages %} site is disabled - -If your {% data variables.product.prodname_pages %} site is disabled but has a custom domain set up, you should immediately update or remove your DNS records with your DNS provider to avoid the risk of a domain takeover. Having a custom domain configured with your DNS provider while your site is disabled could result in someone else hosting a site on one of your subdomains. For more information, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site)." - -There are a couple of reasons your site might be automatically disabled. - -- If you downgrade from {% data variables.product.prodname_pro %} to {% data variables.product.prodname_free_user %}, any {% data variables.product.prodname_pages %} sites that are currently published from private repositories in your account will be unpublished. For more information, see "[Downgrading your {% data variables.product.prodname_dotcom %} billing plan](/articles/downgrading-your-github-billing-plan)." -- If you transfer a private repository to a personal account that is using {% data variables.product.prodname_free_user %}, the repository will lose access to the {% data variables.product.prodname_pages %} feature, and the currently published {% data variables.product.prodname_pages %} site will be unpublished. For more information, see "[Transferring a repository](/articles/transferring-a-repository)." - -### Further reading - -- "[Troubleshooting custom domains and {% data variables.product.prodname_pages %}](/articles/troubleshooting-custom-domains-and-github-pages)" diff --git a/content/github/working-with-github-pages/about-github-pages-and-jekyll.md b/content/github/working-with-github-pages/about-github-pages-and-jekyll.md deleted file mode 100644 index b4b20f3fcda9..000000000000 --- a/content/github/working-with-github-pages/about-github-pages-and-jekyll.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: About GitHub Pages and Jekyll -intro: 'Jekyll is a static site generator with built-in support for {% data variables.product.prodname_pages %}.' -redirect_from: - - /articles/about-jekyll-themes-on-github - - /articles/configuring-jekyll - - /articles/configuring-jekyll-plugins - - /articles/using-syntax-highlighting-on-github-pages - - /articles/files-that-start-with-an-underscore-are-missing - - /articles/sitemaps-for-github-pages/ - - /articles/search-engine-optimization-for-github-pages/ - - /articles/repository-metadata-on-github-pages/ - - /articles/atom-rss-feeds-for-github-pages/ - - /articles/redirects-on-github-pages/ - - /articles/emoji-on-github-pages/ - - /articles/mentions-on-github-pages/ - - /articles/using-jekyll-plugins-with-github-pages/ - - /articles/adding-jekyll-plugins-to-a-github-pages-site/ - - /articles/about-github-pages-and-jekyll -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About Jekyll - -Jekyll is a static site generator with built-in support for {% data variables.product.prodname_pages %} and a simplified build process. Jekyll takes Markdown and HTML files and creates a complete static website based on your choice of layouts. Jekyll supports Markdown and Liquid, a templating language that loads dynamic content on your site. For more information, see [Jekyll](https://jekyllrb.com/). - -Jekyll is not officially supported for Windows. For more information, see "[Jekyll on Windows](http://jekyllrb.com/docs/windows/#installation)" in the Jekyll documentation. - -We recommend using Jekyll with {% data variables.product.prodname_pages %}. If you prefer, you can use other static site generators or customize your own build process locally or on another server. For more information, see "[About {% data variables.product.prodname_pages %}](/articles/about-github-pages#static-site-generators)." - -### Configuring Jekyll in your {% data variables.product.prodname_pages %} site - -You can configure most Jekyll settings, such as your site's theme and plugins, by editing your *_config.yml* file. For more information, see "[Configuration](https://jekyllrb.com/docs/configuration/)" in the Jekyll documentation. - -Some configuration settings cannot be changed for {% data variables.product.prodname_pages %} sites. - -``` -lsi: false -safe: true -source: [your repo's top level directory] -incremental: false -highlighter: rouge -gist: - noscript: false -kramdown: - math_engine: mathjax - syntax_highlighter: rouge -``` - -By default, Jekyll doesn't build files or folders that: -- are located in a folder called `/node_modules` or `/vendor` -- start with `_`, `.`, or `#` -- end with `~` -- are excluded by the `exclude` setting in your configuration file - -If you want Jekyll to process any of these files, you can use the `includes` setting in your configuration file. - -### Front matter - -{% data reusables.pages.about-front-matter %} - -You can add `site.github` to a post or page to add any repository references metadata to your site. For more information, see "[Using `site.github`](https://jekyll.github.io/github-metadata/site.github/)" in the Jekyll Metadata documentation. - -### Themes - -{% data reusables.pages.add-jekyll-theme %} For more information, see "[Themes](https://jekyllrb.com/docs/themes/)" in the Jekyll documentation. - -{% if currentVersion == "free-pro-team@latest" %} -You can add a supported theme to your site on {% data variables.product.prodname_dotcom %}. For more information, see "[Supported themes](https://pages.github.com/themes/)" on the {% data variables.product.prodname_pages %} site and "[Adding a theme to your {% data variables.product.prodname_pages %} site with the theme chooser](/articles/adding-a-theme-to-your-github-pages-site-with-the-theme-chooser)." - -To use any other open source Jekyll theme hosted on {% data variables.product.prodname_dotcom %}, you can add the theme manually.{% else %} You can add a theme to your site manually.{% endif %} For more information, see{% if currentVersion == "free-pro-team@latest" %} [themes hosted on {% data variables.product.prodname_dotcom %}](https://github.com/topics/jekyll-theme) and{% else %} "[Supported themes](https://pages.github.com/themes/)" on the {% data variables.product.prodname_pages %} site and{% endif %} "[Adding a theme to your {% data variables.product.prodname_pages %} site using Jekyll](/articles/adding-a-theme-to-your-github-pages-site-using-jekyll)." - -You can override any of your theme's defaults by editing the theme's files. For more information, see your theme's documentation and "[Overriding your theme's defaults](https://jekyllrb.com/docs/themes/#overriding-theme-defaults)" in the Jekyll documentation. - -### Plugins - -You can download or create Jekyll plugins to extend the functionality of Jekyll for your site. For example, the [jemoji](https://github.com/jekyll/jemoji) plugin lets you use {% data variables.product.prodname_dotcom %}-flavored emoji in any page on your site the same way you would on {% data variables.product.prodname_dotcom %}. For more information, see "[Plugins](https://jekyllrb.com/docs/plugins/)" in the Jekyll documentation. - -{% data variables.product.prodname_pages %} uses plugins that are enabled by default and cannot be disabled: -- [`jekyll-coffeescript`](https://github.com/jekyll/jekyll-coffeescript) -- [`jekyll-default-layout`](https://github.com/benbalter/jekyll-default-layout) -- [`jekyll-gist`](https://github.com/jekyll/jekyll-gist) -- [`jekyll-github-metadata`](https://github.com/jekyll/github-metadata) -- [`jekyll-optional-front-matter`](https://github.com/benbalter/jekyll-optional-front-matter) -- [`jekyll-paginate`](https://github.com/jekyll/jekyll-paginate) -- [`jekyll-readme-index`](https://github.com/benbalter/jekyll-readme-index) -- [`jekyll-titles-from-headings`](https://github.com/benbalter/jekyll-titles-from-headings) -- [`jekyll-relative-links`](https://github.com/benbalter/jekyll-relative-links) - -You can enable additional plugins by adding the plugin's gem to the `plugins` setting in your *_config.yml* file. For more information, see "[Configuration](https://jekyllrb.com/docs/configuration/)" in the Jekyll documentation. For a list of supported plugins, see "[Dependency versions](https://pages.github.com/versions/)" on the {% data variables.product.prodname_pages %} site. - -For usage information for a specific plugin, see the plugin's documentation. - -{% tip %} - -**Tip:** You can make sure you're using the latest version of all plugins by keeping the {% data variables.product.prodname_pages %} gem updated. For more information, see "[Testing your GitHub Pages site locally with Jekyll](/articles/testing-your-github-pages-site-locally-with-jekyll#updating-the-github-pages-gem)" and "[Dependency versions](https://pages.github.com/versions/)" on the {% data variables.product.prodname_pages %} site. - -{% endtip %} - -{% data variables.product.prodname_pages %} cannot build sites using unsupported plugins. If you want to use unsupported plugins, generate your site locally and then push your site's static files to {% data variables.product.product_name %}. - -### Syntax highlighting - -To make your site easier to read, code snippets are highlighted on {% data variables.product.prodname_pages %} sites the same way they're highlighted on {% data variables.product.product_name %}. For more information about syntax highlighting on {% data variables.product.product_name %}, see "[Creating and highlighting code blocks](/articles/creating-and-highlighting-code-blocks)." - -By default, code blocks on your site will be highlighted by Jekyll. Jekyll uses the [Rouge](https://github.com/jneen/rouge) highlighter, which is compatible with [Pygments](http://pygments.org/). If you specify Pygments in your *_config.yml* file, Rouge will be used instead. Jekyll cannot use any other syntax highlighter, and you'll get a page build warning if you specify another syntax highlighter in your *_config.yml* file. For more information, see "[About Jekyll build errors for {% data variables.product.prodname_pages %} sites](/articles/about-jekyll-build-errors-for-github-pages-sites)." - -If you want to use another highlighter, such as `highlight.js`, you must disable Jekyll's syntax highlighting by updating your project's *_config.yml* file. - -``` -kramdown: - syntax_highlighter_opts: - disable : true -``` - -If your theme doesn't include CSS for syntax highlighting, you can generate {% data variables.product.prodname_dotcom %}'s syntax highlighting CSS and add it to your project's `style.css` file. - -```shell -$ rougify style github > style.css -``` - -### Building your site locally - -{% data reusables.pages.test-locally %} diff --git a/content/github/working-with-github-pages/about-github-pages.md b/content/github/working-with-github-pages/about-github-pages.md deleted file mode 100644 index 9f14c1420e30..000000000000 --- a/content/github/working-with-github-pages/about-github-pages.md +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: About GitHub Pages -intro: 'You can use {% data variables.product.prodname_pages %} to host a website about yourself, your organization, or your project directly from a {% data variables.product.product_name %} repository.' -redirect_from: - - /articles/what-are-github-pages/ - - /articles/what-is-github-pages/ - - /articles/user-organization-and-project-pages/ - - /articles/using-a-static-site-generator-other-than-jekyll/ - - /articles/mime-types-on-github-pages/ - - /articles/should-i-rename-usernamegithubcom-repositories-to-usernamegithubio/ - - /articles/about-github-pages -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About {% data variables.product.prodname_pages %} - -{% data variables.product.prodname_pages %} is a static site hosting service that takes HTML, CSS, and JavaScript files straight from a repository on {% data variables.product.product_name %}, optionally runs the files through a build process, and publishes a website. You can see examples of {% data variables.product.prodname_pages %} sites in the [{% data variables.product.prodname_pages %} examples collection](https://github.com/collections/github-pages-examples). - -{% if currentVersion == "free-pro-team@latest" %} -You can host your site on {% data variables.product.prodname_dotcom %}'s `github.io` domain or your own custom domain. For more information, see "[Using a custom domain with {% data variables.product.prodname_pages %}](/articles/using-a-custom-domain-with-github-pages)." -{% endif %} - -To get started, see "[Creating a {% data variables.product.prodname_pages %} site](/articles/creating-a-github-pages-site)." - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -Organization owners can disable the publication of {% data variables.product.prodname_pages %} sites from the organization's repositories. For more information, see "[Disabling publication of {% data variables.product.prodname_pages %} sites for your organization](/github/setting-up-and-managing-organizations-and-teams/disabling-publication-of-github-pages-sites-for-your-organization)." -{% endif %} - -### Types of {% data variables.product.prodname_pages %} sites - -There are three types of {% data variables.product.prodname_pages %} sites: project, user, and organization. Project sites are connected to a specific project hosted on {% data variables.product.product_name %}, such as a JavaScript library or a recipe collection. User and organization sites are connected to a specific {% data variables.product.product_name %} account. - -To publish a user site, you must create a repository owned by your user account that's named {% if currentVersion == "free-pro-team@latest" %}`.github.io`{% else %}`.`{% endif %}. To publish an organization site, you must create a repository owned by an organization that's named {% if currentVersion == "free-pro-team@latest" %}`.github.io`{% else %}`.`{% endif %}. {% if currentVersion == "free-pro-team@latest" %}Unless you're using a custom domain, user and organization sites are available at `http(s)://.github.io` or `http(s)://.github.io`.{% endif %} - -The source files for a project site are stored in the same repository as their project. {% if currentVersion == "free-pro-team@latest" %}Unless you're using a custom domain, project sites are available at `http(s)://.github.io/` or `http(s)://.github.io/`.{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -For more information about how custom domains affect the URL for your site, see "[About custom domains and {% data variables.product.prodname_pages %}](/articles/about-custom-domains-and-github-pages)." -{% endif %} - -You can only create one user or organization site for each {% data variables.product.product_name %} account. Project sites, whether owned by an organization or a user account, are unlimited. - -{% if enterpriseServerVersions contains currentVersion %} -The URL where your site is available depends on whether subdomain isolation is enabled for {% data variables.product.product_location %}. - -| Type of site | Subdomain isolation enabled | Subdomain isolation disabled | -| ------------ | --------------------------- | ---------------------------- | -User | `http(s)://pages.///` | `http(s):///pages///` | -Organization | `http(s)://pages.///` | `http(s):///pages///` | -Project site owned by user account | `http(s)://pages.///` | `http(s):///pages///` -Project site owned by organization account | `http(s)://pages.///` | `http(s):///pages///` - -For more information, see "[Enabling subdomain isolation](/enterprise/{{ currentVersion }}/admin/installation/enabling-subdomain-isolation)" or contact your site administrator. -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -{% note %} - -**Note:** Repositories using the legacy `.github.com` naming scheme will still be published, but visitors will be redirected from `http(s)://.github.com` to `http(s)://.github.io`. If both a `.github.com` and `.github.io` repository exist, only the `.github.io` repository will be published. - -{% endnote %} -{% endif %} - -### Publishing sources for {% data variables.product.prodname_pages %} sites - -The publishing source for your {% data variables.product.prodname_pages %} site is the branch and folder where the source files for your site are stored. - -{% data reusables.pages.private_pages_are_public_warning %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} - -If the default publishing source exists in your repository, {% data variables.product.prodname_pages %} will automatically publish a site from that source. The default publishing source for user and organization sites is the root of the default branch for the repository. The default publishing source for project sites is the root of the `gh-pages` branch. - -If you want to keep the source files for your site in a different location, you can change the publishing source for your site. You can publish your site from any branch in the repository, either from the root of the repository on that branch, `/`, or from the `/docs` folder on that branch. For more information, see "[Configuring a publishing source for your {% data variables.product.prodname_pages %} site](/articles/configuring-a-publishing-source-for-your-github-pages-site#choosing-a-publishing-source)." - -If you choose the `/docs` folder of any branch as your publishing source, {% data variables.product.prodname_pages %} will read everything to publish your site{% if currentVersion == "free-pro-team@latest" %}, including the _CNAME_ file,{% endif %} from the `/docs` folder.{% if currentVersion == "free-pro-team@latest" %} For example, when you edit your custom domain through the {% data variables.product.prodname_pages %} settings, the custom domain will write to `/docs/CNAME`. For more information about _CNAME_ files, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site)."{% endif %} - -{% else %} - -The default publishing source for user and organization sites is the `master` branch. If the repository for your user or organization site has a `master` branch, your site will publish automatically from that branch. You cannot choose a different publishing source for user or organization sites. - -The default publishing source for a project site is the `gh-pages` branch. If the repository for your project site has a `gh-pages` branch, your site will publish automatically from that branch. - -Project sites can also be published from the `master` branch or a `/docs` folder on the `master` branch. To publish your site from one of these sources, you must configure a different publishing source. For more information, see "[Configuring a publishing source for your {% data variables.product.prodname_pages %} site](/articles/configuring-a-publishing-source-for-your-github-pages-site#choosing-a-publishing-source)." - - If you choose the `/docs` folder of the `master` branch as your publishing source, {% data variables.product.prodname_pages %} will read everything to publish your site{% if currentVersion == "free-pro-team@latest" %}, including the _CNAME_ file,{% endif %} from the `/docs` folder.{% if currentVersion == "free-pro-team@latest" %} For example, when you edit your custom domain through the {% data variables.product.prodname_pages %} settings, the custom domain will write to `/docs/CNAME`. For more information about _CNAME_ files, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site)."{% endif %} - - You cannot publish your project site from any other branch, even if the default branch is not `master` or `gh-pages`. - -{% endif %} - -### Static site generators - -{% data variables.product.prodname_pages %} publishes any static files that you push to your repository. You can create your own static files or use a static site generator to build your site for you. You can also customize your own build process locally or on another server. We recommend Jekyll, a static site generator with built-in support for {% data variables.product.prodname_pages %} and a simplified build process. For more information, see "[About {% data variables.product.prodname_pages %} and Jekyll](/articles/about-github-pages-and-jekyll)." - -{% data variables.product.prodname_pages %} will use Jekyll to build your site by default. If you want to use a static site generator other than Jekyll, disable the Jekyll build process by creating an empty file called `.nojekyll` in the root of your publishing source, then follow your static site generator's instructions to build your site locally. - -{% data variables.product.prodname_pages %} does not support server-side languages such as PHP, Ruby, or Python. - -### Guidelines for using {% data variables.product.prodname_pages %} - -{% if currentVersion == "free-pro-team@latest" %} -- {% data variables.product.prodname_pages %} sites created after June 15, 2016 and using `github.io` domains are served over HTTPS. If you created your site before June 15, 2016, you can enable HTTPS support for traffic to your site. For more information, see "[Securing your {% data variables.product.prodname_pages %} with HTTPS](/articles/securing-your-github-pages-site-with-https)." -- {% data reusables.pages.no_sensitive_data_pages %} -- Your use of {% data variables.product.prodname_pages %} is subject to the [GitHub Terms of Service](/articles/github-terms-of-service/), including the prohibition on reselling. - -#### Usage limits -{% endif %} -{% data variables.product.prodname_pages %} sites are subject to the following usage limits: - - - {% data variables.product.prodname_pages %} source repositories have a recommended limit of 1GB.{% if currentVersion == "free-pro-team@latest" %} For more information, see "[What is my disk quota?"](/articles/what-is-my-disk-quota/#file-and-repository-size-limitations){% endif %} - - Published {% data variables.product.prodname_pages %} sites may be no larger than 1 GB. -{% if currentVersion == "free-pro-team@latest" %} - - {% data variables.product.prodname_pages %} sites have a *soft* bandwidth limit of 100GB per month. - - {% data variables.product.prodname_pages %} sites have a *soft* limit of 10 builds per hour. - -If your site exceeds these usage quotas, we may not be able to serve your site, or you may receive a polite email from {% data variables.contact.contact_support %} suggesting strategies for reducing your site's impact on our servers, including putting a third-party content distribution network (CDN) in front of your site, making use of other {% data variables.product.prodname_dotcom %} features such as releases, or moving to a different hosting service that might better fit your needs. - -#### Prohibited uses - -{% data variables.product.prodname_pages %} is not intended for or allowed to be used as a free web hosting service to run your online business, e-commerce site, or any other website that is primarily directed at either facilitating commercial transactions or providing commercial software as a service (SaaS). - -Additionally, {% data variables.product.prodname_pages %} sites must refrain from: - - - Content or activity that is illegal or otherwise prohibited by our [Terms of Service](/articles/github-terms-of-service/) or [Community Guidelines](/articles/github-community-guidelines/) - - Violent or threatening content or activity - - Excessive automated bulk activity (for example, spamming) - - Activity that compromises GitHub users or GitHub services - - Get-rich-quick schemes - - Sexually obscene content - - Content that misrepresents your identity or site purpose - -If you have questions about whether your use or intended use falls into these categories, please contact {% data variables.contact.contact_support %}. -{% endif %} - -### MIME types on {% data variables.product.prodname_pages %} - -A MIME type is a header that a server sends to a browser, providing information about the nature and format of the files the browser requested. {% data variables.product.prodname_pages %} supports more than 750 MIME types across thousands of file extensions. The list of supported MIME types is generated from the [mime-db project](https://github.com/jshttp/mime-db). - -While you can't specify custom MIME types on a per-file or per-repository basis, you can add or modify MIME types for use on {% data variables.product.prodname_pages %}. For more information, see [the mime-db contributing guidelines](https://github.com/jshttp/mime-db#adding-custom-media-types). - -### Further reading - -- [{% data variables.product.prodname_pages %}](https://lab.github.com/githubtraining/github-pages) on {% data variables.product.prodname_learning %} -- "[{% data variables.product.prodname_pages %}](/v3/repos/pages)" diff --git a/content/github/working-with-github-pages/about-jekyll-build-errors-for-github-pages-sites.md b/content/github/working-with-github-pages/about-jekyll-build-errors-for-github-pages-sites.md deleted file mode 100644 index 046a4b845774..000000000000 --- a/content/github/working-with-github-pages/about-jekyll-build-errors-for-github-pages-sites.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: About Jekyll build errors for GitHub Pages sites -intro: 'If Jekyll encounters an error building your {% data variables.product.prodname_pages %} site locally or on {% data variables.product.product_name %}, you''ll receive an error message with more information.' -redirect_from: - - /articles/viewing-jekyll-build-error-messages/ - - /articles/generic-jekyll-build-failures/ - - /articles/about-jekyll-build-errors-for-github-pages-sites -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About Jekyll build errors - -Sometimes, {% data variables.product.prodname_pages %} will not attempt to build your site after you push changes to your site's publishing source.{% if currentVersion == "free-pro-team@latest" %} -- The person who pushed the changes hasn't verified their email address. For more information, see "[Verifying your email address](/articles/verifying-your-email-address)."{% endif %} -- You're pushing with a deploy key. If you want to automate pushes to your site's repository, you can set up a machine user instead. For more information, see "[Managing deploy keys](/v3/guides/managing-deploy-keys/#machine-users)." -- You're using a CI service that isn't configured to build your publishing source. For example, Travis CI won't build the `gh-pages` branch unless you add the branch to a safelist. For more information, see "[Customizing the build](https://docs.travis-ci.com/user/customizing-the-build/#safelisting-or-blocklisting-branches)" on Travis CI, or your CI service's documentation. - -{% note %} - -**Note:** It can take up to 20 minutes for changes to your site to publish after you push the changes to {% data variables.product.product_name %}. - -{% endnote %} - -If Jekyll does attempt to build your site and encounters an error, you will receive a build error message. There are two main types of Jekyll build error messages. -- A "Page build warning" message means your build completed successfully, but you may need to make changes to prevent future problems. -- A "Page build failed" message means your build failed to complete. If Jekyll is able to detect a reason for the failure, you'll see a descriptive error message. - -For more information about troubleshooting build errors, see "[Troubleshooting Jekyll build errors for {% data variables.product.prodname_pages %} sites](/articles/troubleshooting-jekyll-build-errors-for-github-pages-sites)." - -### Viewing Jekyll build error messages - -We recommend testing your site locally, which allows you to see build error messages on the command line, and addressing any build failures before pushing changes to {% data variables.product.product_name %}. For more information, see "[Testing your {% data variables.product.prodname_pages %} site locally with Jekyll](/articles/testing-your-github-pages-site-locally-with-jekyll)." - -When you create a pull request to update your publishing source on {% data variables.product.product_name %}, you can see build error messages on the **Checks** tab of the pull request. For more information, see "[About status checks](/articles/about-status-checks)." - -When you push changes to your publishing source on {% data variables.product.product_name %}, {% data variables.product.prodname_pages %} will attempt to build your site. If the build fails, you'll receive an email at your primary email address. You'll also receive emails for build warnings. {% data reusables.pages.build-failure-email-server %} - -You can see build failures (but not build warnings) for your site on {% data variables.product.product_name %} in the **Settings** tab of your site's repository. - -You can configure a third-party service, such as [Travis CI](https://travis-ci.org/), to display error messages after each commit. - -1. If you haven't already, add a file called _Gemfile_ in the root of your publishing source, with the following content: - ``` - source `https://rubygems.org` - gem `github-pages` - ``` - -2. Configure your site's repository for the testing service of your choice. For example, to use [Travis CI](https://travis-ci.org/), add a file named _.travis.yml_ in the root of your publishing source, with the following content: - ``` - language: ruby - rvm: - - 2.3 - script: "bundle exec jekyll build" - ``` -3. You may need to activate your repository with the third-party testing service. For more information, see your testing service's documentation. diff --git a/content/github/working-with-github-pages/adding-a-theme-to-your-github-pages-site-using-jekyll.md b/content/github/working-with-github-pages/adding-a-theme-to-your-github-pages-site-using-jekyll.md deleted file mode 100644 index 8a6c5ece6ee8..000000000000 --- a/content/github/working-with-github-pages/adding-a-theme-to-your-github-pages-site-using-jekyll.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Adding a theme to your GitHub Pages site using Jekyll -intro: You can personalize your Jekyll site by adding and customizing a theme. -redirect_from: - - /articles/customizing-css-and-html-in-your-jekyll-theme/ - - /articles/adding-a-jekyll-theme-to-your-github-pages-site/ - - /articles/adding-a-theme-to-your-github-pages-site-using-jekyll -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -People with write permissions for a repository can add a theme to a {% data variables.product.prodname_pages %} site using Jekyll. - -{% data reusables.pages.test-locally %} - -### Adding a theme - -{% data reusables.pages.navigate-site-repo %} -{% data reusables.pages.navigate-publishing-source %} -2. Navigate to *_config.yml*. -{% data reusables.repositories.edit-file %} -4. Add a new line to the file for the theme name. - - To use a supported theme, type `theme: THEME-NAME`, replacing _THEME-NAME_ with the name of the theme as shown in the README of the theme's repository. For a list of supported themes, see "[Supported themes](https://pages.github.com/themes/)" on the {% data variables.product.prodname_pages %} site. - ![Supported theme in config file](/assets/images/help/pages/add-theme-to-config-file.png) - - To use any other Jekyll theme hosted on {% data variables.product.prodname_dotcom %}, type `remote_theme: THEME-NAME`, replacing THEME-NAME with the name of the theme as shown in the README of the theme's repository. - ![Unsupported theme in config file](/assets/images/help/pages/add-remote-theme-to-config-file.png) -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose-commit-email %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_file_change %} - -### Customizing your theme's CSS - -{% data reusables.pages.best-with-supported-themes %} - -{% data reusables.pages.theme-customization-help %} - -{% data reusables.pages.navigate-site-repo %} -{% data reusables.pages.navigate-publishing-source %} -1. Create a new file called _/assets/css/style.scss_. -2. Add the following content to the top of the file: - ``` - --- - --- - - @import "{{ site.theme }}"; - ``` -3. Add any custom CSS or Sass (including imports) you'd like immediately after the `@import` line. - -### Customizing your theme's HTML layout - -{% data reusables.pages.best-with-supported-themes %} - -{% data reusables.pages.theme-customization-help %} - -1. On {% data variables.product.prodname_dotcom %}, navigate to your theme's source repository. For example, the source repository for Minima is https://github.com/jekyll/minima. -2. In the *_layouts* folder, navigate to your theme's _default.html_ file. -3. Copy the contents of the file. -{% data reusables.pages.navigate-site-repo %} -{% data reusables.pages.navigate-publishing-source %} -6. Create a file called *_layouts/default.html*. -7. Paste the default layout content you copied earlier. -8. Customize the layout as you'd like. - -### Further reading - -- "[Creating new files](/articles/creating-new-files)" diff --git a/content/github/working-with-github-pages/adding-a-theme-to-your-github-pages-site-with-the-theme-chooser.md b/content/github/working-with-github-pages/adding-a-theme-to-your-github-pages-site-with-the-theme-chooser.md deleted file mode 100644 index 54505770e5e6..000000000000 --- a/content/github/working-with-github-pages/adding-a-theme-to-your-github-pages-site-with-the-theme-chooser.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Adding a theme to your GitHub Pages site with the theme chooser -intro: 'You can add a theme to your {% data variables.product.prodname_pages %} site to customize your site’s look and feel.' -redirect_from: - - /articles/creating-a-github-pages-site-with-the-jekyll-theme-chooser/ - - /articles/adding-a-jekyll-theme-to-your-github-pages-site-with-the-jekyll-theme-chooser/ - - /articles/adding-a-theme-to-your-github-pages-site-with-the-theme-chooser -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' ---- - -People with admin permissions for a repository can use the theme chooser to add a theme to a {% data variables.product.prodname_pages %} site. - -### About the theme chooser - -The theme chooser adds a Jekyll theme to your repository. For more information about Jekyll, see "[About {% data variables.product.prodname_pages %} and Jekyll](/articles/about-github-pages-and-jekyll)." - -How the theme chooser works depends on whether your repository is public or private. - - If {% data variables.product.prodname_pages %} is already enabled for your repository, the theme chooser will add your theme to the current publishing source. - - If your repository is public and {% data variables.product.prodname_pages %} is disabled for your repository, using the theme chooser will enable {% data variables.product.prodname_pages %} and configure the default branch as your publishing source. - - If your repository is private and {% data variables.product.prodname_pages %} is disabled for your repository, you must enable {% data variables.product.prodname_pages %} by configuring a publishing source before you can use the theme chooser. - -For more information about publishing sources, see "[About {% data variables.product.prodname_pages %}](/articles/about-github-pages#publishing-sources-for-github-pages-sites)." - -If you manually added a Jekyll theme to your repository in the past, those files may be applied even after you use the theme chooser. To avoid conflicts, remove all manually added theme folders and files before using the theme chooser. For more information, see "[Adding a theme to your {% data variables.product.prodname_pages %} site using Jekyll](/articles/adding-a-theme-to-your-github-pages-site-using-jekyll)." - -### Adding a theme with the theme chooser - -{% data reusables.pages.navigate-site-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "{% data variables.product.prodname_pages %}," click **Choose a theme** or **Change theme**. - ![Choose a theme button](/assets/images/help/pages/choose-a-theme.png) -4. On the top of the page, click the theme you want, then click **Select theme**. - ![Theme options and Select theme button](/assets/images/help/pages/select-theme.png) -5. You may be prompted to edit your site's *README.md* file. - - To edit the file later, click **Cancel**. - ![Cancel link when editing a file](/assets/images/help/pages/cancel-edit.png) - - To edit the file now, see "[Editing files in your repository](/articles/editing-files-in-your-repository/)." - -Your chosen theme will automatically apply to markdown files in your repository. To apply your theme to HTML files in your repository, you need to add YAML front matter that specifies a layout to each file. For more information, see "[Front Matter](https://jekyllrb.com/docs/front-matter/)" on the Jekyll site. - -### Further reading - -- [Themes](https://jekyllrb.com/docs/themes/) on the Jekyll site diff --git a/content/github/working-with-github-pages/adding-content-to-your-github-pages-site-using-jekyll.md b/content/github/working-with-github-pages/adding-content-to-your-github-pages-site-using-jekyll.md deleted file mode 100644 index 703cf384d5f8..000000000000 --- a/content/github/working-with-github-pages/adding-content-to-your-github-pages-site-using-jekyll.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Adding content to your GitHub Pages site using Jekyll -intro: 'You can add a new page or post to your Jekyll site on {% data variables.product.prodname_pages %}.' -product: '{% data reusables.gated-features.pages %}' -redirect_from: - - /articles/adding-content-to-your-github-pages-site-using-jekyll -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -People with write permissions for a repository can add content to a {% data variables.product.prodname_pages %} site using Jekyll. - -### About content in Jekyll sites - -Before you can add content to a Jekyll site on {% data variables.product.prodname_pages %}, you must create a Jekyll site. For more information, see "[Creating a {% data variables.product.prodname_pages %} site with Jekyll](/articles/creating-a-github-pages-site-with-jekyll)." - -The main types of content for Jekyll sites are pages and posts. A page is for standalone content that isn't associated with a specific date, such as an "About" page. The default Jekyll site contains a file called `about.md`, which renders as a page on your site at `YOUR-SITE-URL/about`. You can edit the contents of that file to personalize your "About" page, and you can use the "About" page as a template to create new pages. For more information, see "[Pages](https://jekyllrb.com/docs/pages/)" in the Jekyll documentation. - -A post is a blog post. The default Jekyll site contains a directory named `_posts` that contains a default post file. You can edit the contents of that post, and you can use the default post as a template to create new posts. For more information, see "[Posts](https://jekyllrb.com/docs/posts/)" in the Jekyll documentation. - -Your theme includes default layouts, includes, and stylesheets that will automatically be applied to new pages and posts on your site, but you can override any of these defaults. For more information, see "[About {% data variables.product.prodname_pages %} and Jekyll](/articles/about-github-pages-and-jekyll#themes)." - -{% data reusables.pages.about-front-matter %} - -{% data reusables.pages.test-locally %} - -### Adding a new page to your site - -{% data reusables.pages.navigate-site-repo %} -{% data reusables.pages.navigate-publishing-source %} -3. In the root of your publishing source, create a new file for your page called _PAGE-NAME.md_, replacing _PAGE-NAME_ with a meaningful filename for the page. -4. Add the following YAML frontmatter to the top of the file, replacing _PAGE TITLE_ with the page's title and _URL-PATH_ with a path you want for the page's URL. For example, if the base URL of your site is `https://octocat.github.io` and your _URL-PATH_ is `/about/contact/`, your page will be located at `https://octocat.github.io/about/contact`. - ```shell - layout: page - title: "PAGE TITLE" - permalink: /URL-PATH/ - ``` -5. Below the frontmatter, add content for your page. -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose-commit-email %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_file_change %} - -### Adding a new post to your site - -{% data reusables.pages.navigate-site-repo %} -{% data reusables.pages.navigate-publishing-source %} -3. Navigate to the `_posts` directory. -4. Create a new file called _YYYY-MM-DD-NAME-OF-POST.md_, replacing _YYYY-MM-DD_ with the date of your post and _NAME-OF-POST_ with the name of your post. -4. Add the following YAML frontmatter to the top of the file, replacing _POST TITLE_ with the post's title, _YYYY-MM-DD hh:mm:ss -0000_ with the date and time for the post, and _CATEGORY-1_ and _CATEGORY-2_ with as many categories you want for your post. - ```shell - layout: page - title: "POST TITLE" - date: YYYY-MM-DD hh:mm:ss -0000 - categories: CATEGORY-1 CATEGORY-2 - ``` -5. Below the frontmatter, add content for your post. -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose-commit-email %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_file_change %} - -### Next steps - -{% data reusables.pages.add-jekyll-theme %} For more information, see "[Adding a theme to your {% data variables.product.prodname_pages %} site using Jekyll](/articles/adding-a-theme-to-your-github-pages-site-using-jekyll)." diff --git a/content/github/working-with-github-pages/configuring-a-custom-domain-for-your-github-pages-site.md b/content/github/working-with-github-pages/configuring-a-custom-domain-for-your-github-pages-site.md deleted file mode 100644 index b61565f5a487..000000000000 --- a/content/github/working-with-github-pages/configuring-a-custom-domain-for-your-github-pages-site.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Configuring a custom domain for your GitHub Pages site -intro: 'You can customize the domain name of your {% data variables.product.prodname_pages %} site.' -redirect_from: - - /articles/tips-for-configuring-an-a-record-with-your-dns-provider/ - - /articles/adding-or-removing-a-custom-domain-for-your-github-pages-site/ - - /articles/configuring-an-a-record-with-your-dns-provider/ - - /articles/using-a-custom-domain-with-github-pages/ - - /articles/tips-for-configuring-a-cname-record/ - - /articles/setting-up-a-custom-domain-with-pages/ - - /articles/setting-up-a-custom-domain-with-github-pages/ - - /articles/configuring-a-custom-domain-for-your-github-pages-site -product: '{% data reusables.gated-features.pages %}' -mapTopic: true -versions: - free-pro-team: '*' ---- - diff --git a/content/github/working-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site.md b/content/github/working-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site.md deleted file mode 100644 index f9185b9bff7e..000000000000 --- a/content/github/working-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Configuring a publishing source for your GitHub Pages site -intro: 'If you use the default publishing source for your {% data variables.product.prodname_pages %} site, your site will publish automatically. You can also choose to publish your{% if currentVersion ver_lt "enterprise-server@2.23" %} project{% endif %} site from a different branch or folder.' -redirect_from: - - /articles/configuring-a-publishing-source-for-github-pages/ - - /articles/configuring-a-publishing-source-for-your-github-pages-site -product: '{% data reusables.gated-features.pages %}' -permissions: 'People with admin or maintainer permissions for a repository can configure a publishing source for a {% data variables.product.prodname_pages %} site.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -For more information about publishing sources, see "[About {% data variables.product.prodname_pages %}](/articles/about-github-pages#publishing-sources-for-github-pages-sites)." - -### Choosing a publishing source - -Before you configure a publishing source, make sure the branch{% if currentVersion ver_lt "enterprise-server@2.23" %} or folder{% endif %} you want to use as your publishing source already exists in your repository.{% if currentVersion ver_lt "enterprise-server@2.23" %} For example, before you can publish your project site from the `/docs` folder on the `master` branch of your repository, you or a collaborator must create a `/docs` folder on the default `master` branch of your repository.{% endif %} - -{% data reusables.pages.navigate-site-repo %} -{% data reusables.repositories.sidebar-settings %} -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -3. Under "{% data variables.product.prodname_pages %}", use the **None** or **Branch** drop-down menu and select a publishing source. - ![Drop-down menu to select a publishing source](/assets/images/help/pages/publishing-source-drop-down.png) -4. Optionally, use the drop-down menu to select a folder for your publishing source. - ![Drop-down menu to select a folder for publishing source](/assets/images/help/pages/publishing-source-folder-drop-down.png) -5. Click **Save**. - ![Button to save changes to publishing source settings](/assets/images/help/pages/publishing-source-save.png) - {% else %} -3. Under "{% data variables.product.prodname_pages %}", use the **Source** drop-down menu and select a publishing source. - ![Drop down menu to select a publishing source](/assets/images/help/pages/publishing-source-drop-down.png) -{% endif %} - -### Troubleshooting publishing problems with your {% data variables.product.prodname_pages %} site - -{% data reusables.pages.admin-must-push %} - -If you choose the `docs` folder on {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %}any{% else %}the `master`{% endif %} branch as your publishing source, then later remove the `/docs` folder from that branch in your repository, your site won't build and you'll get a page build error message for a missing `/docs` folder. For more information, see "[Troubleshooting Jekyll build errors for {% data variables.product.prodname_pages %} sites](/articles/troubleshooting-jekyll-build-errors-for-github-pages-sites#missing-docs-folder)." diff --git a/content/github/working-with-github-pages/creating-a-custom-404-page-for-your-github-pages-site.md b/content/github/working-with-github-pages/creating-a-custom-404-page-for-your-github-pages-site.md deleted file mode 100644 index ee92972a1fe5..000000000000 --- a/content/github/working-with-github-pages/creating-a-custom-404-page-for-your-github-pages-site.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Creating a custom 404 page for your GitHub Pages site -intro: You can display a custom 404 error page when people try to access nonexistent pages on your site. -redirect_from: - - /articles/custom-404-pages/ - - /articles/creating-a-custom-404-page-for-your-github-pages-site -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.pages.navigate-site-repo %} -{% data reusables.pages.navigate-publishing-source %} -{% data reusables.files.add-file %} -3. In the file name field, type `404.html` or `404.md`. - ![File name field](/assets/images/help/pages/404-file-name.png) -4. If you named your file `404.md`, add the following YAML front matter to the beginning of the file: - ``` - --- - permalink: /404.html - --- - ``` -5. Below the YAML front matter, if present, add the content you want to display on your 404 page. -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose-commit-email %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_new_file %} - -### Further reading - -- [Front matter](http://jekyllrb.com/docs/frontmatter) in the Jekyll documentation diff --git a/content/github/working-with-github-pages/creating-a-github-pages-site-with-jekyll.md b/content/github/working-with-github-pages/creating-a-github-pages-site-with-jekyll.md deleted file mode 100644 index c0ea333bf795..000000000000 --- a/content/github/working-with-github-pages/creating-a-github-pages-site-with-jekyll.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Creating a GitHub Pages site with Jekyll -intro: 'You can use Jekyll to create a {% data variables.product.prodname_pages %} site in a new or existing repository.' -product: '{% data reusables.gated-features.pages %}' -redirect_from: - - /articles/creating-a-github-pages-site-with-jekyll -permissions: 'People with admin permissions for a repository can create a {% data variables.product.prodname_pages %} site with Jekyll.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Prerequisites - -Before you can use Jekyll to create a {% data variables.product.prodname_pages %} site, you must install Jekyll and Git. For more information, see [Installation](https://jekyllrb.com/docs/installation/) in the Jekyll documentation and "[Set up Git](/articles/set-up-git)." - -{% data reusables.pages.recommend-bundler %} - -{% data reusables.pages.jekyll-install-troubleshooting %} - -### Creating a repository for your site - -{% data reusables.pages.new-or-existing-repo %} - -{% data reusables.pages.private_pages_are_public_warning %} - -{% data reusables.repositories.create_new %} -{% data reusables.repositories.owner-drop-down %} -{% data reusables.pages.create-repo-name %} -{% data reusables.repositories.choose-repo-visibility %} - -### Creating your site - -{% data reusables.pages.must-have-repo-first %} - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. If you don't already have a local copy of your repository, navigate to the location where you want to store your site's source files, replacing _PARENT-FOLDER_ with the folder you want to contain the folder for your repository. - ```shell - $ cd PARENT-FOLDER - ``` -3. If you haven't already, initialize a local Git repository, replacing _REPOSITORY-NAME_ with the name of your repository. - ```shell - $ git init REPOSITORY-NAME - > Initialized empty Git repository in /Users/octocat/my-site/.git/ - # Creates a new folder on your computer, initialized as a Git repository - ``` - 4. Change directories to the repository. - ```shell - $ cd REPOSITORY-NAME - # Changes the working directory - ``` -{% data reusables.pages.decide-publishing-source %} -{% data reusables.pages.navigate-publishing-source %} - For example, if you chose to publish your site from the `docs` folder on the default branch, create and change directories to the `docs` folder. - ```shell - $ mkdir docs - # Creates a new folder called docs - $ cd docs - ``` - If you chose to publish your site from the `gh-pages` branch, create and checkout the `gh-pages` branch. - ```shell - $ git checkout --orphan gh-pages - # Creates a new branch, with no history or contents, called gh-pages and switches to the gh-pages branch - ``` - 7. To create a new Jekyll site, use the `jekyll new` command, replacing _VERSION_ with the current dependency version for Jekyll. For more information, see "[Dependency versions](https://pages.github.com/versions/)" on the {% data variables.product.prodname_pages %} site. - - If you installed Bundler: - ```shell - $ bundle exec jekyll VERSION new . - # Creates a Jekyll site in the current directory - ``` - - If you don't have Bundler installed: - ```shell - $ jekyll VERSION new . - # Creates a Jekyll site in the current directory - ``` -8. Open the Gemfile that was created and follow the instructions in the Gemfile's comments to use {% data variables.product.prodname_pages %}. - ![Instructions for updating Gemfile](/assets/images/help/pages/gemfile-instructions.png) -9. Update the `gem "github-pages"` line so that the line looks like this, replacing _VERSION_ with the current dependency version for `github-pages`. For more information, see "[Dependency versions](https://pages.github.com/versions/)" on the {% data variables.product.prodname_pages %} site. -```shell -gem "github-pages", "~> VERSION", group: :jekyll_plugins -``` -10. Save and close the Gemfile. -11. Optionally, test your site locally. For more information, see "[Testing your {% data variables.product.prodname_pages %} site locally with Jekyll](/articles/testing-your-github-pages-site-locally-with-jekyll)." -12. Add your {% data variables.product.product_name %} repository as a remote, replacing {% if enterpriseServerVersions contains currentVersion %}_HOSTNAME_ with your appliance's hostname,{% endif %} _USER_ with the account that owns the repository{% if enterpriseServerVersions contains currentVersion %},{% endif %} and _REPOSITORY_ with the name of the repository. -```shell -{% if currentVersion == "free-pro-team@latest" %} -$ git remote add origin https://github.com/USER/REPOSITORY.git -{% else %} -$ git remote add origin https://HOSTNAME/USER/REPOSITORY.git -{% endif %} -``` -13. Push the repository to {% data variables.product.product_name %}, replacing _BRANCH_ with the name of the branch you're working on. - ```shell - $ git push -u origin BRANCH - ``` -{% data reusables.pages.configure-publishing-source %} -{% data reusables.pages.navigate-site-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.pages.visit-site %} - -{% data reusables.pages.admin-must-push %} - -### Next steps - -To add a new page or post to your site, see "[Adding content to your {% data variables.product.prodname_pages %} site using Jekyll](/articles/adding-content-to-your-github-pages-site-using-jekyll)." - -{% data reusables.pages.add-jekyll-theme %} For more information, see "[Adding a theme to your {% data variables.product.prodname_pages %} site using Jekyll](/articles/adding-a-theme-to-your-github-pages-site-using-jekyll)." diff --git a/content/github/working-with-github-pages/creating-a-github-pages-site.md b/content/github/working-with-github-pages/creating-a-github-pages-site.md deleted file mode 100644 index 86ca01f26592..000000000000 --- a/content/github/working-with-github-pages/creating-a-github-pages-site.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Creating a GitHub Pages site -intro: 'You can create a {% data variables.product.prodname_pages %} site in a new or existing repository.' -redirect_from: - - /articles/creating-project-pages-using-the-command-line/ - - /articles/creating-a-github-pages-site -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Creating a repository for your site - -{% data reusables.pages.new-or-existing-repo %} - -{% data reusables.pages.private_pages_are_public_warning %} - -{% data reusables.repositories.create_new %} -{% data reusables.repositories.owner-drop-down %} -{% data reusables.pages.create-repo-name %} -{% data reusables.repositories.choose-repo-visibility %} -{% data reusables.repositories.initialize-with-readme %} -{% data reusables.repositories.create-repo %} - -### Creating your site - -{% data reusables.pages.must-have-repo-first %} - -{% data reusables.pages.navigate-site-repo %} -{% data reusables.pages.decide-publishing-source %} -3. If your chosen publishing source already exists, navigate to the publishing source. If your chosen publishing source doesn't exist, create the publishing source. -4. In the root of the publishing source, create a new file called `index.md` that contains the content you want to display on the main page of your site. -{% data reusables.pages.configure-publishing-source %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.pages.visit-site %} - -{% data reusables.pages.admin-must-push %} - -### Next steps - -You can add more pages to your site by creating more new files. Each file will be available on your site in the same directory structure as your publishing source. For example, if the publishing source for your project site is the `gh-pages` branch, and you create a new file called `/about/contact-us.md` on the `gh-pages` branch, the file will be available at {% if currentVersion == "free-pro-team@latest" %}`https://.github.io//{% else %}`http(s):///pages///{% endif %}about/contact-us.md`. - -You can also add a theme to customize your site’s look and feel. For more information, see {% if currentVersion == "free-pro-team@latest" %}"[Adding a theme to your {% data variables.product.prodname_pages %} site with the theme chooser](/articles/adding-a-theme-to-your-github-pages-site-with-the-theme-chooser){% else %}"[Adding a theme to your {% data variables.product.prodname_pages %} site using Jekyll](/articles/adding-a-theme-to-your-github-pages-site-using-jekyll){% endif %}." - -To customize your site even more, you can use Jekyll, a static site generator with built-in support for {% data variables.product.prodname_pages %}. For more information, see "[About {% data variables.product.prodname_pages %} and Jekyll](/articles/about-github-pages-and-jekyll)." - -### Further reading - -- "[Troubleshooting Jekyll build errors for {% data variables.product.prodname_pages %} sites](/articles/troubleshooting-jekyll-build-errors-for-github-pages-sites)" -- "[Creating and deleting branches within your repository](/articles/creating-and-deleting-branches-within-your-repository)" -- "[Creating new files](/articles/creating-new-files)" diff --git a/content/github/working-with-github-pages/getting-started-with-github-pages.md b/content/github/working-with-github-pages/getting-started-with-github-pages.md deleted file mode 100644 index 8126a23b02d8..000000000000 --- a/content/github/working-with-github-pages/getting-started-with-github-pages.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Getting started with GitHub Pages -intro: 'You can set up a basic {% data variables.product.prodname_pages %} site for yourself, your organization, or your project.' -redirect_from: - - /categories/github-pages-basics - - /articles/additional-customizations-for-github-pages/ - - /articles/getting-started-with-github-pages -product: '{% data reusables.gated-features.pages %}' -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/working-with-github-pages/index.md b/content/github/working-with-github-pages/index.md deleted file mode 100644 index 895e418ae330..000000000000 --- a/content/github/working-with-github-pages/index.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Working with GitHub Pages -shortTitle: GitHub Pages -intro: 'You can create a website directly from a {% data variables.product.product_name %} repository.' -redirect_from: - - /categories/20/articles/ - - /categories/95/articles/ - - /categories/github-pages-features/ - - /pages/ - - /categories/96/articles/ - - /categories/github-pages-troubleshooting/ - - /categories/working-with-github-pages -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /getting-started-with-github-pages %} - {% link_in_list /about-github-pages %} - {% link_in_list /creating-a-github-pages-site %} - - {% link_in_list /adding-a-theme-to-your-github-pages-site-with-the-theme-chooser %} - - {% link_in_list /configuring-a-publishing-source-for-your-github-pages-site %} - {% link_in_list /creating-a-custom-404-page-for-your-github-pages-site %} - - {% link_in_list /securing-your-github-pages-site-with-https %} - {% link_in_list /using-submodules-with-github-pages %} - - {% link_in_list /unpublishing-a-github-pages-site %} -{% topic_link_in_list /setting-up-a-github-pages-site-with-jekyll %} - {% link_in_list /about-github-pages-and-jekyll %} - {% link_in_list /creating-a-github-pages-site-with-jekyll %} - {% link_in_list /testing-your-github-pages-site-locally-with-jekyll %} - {% link_in_list /adding-content-to-your-github-pages-site-using-jekyll %} - {% link_in_list /setting-a-markdown-processor-for-your-github-pages-site-using-jekyll %} - {% link_in_list /adding-a-theme-to-your-github-pages-site-using-jekyll %} - {% link_in_list /about-jekyll-build-errors-for-github-pages-sites %} - {% link_in_list /troubleshooting-jekyll-build-errors-for-github-pages-sites %} - -{% topic_link_in_list /configuring-a-custom-domain-for-your-github-pages-site %} - {% link_in_list /about-custom-domains-and-github-pages %} - {% link_in_list /managing-a-custom-domain-for-your-github-pages-site %} - {% link_in_list /troubleshooting-custom-domains-and-github-pages %} - diff --git a/content/github/working-with-github-pages/managing-a-custom-domain-for-your-github-pages-site.md b/content/github/working-with-github-pages/managing-a-custom-domain-for-your-github-pages-site.md deleted file mode 100644 index e3d3015e50ea..000000000000 --- a/content/github/working-with-github-pages/managing-a-custom-domain-for-your-github-pages-site.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Managing a custom domain for your GitHub Pages site -intro: 'You can set up or update certain DNS records and your repository settings to point the default domain for your {% data variables.product.prodname_pages %} site to a custom domain.' -redirect_from: - - /articles/quick-start-setting-up-a-custom-domain/ - - /articles/setting-up-an-apex-domain/ - - /articles/setting-up-a-www-subdomain/ - - /articles/setting-up-a-custom-domain/ - - /articles/setting-up-an-apex-domain-and-www-subdomain/ - - /articles/adding-a-cname-file-to-your-repository/ - - /articles/setting-up-your-pages-site-repository/ - - /articles/managing-a-custom-domain-for-your-github-pages-site -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' ---- - -People with admin permissions for a repository can configure a custom domain for a {% data variables.product.prodname_pages %} site. - -### About custom domain configuration - -Make sure you add your custom domain to your {% data variables.product.prodname_pages %} site before configuring your custom domain with your DNS provider. Configuring your custom domain with your DNS provider without adding your custom domain to {% data variables.product.product_name %} could result in someone else being able to host a site on one of your subdomains. - -{% windows %} - -The `dig` command, which can be used to verify correct configuration of DNS records, is not included in Windows. Before you can verify that your DNS records are configured correctly, you must install [BIND](https://www.isc.org/bind/). - -{% endwindows %} - -{% note %} - -**Note:** DNS changes can take up to 24 hours to propagate. - -{% endnote %} - -### Configuring a subdomain - -To set up a `www` or custom subdomain, such as `www.example.com` or `blog.example.com`, you must create a _CNAME_ file in your site's repository and configure a `CNAME` record with your DNS provider. - -{% data reusables.pages.navigate-site-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.pages.save-custom-domain %} -5. Navigate to your DNS provider and create a `CNAME` record that points your subdomain to the default domain for your site. For example, if you want to use the subdomain `www.example.com` for your user site, create a `CNAME` record that points `www.example.com` to `.github.io`. If you want to use the subdomain `www.anotherexample.com` for your organization site, create a `CNAME` record that points `www.anotherexample.com` to `.github.io`. The `CNAME` file should always point to `.github.io` or `.github.io`, excluding the repository name. {% data reusables.pages.contact-dns-provider %}{% data reusables.pages.default-domain-information %} -{% data reusables.command_line.open_the_multi_os_terminal %} -6. To confirm that your DNS record configured correctly, use the `dig` command, replacing _WWW.EXAMPLE.COM_ with your subdomain. -```shell - $ dig WWW.EXAMPLE.COM +nostats +nocomments +nocmd - > ;WWW.EXAMPLE.COM. IN A - > WWW.EXAMPLE.COM. 3592 IN CNAME YOUR-USERNAME.github.io. - > YOUR-USERNAME.github.io. 43192 IN CNAME GITHUB-PAGES-SERVER . - > GITHUB-PAGES-SERVER . 22 IN A 192.0.2.1 -``` -{% data reusables.pages.build-locally-download-cname %} -{% data reusables.pages.enforce-https-custom-domain %} - -### Configuring an apex domain - -To set up an apex domain, such as `example.com`, you must configure a _CNAME_ file in your {% data variables.product.prodname_pages %} repository and an `ALIAS`, `ANAME`, or `A` record with your DNS provider. - -{% data reusables.pages.www-and-apex-domain-recommendation %} - -{% data reusables.pages.navigate-site-repo %} -{% data reusables.repositories.sidebar-settings %} -{% data reusables.pages.save-custom-domain %} -5. Navigate to your DNS provider and create either an `ALIAS`, `ANAME`, or `A` record. {% data reusables.pages.contact-dns-provider %} - - To create an `ALIAS` or `ANAME` record, point your apex domain to the default domain for your site. {% data reusables.pages.default-domain-information %} - - To create an `A` record, point your apex domain to the IP addresses for {% data variables.product.prodname_pages %}. - ```shell - 185.199.108.153 - 185.199.109.153 - 185.199.110.153 - 185.199.111.153 - ``` -{% data reusables.command_line.open_the_multi_os_terminal %} -6. To confirm that your DNS record configured correctly, use the `dig` command, replacing _EXAMPLE.COM_ with your apex domain. Confirm that the results match the IP addresses for {% data variables.product.prodname_pages %} above. - ```shell - $ dig EXAMPLE.COM +noall +answer - > EXAMPLE.COM 3600 IN A 185.199.108.153 - > EXAMPLE.COM 3600 IN A 185.199.109.153 - > EXAMPLE.COM 3600 IN A 185.199.110.153 - > EXAMPLE.COM 3600 IN A 185.199.111.153 - ``` -{% data reusables.pages.build-locally-download-cname %} -{% data reusables.pages.enforce-https-custom-domain %} - -### Further reading - -- "[Troubleshooting custom domains and {% data variables.product.prodname_pages %}](/articles/troubleshooting-custom-domains-and-github-pages)" diff --git a/content/github/working-with-github-pages/securing-your-github-pages-site-with-https.md b/content/github/working-with-github-pages/securing-your-github-pages-site-with-https.md deleted file mode 100644 index 5b4d1ccac3c1..000000000000 --- a/content/github/working-with-github-pages/securing-your-github-pages-site-with-https.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Securing your GitHub Pages site with HTTPS -intro: 'HTTPS adds a layer of encryption that prevents others from snooping on or tampering with traffic to your site. You can enforce HTTPS for your {% data variables.product.prodname_pages %} site to transparently redirect all HTTP requests to HTTPS.' -product: '{% data reusables.gated-features.pages %}' -redirect_from: - - /articles/securing-your-github-pages-site-with-https -versions: - free-pro-team: '*' ---- - -People with admin permissions for a repository can enforce HTTPS for a {% data variables.product.prodname_pages %} site. - -### About HTTPS and {% data variables.product.prodname_pages %} - -All {% data variables.product.prodname_pages %} sites, including sites that are correctly configured with a custom domain, support HTTPS and HTTPS enforcement. For more information about custom domains, see "[About custom domains and {% data variables.product.prodname_pages %}](/articles/about-custom-domains-and-github-pages)" and "[Troubleshooting custom domains and {% data variables.product.prodname_pages %}](/articles/troubleshooting-custom-domains-and-github-pages#https-errors)." - -HTTPS enforcement is required for {% data variables.product.prodname_pages %} sites using a `github.io` domain that were created after June 15, 2016. If you created your site before June 15, 2016, you can manually enable HTTPS enforcement. - -{% data reusables.pages.no_sensitive_data_pages %} - -{% data reusables.pages.private_pages_are_public_warning %} - -### Enforcing HTTPS for your {% data variables.product.prodname_pages %} site - -{% data reusables.pages.navigate-site-repo %} -{% data reusables.repositories.sidebar-settings %} -3. Under "{% data variables.product.prodname_pages %}," select **Enforce HTTPS**. - ![Enforce HTTPS checkbox](/assets/images/help/pages/enforce-https-checkbox.png) - -### Resolving problems with mixed content - -If you enable HTTPS for your {% data variables.product.prodname_pages %} site but your site's HTML still references images, CSS, or JavaScript over HTTP, then your site is serving *mixed content*. Serving mixed content may make your site less secure and cause trouble loading assets. - -To remove your site's mixed content, make sure all your assets are served over HTTPS by changing `http://` to `https://` in your site's HTML. - -Assets are commonly found in the following locations: -- If your site uses Jekyll, your HTML files will probably be found in the *_layouts* folder. -- CSS is usually found in the `` section of your HTML file. -- JavaScript is usually found in the `` section or just before the closing `` tag. -- Images are often found in the `` section. - -{% tip %} - -**Tip:** If you can't find your assets in your site's source files, try searching your site's source files for `http` in your text editor or on {% data variables.product.product_name %}. - -{% endtip %} - -#### Examples of assets referenced in an HTML file - -| Asset type | HTTP | HTTPS | -|:----------:|:-----------------------------------------:|:---------------------------------:| -| CSS | `` | `` -| JavaScript | `` | `` -| Image | `Logo` | `Logo` diff --git a/content/github/working-with-github-pages/setting-a-markdown-processor-for-your-github-pages-site-using-jekyll.md b/content/github/working-with-github-pages/setting-a-markdown-processor-for-your-github-pages-site-using-jekyll.md deleted file mode 100644 index 2041f63f7bf9..000000000000 --- a/content/github/working-with-github-pages/setting-a-markdown-processor-for-your-github-pages-site-using-jekyll.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Setting a Markdown processor for your GitHub Pages site using Jekyll -intro: 'You can choose a Markdown processor to determine how Markdown is rendered on your {% data variables.product.prodname_pages %} site.' -redirect_from: - - /articles/migrating-your-pages-site-from-maruku/ - - /articles/updating-your-markdown-processor-to-kramdown/ - - /articles/setting-a-markdown-processor-for-your-github-pages-site-using-jekyll -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -People with write permissions for a repository can set the Markdown processor for a {% data variables.product.prodname_pages %} site. - -{% data variables.product.prodname_pages %} supports two Markdown processors: [kramdown](http://kramdown.gettalong.org/) and {% data variables.product.prodname_dotcom %}'s own extended [CommonMark](https://commonmark.org/) processor, which is used to render {% data variables.product.prodname_dotcom %} Flavored Markdown throughout {% data variables.product.product_name %}. For more information, see "[About writing and formatting on {% data variables.product.prodname_dotcom %}](/articles/about-writing-and-formatting-on-github)." - -You can use {% data variables.product.prodname_dotcom %} Flavored Markdown with either processor, but only our CommonMark processor will always match the results you see on {% data variables.product.product_name %}. - -{% data reusables.pages.navigate-site-repo %} -2. In your repository, browse to the *_config.yml* file. -{% data reusables.repositories.edit-file %} -4. Find the line that starts with `markdown:` and change the value to `kramdown` or `GFM`. - ![Markdown setting in config.yml](/assets/images/help/pages/config-markdown-value.png) -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose-commit-email %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_new_file %} - -### Further reading - -- [kramdown Documentation](https://kramdown.gettalong.org/documentation.html) -- [{% data variables.product.prodname_dotcom %} Flavored Markdown Spec](https://github.github.com/gfm/) diff --git a/content/github/working-with-github-pages/setting-up-a-github-pages-site-with-jekyll.md b/content/github/working-with-github-pages/setting-up-a-github-pages-site-with-jekyll.md deleted file mode 100644 index f8f9aee79a79..000000000000 --- a/content/github/working-with-github-pages/setting-up-a-github-pages-site-with-jekyll.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Setting up a GitHub Pages site with Jekyll -intro: 'You can use Jekyll, a popular static site generator, to further customize your {% data variables.product.prodname_pages %} site.' -redirect_from: - - /articles/using-jekyll-with-pages/ - - /articles/using-jekyll-as-a-static-site-generator-with-github-pages - - /articles/setting-up-a-github-pages-site-with-jekyll -product: '{% data reusables.gated-features.pages %}' -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/working-with-github-pages/testing-your-github-pages-site-locally-with-jekyll.md b/content/github/working-with-github-pages/testing-your-github-pages-site-locally-with-jekyll.md deleted file mode 100644 index 15a99c3ae321..000000000000 --- a/content/github/working-with-github-pages/testing-your-github-pages-site-locally-with-jekyll.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Testing your GitHub Pages site locally with Jekyll -intro: 'You can build your {% data variables.product.prodname_pages %} site locally to preview and test changes to your site.' -redirect_from: - - /articles/setting-up-your-pages-site-locally-with-jekyll/ - - /articles/setting-up-your-github-pages-site-locally-with-jekyll/ - - /articles/testing-your-github-pages-site-locally-with-jekyll -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Anyone with read permissions for a repository can test a {% data variables.product.prodname_pages %} site locally. - -### Prerequisites - -Before you can use Jekyll to test a site, you must: - - Install [Jekyll](https://jekyllrb.com/docs/installation/). - - Create a Jekyll site. For more information, see "[Creating a {% data variables.product.prodname_pages %} site with Jekyll](/articles/creating-a-github-pages-site-with-jekyll)." - -{% data reusables.pages.recommend-bundler %} - -{% data reusables.pages.jekyll-install-troubleshooting %} - -### Building your site locally - -{% data reusables.command_line.open_the_multi_os_terminal %} -{% data reusables.pages.navigate-publishing-source %} -3. Run your Jekyll site locally. - ```shell - $ bundle exec jekyll serve - > Configuration file: /Users/octocat/my-site/_config.yml - > Source: /Users/octocat/my-site - > Destination: /Users/octocat/my-site/_site - > Incremental build: disabled. Enable with --incremental - > Generating... - > done in 0.309 seconds. - > Auto-regeneration: enabled for '/Users/octocat/my-site' - > Configuration file: /Users/octocat/my-site/_config.yml - > Server address: http://127.0.0.1:4000/ - > Server running... press ctrl-c to stop. - ``` -3. To preview your site, in your web browser, navigate to `http://localhost:4000`. - -### Updating the {% data variables.product.prodname_pages %} gem - -Jekyll is an active open source project that is updated frequently. If the `github-pages` gem on your computer is out of date with the `github-pages` gem on the {% data variables.product.prodname_pages %} server, your site may look different when built locally than when published on {% data variables.product.product_name %}. To avoid this, regularly update the `github-pages` gem on your computer. - -{% data reusables.command_line.open_the_multi_os_terminal %} -2. Update the `github-pages` gem. - - If you installed Bundler, run `bundle update github-pages`. - - If you don't have Bundler installed, run `gem update github-pages`. - -### Further reading - -- [{% data variables.product.prodname_pages %}](http://jekyllrb.com/docs/github-pages/) in the Jekyll documentation diff --git a/content/github/working-with-github-pages/troubleshooting-custom-domains-and-github-pages.md b/content/github/working-with-github-pages/troubleshooting-custom-domains-and-github-pages.md deleted file mode 100644 index cf13090436ee..000000000000 --- a/content/github/working-with-github-pages/troubleshooting-custom-domains-and-github-pages.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Troubleshooting custom domains and GitHub Pages -intro: 'You can check for common errors to resolve issues with custom domains or HTTPS for your {% data variables.product.prodname_pages %} site.' -redirect_from: - - /articles/my-custom-domain-isn-t-working/ - - /articles/custom-domain-isn-t-working/ - - /articles/troubleshooting-custom-domains/ - - /articles/troubleshooting-custom-domains-and-github-pages -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' ---- - -### _CNAME_ errors - -Custom domains are stored in a _CNAME_ file in the root of your publishing source. You can add or update this file through your repository settings or manually. For more information, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site)." - -For your site to render at the correct domain, make sure your _CNAME_ file still exists in the repository. For example, many static site generators force push to your repository, which can overwrite the _CNAME_ file that was added to your repository when you configured your custom domain. If you build your site locally and push generated files to {% data variables.product.product_name %}, make sure to pull the commit that added the _CNAME_ file to your local repository first, so the file will be included in the build. - -Then, make sure the _CNAME_ file is formatted correctly. - -- The _CNAME_ filename must be all uppercase. -- The _CNAME_ file can contain only one domain. To point multiple domains to your site, you must set up a redirect through your DNS provider. -- The _CNAME_ entry must be the bare domain. For example, `www.example.com`,`blog.example.com`, or `example.com`. -- The _CNAME_ entry can only be used once on {% data variables.product.product_name %}. For example, if another repository's _CNAME_ file contains `example.com`, you cannot use `example.com` in the _CNAME_ file for your repository. - -### DNS misconfiguration - -If you have trouble pointing the default domain for your site to your custom domain, contact your DNS provider. - -You can also test whether your custom domain's DNS records are configured correctly. For more information, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site)." - -### Custom domain names that are unsupported - -If your custom domain is unsupported, you may need to change your domain to a supported domain. You can also contact your DNS provider to see if they offer forwarding services for domain names. - -Make sure your site does not: -- Use more than one apex domain. For example, both `example.com` and `anotherexample.com`. -- Use more than one `www` subdomain. For example, both `www.example.com` and `www.anotherexample.com`. -- Use both an apex domain and custom subdomain. For example, both `example.com` and `docs.example.com`. - -{% warning %} - -**Warning:** We strongly recommend not using wildcard DNS records, such as `*.example.com`. A wildcard DNS record will allow anyone to host a {% data variables.product.prodname_pages %} site at one of your subdomains. - -{% endwarning %} - -For a list of supported custom domains, see "[About custom domains and {% data variables.product.prodname_pages %}](/articles/about-custom-domains-and-github-pages/#supported-custom-domains)." - -### HTTPS errors - -{% data variables.product.prodname_pages %} sites using custom domains that are correctly configured with _CNAME_, `ALIAS`, `ANAME`, or `A` DNS records can be accessed over HTTPS. For more information, see "[Securing your {% data variables.product.prodname_pages %} site with HTTPS](/articles/securing-your-github-pages-site-with-https)." - -It can take up to an hour for your site to become available over HTTPS after you configure your custom domain. After you update existing DNS settings, you may need to remove and re-add your custom domain to your site's repository to trigger the process of enabling HTTPS. For more information, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site)." - -If you're using Certification Authority Authorization (CAA) records, at least one CAA record must exist with the value `letsencrypt.org` for your site to be accessible over HTTPS. For more information, see "[Certificate Authority Authorization (CAA)](https://letsencrypt.org/docs/caa/)" in the Let's Encrypt documentation. - -### URL formatting on Linux - -If the URL for your site contains a username or organization name that begins or ends with a dash, or contains consecutive dashes, people browsing with Linux will receive a server error when they attempt to visit your site. To fix this, change your {% data variables.product.product_name %} username to remove non-alphanumeric characters. For more information, see "[Changing your {% data variables.product.prodname_dotcom %} username](/articles/changing-your-github-username/)." - -### Browser cache - -If you've recently changed or removed your custom domain and can't access the new URL in your browser, you may need to clear your browser's cache to reach the new URL. For more information on clearing your cache, see your browser's documentation. diff --git a/content/github/working-with-github-pages/troubleshooting-jekyll-build-errors-for-github-pages-sites.md b/content/github/working-with-github-pages/troubleshooting-jekyll-build-errors-for-github-pages-sites.md deleted file mode 100644 index 1ed03b1e523d..000000000000 --- a/content/github/working-with-github-pages/troubleshooting-jekyll-build-errors-for-github-pages-sites.md +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: Troubleshooting Jekyll build errors for GitHub Pages sites -intro: 'You can use Jekyll build error messages to troubleshoot problems with your {% data variables.product.prodname_pages %} site.' -redirect_from: - - /articles/page-build-failed-missing-docs-folder/ - - /articles/page-build-failed-invalid-submodule/ - - /articles/page-build-failed-missing-submodule/ - - /articles/page-build-failed-markdown-errors/ - - /articles/page-build-failed-config-file-error/ - - /articles/page-build-failed-unknown-tag-error/ - - /articles/page-build-failed-tag-not-properly-terminated/ - - /articles/page-build-failed-tag-not-properly-closed/ - - /articles/page-build-failed-file-does-not-exist-in-includes-directory/ - - /articles/page-build-failed-file-is-a-symlink/ - - /articles/page-build-failed-symlink-does-not-exist-within-your-sites-repository/ - - /articles/page-build-failed-file-is-not-properly-utf-8-encoded/ - - /articles/page-build-failed-invalid-post-date/ - - /articles/page-build-failed-invalid-sass-or-scss/ - - /articles/page-build-failed-invalid-highlighter-language/ - - /articles/page-build-failed-relative-permalinks-configured/ - - /articles/page-build-failed-syntax-error-in-for-loop/ - - /articles/page-build-failed-invalid-yaml-in-data-file/ - - /articles/page-build-failed-date-is-not-a-valid-datetime/ - - /articles/troubleshooting-github-pages-builds/ - - /articles/troubleshooting-jekyll-builds/ - - /articles/troubleshooting-jekyll-build-errors-for-github-pages-sites -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Troubleshooting build errors - -If Jekyll encounters an error building your {% data variables.product.prodname_pages %} site locally or on {% data variables.product.product_name %}, you can use error messages to troubleshoot. For more information about error messages and how to view them, see "[About Jekyll build errors for {% data variables.product.prodname_pages %} sites](/articles/about-jekyll-build-errors-for-github-pages-sites)." - -If you received a generic error message, check for common issues. -- You're using unsupported plugins. For more information, see "[About {% data variables.product.prodname_pages %} and Jekyll](/articles/about-github-pages-and-jekyll#plugins)."{% if currentVersion == "free-pro-team@latest" %} -- Your repository has exceeded our repository size limits. For more information, see "[What is my disk quota?](/articles/what-is-my-disk-quota)"{% endif %} -- You changed the `source` setting in your *_config.yml* file. {% data variables.product.prodname_pages %} overrides this setting during the build process. -- A filename in your publishing source contains a colon (`:`) which is not supported. - -If you received a specific error message, review the troubleshooting information for the error message below. - -After you've fixed any errors, push the changes to your site's publishing source to trigger another build on {% data variables.product.product_name %}. - -### Config file error - -This error means that your site failed to build because the *_config.yml* file contains syntax errors. - -To troubleshoot, make sure that your *_config.yml* file follows these rules: - -{% data reusables.pages.yaml-rules %} - -{% data reusables.pages.yaml-linter %} - -### Date is not a valid datetime - -This error means that one of the pages on your site includes an invalid datetime. - -To troubleshoot, search the file in the error message and the file's layouts for calls to any date-related Liquid filters. Make sure that any variables passed into date-related Liquid filters have values in all cases and never pass `nil` or `""`. For more information, see "[Liquid filters](https://help.shopify.com/en/themes/liquid/filters)" in the Liquid documentation. - -### File does not exist in includes directory - -This error means that your code references a file that doesn't exist in your *_includes* directory. - -{% data reusables.pages.search-for-includes %} If any of the files you've referenced aren't in the *_includes* directory, copy or move the files into the *_includes* directory. - -### File is a symlink - -This error means that your code references a symlinked file that does not exist in the publishing source for your site. - -{% data reusables.pages.search-for-includes %} If any of the files you've referenced are symlinked, copy or move the files into the *_includes* directory. - -### File is not properly UTF-8 encoded - -This error means that you used non-Latin characters, like `日本語`, without telling the computer to expect these symbols. - -To troubleshoot, force UTF-8 encoding by adding the following line to your *_config.yml* file: -``` -encoding: UTF-8 -``` - -### Invalid highlighter language - -This error means that you specified any syntax highlighter other than [Rouge](https://github.com/jneen/rouge) or [Pygments](http://pygments.org/) in your configuration file. - -To troubleshoot, update your *_config.yml* file to specify [Rouge](https://github.com/jneen/rouge) or [Pygments](http://pygments.org/). For more information, see "[About {% data variables.product.product_name %} and Jekyll](/articles/about-github-pages-and-jekyll#syntax-highlighting)." - -### Invalid post date - -This error means that a post on your site contains an invalid date in the filename or YAML front matter. - -To troubleshoot, make sure all dates are formatted as YYYY-MM-DD HH:MM:SS for UTC and are actual calendar dates. To specify a time zone with an offset from UTC, use the format YYYY-MM-DD HH:MM:SS +/-TTTT, like `2014-04-18 11:30:00 +0800`. - -If you specify a date format in your *_config.yml* file, make sure the format is correct. - -### Invalid Sass or SCSS - -This error means your repository contains a Sass or SCSS file with invalid content. - -To troubleshoot, review the line number included in the error message for invalid Sass or SCSS. To help prevent future errors, install a Sass or SCSS linter for your favorite text editor. - -### Invalid submodule - -This error means that your repository includes a submodule that hasn't been properly initialized. - -{% data reusables.pages.remove-submodule %} - -If do you want to use the submodule, make sure you use `https://` when referencing the submodule (not `http://`) and that the submodule is in a public repository. - -### Invalid YAML in data file - -This error means that one of more files in the *_data* folder contains invalid YAML. - -To troubleshoot, make sure the YAML files in your *_data* folder follow these rules: - -{% data reusables.pages.yaml-rules %} - -{% data reusables.pages.yaml-linter %} - -For more information about Jekyll data files, see "[Data Files](https://jekyllrb.com/docs/datafiles/)" in the Jekyll documentation. - -### Markdown errors - -This error means that your repository contains Markdown errors. - -To troubleshoot, make sure you are using a supported Markdown processor. For more information, see "[Setting a Markdown processor for your {% data variables.product.prodname_pages %} site using Jekyll](/articles/setting-a-markdown-processor-for-your-github-pages-site-using-jekyll)." - -Then, make sure the file in the error message uses valid Markdown syntax. For more information, see "[Markdown: Syntax](https://daringfireball.net/projects/markdown/syntax)" on Daring Fireball. - -### Missing docs folder - -This error means that you have chosen the `docs` folder on a branch as your publishing source, but there is no `docs` folder in the root of your repository on that branch. - -To troubleshoot, if your `docs` folder was accidentally moved, try moving the `docs` folder back to the root of your repository on the branch you chose for your publishing source. If the `docs` folder was accidentally deleted, you can either: -- Use Git to revert or undo the deletion. For more information, see "[git-revert](https://git-scm.com/docs/git-revert.html)" in the Git documentation. -- Create a new `docs` folder in the root of your repository on the branch you chose for your publishing source and add your site's source files to the folder. For more information, see "[Creating new files](/articles/creating-new-files)." -- Change your publishing source. For more information, see "[Configuring a publishing source for {% data variables.product.prodname_pages %}](/articles/configuring-a-publishing-source-for-github-pages)." - -### Missing submodule - -This error means that your repository includes a submodule that doesn't exist or hasn't been properly initialized. - -{% data reusables.pages.remove-submodule %} - -If you do want to use a submodule, initialize the submodule. For more information, see "[Git Tools - Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules)" in the _Pro Git_ book. - -### Relative permalinks configured - -This errors means that you have relative permalinks, which are not supported by {% data variables.product.prodname_pages %}, in your *_config.yml* file. - -Permalinks are permanent URLs that reference a particular page on your site. Absolute permalinks begin with the root of the site, while relative permalinks begin with the folder containing the referenced page. {% data variables.product.prodname_pages %} and Jekyll no longer support relative permalinks. For more information about permalinks, see "[Permalinks](https://jekyllrb.com/docs/permalinks/)" in the Jekyll documentation. - -To troubleshoot, remove the `relative_permalinks` line from your *_config.yml* file and reformat any relative permalinks in your site with absolute permalinks. For more information, see "[Editing files in your repository](/articles/editing-files-in-your-repository)." - -### Symlink does not exist within your site's repository - -This error means that your site includes a symbolic link (symlink) that does not exist in the publishing source for your site. For more information about symlinks, see "[Symbolic link](https://en.wikipedia.org/wiki/Symbolic_link)" on Wikipedia. - -To troubleshoot, determine if the file in the error message is used to build your site. If not, or if you don't want the file to be a symlink, delete the file. If the symlinked file is necessary to build your site, make sure the file or directory the symlink references is in the publishing source for your site. To include external assets, consider using {% if currentVersion == "free-pro-team@latest" %}`git submodule` or {% endif %}a third-party package manager such as [Bower](https://bower.io/).{% if currentVersion == "free-pro-team@latest" %} For more information, see "[Using submodules with {% data variables.product.prodname_pages %}](/articles/using-submodules-with-github-pages)."{% endif %} - -### Syntax error in 'for' loop - -This error means that your code includes invalid syntax in a Liquid `for` loop declaration. - -To troubleshoot, make sure all `for` loops in the file in the error message have proper syntax. For more information about proper syntax for `for` loops, see "[Iteration tags](https://help.shopify.com/en/themes/liquid/tags/iteration-tags#for)" in the Liquid documentation. - -### Tag not properly closed - -This error message means that your code includes a logic tag that is not properly closed. For example, {% raw %}`{% capture example_variable %}` must be closed by `{% endcapture %}`{% endraw %}. - -To troubleshoot, make sure all logic tags in the file in the error message are properly closed. For more information, see "[Liquid tags](https://help.shopify.com/en/themes/liquid/tags)" in the Liquid documentation. - -### Tag not properly terminated - -This error means that your code includes an output tag that is not properly terminated. For example, {% raw %}`{{ page.title }` instead of `{{ page.title }}`{% endraw %}. - -To troubleshoot, make sure all output tags in the file in the error message are terminated with `}}`. For more information, see "[Liquid objects](https://help.shopify.com/en/themes/liquid/objects)" in the Liquid documentation. - -### Unknown tag error - -This error means that your code contains an unrecognized Liquid tag. - -To troubleshoot, make sure all Liquid tags in the file in the error message match Jekyll's default variables and there are no typos in the tag names. For a list of default varibles, see "[Variables](https://jekyllrb.com/docs/variables/)" in the Jekyll documentation. - -Unsupported plugins are a common source of unrecognized tags. If you use an unsupported plugin in your site by generating your site locally and pushing your static files to {% data variables.product.product_name %}, make sure the plugin is not introducing tags that are not in Jekyll's default variables. For a list of supported plugins, see "[About {% data variables.product.prodname_pages %} and Jekyll](/articles/about-github-pages-and-jekyll#plugins)." diff --git a/content/github/working-with-github-pages/unpublishing-a-github-pages-site.md b/content/github/working-with-github-pages/unpublishing-a-github-pages-site.md deleted file mode 100644 index c14a7abd1670..000000000000 --- a/content/github/working-with-github-pages/unpublishing-a-github-pages-site.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Unpublishing a GitHub Pages site -intro: 'You can unpublish your {% data variables.product.prodname_pages %} site so that the site is no longer available to {% if currentVersion == "free-pro-team@latest" %}the public{% else %}everyone using {% data variables.product.product_location %}{% endif %}.' -redirect_from: - - /articles/how-do-i-unpublish-a-project-page/ - - /articles/unpublishing-a-project-page/ - - /articles/unpublishing-a-project-pages-site/ - - /articles/unpublishing-a-user-pages-site/ - - /articles/unpublishing-a-github-pages-site -product: '{% data reusables.gated-features.pages %}' -permissions: 'People with admin or maintainer permissions for a repository can unpublish a {% data variables.product.prodname_pages %} site.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Unpublishing a project site - -{% data reusables.repositories.navigate-to-repo %} -2. If a `gh-pages` branch exists in the repository, delete the `gh-pages` branch. For more information, see "[Creating and deleting branches within your repository](/articles/creating-and-deleting-branches-within-your-repository#deleting-a-branch)." -3. If the `gh-pages` branch was your publishing source, {% if currentVersion == "free-pro-team@latest" %}skip to step 6{% else %}your site is now unpublished and you can skip the remaining steps{% endif %}. -{% data reusables.repositories.sidebar-settings %} -5. Under "{% data variables.product.prodname_pages %}", use the **Source** drop-down menu and select **None.** - ![Drop down menu to select a publishing source](/assets/images/help/pages/publishing-source-drop-down.png) -{% data reusables.pages.update_your_dns_settings %} - -### Unpublishing a user or organization site - -{% data reusables.repositories.navigate-to-repo %} -2. Delete the branch that you're using as a publishing source, or delete the entire repository. For more information, see "[Creating and deleting branches within your repository](/articles/creating-and-deleting-branches-within-your-repository#deleting-a-branch)" and "[Deleting a repository](/articles/deleting-a-repository)." -{% data reusables.pages.update_your_dns_settings %} diff --git a/content/github/working-with-github-pages/using-submodules-with-github-pages.md b/content/github/working-with-github-pages/using-submodules-with-github-pages.md deleted file mode 100644 index f3dd9add8282..000000000000 --- a/content/github/working-with-github-pages/using-submodules-with-github-pages.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Using submodules with GitHub Pages -intro: 'You can use submodules with {% data variables.product.prodname_pages %} to include other projects in your site''s code.' -redirect_from: - - /articles/using-submodules-with-pages/ - - /articles/using-submodules-with-github-pages -product: '{% data reusables.gated-features.pages %}' -versions: - free-pro-team: '*' ---- - -If the repository for your {% data variables.product.prodname_pages %} site contains submodules, their contents will automatically be pulled in when your site is built. - -You can only use submodules that point to public repositories, because the {% data variables.product.prodname_pages %} server cannot access private repositories. - -Use the `https://` read-only URL for your submodules, including nested submodules. You can make this change in your _.gitmodules_ file. - -### Further reading - -- "[Git Tools - Submodules](https://git-scm.com/book/en/Git-Tools-Submodules)" from the _Pro Git_ book -- "[Troubleshooting Jekyll build errors for {% data variables.product.prodname_pages %} sites](/articles/troubleshooting-jekyll-build-errors-for-github-pages-sites)" diff --git a/content/github/working-with-github-support/about-github-premium-support-for-github-enterprise-cloud.md b/content/github/working-with-github-support/about-github-premium-support-for-github-enterprise-cloud.md deleted file mode 100644 index 37248a015847..000000000000 --- a/content/github/working-with-github-support/about-github-premium-support-for-github-enterprise-cloud.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: About GitHub Premium Support for GitHub Enterprise Cloud -intro: '{% data variables.contact.premium_support %} is a paid, supplemental support offering for {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_one %} customers.' -redirect_from: - - /articles/about-github-premium-support - - /articles/about-github-premium-support-for-github-enterprise-cloud -versions: - free-pro-team: '*' ---- - -{% note %} - -**Notes:** - -- The terms of {% data variables.contact.premium_support %} are subject to change without notice and are effective as of September 2018. - -- {% data reusables.support.data-protection-and-privacy %} - -- This article contains the terms of {% data variables.contact.premium_support %} for {% data variables.product.prodname_ghe_cloud %} customers. The terms may be different for customers of {% data variables.product.prodname_ghe_server %} or {% data variables.product.prodname_enterprise %} customers who purchase {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_ghe_cloud %} together. For more information, see "[About {% data variables.contact.premium_support %} for {% data variables.product.prodname_ghe_server %}](/enterprise/admin/guides/enterprise-support/about-github-premium-support-for-github-enterprise-server)" and "[About {% data variables.contact.premium_support %} for {% data variables.product.prodname_enterprise %}](/enterprise/admin/guides/enterprise-support/about-github-premium-support-for-github-enterprise)." - -{% endnote %} - -### About {% data variables.contact.premium_support %} - -{% data variables.contact.premium_support %} offers: - - Written support, in English, through our support portal 24 hours per day, 7 days per week - - Phone support, in English, 24 hours per day, 7 days per week - - A Service Level Agreement (SLA) with guaranteed initial response times - - Access to premium content - - Scheduled health checks - - Managed services - -{% data reusables.support.about-premium-plans %} - -{% data reusables.support.signing-up-for-premium-support %} - -{% data reusables.support.scope-of-support %} - -{% data reusables.support.contacting-premium-support %} - -### Hours of operation - -{% data variables.contact.premium_support %} is available 24 hours a day, 7 days per week. - -{% data reusables.support.service-level-agreement-response-times %} - -### Assigning a priority to a support ticket - -When you contact {% data variables.contact.premium_support %}, you can choose one of four priorities for the ticket: {% data variables.product.support_ticket_priority_urgent %}, {% data variables.product.support_ticket_priority_high %}, {% data variables.product.support_ticket_priority_normal %}, or {% data variables.product.support_ticket_priority_low %}. - -{% data reusables.support.github-can-modify-ticket-priority %} - -{% data reusables.support.ghec-premium-priorities %} - -### Resolving and closing support tickets - -{% data variables.contact.premium_support %} may consider a ticket solved after providing an explanation, recommendation, usage instructions, or workaround instructions, - -If you use a custom or unsupported plug-in, module, or custom code, {% data variables.contact.premium_support %} may ask you to remove the unsupported plug-in, module, or code while attempting to resolve the issue. If the problem is fixed when the unsupported plug-in, module, or custom code is removed, {% data variables.contact.premium_support %} may consider the ticket solved. - -{% data variables.contact.premium_support %} may close tickets if they're outside the scope of support or if multiple attempts to contact you have gone unanswered. If {% data variables.contact.premium_support %} closes a ticket due to lack of response, you can request that {% data variables.contact.premium_support %} reopen the ticket. - -{% data reusables.support.receiving-credits %} - -{% data reusables.support.accessing-premium-content %} - -### Further reading - -- "[Submitting a ticket](/articles/submitting-a-ticket)" diff --git a/content/github/working-with-github-support/about-github-support.md b/content/github/working-with-github-support/about-github-support.md deleted file mode 100644 index c0244c7fba01..000000000000 --- a/content/github/working-with-github-support/about-github-support.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: About GitHub Support -intro: '{% data variables.contact.github_support %} can help you troubleshoot issues you run into while using {% data variables.product.prodname_dotcom %}.' -redirect_from: - - /articles/about-github-support -versions: - free-pro-team: '*' ---- - -### About {% data variables.contact.github_support %} - -Support options vary depending on your {% data variables.product.prodname_dotcom_the_website %} product. If you have any paid product, you can contact {% data variables.contact.github_support %}, in English. Your account may also include {% data variables.contact.premium_support %}. - -| | {% data variables.product.prodname_gcf %} | Standard support | Premium support | -|----|---------------|-------|---------------| -| {% data variables.product.prodname_free_user %} | X | | | -| {% data variables.product.prodname_pro %} | X | X | | -| {% data variables.product.prodname_team %} | X | X | | -| {% data variables.product.prodname_ghe_cloud %} | X | X | X | -| {% data variables.product.prodname_ghe_server %} | X | X | X | - -To see if there are currently any incidents affecting services on {% data variables.product.prodname_dotcom %}, or to subscribe and receive notifications of future status updates, visit {% data variables.product.prodname_dotcom %}'s [Status Page](https://www.githubstatus.com/). - -### Contacting {% data variables.contact.github_support %} - -{% data variables.product.prodname_free_user %} user and organization accounts can use the {% data variables.contact.community_support_forum %} to browse topics, ask questions, share solutions, and interact directly with {% data variables.contact.community_support %}. You can also contact {% data variables.contact.contact_support %} to report account, security, and abuse issues. - -On paid accounts, you can either contact {% data variables.contact.contact_support %} and, depending on your plan, contact {% data variables.contact.premium_support %} or {% data variables.contact.contact_ent_support %}. For more information about contacting {% data variables.contact.premium_support %}, see "[About {% data variables.contact.premium_support %} for {% data variables.product.prodname_ghe_cloud %}](/articles/about-github-premium-support-for-github-enterprise-cloud) or "[About {% data variables.contact.premium_support %} for {% data variables.product.prodname_ghe_server %}](/enterprise/admin/enterprise-support/about-github-premium-support-for-github-enterprise)." - -### Granting {% data variables.contact.github_support %} temporary access to a private repository - -If {% data variables.contact.github_support %} needs to access a private repository to address your support request, the owner of the repository will receive an email with a link to accept or decline temporary access. The owner will have 20 days to accept or decline the request before the request expires. If the owner accepts the request, {% data variables.contact.github_support %} will have access the repository for five days. - -{% data variables.contact.github_support %} will never access your private repositories without your explicit consent. For more information, see the [Terms of Service](/articles/github-terms-of-service#3-access). diff --git a/content/github/working-with-github-support/github-enterprise-cloud-support.md b/content/github/working-with-github-support/github-enterprise-cloud-support.md deleted file mode 100644 index 2fbdf674e3d6..000000000000 --- a/content/github/working-with-github-support/github-enterprise-cloud-support.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: GitHub Enterprise Cloud support -redirect_from: - - /articles/business-plan-support/ - - /articles/github-business-cloud-support/ - - /articles/github-enterprise-cloud-support -intro: '{% data variables.product.prodname_ghe_cloud %} includes a target eight-hour response time for priority support requests, Monday to Friday in your local time zone.' -versions: - free-pro-team: '*' ---- - -{% note %} - -**Note:** {% data variables.product.prodname_ghe_cloud %} customers can sign up for {% data variables.contact.premium_support %}. For more information, see "[About {% data variables.contact.premium_support %} for {% data variables.product.prodname_ghe_cloud %}](/articles/about-github-premium-support-for-github-enterprise-cloud)." - -{% endnote %} - -You can submit priority questions if you have purchased {% data variables.product.prodname_ghe_cloud %} or if you're a member, outside collaborator, or billing manager of a {% data variables.product.prodname_dotcom %} organization currently subscribed to {% data variables.product.prodname_ghe_cloud %}. - -Questions that qualify for priority responses: -- Include questions related to your inability to access or use {% data variables.product.prodname_dotcom %}'s core version control functionality -- Include situations related to your account security -- Do not include peripheral services and features, such as questions about Gists, {% data variables.product.prodname_pages %}, or email notifications -- Include questions only about organizations currently using {% data variables.product.prodname_ghe_cloud %} - -To qualify for a priority response, you must: -- Submit your question to [{% data variables.contact.enterprise_support %}](https://enterprise.githubsupport.com/hc/en-us/requests/new?github_product=cloud) from a verified email address that's associated with an organization currently using {% data variables.product.prodname_ghe_cloud %} -- Submit a new support ticket for each individual priority situation -- Submit your question from Monday-Friday in your local time zone -- Understand that the response to a priority question will be received via email -- Cooperate with {% data variables.contact.github_support %} and provide all of the information that {% data variables.contact.github_support %} asks for - -{% tip %} - -**Tip:** Questions do not qualify for a priority response if they are submitted on a local holiday in your jurisdiction. - -{% endtip %} - -The target eight-hour response time: -- Begins when {% data variables.contact.github_support %} receives your qualifying question -- Does not begin until you have provided sufficient information to answer the question, unless you specifically indicate that you do not have sufficient information -- Does not apply on weekends in your local timezone or local holidays in your jurisdiction - -{% note %} - -**Note:** {% data variables.contact.github_support %} does not guarantee a resolution to your priority question. {% data variables.contact.github_support %} may escalate or deescalate issues to or from priority question status, based on our reasonable evaluation of the information you give to us. - -{% endnote %} diff --git a/content/github/working-with-github-support/github-marketplace-support.md b/content/github/working-with-github-support/github-marketplace-support.md deleted file mode 100644 index cfa20c4dc6f9..000000000000 --- a/content/github/working-with-github-support/github-marketplace-support.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: GitHub Marketplace support -intro: 'For help with purchasing or paying for an app from {% data variables.product.prodname_marketplace %}, contact {% data variables.contact.contact_support %}. For help using a {% data variables.product.prodname_marketplace %} app, contact the app''s provider.' -redirect_from: - - /articles/github-marketplace-support -versions: - free-pro-team: '*' ---- - - -### Contacting your app's provider for support - -Every app in {% data variables.product.prodname_marketplace %} includes a link to contact the app's support team. - -{% data reusables.marketplace.visit-marketplace %} -2. Browse to your app's page. -3. In the left sidebar, under "Developer tools," click **Support**. -4. On the app's support page, follow the instructions on the app's page to contact the app's support team. - -### Further reading - -- "[About {% data variables.product.prodname_marketplace %}](/articles/about-github-marketplace)" -- "[Purchasing and installing apps in {% data variables.product.prodname_marketplace %}](/articles/purchasing-and-installing-apps-in-github-marketplace)" -- "[Managing billing for {% data variables.product.prodname_marketplace %} apps](/articles/managing-billing-for-github-marketplace-apps)" diff --git a/content/github/working-with-github-support/index.md b/content/github/working-with-github-support/index.md deleted file mode 100644 index 176ea10515e1..000000000000 --- a/content/github/working-with-github-support/index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Working with GitHub Support -redirect_from: - - /categories/working-with-github-support -versions: - free-pro-team: '*' ---- - - -### Table of Contents - -{% link_in_list /about-github-support %} -{% link_in_list /github-enterprise-cloud-support %} -{% link_in_list /about-github-premium-support-for-github-enterprise-cloud %} -{% link_in_list /github-marketplace-support %} -{% link_in_list /submitting-a-ticket %} diff --git a/content/github/working-with-github-support/submitting-a-ticket.md b/content/github/working-with-github-support/submitting-a-ticket.md deleted file mode 100644 index f3fa8d849391..000000000000 --- a/content/github/working-with-github-support/submitting-a-ticket.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Submitting a ticket -intro: 'You can submit a ticket to {% data variables.contact.github_support %} using the support portal.' -redirect_from: - - /articles/submitting-a-ticket -versions: - free-pro-team: '*' ---- - -If your account uses a paid {% data variables.product.prodname_dotcom %} product, you can directly contact {% data variables.contact.github_support %}. If your account uses {% data variables.product.prodname_free_user %} for user accounts and organizations, you can contact {% data variables.contact.contact_support %} to report account, security, and abuse issues. For more information, see "[About GitHub Support](/github/working-with-github-support/about-github-support)." - -If you use {% data variables.product.prodname_ghe_server %}, {% data variables.product.prodname_ghe_cloud %}, or the {% data variables.product.premium_support_plan %} you must submit tickets using the {% data variables.contact.enterprise_portal %}. - -### Submitting a ticket using the {% data variables.contact.support_portal %} - -1. Navigate to the {% data variables.contact.contact_support_portal %}. -2. Under "Name," type your name. -![Name field](/assets/images/help/support/name-field.png) -3. Use the Email drop-down menu, and select the email address you'd like {% data variables.contact.github_support %} to contact. -![Email field](/assets/images/help/support/email-field.png) -4. Under "Subject", type a descriptive title for the issue you're having. -![Subject field](/assets/images/help/support/subject-field.png) -5. Under "How can we help", provide any additional information that will help the Support team troubleshoot the problem. Helpful information may include: - ![How can we help field](/assets/images/help/support/how-can-we-help-field.png) - - Steps to reproduce the issue - - Any special circumstances surrounding the discovery of the issue (for example, the first occurrence or occurrence after a specific event, frequency of occurrence, business impact of the problem, and suggested urgency) - - Exact wording of error messages -6. Optionally, attach files by dragging and dropping, uploading, or pasting from the clipboard. -7. Click **Send request**. -![Send request button](/assets/images/help/support/send-request-button.png) - -### Submitting a ticket using the {% data variables.contact.enterprise_portal %} - -1. Navigate to the {% data variables.contact.contact_enterprise_portal %}. -5. Click **Submit a Ticket** - ![Submit a ticket to Enterprise Support team](/assets/images/enterprise/support/submit-ticket-button.png) -{% data reusables.enterprise_enterprise_support.submit-support-ticket-first-section %} -{% data reusables.enterprise_enterprise_support.submit-support-ticket-second-section %} - -### Further reading -- "[{% data variables.product.prodname_dotcom %}'s products](/github/getting-started-with-github/githubs-products)" -- "[About {% data variables.contact.github_support %}](/articles/about-github-support)" -- "[About {% data variables.contact.premium_support %} for {% data variables.product.prodname_ghe_cloud %}](/articles/about-github-premium-support-for-github-enterprise-cloud)." diff --git a/content/github/writing-on-github/about-saved-replies.md b/content/github/writing-on-github/about-saved-replies.md deleted file mode 100644 index 784907bee557..000000000000 --- a/content/github/writing-on-github/about-saved-replies.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: About saved replies -intro: You can use a saved reply to respond to an issue or pull request. -redirect_from: - - /articles/about-saved-replies -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -![Saved replies](/assets/images/help/settings/saved-replies.png) - -Saved replies allow you to create a reusable response to issues and pull requests. Save time by creating a saved reply for the responses you use most frequently. - -Once you've added a saved reply, it can be used in both issues and pull requests. Saved replies are tied to your user account. Once they're created, you'll be able to use them across repositories and organizations. - -You can create a maximum of 100 saved replies. If you've reached the maximum limit, you can delete saved replies that you no longer use or edit existing saved replies. - -You can also use the {% data variables.product.product_name %}-provided "Duplicate issue" saved reply to mark an issue as a duplicate and track it with a similar issue. - -### Further reading - -- "[Creating a saved reply](/articles/creating-a-saved-reply)" -- "[Using saved replies](/articles/using-saved-replies)" -- "[Editing a saved reply](/articles/editing-a-saved-reply)" -- "[Deleting a saved reply](/articles/deleting-a-saved-reply)" diff --git a/content/github/writing-on-github/about-writing-and-formatting-on-github.md b/content/github/writing-on-github/about-writing-and-formatting-on-github.md deleted file mode 100644 index 659dd42498ed..000000000000 --- a/content/github/writing-on-github/about-writing-and-formatting-on-github.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: About writing and formatting on GitHub -intro: GitHub combines a syntax for formatting text called GitHub Flavored Markdown with a few unique writing features. -redirect_from: - - /articles/about-writing-and-formatting-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -[Markdown](http://daringfireball.net/projects/markdown/) is an easy-to-read, easy-to-write syntax for formatting plain text. - -We've added some custom functionality to create {% data variables.product.prodname_dotcom %} Flavored Markdown, used to format prose and code across our site. - -You can also interact with other users in pull requests and issues using features like [@mentions](/articles/basic-writing-and-formatting-syntax/#mentioning-people-and-teams), [issue and PR references](/articles/basic-writing-and-formatting-syntax/#referencing-issues-and-pull-requests), and [emoji](/articles/basic-writing-and-formatting-syntax/#using-emoji). - -### Text formatting toolbar - -Every comment field on {% data variables.product.product_name %} contains a text formatting toolbar, allowing you to format your text without learning Markdown syntax. In addition to Markdown formatting like bold and italic styles and creating headers, links, and lists, the toolbar includes {% data variables.product.product_name %}-specific features such as @mentions, task lists, and links to issues and pull requests. - -![Markdown toolbar](/assets/images/help/writing/markdown-toolbar.gif) - -### Further reading - -- [{% data variables.product.prodname_dotcom %} Flavored Markdown Spec](https://github.github.com/gfm/) -- "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax)" -- "[Working with advanced formatting](/articles/working-with-advanced-formatting)" -- "[Mastering Markdown](https://guides.github.com/features/mastering-markdown/)" diff --git a/content/github/writing-on-github/autolinked-references-and-urls.md b/content/github/writing-on-github/autolinked-references-and-urls.md deleted file mode 100644 index b7978b5753f7..000000000000 --- a/content/github/writing-on-github/autolinked-references-and-urls.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Autolinked references and URLs -intro: 'References to URLs, issues, pull requests, and commits are automatically shortened and converted into links.' -redirect_from: - - /articles/autolinked-references-and-urls -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### URLs - -{% data variables.product.product_name %} automatically creates links from standard URLs. - -`Visit https://github.com` - -![Rendered autolinked URL](/assets/images/help/writing/url-autolink-rendered.png) - -For more information on creating links, see "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax/#links)." - -### Issues and pull requests - -Within conversations on {% data variables.product.product_name %}, references to issues and pull requests are automatically converted to shortened links. For more information, see "[About conversations on {% data variables.product.prodname_dotcom %}](/articles/about-conversations-on-github)." - -{% note %} - -**Note:** Autolinked references are not created in wikis or files in a repository. - -{% endnote %} - -| Reference type | Raw reference | Short link | -| --- | --- | --- | -| Issue or pull request URL | https://github.com/jlord/sheetsee.js/issues/26 | [#26](https://github.com/jlord/sheetsee.js/issues/26) -| `#` and issue or pull request number | #26 | [#26](https://github.com/jlord/sheetsee.js/issues/26) | -| `GH-` and issue or pull request number | GH-26 | [GH-26](https://github.com/jlord/sheetsee.js/issues/26) | -| `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) - -### Commit SHAs - -References to a commit's SHA hash are automatically converted into shortened links to the commit on {% data variables.product.product_name %}. - -| Reference type | Raw reference | Short link | -| --- | --- | --- | -| Commit URL | https://github.com/jlord/sheetsee.js/commit/a5c3785ed8d6a35868bc169f07e40e889087fd2e | [a5c3785](https://github.com/jlord/sheetsee.js/commit/a5c3785ed8d6a35868bc169f07e40e889087fd2e) | -| SHA | a5c3785ed8d6a35868bc169f07e40e889087fd2e | [a5c3785](https://github.com/jlord/sheetsee.js/commit/a5c3785ed8d6a35868bc169f07e40e889087fd2e) | -| User@SHA | jlord@a5c3785ed8d6a35868bc169f07e40e889087fd2e | [jlord@a5c3785](https://github.com/jlord/sheetsee.js/commit/a5c3785ed8d6a35868bc169f07e40e889087fd2e) -| Username/Repository@SHA | jlord/sheetsee.js@a5c3785ed8d6a35868bc169f07e40e889087fd2e | [jlord/sheetsee.js@a5c3785](https://github.com/jlord/sheetsee.js/commit/a5c3785ed8d6a35868bc169f07e40e889087fd2e) | - -### Custom autolinks to external resources - -{% data reusables.repositories.autolink-references %} - -### Further reading - -- "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax)" diff --git a/content/github/writing-on-github/basic-writing-and-formatting-syntax.md b/content/github/writing-on-github/basic-writing-and-formatting-syntax.md deleted file mode 100644 index 391f2e03eec5..000000000000 --- a/content/github/writing-on-github/basic-writing-and-formatting-syntax.md +++ /dev/null @@ -1,238 +0,0 @@ ---- -title: Basic writing and formatting syntax -intro: Create sophisticated formatting for your prose and code on GitHub with simple syntax. -redirect_from: - - /articles/basic-writing-and-formatting-syntax -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Headings - -To create a heading, add one to six `#` symbols before your heading text. The number of `#` you use will determine the size of the heading. - -``` -# The largest heading -## The second largest heading -###### The smallest heading -``` - -![Rendered H1, H2, and H6 headings](/assets/images/help/writing/headings-rendered.png) - -### Styling text - -You can indicate emphasis with bold, italic, or strikethrough text. - -| Style | Syntax | Keyboard shortcut | Example | Output | -| --- | --- | --- | --- | --- | -| Bold | `** **` or `__ __` | command/control + b | `**This is bold text**` | **This is bold text** | -| Italic | `* *` or `_ _` | command/control + i | `*This text is italicized*` | *This text is italicized* | -| Strikethrough | `~~ ~~` | | `~~This was mistaken text~~` | ~~This was mistaken text~~ | -| Bold and nested italic | `** **` and `_ _` | | `**This text is _extremely_ important**` | **This text is _extremely_ important** | -| All bold and italic | `*** ***` | | `***All this text is important***` | ***All this text is important*** | - -### Quoting text - -You can quote text with a `>`. - -``` -In the words of Abraham Lincoln: - -> Pardon my French -``` - -![Rendered quoted text](/assets/images/help/writing/quoted-text-rendered.png) - -{% tip %} - -**Tip:** When viewing a conversation, you can automatically quote text in a comment by highlighting the text, then typing `r`. You can quote an entire comment by clicking {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then **Quote reply**. For more information about keyboard shortcuts, see "[Keyboard shortcuts](/articles/keyboard-shortcuts/)." - -{% endtip %} - -### Quoting code - -You can call out code or a command within a sentence with single backticks. The text within the backticks will not be formatted. - -``` -Use `git status` to list all new or modified files that haven't yet been committed. -``` - -![Rendered inline code block](/assets/images/help/writing/inline-code-rendered.png) - -To format code or text into its own distinct block, use triple backticks. - -
-Some basic Git commands are:
-```
-git status
-git add
-git commit
-```
-
- -![Rendered code block](/assets/images/help/writing/code-block-rendered.png) - -For more information, see "[Creating and highlighting code blocks](/articles/creating-and-highlighting-code-blocks)." - -### Links - -You can create an inline link by wrapping link text in brackets `[ ]`, and then wrapping the URL in parentheses `( )`. You can also use the keyboard shortcut `command + k` to create a link. - -`This site was built using [GitHub Pages](https://pages.github.com/).` - -![Rendered link](/assets/images/help/writing/link-rendered.png) - -{% tip %} - -**Tip:** {% data variables.product.product_name %} automatically creates links when valid URLs are written in a comment. For more information, see "[Autolinked references and URLS](/articles/autolinked-references-and-urls)." - -{% endtip %} - -### Section links - -{% data reusables.repositories.section-links %} - -### Relative links - -{% data reusables.repositories.relative-links %} - -### Lists - -You can make an unordered list by preceding one or more lines of text with `-` or `*`. - -``` -- George Washington -- John Adams -- Thomas Jefferson -``` - -![Rendered unordered list](/assets/images/help/writing/unordered-list-rendered.png) - -To order your list, precede each line with a number. - -``` -1. James Madison -2. James Monroe -3. John Quincy Adams -``` - -![Rendered ordered list](/assets/images/help/writing/ordered-list-rendered.png) - -#### Nested Lists - -You can create a nested list by indenting one or more list items below another item. - -To create a nested list using the web editor on {% data variables.product.product_name %} or a text editor that uses a monospaced font, like [Atom](https://atom.io/), you can align your list visually. Type space characters in front of your nested list item, until the list marker character (`-` or `*`) lies directly below the first character of the text in the item above it. - -``` -1. First list item - - First nested list item - - Second nested list item -``` - -![Nested list with alignment highlighted](/assets/images/help/writing/nested-list-alignment.png) - -![List with two levels of nested items](/assets/images/help/writing/nested-list-example-1.png) - -To create a nested list in the comment editor on {% data variables.product.product_name %}, which doesn't use a monospaced font, you can look at the list item immediately above the nested list and count the number of characters that appear before the content of the item. Then type that number of space characters in front of the nested list item. - -In this example, you could add a nested list item under the list item `100. First list item` by indenting the nested list item a minimum of five spaces, since there are five characters (`100. `) before `First list item`. - -``` -100. First list item - - First nested list item -``` - -![List with a nested list item](/assets/images/help/writing/nested-list-example-3.png) - -You can create multiple levels of nested lists using the same method. For example, because the first nested list item has seven spaces (`␣␣␣␣␣-␣`) before the nested list content `First nested list item`, you would need to indent the second nested list item by seven spaces. - -``` -100. First list item - - First nested list item - - Second nested list item -``` - -![List with two levels of nested items](/assets/images/help/writing/nested-list-example-2.png) - -For more examples, see the [GitHub Flavored Markdown Spec](https://github.github.com/gfm/#example-265). - -### Task lists - -{% data reusables.repositories.task-list-markdown %} - -If a task list item description begins with a parenthesis, you'll need to escape it with `\`: - -`- [ ] \(Optional) Open a followup issue` - -For more information, see "[About task lists](/articles/about-task-lists)." - -### Mentioning people and teams - -You can mention a person or [team](/articles/setting-up-teams/) on {% data variables.product.product_name %} by typing `@` plus their username or team name. This will trigger a notification and bring their attention to the conversation. People will also receive a notification if you edit a comment to mention their username or team name. For more information about notifications, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %}"[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications){% else %}"[About notifications](/github/receiving-notifications-about-activity-on-github/about-notifications){% endif %}." - -`@github/support What do you think about these updates?` - -![Rendered @mention](/assets/images/help/writing/mention-rendered.png) - -When you mention a parent team, members of its child teams also receive notifications, simplifying communication with multiple groups of people. For more information, see "[About teams](/articles/about-teams)." - -Typing an `@` symbol will bring up a list of people or teams on a project. The list filters as you type, so once you find the name of the person or team you are looking for, you can use the arrow keys to select it and press either tab or enter to complete the name. For teams, enter the @organization/team-name and all members of that team will get subscribed to the conversation. - -The autocomplete results are restricted to repository collaborators and any other participants on the thread. - -### Referencing issues and pull requests - -You can bring up a list of suggested issues and pull requests within the repository by typing `#`. Type the issue or pull request number or title to filter the list, and then press either tab or enter to complete the highlighted result. - -For more information, see "[Autolinked references and URLs](/articles/autolinked-references-and-urls)." - -### Referencing external resources - -{% data reusables.repositories.autolink-references %} - -### Content attachments - -Some {% data variables.product.prodname_github_app %}s provide information in {% data variables.product.product_name %} for URLs that link to their registered domains. {% data variables.product.product_name %} renders the information provided by the app under the URL in the body or comment of an issue or pull request. - -![Content attachment](/assets/images/help/writing/content-attachment.png) - -To see content attachments, you must have a {% data variables.product.prodname_github_app %} that uses the Content Attachments API installed on the repository.{% if currentVersion == "free-pro-team@latest" %} For more information, see "[Installing an app in your personal account](/articles/installing-an-app-in-your-personal-account)" and "[Installing an app in your organization](/articles/installing-an-app-in-your-organization)."{% endif %} - -Content attachments will not be displayed for URLs that are part of a markdown link. - -For more information about building a {% data variables.product.prodname_github_app %} that uses content attachments, see "[Using Content Attachments](/apps/using-content-attachments)." - -### Using emoji - -You can add emoji to your writing by typing `:EMOJICODE:`. - -`@octocat :+1: This PR looks great - it's ready to merge! :shipit:` - -![Rendered emoji](/assets/images/help/writing/emoji-rendered.png) - -Typing `:` will bring up a list of suggested emoji. The list will filter as you type, so once you find the emoji you're looking for, press **Tab** or **Enter** to complete the highlighted result. - -For a full list of available emoji and codes, check out [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com). - -### Paragraphs - -You can create a new paragraph by leaving a blank line between lines of text. - -### Ignoring Markdown formatting - -You can tell {% data variables.product.product_name %} to ignore (or escape) Markdown formatting by using `\` before the Markdown character. - -`Let's rename \*our-new-project\* to \*our-old-project\*.` - -![Rendered escaped character](/assets/images/help/writing/escaped-character-rendered.png) - -For more information, see Daring Fireball's "[Markdown Syntax](https://daringfireball.net/projects/markdown/syntax#backslash)." - -### Further reading - -- [{% data variables.product.prodname_dotcom %} Flavored Markdown Spec](https://github.github.com/gfm/) -- "[About writing and formatting on GitHub](/articles/about-writing-and-formatting-on-github)" -- "[Working with advanced formatting](/articles/working-with-advanced-formatting)" -- "[Mastering Markdown](https://guides.github.com/features/mastering-markdown/)" diff --git a/content/github/writing-on-github/creating-a-saved-reply.md b/content/github/writing-on-github/creating-a-saved-reply.md deleted file mode 100644 index 1acd0d4a20e8..000000000000 --- a/content/github/writing-on-github/creating-a-saved-reply.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Creating a saved reply -intro: 'If you frequently add the same comment over and over, you can create a saved reply.' -redirect_from: - - /articles/creating-a-saved-reply -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.saved_replies %} -3. Under "Add a saved reply", add your saved reply title. -![Saved reply title](/assets/images/help/settings/saved-replies-title.png) -4. In the "Write" field, add the content you'd like to use for the saved reply. For more information on writing on {% data variables.product.product_name %}, see "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax)." -![Writing a saved reply](/assets/images/help/settings/saved-replies-settings-adding.png) -5. To review your reply, click **Preview**. -![Add a saved reply](/assets/images/help/settings/saved-replies-preview.png) -6. Click **Add saved reply**. -![Add a saved reply](/assets/images/help/settings/saved-replies-add-button.png) - -### Further reading - -- "[Using saved replies](/articles/using-saved-replies)" -- "[Editing a saved reply](/articles/editing-a-saved-reply)" -- "[Deleting a saved reply](/articles/deleting-a-saved-reply)" diff --git a/content/github/writing-on-github/creating-and-highlighting-code-blocks.md b/content/github/writing-on-github/creating-and-highlighting-code-blocks.md deleted file mode 100644 index df4e3379074b..000000000000 --- a/content/github/writing-on-github/creating-and-highlighting-code-blocks.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Creating and highlighting code blocks -intro: Share samples of code with fenced code blocks and enabling syntax highlighting. -redirect_from: - - /articles/creating-and-highlighting-code-blocks -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Fenced code blocks - -You can create fenced code blocks by placing triple backticks \`\`\` before and after the code block. We recommend placing a blank line before and after code blocks to make the raw formatting easier to read. - -
-```
-function test() {
-  console.log("notice the blank line before this function?");
-}
-```
-
- -![Rendered fenced code block](/assets/images/help/writing/fenced-code-block-rendered.png) - -{% tip %} - -**Tip:** To preserve your formatting within a list, make sure to indent non-fenced code blocks by eight spaces. - -{% endtip %} - -### Syntax highlighting - -You can add an optional language identifier to enable syntax highlighting in your fenced code block. - -For example, to syntax highlight Ruby code: - - ```ruby - require 'redcarpet' - markdown = Redcarpet.new("Hello World!") - puts markdown.to_html - ``` - -![Rendered code block with Ruby syntax highlighting](/assets/images/help/writing/code-block-syntax-highlighting-rendered.png) - -We use [Linguist](https://github.com/github/linguist) to perform language detection and to select [third-party grammars](https://github.com/github/linguist/blob/master/vendor/README.md) for syntax highlighting. You can find out which keywords are valid in [the languages YAML file](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml). - -### Further reading - -- [{% data variables.product.prodname_dotcom %} Flavored Markdown Spec](https://github.github.com/gfm/) -- "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax)" diff --git a/content/github/writing-on-github/creating-gists.md b/content/github/writing-on-github/creating-gists.md deleted file mode 100644 index 118d2f1e656a..000000000000 --- a/content/github/writing-on-github/creating-gists.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Creating gists -intro: 'You can create two kinds of gists: public and secret. Create a public gist if you''re ready to share your ideas with the world or a secret gist if you''re not.' -redirect_from: - - /articles/about-gists/ - - /articles/cannot-delete-an-anonymous-gist/ - - /articles/deleting-an-anonymous-gist/ - - /articles/creating-gists -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About gists - -Every gist is a Git repository, which means that it can be forked and cloned. If you are signed in to {% data variables.product.product_name %} when you create a gist, the gist will be associated with your account and you will see it in your list of gists when you navigate to your {% data variables.gists.gist_homepage %}. - -Gists can be public or secret. Public gists show up in {% data variables.gists.discover_url %}, where people can browse new gists as they're created. They're also searchable, so you can use them if you'd like other people to find and see your work. {% data reusables.gist.cannot-convert-public-gists-to-secret %} - -Secret gists don't show up in {% data variables.gists.discover_url %} and are not searchable. {% data reusables.gist.cannot-convert-public-gists-to-secret %} Secret gists aren't private. If you send the URL of a secret gist to a friend, they'll be able to see it. However, if someone you don't know discovers the URL, they'll also be able to see your gist. If you need to keep your code away from prying eyes, you may want to [create a private repository](/articles/creating-a-new-repository) instead. - -{% if enterpriseServerVersions contains currentVersion %} - -If your site administrator has disabled private mode, you can also use anonymous gists, which can be public or secret. - -{% data reusables.gist.anonymous-gists-cannot-be-deleted %} - -{% endif %} - -You'll receive a notification when: -- You are the author of a gist. -- Someone mentions you in a gist. -- You subscribe to a gist, by clicking **Subscribe** at the top any gist. - -You can pin gists to your profile so other people can see them easily. For more information, see "[Pinning items to your profile](/articles/pinning-items-to-your-profile)." - -You can discover gists others have created by going to the {% data variables.gists.gist_homepage %} and clicking **All Gists**. This will take you to a page of all gists sorted and displayed by time of creation or update. You can also search gists by language with {% data variables.gists.gist_search_url %}. Gist search uses the same search syntax as [code search](/articles/searching-code). - -Since gists are Git repositories, you can view their full commit history, complete with diffs. You can also fork or clone gists. For more information, see ["Forking and cloning gists"](/articles/forking-and-cloning-gists). - -You can download a ZIP file of a gist by clicking the **Download ZIP** button at the top of the gist. You can embed a gist in any text field that supports Javascript, such as a blog post. To get the embed code, click the clipboard icon next to the **Embed** URL of a gist. To embed a specific gist file, append the **Embed** URL with `?file=FILENAME`. - -{% if currentVersion == "free-pro-team@latest" %} - -Gist supports mapping GeoJSON files. These maps are displayed in embedded gists, so you can easily share and embed maps. For more information, see "[Mapping GeoJSON files on {% data variables.product.product_name %}](/articles/mapping-geojson-files-on-github)." - -{% endif %} - -### Creating a gist - -You can also drag and drop a text file from your desktop directly into the gist editor. - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -{% note %} - -You can also create a gist using the {% data variables.product.prodname_cli %}. For more information, see "[`gh gist create`](https://cli.github.com/manual/gh_gist_create)" in the {% data variables.product.prodname_cli %} documentation. - -{% endnote %} -{% endif %} - -1. Sign in to {% data variables.product.product_name %}. -2. Navigate to your {% data variables.gists.gist_homepage %}. -3. Type an optional description and name for your gist. -![Gist name description](/assets/images/help/gist/gist_name_description.png) - -4. Type the text of your gist into the gist text box. -![Gist text box](/assets/images/help/gist/gist_text_box.png) - -5. Do one of the following: - - To create a public gist, click **Create public gist**. - - To create a secret gist, click **Create secret Gist**. - ![Gist create button](/assets/images/help/gist/gist_create_btn.png) - - {% note %} - - **Note:** {% data reusables.gist.cannot-convert-public-gists-to-secret %} - - {% endnote %} diff --git a/content/github/writing-on-github/deleting-a-saved-reply.md b/content/github/writing-on-github/deleting-a-saved-reply.md deleted file mode 100644 index 23b543313b5c..000000000000 --- a/content/github/writing-on-github/deleting-a-saved-reply.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Deleting a saved reply -intro: 'If you find that you''re no longer using a saved reply, you can delete it.' -redirect_from: - - /articles/deleting-a-saved-reply -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.saved_replies %} -3. Under "Saved replies", next to the saved reply you want to delete, click {% octicon "x" aria-label="The X" %}. -![Delete saved reply](/assets/images/help/settings/saved-replies-delete-existing.png) diff --git a/content/github/writing-on-github/editing-a-saved-reply.md b/content/github/writing-on-github/editing-a-saved-reply.md deleted file mode 100644 index cf558d948cc3..000000000000 --- a/content/github/writing-on-github/editing-a-saved-reply.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Editing a saved reply -intro: You can edit the title and body of a saved reply. -redirect_from: - - /articles/changing-a-saved-reply/ - - /articles/editing-a-saved-reply -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.user_settings.access_settings %} -{% data reusables.user_settings.saved_replies %} -3. Under "Saved replies", next to the saved reply you want to edit, click {% octicon "pencil" aria-label="The pencil" %}. -![Edit a saved reply](/assets/images/help/settings/saved-replies-edit-existing.png) -4. Under "Edit saved reply", you can edit the title and the content of the saved reply. -![Edit title and content](/assets/images/help/settings/saved-replies-edit-existing-content.png) -5. Click **Update saved reply**. -![Update saved reply](/assets/images/help/settings/saved-replies-save-edit.png) - -### Further reading - -- "[Creating a saved reply](/articles/creating-a-saved-reply)" -- "[Deleting a saved reply](/articles/deleting-a-saved-reply)" -- "[Using saved replies](/articles/using-saved-replies)" diff --git a/content/github/writing-on-github/editing-and-sharing-content-with-gists.md b/content/github/writing-on-github/editing-and-sharing-content-with-gists.md deleted file mode 100644 index bda6ba4d2692..000000000000 --- a/content/github/writing-on-github/editing-and-sharing-content-with-gists.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Editing and sharing content with gists -intro: '' -mapTopic: true -redirect_from: - - /categories/23/articles/ - - /categories/gists/ - - /articles/editing-and-sharing-content-with-gists -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/writing-on-github/forking-and-cloning-gists.md b/content/github/writing-on-github/forking-and-cloning-gists.md deleted file mode 100644 index 73b1c187127b..000000000000 --- a/content/github/writing-on-github/forking-and-cloning-gists.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Forking and cloning gists -intro: 'Gists are actually Git repositories, which means that you can fork or clone any gist, even if you aren''t the original author. You can also view a gist''s full commit history, including diffs.' -redirect_from: - - /articles/forking-and-cloning-gists -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Forking gists - -Each gist indicates which forks have activity, making it easy to find interesting changes from coworkers or complete strangers. - -![Gist forks](/assets/images/help/gist/gist_forks.png) - -### Cloning gists - -If you want to make local changes to a gist and push them up to the web, you can clone a gist and make commits the same as you would with any Git repository. For more information, see "[Cloning a repository](/articles/cloning-a-repository)." - -![Gist clone button](/assets/images/help/gist/gist_clone_btn.png) - -### Viewing gist commit history - -To view a gist's full commit history, click the "Revisions" tab at the top of the gist{. - -![Gist revisions tab](/assets/images/help/gist/gist_revisions_tab.png) - -You will see a full commit history for the gist with diffs. - -![Gist revisions page](/assets/images/help/gist/gist_history.png) diff --git a/content/github/writing-on-github/getting-started-with-writing-and-formatting-on-github.md b/content/github/writing-on-github/getting-started-with-writing-and-formatting-on-github.md deleted file mode 100644 index b7cf7d34c76d..000000000000 --- a/content/github/writing-on-github/getting-started-with-writing-and-formatting-on-github.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Getting started with writing and formatting on GitHub -redirect_from: - - /articles/markdown-basics/ - - /articles/things-you-can-do-in-a-text-area-on-github/ - - /articles/getting-started-with-writing-and-formatting-on-github -intro: 'You can use simple features to format your comments and interact with others in issues, pull requests, and wikis on GitHub.' -mapTopic: true -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/writing-on-github/index.md b/content/github/writing-on-github/index.md deleted file mode 100644 index 81ca75b5ccad..000000000000 --- a/content/github/writing-on-github/index.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Writing on GitHub -redirect_from: - - /categories/88/articles/ - - /articles/github-flavored-markdown/ - - /articles/writing-on-github/ - - /categories/writing-on-github -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -### Table of Contents - -{% topic_link_in_list /getting-started-with-writing-and-formatting-on-github %} - {% link_in_list /about-writing-and-formatting-on-github %} - {% link_in_list /basic-writing-and-formatting-syntax %} -{% topic_link_in_list /working-with-advanced-formatting %} - {% link_in_list /organizing-information-with-tables %} - {% link_in_list /creating-and-highlighting-code-blocks %} - {% link_in_list /autolinked-references-and-urls %} -{% topic_link_in_list /working-with-saved-replies %} - {% link_in_list /about-saved-replies %} - {% link_in_list /creating-a-saved-reply %} - {% link_in_list /editing-a-saved-reply %} - {% link_in_list /deleting-a-saved-reply %} - {% link_in_list /using-saved-replies %} -{% topic_link_in_list /editing-and-sharing-content-with-gists %} - {% link_in_list /creating-gists %} - {% link_in_list /forking-and-cloning-gists %} diff --git a/content/github/writing-on-github/organizing-information-with-tables.md b/content/github/writing-on-github/organizing-information-with-tables.md deleted file mode 100644 index 775fc4fd3014..000000000000 --- a/content/github/writing-on-github/organizing-information-with-tables.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Organizing information with tables -intro: 'You can build tables to organize information in comments, issues, pull requests, and wikis.' -redirect_from: - - /articles/organizing-information-with-tables -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Creating a table - -You can create tables with pipes `|` and hyphens `-`. Hyphens are used to create each column's header, while pipes separate each column. You must include a blank line before your table in order for it to correctly render. - -``` - -| First Header | Second Header | -| ------------- | ------------- | -| Content Cell | Content Cell | -| Content Cell | Content Cell | -``` - -![Rendered table](/assets/images/help/writing/table-basic-rendered.png) - -The pipes on either end of the table are optional. - -Cells can vary in width and do not need to be perfectly aligned within columns. There must be at least three hyphens in each column of the header row. - -``` -| Command | Description | -| --- | --- | -| git status | List all new or modified files | -| git diff | Show file differences that haven't been staged | -``` - -![Rendered table with varied cell width](/assets/images/help/writing/table-varied-columns-rendered.png) - -### Formatting content within your table - -You can use [formatting](/articles/basic-writing-and-formatting-syntax) such as links, inline code blocks, and text styling within your table: - -``` -| Command | Description | -| --- | --- | -| `git status` | List all *new or modified* files | -| `git diff` | Show file differences that **haven't been** staged | -``` - -![Rendered table with formatted text](/assets/images/help/writing/table-inline-formatting-rendered.png) - -You can align text to the left, right, or center of a column by including colons `:` to the left, right, or on both sides of the hyphens within the header row. - -``` -| Left-aligned | Center-aligned | Right-aligned | -| :--- | :---: | ---: | -| git status | git status | git status | -| git diff | git diff | git diff | -``` - -![Rendered table with left, center, and right text alignment](/assets/images/help/writing/table-aligned-text-rendered.png) - -To include a pipe `|` as content within your cell, use a `\` before the pipe: - -``` -| Name | Character | -| --- | --- | -| Backtick | ` | -| Pipe | \| | -``` - -![Rendered table with an escaped pipe](/assets/images/help/writing/table-escaped-character-rendered.png) - -### Further reading - -- [{% data variables.product.prodname_dotcom %} Flavored Markdown Spec](https://github.github.com/gfm/) -- "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax)" diff --git a/content/github/writing-on-github/using-saved-replies.md b/content/github/writing-on-github/using-saved-replies.md deleted file mode 100644 index 8046f5f795df..000000000000 --- a/content/github/writing-on-github/using-saved-replies.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Using saved replies -intro: 'When commenting on an issue or pull request, you can add a saved reply that you''ve already set up. The saved reply can be the entire comment or if you want to customize it, you can add or delete content.' -redirect_from: - - /articles/using-saved-replies -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.repositories.sidebar-issue-pr %} -2. Click the desired issue or pull request. -3. To add a saved reply, in the comment field, click {% octicon "reply" aria-label="The mail reply" %}. - ![Saved replies button](/assets/images/help/writing/saved-replies-button.png) -4. From the list, select the saved reply you'd like to add to your comment. - ![Saved replies](/assets/images/help/settings/saved-replies.png) - -{% tip %} - -**Tips:** -- You can use a keyboard shortcut to autofill the comment with a saved reply. For more information, see "[Keyboard shortcuts](/articles/keyboard-shortcuts/#comments)." -- You can filter the list by typing the title of the saved reply. - -{% endtip %} - -### Further reading - -- "[Creating a saved reply](/articles/creating-a-saved-reply)" -- "[Editing a saved reply](/articles/editing-a-saved-reply)" -- "[Deleting a saved reply](/articles/deleting-a-saved-reply)" diff --git a/content/github/writing-on-github/working-with-advanced-formatting.md b/content/github/writing-on-github/working-with-advanced-formatting.md deleted file mode 100644 index 4825f59d040d..000000000000 --- a/content/github/writing-on-github/working-with-advanced-formatting.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Working with advanced formatting -intro: 'Formatting like tables, syntax highlighting, and automatic linking allows you to arrange complex information clearly in your pull requests, issues, and comments.' -mapTopic: true -redirect_from: - - /articles/working-with-advanced-formatting -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/github/writing-on-github/working-with-saved-replies.md b/content/github/writing-on-github/working-with-saved-replies.md deleted file mode 100644 index 5ca965c0aa67..000000000000 --- a/content/github/writing-on-github/working-with-saved-replies.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Working with saved replies -intro: 'To save time and make sure you''re delivering a consistent message, you can add saved replies to issue and pull request comments.' -mapTopic: true -redirect_from: - - /articles/working-with-saved-replies -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - diff --git a/content/graphql/guides/forming-calls-with-graphql.md b/content/graphql/guides/forming-calls-with-graphql.md deleted file mode 100644 index 4f04295aa13b..000000000000 --- a/content/graphql/guides/forming-calls-with-graphql.md +++ /dev/null @@ -1,410 +0,0 @@ ---- -title: Forming calls with GraphQL -intro: 'Learn how to authenticate to the GraphQL API, then learn how to create and run queries and mutations.' -redirect_from: - - /v4/guides/forming-calls - - /graphql/guides/forming-calls -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Authenticating with GraphQL - -To communicate with the GraphQL server, you'll need an OAuth token with the right scopes. - -Follow the steps in "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)" to create a token. The scopes you require depends on the type of data you're trying to request. For example, select the **User** scopes to request user data. If you need access to repository information, select the appropriate **Repository** scopes. - -{% if currentVersion == "free-pro-team@latest" %} - -To match the behavior of the [GraphQL Explorer](/v4/guides/using-the-explorer), request the following scopes: - -{% else %} - -The following scopes are recommended: - -{% endif %} - -``` -user -public_repo -repo -repo_deployment -repo:status -read:repo_hook -read:org -read:public_key -read:gpg_key -``` - -The API notifies you if a resource requires a specific scope. - -### The GraphQL endpoint - -The REST API has numerous endpoints; the GraphQL API has a single endpoint: - -
{% data variables.product.graphql_url_pre %}
- -The endpoint remains constant no matter what operation you perform. - -### Communicating with GraphQL - -Because GraphQL operations consist of multiline JSON, GitHub recommends using the [Explorer](/v4/guides/using-the-explorer) to make GraphQL calls. You can also use cURL or any other HTTP-speaking library. - -In REST, [HTTP verbs](/v3/#http-verbs) determine the operation performed. In GraphQL, you'll provide a JSON-encoded body whether you're performing a query or a mutation, so the HTTP verb is `POST`. The exception is an [introspection query](/v4/guides/intro-to-graphql#discovering-the-graphql-api), which is a simple `GET` to the endpoint. For more information on GraphQL versus REST, see "[Migrating from REST to GraphQL](/v4/guides/migrating-from-rest)." - -To query GraphQL using cURL, make a `POST` request with a JSON payload. The payload must contain a string called `query`: - -```shell -curl -H "Authorization: bearer token" -X POST -d " \ - { \ - \"query\": \"query { viewer { login }}\" \ - } \ -" {% data variables.product.graphql_url_code %} -``` - -{% tip %} - -**Note**: The string value of `"query"` must escape newline characters or the schema will not parse it correctly. For the `POST` body, use outer double quotes and escaped inner double quotes. - -{% endtip %} - -#### About query and mutation operations - -The two types of allowed operations in GitHub's GraphQL API are _queries_ and _mutations_. Comparing GraphQL to REST, queries operate like `GET` requests, while mutations operate like `POST`/`PATCH`/`DELETE`. The [mutation name](/v4/mutation/) determines which modification is executed. - -For information about rate limiting, see "[GraphQL resource limitations](/v4/guides/resource-limitations/)." - -Queries and mutations share similar forms, with some important differences. - -#### About queries - -GraphQL queries return only the data you specify. To form a query, you must specify [fields within fields](/v4/guides/intro-to-graphql#field) (also known as _nested subfields_) until you return only [scalars](/v4/scalar/). - -Queries are structured like this: - -
query {
-  JSON objects to return
-}
- -For a real-world example, see "[Example query](#example-query)." - -#### About mutations - -To form a mutation, you must specify three things: - -1. _Mutation name_. The type of modification you want to perform. -2. _Input object_. The data you want to send to the server, composed of _input fields_. Pass it as an argument to the mutation name. -3. _Payload object_. The data you want to return from the server, composed of _return fields_. Pass it as the body of the mutation name. - -Mutations are structured like this: - -
mutation {
-  mutationName(input: {MutationNameInput!}) {
-    MutationNamePayload
-}
- -The input object in this example is `MutationNameInput`, and the payload object is `MutationNamePayload`. - -In the [mutations](/v4/mutation/) reference, the listed _input fields_ are what you pass as the input object. The listed _return fields_ are what you pass as the payload object. - -For a real-world example, see "[Example mutation](#example-mutation)." - -### Working with variables - -[Variables](https://graphql.github.io/learn/queries/#variables) can make queries more dynamic and powerful, and they can reduce complexity when passing mutation input objects. - -{% note %} - -**Note**: If you're using the Explorer, make sure to enter variables in the separate [Query Variables pane](/v4/guides/using-the-explorer/#using-the-variable-pane), and do not include the word `variables` before the JSON object. - -{% endnote %} - -Here's an example query with a single variable: - -```graphql -query($number_of_repos:Int!) { - viewer { - name - repositories(last: $number_of_repos) { - nodes { - name - } - } - } -} -variables { - "number_of_repos": 3 -} -``` - -There are three steps to using variables: - -1. Define the variable outside the operation in a `variables` object: - - ```graphql - variables { - "number_of_repos": 3 - } - ``` - - The object must be valid JSON. This example shows a simple `Int` variable type, but it's possible to define more complex variable types, such as input objects. You can also define multiple variables here. - -2. Pass the variable to the operation as an argument: - - ```graphql - query($number_of_repos:Int!){ - ``` - - The argument is a key-value pair, where the key is the _name_ starting with `$` (e.g., `$number_of_repos`), and the value is the _type_ (e.g., `Int`). Add a `!` to indicate whether the type is required. If you've defined multiple variables, include them here as multiple arguments. - -3. Use the variable within the operation: - - ```graphql - repositories(last: $number_of_repos) { - ``` - - In this example, we substitute the variable for the number of repositories to retrieve. We specify a type in step 2 because GraphQL enforces strong typing. - -This process makes the query argument dynamic. We can now simply change the value in the `variables` object and keep the rest of the query the same. - -Using variables as arguments lets you dynamically update values in the `variables` object without changing the query. - -### Example query - -Let's walk through a more complex query and put this information in context. - -The following query looks up the `octocat/Hello-World` repository, finds the 20 most recent closed issues, and returns each issue's title, URL, and first 5 labels: - -```graphql -query { - repository(owner:"octocat", name:"Hello-World") { - issues(last:20, states:CLOSED) { - edges { - node { - title - url - labels(first:5) { - edges { - node { - name - } - } - } - } - } - } - } -} -``` - -Looking at the composition line by line: - -* `query {` - - Because we want to read data from the server, not modify it, `query` is the root operation. (If you don't specify an operation, `query` is also the default.) - -* `repository(owner:"octocat", name:"Hello-World") {` - - To begin the query, we want to find a [`repository`](/v4/object/repository/) object. The schema validation indicates this object requires an `owner` and a `name` argument. - -* `issues(last:20, states:CLOSED) {` - - To account for all issues in the repository, we call the `issues` object. (We _could_ query a single `issue` on a `repository`, but that would require us to know the number of the issue we want to return and provide it as an argument.) - - Some details about the `issues` object: - - - The [docs](/v4/object/repository/) tell us this object has the type `IssueConnection`. - - Schema validation indicates this object requires a `last` or `first` number of results as an argument, so we provide `20`. - - The [docs](/v4/object/repository/) also tell us this object accepts a `states` argument, which is an [`IssueState`](/v4/enum/issuestate/) enum that accepts `OPEN` or `CLOSED` values. To find only closed issues, we give the `states` key a value of `CLOSED`. - -* `edges {` - - We know `issues` is a connection because it has the `IssueConnection` type. To retrieve data about individual issues, we have to access the node via `edges`. - -* `node {` - - Here we retrieve the node at the end of the edge. The [`IssueConnection` docs](/v4/object/issueconnection) indicate the node at the end of the `IssueConnection` type is an `Issue` object. - -* Now that we know we're retrieving an `Issue` object, we can look at the [docs](/v4/object/issue) and specify the fields we want to return: - - ```graphql - title - url - labels(first:5) { - edges { - node { - name - } - } - } - ``` - - Here we specify the `title`, `url`, and `labels` fields of the `Issue` object. - - The `labels` field has the type [`LabelConnection`](/v4/object/labelconnection/). As with the `issues` object, because `labels` is a connection, we must travel its edges to a connected node: the `label` object. At the node, we can specify the `label` object fields we want to return, in this case, `name`. - -You may notice that running this query on the Octocat's public `Hello-World` repository won't return many labels. Try running it on one of your own repositories that does use labels, and you'll likely see a difference. - -### Example mutation - -Mutations often require information that you can only find out by performing a query first. This example shows two operations: - -1. A query to get an issue ID. -2. A mutation to add an emoji reaction to the issue. - -```graphql -query FindIssueID { - repository(owner:"octocat", name:"Hello-World") { - issue(number:349) { - id - } - } -} - -mutation AddReactionToIssue { - addReaction(input:{subjectId:"MDU6SXNzdWUyMzEzOTE1NTE=",content:HOORAY}) { - reaction { - content - } - subject { - id - } - } -} -``` - -{% tip %} - -Although you can include a query and a mutation in the same Explorer window if you give them names (`FindIssueID` and `AddReactionToIssue` in this example), the operations will be executed as separate calls to the GraphQL endpoint. It's not possible to perform a query at the same time as a mutation, or vice versa. - -{% endtip %} - -Let's walk through the example. The task sounds simple: add an emoji reaction to an issue. - -So how do we know to begin with a query? We don't, yet. - -Because we want to modify data on the server (attach an emoji to an issue), we begin by searching the schema for a helpful mutation. The reference docs show the [`addReaction`](/v4/mutation/addreaction) mutation, with this description: `Adds a reaction to a subject.` Perfect! - -The docs for the mutation list three input fields: - -* `clientMutationId` (`String`) -* `subjectId` (`ID!`) -* `content` (`ReactionContent!`) - -The `!`s indicate that `subjectId` and `content` are required fields. A required `content` makes sense: we want to add a reaction, so we'll need to specify which emoji to use. - -But why is `subjectId` required? It's because the `subjectId` is the only way to identify _which_ issue in _which_ repository to react to. - -This is why we start this example with a query: to get the `ID`. - -Let's examine the query line by line: - -* `query FindIssueID {` - - Here we're performing a query, and we name it `FindIssueID`. Note that naming a query is optional; we give it a name here so that we can include it in same Explorer window as the mutation. - -* `repository(owner:"octocat", name:"Hello-World") {` - - We specify the repository by querying the `repository` object and passing `owner` and `name` arguments. - -* `issue(number:349) {` - - We specify the issue to react to by querying the `issue` object and passing a `number` argument. - -* `id` - - This is where we retrieve the `id` of `https://github.com/octocat/Hello-World/issues/349` to pass as the `subjectId`. - -When we run the query, we get the `id`: `MDU6SXNzdWUyMzEzOTE1NTE=` - -{% tip %} - -**Note**: The `id` returned in the query is the value we'll pass as the `subjectID` in the mutation. Neither the docs nor schema introspection will indicate this relationship; you'll need to understand the concepts behind the names to figure this out. - -{% endtip %} - -With the ID known, we can proceed with the mutation: - -* `mutation AddReactionToIssue {` - - Here we're performing a mutation, and we name it `AddReactionToIssue`. As with queries, naming a mutation is optional; we give it a name here so we can include it in the same Explorer window as the query. - -* `addReaction(input:{subjectId:"MDU6SXNzdWUyMzEzOTE1NTE=",content:HOORAY}) {` - - Let's examine this line: - - - `addReaction` is the name of the mutation. - - `input` is the required argument key. This will always be `input` for a mutation. - - `{subjectId:"MDU6SXNzdWUyMzEzOTE1NTE=",content:HOORAY}` is the required argument value. This will always be an [input object](/v4/input_object/) (hence the curly braces) composed of input fields (`subjectId` and `content` in this case) for a mutation. - - How do we know which value to use for the content? The [`addReaction` docs](/v4/mutation/addreaction/) tell us the `content` field has the type [`ReactionContent`](/v4/enum/reactioncontent/), which is an [enum](/v4/enum) because only certain emoji reactions are supported on GitHub issues. These are the allowed values for reactions (note some values differ from their corresponding emoji names): - - {% data reusables.repositories.reaction_list %} - -* The rest of the call is composed of the payload object. This is where we specify the data we want the server to return after we've performed the mutation. These lines come from the [`addReaction` docs](/v4/mutation/addreaction), which three possible return fields: - - - `clientMutationId` (`String`) - - `reaction` (`Reaction!`) - - `subject` (`Reactable!`) - - In this example, we return the two required fields (`reaction` and `subject`), both of which have required subfields (respectively, `content` and `id`). - -When we run the mutation, this is the response: - -```json -{ - "data": { - "addReaction": { - "reaction": { - "content": "HOORAY" - }, - "subject": { - "id": "MDU6SXNzdWUyMTc5NTQ0OTc=" - } - } - } -} -``` - -That's it! Check out your [reaction to the issue](https://github.com/octocat/Hello-World/issues/349) by hovering over the :tada: to find your username. - -One final note: when you pass multiple fields in an input object, the syntax can get unwieldy. Moving the fields into a [variable](#working-with-variables) can help. Here's how you could rewrite the original mutation using a variable: - -```graphql -mutation($myVar:AddReactionInput!) { - addReaction(input:$myVar) { - reaction { - content - } - subject { - id - } - } -} -variables { - "myVar": { - "subjectId":"MDU6SXNzdWUyMTc5NTQ0OTc=", - "content":"HOORAY" - } -} -``` - -{% note %} - -You may notice that the `content` field value in the earlier example (where it's used directly in the mutation) does not have quotes around `HOORAY`, but it does have quotes when used in the variable. There's a reason for this: -* When you use `content` directly in the mutation, the schema expects the value to be of type [`ReactionContent`](/v4/enum/reactioncontent/), which is an _enum_, not a string. Schema validation will throw an error if you add quotes around the enum value, as quotes are reserved for strings. -* When you use `content` in a variable, the variables section must be valid JSON, so the quotes are required. Schema validation correctly interprets the `ReactionContent` type when the variable is passed into the mutation during execution. - -For more information on the difference between enums and strings, see the [official GraphQL spec](https://graphql.github.io/graphql-spec/June2018/#sec-Enums). - -{% endnote %} - -### Further reading - -There is a _lot_ more you can do when forming GraphQL calls. Here are some places to look next: - -* [Pagination](https://graphql.github.io/learn/pagination/) -* [Fragments](https://graphql.github.io/learn/queries/#fragments) -* [Inline fragments](https://graphql.github.io/learn/queries/#inline-fragments) -* [Directives](https://graphql.github.io/learn/queries/#directives) diff --git a/content/graphql/guides/index.md b/content/graphql/guides/index.md deleted file mode 100644 index 5877329311c4..000000000000 --- a/content/graphql/guides/index.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Guides -intro: 'Learn about getting started with GraphQL, migrating from REST to GraphQL, and how to use the GitHub GraphQL API for a variety of tasks.' -redirect_from: - - /v4/guides -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% link_in_list /introduction-to-graphql %} - -{% link_in_list /forming-calls-with-graphql %} - -{% link_in_list /using-global-node-ids %} - -{% link_in_list /migrating-from-rest-to-graphql %} - -{% link_in_list /using-the-explorer %} - -{% link_in_list /managing-enterprise-accounts %} diff --git a/content/graphql/guides/introduction-to-graphql.md b/content/graphql/guides/introduction-to-graphql.md deleted file mode 100644 index b64e5be7a19e..000000000000 --- a/content/graphql/guides/introduction-to-graphql.md +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: Introduction to GraphQL -intro: Learn useful terminology and concepts for using the GitHub GraphQL API. -redirect_from: - - /v4/guides/intro-to-graphql - - /graphql/guides/intro-to-graphql -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### GraphQL terminology - -The GitHub GraphQL API represents an architectural and conceptual shift from the GitHub REST API. You will likely encounter some new terminology in the GraphQL API [reference docs](/v4/). - -### Schema - -A schema defines a GraphQL API's type system. It describes the complete set of possible data (objects, fields, relationships, everything) that a client can access. Calls from the client are [validated](https://graphql.github.io/learn/validation/) and [executed](https://graphql.github.io/learn/execution/) against the schema. A client can find information about the schema via [introspection](#discovering-the-graphql-api). A schema resides on the GraphQL API server. For more information, see "[Discovering the GraphQL API](#discovering-the-graphql-api)." - -### Field - -A field is a unit of data you can retrieve from an object. As the [official GraphQL docs](https://graphql.github.io/learn/schema/) say: -"The GraphQL query language is basically about selecting fields on objects." - -The [official spec](https://graphql.github.io/graphql-spec/June2018/#sec-Language.Fields) also says about fields: - -> All GraphQL operations must specify their selections down to fields which return scalar values to ensure an unambiguously shaped response. - -This means that if you try to return a field that is not a scalar, schema validation will throw an error. You must add nested subfields until all fields return scalars. - -### Argument - -An argument is a set of key-value pairs attached to a specific field. Some fields require an argument. [Mutations](/v4/guides/forming-calls#about-mutations) require an input object as an argument. - -### Implementation - -A GraphQL schema may use the term _implements_ to define how an object inherits from an [interface](/v4/interface). - -Here's a contrived example of a schema that defines interface `X` and object `Y`: - -``` -interface X { - some_field: String! - other_field: String! -} - -type Y implements X { - some_field: String! - other_field: String! - new_field: String! -} -``` - -This means object `Y` requires the same fields/arguments/return types that interface `X` does, while adding new fields specific to object `Y`. (The `!` means the field is required.) - -In the reference docs, you'll find that: - -* Each [object](/v4/object) lists the interface(s) _from which it inherits_ under **Implements**. - -* Each [interface](/v4/interface) lists the objects _that inherit from it_ under **Implementations**. - -### Connection - -Connections let you query related objects as part of the same call. With connections, you can use a single GraphQL call where you would have to use multiple calls to a REST API. For more information, see "[Migrating from REST to GraphQL](/v4/guides/migrating-from-rest)." - -It's helpful to picture a graph: dots connected by lines. The dots are nodes, the lines are edges. A connection defines a relationship between nodes. - -### Edge - -Edges represent connections between nodes. When you query a connection, you traverse its edges to get to its nodes. Every `edges` field has a `node` field and a `cursor` field. Cursors are used for [pagination](https://graphql.github.io/learn/pagination/). - -### Node - -_Node_ is a generic term for an object. You can look up a node directly, or you can access related nodes via a connection. If you specify a `node` that does not return a [scalar](/v4/scalar), you must include subfields until all fields return scalars. For information on accessing node IDs via the REST API and using them in GraphQL queries, see "[Using Global Node IDs](/v4/guides/using-global-node-ids)." - -## Discovering the GraphQL API - -GraphQL is [introspective](https://graphql.github.io/learn/introspection/). This means you can query a GraphQL schema for details about itself. - -* Query `__schema` to list all types defined in the schema and get details about each: - - ```graphql -query { - __schema { - types { - name - kind - description - fields { - name - } - } - } -} - ``` - -* Query `__type` to get details about any type: - - ```graphql -query { - __type(name: "Repository") { - name - kind - description - fields { - name - } - } -} - ``` - -* You can also run an _introspection query_ of the schema via a `GET` request: - - ```shell - $ curl -H "Authorization: bearer token" {% data variables.product.graphql_url_pre %} - ``` - - The results are in JSON, so we recommend pretty-printing them for easier reading and searching. You can use a command-line tool like [jq](https://stedolan.github.io/jq/) or pipe the results into `python -m json.tool` for this purpose. - - Alternatively, you can pass the `idl` media type to return the results in IDL format, which is a condensed version of the schema: - - ```shell - $ curl -H "Authorization: bearer token" -H "Accept: application/vnd.github.v4.idl" \ - {% data variables.product.graphql_url_pre %} - ``` - - {% note %} - - **Note**: The introspection query is probably the only `GET` request you'll run in GraphQL. If you're passing a body, the GraphQL request method is `POST`, whether it's a query or a mutation. - - {% endnote %} - - For more information about performing queries, see "[Forming calls with GraphQL](/v4/guides/forming-calls)." diff --git a/content/graphql/guides/managing-enterprise-accounts.md b/content/graphql/guides/managing-enterprise-accounts.md deleted file mode 100644 index 198a91f46ac2..000000000000 --- a/content/graphql/guides/managing-enterprise-accounts.md +++ /dev/null @@ -1,210 +0,0 @@ ---- -title: Managing enterprise accounts -intro: You can manage your enterprise account and the organizations it owns with the GraphQL API. -redirect_from: - - /v4/guides/managing-enterprise-accounts -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About managing enterprise accounts with GraphQL - -To help you monitor and make changes in your organizations and maintain compliance, you can use the Enterprise Accounts API and the Audit Log API, which are only available as GraphQL APIs. - -The enterprise account endpoints work for both GitHub Enterprise Cloud and for GitHub Enterprise Server. - -GraphQL allows you to request and return just the data you specify. For example, you can create a GraphQL query, or request for information, to see all the new organization members added to your organization. Or you can make a mutation, or change, to invite an administrator to your enterprise account. - -With the Audit Log API, you can monitor when someone: -- Accesses your organization or repository settings. -- Changes permissions. -- Adds or removes users in an organization, repository, or team. -- Promotes users to admin. -- Changes permissions of a GitHub App. - -The Audit Log API enables you to keep copies of your audit log data. For queries made with the Audit Log API, the GraphQL response can include data for up to 90 to 120 days. For a list of the fields available with the Audit Log API, see the "[AuditEntry interface](/graphql/reference/interfaces#auditentry/)." - -With the Enterprise Accounts API, you can: -- List and review all of the organizations and repositories that belong to your enterprise account. -- Change Enterprise account settings. -- Configure policies for settings on your enterprise account and its organizations. -- Invite administrators to your enterprise account. -- Create new organizations in your enterprise account. - -For a list of the fields available with the Enterprise Accounts API, see "[GraphQL fields and types for the Enterprise account API](/v4/guides/managing-enterprise-accounts/#graphql-fields-and-types-for-the-enterprise-accounts-api)." - -### Getting started using GraphQL for enterprise accounts - -Follow these steps to get started using GraphQL to manage your enterprise accounts: - - Authenticating with a personal access token - - Choosing a GraphQL client or using the GraphQL Explorer - - Setting up Insomnia to use the GraphQL API - -For some example queries, see "[An example query using the Enterprise Accounts API](#an-example-query-using-the-enterprise-accounts-api)." - -#### 1. Authenticate with your personal access token - -1. To authenticate with GraphQL, you need to generate a personal access token (PAT) from developer settings. For more information, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." - -2. Grant admin and full control permissions to your personal access token for areas of GHES you'd like to access. For full permission to private repositories, organizations, teams, user data, and access to enterprise billing and profile data, we recommend you select these scopes for your personal access token: - - `repo` - - `admin:org` - - `user` - - `admin:enterprise` - - The enterprise account specific scopes are: - - `admin:enterprise`: Gives full control of enterprises (includes `manage_billing:enterprise` and `read:enterprise`) - - `manage_billing:enterprise`: Read and write enterprise billing data. - - `read:enterprise`: Read enterprise profile data. - - ![Permissions options for personal access token](/assets/images/developer/graphql/permissions-for-access-token.png) - -4. Copy your personal access token and keep it in a secure place until you add it to your GraphQL client. - -#### 2. Choose a GraphQL client - -We recommend you use GraphiQL or another standalone GraphQL client that lets you configure the base URL. - -You may also consider using these GraphQL clients: - - [Insomnia](https://insomnia.rest/graphql/) - - [GraphiQL](https://www.gatsbyjs.org/docs/running-queries-with-graphiql/) - - [Postman](https://learning.getpostman.com/docs/postman/sending_api_requests/graphql/) - -The next steps will use Insomnia. - -#### 3. Setting up Insomnia to use the GitHub GraphQL API with enterprise accounts - -1. Add the base url and `POST` method to your GraphQL client. When using GraphQL to request information (queries), change information (mutations), or transfer data using the GitHub API, the default HTTP method is `POST` and the base url follows this syntax: - - For your enterprise instance: `https:///api/graphql` - - For GitHub Enterprise Cloud: `https://api.github.com/graphql` - -2. To authenticate, open the authentication options menu and select **Bearer token**. Next, add your personal access token that you copied earlier. - - ![Permissions options for personal access token](/assets/images/developer/graphql/insomnia-base-url-and-pat.png) - - ![Permissions options for personal access token](/assets/images/developer/graphql/insomnia-bearer-token-option.png) - -3. Include header information. - - Add `Content-Type` as the header and `application/json` as the value. - ![Standard header](/assets/images/developer/graphql/json-content-type-header.png) - ![Header with preview value for the Audit Log API](/assets/images/developer/graphql/preview-header-for-2.18.png) - -Now you are ready to start making queries. - -### An example query using the Enterprise Accounts API - -This GraphQL query requests the total number of `public` repositories in each of your appliance's organizations using the Enterprise Accounts API. To customize this query, replace `` with the slug of your Enterprise's instance slug. - -```graphql -query publicRepositoriesByOrganization($slug: String!) { - enterprise(slug: $slug) { - ...enterpriseFragment - } -} - -fragment enterpriseFragment on Enterprise { - ... on Enterprise{ - name - organizations(first: 100){ - nodes{ - name - ... on Organization{ - name - repositories(privacy: PUBLIC){ - totalCount - } - } - } - } - } -} - -# Passing our Enterprise Account as a variable -variables { - "slug": "" -} -``` - -The next GraphQL query example shows how challenging it is to retrieve the number of `public` repositories in each organization without using the Enterprise Account API. Notice that the GraphQL Enterprise Accounts API has made this task simpler for enterprises since you only need to customize a single variable. To customize this query, replace `` and ``, etc. with the organization names on your instance. - -```graphql -# Each organization is queried separately -{ - organizationOneAlias: organization(login: "nameOfOrganizationOne") { - # How to use a fragment - ...repositories - } - organizationTwoAlias: organization(login: "nameOfOrganizationTwo") { - ...repositories - } - # organizationThreeAlias ... and so on up-to lets say 100 -} - -## How to define a fragment -fragment repositories on Organization { - name - repositories(privacy: PUBLIC){ - totalCount - } -} -``` - -### Query each organization separately - -```graphql -query publicRepositoriesByOrganization { - organizationOneAlias: organization(login: "") { - # How to use a fragment - ...repositories - } - organizationTwoAlias: organization(login: "") { - ...repositories - } - # organizationThreeAlias ... and so on up-to lets say 100 -} -# How to define a fragment -fragment repositories on Organization { - name - repositories(privacy: PUBLIC){ - totalCount - } -} -``` - -This GraphQL query requests the last 5 log entries for an enterprise organization. To customize this query, replace `` and ``. - -```graphql -{ - organization(login: "") { - auditLog(last: 5, query: "actor:") { - edges { - node { - ... on AuditEntry { -# Get Audit Log Entry by 'Action' - action - actorLogin - createdAt -# User 'Action' was performed on - user{ - name - email - } - } - } - } - } - } -} -``` - -For more information about getting started with GraphQL, see "[Introduction to GraphQL](/v4/guides/intro-to-graphql/)" and "[Forming Calls with GraphQL](/v4/guides/forming-calls/)." - -### GraphQL fields and types for the Enterprise Accounts API - -Here's an overview of the new queries, mutations, and schema defined types available for use with the Enterprise Accounts API. - -For more details about the new queries, mutations, and schema defined types available for use with the Enterprise Accounts API, see the sdiebar with detailed GraphQL definitions from any [GraphQL reference page](/v4/). - -You can access the reference docs from within the GraphQL explorer on GitHub. For more information, see "[Using the explorer](/v4/guides/using-the-explorer#accessing-the-sidebar-docs)." -For other information, such as authentication and rate limit details, check out the [guides](/v4/guides). diff --git a/content/graphql/guides/migrating-from-rest-to-graphql.md b/content/graphql/guides/migrating-from-rest-to-graphql.md deleted file mode 100644 index f57ce4780bab..000000000000 --- a/content/graphql/guides/migrating-from-rest-to-graphql.md +++ /dev/null @@ -1,208 +0,0 @@ ---- -title: Migrating from REST to GraphQL -intro: 'Learn best practices and considerations for migrating from {% data variables.product.prodname_dotcom %}''s REST API to {% data variables.product.prodname_dotcom %}''s GraphQL API.' -redirect_from: - - /v4/guides/migrating-from-rest - - /graphql/guides/migrating-from-rest -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Differences in API logic - -Migrating from REST to GraphQL represents a significant shift in API logic. The differences between REST as a style and GraphQL as a specification make it difficult—and often undesirable—to replace REST API calls with GraphQL API queries on a one-to-one basis. We've included specific examples of migration below. - -To migrate your code from the [REST API](/v3) to the GraphQL API: - -- Review the [GraphQL spec](https://graphql.github.io/graphql-spec/June2018/) -- Review GitHub's [GraphQL schema](/v4/reference/) -- Consider how any existing code you have currently interacts with the GitHub REST API -- Use [Global Node IDs](/v4/guides/using-global-node-ids) to reference objects between API versions - -Significant advantages of GraphQL include: - -- [Getting the data you need and nothing more](#example-getting-the-data-you-need-and-nothing-more) -- [Nested fields](#example-nesting) -- [Strong typing](#example-strong-typing) - -Here are examples of each. - -## Example: Getting the data you need and nothing more - -A single REST API call retrieves a list of your organization's members: -```shell -curl -v {% data variables.product.api_url_pre %}/orgs/:org/members -``` - -The REST payload contains excessive data if your goal is to retrieve only member names and links to avatars. However, a GraphQL query returns only what you specify: - -```graphql -query { - organization(login:"github") { - membersWithRole(first: 100) { - edges { - node { - name - avatarUrl - } - } - } - } -} -``` - -Consider another example: retrieving a list of pull requests and checking if each one is mergeable. A call to the REST API retrieves a list of pull requests and their [summary representations](/v3/#summary-representations): -```shell -curl -v {% data variables.product.api_url_pre %}/repos/:owner/:repo/pulls -``` - -Determining if a pull request is mergeable requires retrieving each pull request individually for its [detailed representation](/v3/#detailed-representations) (a large payload) and checking whether its `mergeable` attribute is true or false: -```shell -curl -v {% data variables.product.api_url_pre %}/repos/:owner/:repo/pulls/:number -``` - -With GraphQL, you could retrieve only the `number` and `mergeable` attributes for each pull request: - -```graphql -query { - repository(owner:"octocat", name:"Hello-World") { - pullRequests(last: 10) { - edges { - node { - number - mergeable - } - } - } - } -} -``` - -## Example: Nesting - -Querying with nested fields lets you replace multiple REST calls with fewer GraphQL queries. For example, retrieving a pull request along with its commits, non-review comments, and reviews using the **REST API** requires four separate calls: -```shell -curl -v {% data variables.product.api_url_pre %}/repos/:owner/:repo/pulls/:number -curl -v {% data variables.product.api_url_pre %}/repos/:owner/:repo/pulls/:number/commits -curl -v {% data variables.product.api_url_pre %}/repos/:owner/:repo/issues/:number/comments -curl -v {% data variables.product.api_url_pre %}/repos/:owner/:repo/pulls/:number/reviews -``` - -Using the **GraphQL API**, you can retrieve the data with a single query using nested fields: - -```graphql -{ - repository(owner: "octocat", name: "Hello-World") { - pullRequest(number: 1) { - commits(first: 10) { - edges { - node { - commit { - oid - message - } - } - } - } - comments(first: 10) { - edges { - node { - body - author { - login - } - } - } - } - reviews(first: 10) { - edges { - node { - state - } - } - } - } - } -} -``` - -You can also extend the power of this query by [substituting a variable](/v4/guides/forming-calls/#working-with-variables) for the pull request number. - -## Example: Strong typing - -GraphQL schemas are strongly typed, making data handling safer. - -Consider an example of adding a comment to an issue or pull request using a GraphQL [mutation](/v4/mutation), and mistakenly specifying an integer rather than a string for the value of [`clientMutationId`](/v4/mutation/addcomment/): - -```graphql -mutation { - addComment(input:{clientMutationId: 1234, subjectId: "MDA6SXNzdWUyMjcyMDA2MTT=", body: "Looks good to me!"}) { - clientMutationId - commentEdge { - node { - body - repository { - id - name - nameWithOwner - } - issue { - number - } - } - } - } -} -``` - -Executing this query returns errors specifying the expected types for the operation: - -```json -{ - "data": null, - "errors": [ - { - "message": "Argument 'input' on Field 'addComment' has an invalid value. Expected type 'AddCommentInput!'.", - "locations": [ - { - "line": 3, - "column": 3 - } - ] - }, - { - "message": "Argument 'clientMutationId' on InputObject 'AddCommentInput' has an invalid value. Expected type 'String'.", - "locations": [ - { - "line": 3, - "column": 20 - } - ] - } - ] -} -``` - -Wrapping `1234` in quotes transforms the value from an integer into a string, the expected type: - -```graphql -mutation { - addComment(input:{clientMutationId: "1234", subjectId: "MDA6SXNzdWUyMjcyMDA2MTT=", body: "Looks good to me!"}) { - clientMutationId - commentEdge { - node { - body - repository { - id - name - nameWithOwner - } - issue { - number - } - } - } - } -} -``` diff --git a/content/graphql/guides/using-global-node-ids.md b/content/graphql/guides/using-global-node-ids.md deleted file mode 100644 index 55c2c85aee76..000000000000 --- a/content/graphql/guides/using-global-node-ids.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Using global node IDs -intro: You can get global node IDs of objects via the REST API and use them in GraphQL operations. -redirect_from: - - /v4/guides/using-global-node-ids -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can access most objects in GitHub (users, issues, pull requests, etc.) using either the REST API or the GraphQL API. With a [recent update](https://developer.github.com/changes/2017-12-19-graphql-node-id/), you can find the **global node ID** of many objects from within the REST API and use these IDs in your GraphQL operations. - -{% note %} - -**Note:** In REST, the global node ID field is named `node_id`. In GraphQL, it's an `id` field on the `node` interface. For a refresher on what "node" means in GraphQL, see "[Introduction to GraphQL](/v4/guides/intro-to-graphql/#node)." - -{% endnote %} - -### Putting global node IDs to use - -You can follow three steps to use global node IDs effectively: - -1. Call a REST endpoint that returns an object's `node_id`. -2. Find the object's type in GraphQL. -3. Use the ID and type to do a direct node lookup in GraphQL. - -Let's walk through an example. - -### 1. Call a REST endpoint that returns an object's node ID - -If you [request the authenticated user](/v3/users/#get-the-authenticated-user): - -```shell -$ curl -i -u username:token {% data variables.product.api_url_pre %}/user -``` - -you'll get a response that includes the `node_id` of the authenticated user: - -```json -{ - "login": "octocat", - "id": 1, - "avatar_url": "https://github.com/images/error/octocat_happy.gif", - "gravatar_id": "", - "url": "https://api.github.com/users/octocat", - "html_url": "https://github.com/octocat", - "followers_url": "https://api.github.com/users/octocat/followers", - "following_url": "https://api.github.com/users/octocat/following{/other_user}", - "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", - "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", - "organizations_url": "https://api.github.com/users/octocat/orgs", - "repos_url": "https://api.github.com/users/octocat/repos", - "events_url": "https://api.github.com/users/octocat/events{/privacy}", - "received_events_url": "https://api.github.com/users/octocat/received_events", - "type": "User", - "site_admin": false, - "name": "monalisa octocat", - "company": "GitHub", - "blog": "https://github.com/blog", - "location": "San Francisco", - "email": "octocat@github.com", - "hireable": false, - "bio": "There once was...", - "public_repos": 2, - "public_gists": 1, - "followers": 20, - "following": 0, - "created_at": "2008-01-14T04:33:35Z", - "updated_at": "2008-01-14T04:33:35Z", - "private_gists": 81, - "total_private_repos": 100, - "owned_private_repos": 100, - "disk_usage": 10000, - "collaborators": 8, - "two_factor_authentication": true, - "plan": { - "name": "Medium", - "space": 400, - "private_repos": 20, - "collaborators": 0 - }, - "node_id": "MDQ6VXNlcjU4MzIzMQ==" -} -``` - -### 2. Find the object type in GraphQL - -In this example, the `node_id` value is `MDQ6VXNlcjU4MzIzMQ==`. You can use this value to query the same object in GraphQL. - -You'll need to know the object's _type_ first, though. You can check the type with a simple GraphQL query: - -```graphql -query { - node(id:"MDQ6VXNlcjU4MzIzMQ==") { - __typename - } -} -``` - -This type of query—that is, finding the node by ID—is known as a "direct node lookup." - -When you run this query, you'll see that the `__typename` is [`User`](/v4/object/user/). - -### 3. Do a direct node lookup in GraphQL - -Once you've confirmed the type, you can use an [inline fragment](https://graphql.github.io/learn/queries/#inline-fragments) to access the object by its ID and return additional data. In this example, we define the fields on `User` that we'd like to query: - -```graphql -query { - node(id:"MDQ6VXNlcjU4MzIzMQ==") { - ... on User { - name - login - } - } -} -``` - -This type of query is the standard approach for looking up an object by its global node ID. - -### Using global node IDs in migrations - -When building integrations that use either the REST API or the GraphQL API, it's best practice to persist the global node ID so you can easily reference objects across API versions. For more information on handling the transition between REST and GraphQL, see "[Migrating from REST to GraphQL](/v4/guides/migrating-from-rest/)." diff --git a/content/graphql/guides/using-the-explorer.md b/content/graphql/guides/using-the-explorer.md deleted file mode 100644 index e4a6de3524bc..000000000000 --- a/content/graphql/guides/using-the-explorer.md +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Using the Explorer -intro: 'You can run queries on real {% data variables.product.prodname_dotcom %} data using the GraphQL Explorer, an integrated development environment in your browser that includes docs, syntax highlighting, and validation errors.' -redirect_from: - - /v4/guides/using-the-explorer -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -## About the GraphQL Explorer - -{% if currentVersion == "free-pro-team@latest" %} - -[GraphQL Explorer](/v4/explorer) is an instance of [GraphiQL](https://github.com/graphql/graphiql), which is a "graphical interactive in-browser GraphQL IDE." - -{% note %} - -**Note**: {% data variables.product.prodname_dotcom %} has disabled [mutations](/v4/mutation/) in the Explorer, but you can use them in your own GraphiQL instance. - -{% endnote %} - -{% else %} - -[GraphiQL](https://github.com/graphql/graphiql), also referred to in this documentation as the GraphQL Explorer, is a "graphical interactive in-browser GraphQL IDE." - -{% endif %} - -### Using GraphiQL - -To use the GraphiQL app, download and install it from https://github.com/skevy/graphiql-app. - -#### Configuring GraphiQL - -1. Get an [OAuth token](/v4/guides/forming-calls#authenticating-with-graphql). -1. Launch GraphiQL. -1. In the upper-right corner of GraphiQL, click **Edit HTTP Headers**. -1. In the **Key** field, enter `Authorization`. In the **Value** field, enter `Bearer `, where `` is your generated OAuth token. -![graphiql headers](/assets/images/developer/graphiql-headers.png) -1. Click the checkmark to the right of the token to save it. -1. To return to the editor, click outside of the **Edit HTTP Headers** modal. -1. In the **GraphQL Endpoint** field, enter `{% data variables.product.graphql_url_pre %}`. -1. In the **Method** dropdown menu, select **POST**. - -{% note %} - -**Note**: For more information about why `POST` is the method, see "[Communicating with GraphQL](/v4/guides/forming-calls#communicating-with-graphql)." - -{% endnote %} - -You can test your access by querying yourself: - -```graphql -query { - viewer { - login - } -} -``` - -If everything worked correctly, this will display your login. You're all set to start making queries. - -### Accessing the sidebar docs - -All types in a GraphQL schema include a `description` field compiled into documentation. The collapsible **Docs** pane on the right side of the Explorer page allows you to browse documentation about the type system. The docs are automatically updated and will drop deprecated fields. - -{% note %} - -The **Docs** sidebar contains the same content that is automatically generated from the schema under "[Reference](/v4/)," though it is formatted differently in places. - -{% endnote %} - -### Using the variable pane - -Some example calls include [variables](/v4/guides/forming-calls#working-with-variables) written like this: - -```graphql -query($number_of_repos:Int!){ - viewer { - name - repositories(last: $number_of_repos) { - nodes { - name - } - } - } -} -variables { - "number_of_repos": 3 -} -``` - -This is the correct format to submit the call via a cURL `POST` (as long as you [escape newlines](/v4/guides/forming-calls#communicating-with-graphql)). - -If you want to run the call in the Explorer, enter the `query` segment in the main pane and the variables in the **Query Variables** pane below it. Omit the word `variables` from the Explorer: - -```graphql -{ - "number_of_repos": 3 -} -``` - -### Requesting support - -{% data reusables.support.help_resources %} - -### Troubleshooting errors - -Because GraphQL is [introspective](/v4/guides/intro-to-graphql#discovering-the-graphql-api), the Explorer supports: - -* Intelligent typeaheads aware of the current schema -* Validation error previews as you type - -If you enter a query that is not well-formed or does not pass [schema validation](/v4/guides/intro-to-graphql#schema), a popup warns you of an error. If you run the query, the error returns in the response pane. - -A GraphQL response contains several keys: a `data` hash and an `errors` array. - -```json -{ - "data": null, - "errors": [ - { - "message": "Objects must have selections (field 'nodes' returns Repository but has no selections)", - "locations": [ - { - "line": 5, - "column": 8 - } - ] - } - ] -} -``` - -It's possible you might run into an unexpected error that is not related to the schema. If this happens, the message will include a reference code you can use when reporting the issue: - -```json -{ - "data": null, - "errors": [ - { - "message": "Something went wrong while executing your query. This is most likely a GitHub bug. Please include \"7571:3FF6:552G94B:69F45B7:5913BBEQ\" when reporting this issue." - } - ] -} -``` - -{% note %} - -**Note:** {% data variables.product.prodname_dotcom %} recommends checking for errors before using data in a production environment. In GraphQL, failure is not total: portions of GraphQL queries may succeed while others fail. - -{% endnote %} diff --git a/content/graphql/index.md b/content/graphql/index.md deleted file mode 100644 index 66b0ae9d42af..000000000000 --- a/content/graphql/index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: GitHub GraphQL API -intro: 'You can use the {% data variables.product.prodname_dotcom %} GraphQL API to create precise and flexible queries for the data you need to integrate with {% data variables.product.prodname_dotcom %}.' -shortTitle: GraphQL API -redirect_from: - - /v4 -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% link_with_intro /overview %} - -{% link_with_intro /reference %} - -{% link_with_intro /guides %} diff --git a/content/graphql/overview/about-the-graphql-api.md b/content/graphql/overview/about-the-graphql-api.md deleted file mode 100644 index bd3e2fa36c3e..000000000000 --- a/content/graphql/overview/about-the-graphql-api.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: About the GraphQL API -intro: 'The {% data variables.product.prodname_dotcom %} GraphQL API offers flexibility and the ability to define precisely the data you want to fetch.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Overview - -Here are some quick links to get you up and running with the GraphQL API v4: - -* [Authentication](/v4/guides/forming-calls/#authenticating-with-graphql) -* [Root endpoint](/v4/guides/forming-calls/#the-graphql-endpoint) -* [Schema introspection](/v4/guides/intro-to-graphql/#discovering-the-graphql-api) -* [Rate limits](/v4/guides/resource-limitations/) -* [Migrating from REST](/v4/guides/migrating-from-rest) - -### About GraphQL - -The [GraphQL](https://graphql.github.io/) data query language is: - -* **A [specification](https://graphql.github.io/graphql-spec/June2018/).** The spec determines the validity of the [schema](/v4/guides/intro-to-graphql#schema) on the API server. The schema determines the validity of client calls. - -* **[Strongly typed](#about-the-graphql-schema-reference).** The schema defines an API's type system and all object relationships. - -* **[Introspective](/v4/guides/intro-to-graphql#discovering-the-graphql-api).** A client can query the schema for details about the schema. - -* **[Hierarchical](/v4/guides/forming-calls).** The shape of a GraphQL call mirrors the shape of the JSON data it returns. [Nested fields](/v4/guides/migrating-from-rest/#example-nesting) let you query for and receive only the data you specify in a single round trip. - -* **An application layer.** GraphQL is not a storage model or a database query language. The _graph_ refers to graph structures defined in the schema, where [nodes](/v4/guides/intro-to-graphql#node) define objects and [edges](/v4/guides/intro-to-graphql#edge) define relationships between objects. The API traverses and returns application data based on the schema definitions, independent of how the data is stored. - -### Why GitHub is using GraphQL - -GitHub chose GraphQL for our API v4 because it offers significantly more flexibility for our integrators. The ability to define precisely the data you want—and _only_ the data you want—is a powerful advantage over the REST API v3 endpoints. GraphQL lets you replace multiple REST requests with _a single call_ to fetch the data you specify. - -For more details about why GitHub has moved to GraphQL, see the original [announcement blog post](https://githubengineering.com/the-github-graphql-api/). - -### About the GraphQL schema reference - -The docs in the sidebar are generated from the {% data variables.product.prodname_dotcom %} GraphQL [schema](/v4/guides/intro-to-graphql/#discovering-the-graphql-api). All calls are validated and executed against the schema. Use these docs to find out what data you can call: - -* Allowed operations: [queries](/v4/query) and [mutations](/v4/mutation). - -* Schema-defined types: [scalars](/v4/scalar), [objects](/v4/object), [enums](/v4/enum), [interfaces](/v4/interface), [unions](/v4/union), and [input objects](/v4/input_object). - -You can access this same content via the [Explorer Docs sidebar](/v4/guides/using-the-explorer#accessing-the-sidebar-docs). Note that you may need to rely on both the docs and the schema validation to successfully call the GraphQL API. - -For other information, such as authentication and rate limit details, check out the [guides](/v4/guides). - -### Requesting support - -{% data reusables.support.help_resources %} diff --git a/content/graphql/overview/breaking-changes.md b/content/graphql/overview/breaking-changes.md deleted file mode 100644 index fd761309414f..000000000000 --- a/content/graphql/overview/breaking-changes.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Breaking changes -intro: 'Learn about recent and upcoming breaking changes to the {% data variables.product.prodname_dotcom %} GraphQL API.' -redirect_from: - - /v4/breaking_changes -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About breaking changes - -Breaking changes are any changes that might require action from our integrators. We divide these changes into two categories: - - - **Breaking:** Changes that will break existing queries to the GraphQL API. For example, removing a field would be a breaking change. - - **Dangerous:** Changes that won't break existing queries but could affect the runtime behavior of clients. Adding an enum value is an example of a dangerous change. - -We strive to provide stable APIs for our integrators. When a new feature is still evolving, we release it behind a [schema preview](/v4/previews/). - -We'll announce upcoming breaking changes at least three months before making changes to the GraphQL schema, to give integrators time to make the necessary adjustments. Changes go into effect on the first day of a quarter (January 1st, April 1st, July 1st, or October 1st). For example, if we announce a change on January 15th, it will be made on July 1st. - -{% for date in graphql.upcomingChangesForCurrentVersion %} -### Changes scheduled for {{ date[0] }} - -{% for change in date[1] %} -
    -
  • {% if change.criticality == 'breaking' %}Breaking{% else %}Dangerous{% endif %} A change will be made to {{ change.location }}. - -

    Description: {{ change.description }}

    - -

    Reason: {{ change.reason }}

    -
  • -
- -{% endfor %} -{% endfor %} diff --git a/content/graphql/overview/changelog.md b/content/graphql/overview/changelog.md deleted file mode 100644 index 5482e60e0f69..000000000000 --- a/content/graphql/overview/changelog.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Changelog -intro: 'The GraphQL schema changelog is a list of recent and upcoming changes to our GraphQL API schema. It includes backwards-compatible changes, schema previews, and upcoming breaking changes.' -redirect_from: - - /v4/changelog -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Breaking changes include changes that will break existing queries or could affect the runtime behavior of clients. For a list of breaking changes and when they will occur, see our [breaking changes log](/v4/breaking_changes). - -{% for entry in graphql.changelog %} -### Schema Changes for {{ entry.date }} - -{% for schemaChange in entry.schemaChanges %} -{{ schemaChange.title }} - -{% for change in schemaChange.changes %} -* {{ change }} -{% endfor %} -{% endfor %} - -{% for previewChange in entry.previewChanges %} -{{ previewChange.title }} - -{% for change in previewChange.changes %} -* {{ change }} -{% endfor %} -{% endfor %} - -{% for upcomingChange in entry.upcomingChanges %} -{{ upcomingChange.title }} - -{% for change in upcomingChange.changes %} -* {{ change }} -{% endfor %} -{% endfor %} - -{% endfor %} diff --git a/content/graphql/overview/explorer.md b/content/graphql/overview/explorer.md deleted file mode 100644 index 3abd5345e6c8..000000000000 --- a/content/graphql/overview/explorer.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Explorer -redirect_from: - - /v4/explorer - - /v4/explorer-new -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can access GitHub's GraphQL Explorer at https://developer.github.com/v4/explorer. diff --git a/content/graphql/overview/index.md b/content/graphql/overview/index.md deleted file mode 100644 index 71732210ec99..000000000000 --- a/content/graphql/overview/index.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Overview -intro: 'Learn about the {% data variables.product.prodname_dotcom %} GraphQL API, previews for upcoming changes, breaking changes, and limitations. You can also use the GraphQL Explorer to interact with the API on real {% data variables.product.prodname_dotcom %} data.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% link_in_list /about-the-graphql-api %} - -{% link_in_list /public-schema %} - -{% link_in_list /schema-previews %} - -{% link_in_list /breaking-changes %} - -{% link_in_list /changelog %} - -{% link_in_list /explorer %} - -{% link_in_list /resource-limitations %} diff --git a/content/graphql/overview/public-schema.md b/content/graphql/overview/public-schema.md deleted file mode 100644 index 3856de9a245d..000000000000 --- a/content/graphql/overview/public-schema.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Public schema -intro: 'Download the public schema for the {% data variables.product.prodname_dotcom %} GraphQL API.' -redirect_from: - - /v4/public_schema -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can [perform introspection](/v4/guides/intro-to-graphql/#discovering-the-graphql-api) against the GraphQL API directly. - -Alternatively, you can download the latest version of the public schema here: - -{% if currentVersion == "free-pro-team@latest" %} - -[{% octicon "desktop-download" aria-label="The desktop download icon" %} `schema.docs.graphql`](/public/schema.docs.graphql) - -{% else %} - -[{% octicon "desktop-download" aria-label="The desktop download icon" %} `schema.docs-enterprise.graphql`](/public/{{ currentVersion }}/schema.docs-enterprise.graphql) ({{ allVersions[currentVersion].versionTitle }}) - -{% endif %} diff --git a/content/graphql/overview/resource-limitations.md b/content/graphql/overview/resource-limitations.md deleted file mode 100644 index 4c5f3c979a6c..000000000000 --- a/content/graphql/overview/resource-limitations.md +++ /dev/null @@ -1,236 +0,0 @@ ---- -title: Resource limitations -intro: 'The {% data variables.product.prodname_dotcom %} GraphQL API has limitations in place to protect against excessive or abusive calls to {% data variables.product.prodname_dotcom %}''s servers.' -redirect_from: - - /v4/guides/resource-limitations -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -## Node limit - -To pass [schema](/v4/guides/intro-to-graphql#schema) validation, all GraphQL API v4 [calls](/v4/guides/forming-calls) must meet these standards: - -* Clients must supply a `first` or `last` argument on any [connection](/v4/guides/intro-to-graphql#connection). -* Values of `first` and `last` must be within 1-100. -* Individual calls cannot request more than 500,000 total [nodes](/v4/guides/intro-to-graphql#node). - -#### Calculating nodes in a call - -These two examples show how to calculate the total nodes in a call. - -1. Simple query: - -
query {
-    viewer {
-      repositories(first: 50) {
-        edges {
-          repository:node {
-            name
-
-            issues(first: 10) {
-              totalCount
-              edges {
-                node {
-                  title
-                  bodyHTML
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-  }
- - Calculation: - -
50         = 50 repositories
-   +
-  50 x 10  = 500 repository issues
-
-              = 550 total nodes
- -2. Complex query: - -
query {
-    viewer {
-      repositories(first: 50) {
-        edges {
-          repository:node {
-            name
-
-            pullRequests(first: 20) {
-              edges {
-                pullRequest:node {
-                  title
-
-                  comments(first: 10) {
-                    edges {
-                      comment:node {
-                        bodyHTML
-                      }
-                    }
-                  }
-                }
-              }
-            }
-
-            issues(first: 20) {
-              totalCount
-              edges {
-                issue:node {
-                  title
-                  bodyHTML
-
-                  comments(first: 10) {
-                    edges {
-                      comment:node {
-                        bodyHTML
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-
-      followers(first: 10) {
-        edges {
-          follower:node {
-            login
-          }
-        }
-      }
-    }
-  }
- - Calculation: - -
50              = 50 repositories
-   +
-  50 x 20       = 1,000 pullRequests
-   +
-  50 x 20 x 10 = 10,000 pullRequest comments
-   +
-  50 x 20       = 1,000 issues
-   +
-  50 x 20 x 10 = 10,000 issue comments
-   +
-  10              = 10 followers
-
-                   = 22,060 total nodes
- -### Rate limit - -The GraphQL API v4 limit is different from the REST API v3's [rate limits](/rest/overview/resources-in-the-rest-api#rate-limiting). - -Why are the API rate limits different? With [GraphQL](/v4/), one GraphQL call can replace [multiple REST calls](/v4/guides/migrating-from-rest/). A single complex GraphQL call could be the equivalent of thousands of REST requests. While a single GraphQL call would fall well below the REST API rate limit, the query might be just as expensive for GitHub's servers to compute. - -To accurately represent the server cost of a query, the GraphQL API v4 calculates a call's **rate limit score** based on a normalized scale of points. A query's score factors in first and last arguments on a parent connection and its children. - -* The formula uses the `first` and `last` arguments on a parent connection and its children to pre-calculate the potential load on GitHub's systems, such as MySQL, ElasticSearch, and Git. -* Each new connection has its own point value. Points are combined with other points from the call into an overall rate limit score. - -The GraphQL API v4 rate limit is **5,000 points per hour**. - -{% if currentVersion == "free-pro-team@latest" %} - -For {% data variables.product.prodname_github_apps %} or {% data variables.product.prodname_oauth_app %}s that belong to a {% data variables.product.prodname_ghe_cloud %} account, requests to resources owned by the same {% data variables.product.prodname_ghe_cloud %} account have an increased limit of 15,000 points per hour. - -{% endif %} - -Note that 5,000 points per hour is not the same as 5,000 calls per hour: the GraphQL API v4 and REST API v3 use different rate limits. - -{% note %} - -**Note**: The current formula and rate limit are subject to change as we observe how developers use the GraphQL API v4. - -{% endnote %} - -#### Returning a call's rate limit status - -With the REST API v3, you can check the rate limit status by [inspecting](/rest/overview/resources-in-the-rest-api#rate-limiting) the returned HTTP headers. - -With the GraphQL API v4, you can check the rate limit status by querying fields on the `rateLimit` object: - -```graphql -query { - viewer { - login - } - rateLimit { - limit - cost - remaining - resetAt - } -} -``` - -* The `limit` field returns the maximum number of points the client is permitted to consume in a 60-minute window. - -* The `cost` field returns the point cost for the current call that counts against the rate limit. - -* The `remaining` field returns the number of points remaining in the current rate limit window.) - -* The `resetAt` field returns the time at which the current rate limit window resets in [UTC epoch seconds](http://en.wikipedia.org/wiki/Unix_time). - -#### Calculating a rate limit score before running the call - -Querying the `rateLimit` object returns a call's score, but running the call counts against the limit. To avoid this dilemma, you can calculate the score of a call before you run it. The following calculation works out to roughly the same cost that `rateLimit { cost }` returns. - -1. Add up the number of requests needed to fulfill each unique connection in the call. Assume every request will reach the `first` or `last` argument limits. -2. Divide the number by **100** and round the result to get the final aggregate cost. This step normalizes large numbers. - -{% note %} - -**Note**: The minimum cost of a call to the GraphQL API v4 is **1**, representing a single request. - -{% endnote %} - -Here's an example query and score calculation: - -```graphql -query { - viewer { - login - repositories(first: 100) { - edges { - node { - id - - issues(first: 50) { - edges { - node { - id - - labels(first: 60) { - edges { - node { - id - name - } - } - } - } - } - } - } - } - } - } -} -``` - -This query requires 5,101 requests to fulfill: - -* Although we're returning 100 repositories, the API has to connect to the viewer's account **once** to get the list of repositories. So, requests for repositories = **1** -* Although we're returning 50 issues, the API has to connect to each of the **100** repositories to get the list of issues. So, requests for issues = **100** -* Although we're returning 60 labels, the API has to connect to each of the **5,000** potential total issues to get the list of labels. So, requests for labels = **5,000** -* Total = **5,101** - -Dividing by 100 and rounding gives us the final score of the query: **51** diff --git a/content/graphql/overview/schema-previews.md b/content/graphql/overview/schema-previews.md deleted file mode 100644 index 6d2666e53ade..000000000000 --- a/content/graphql/overview/schema-previews.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Schema previews -intro: 'You can preview upcoming features and changes to the {% data variables.product.prodname_dotcom %} GraphQL schema before they are added to the {% data variables.product.prodname_dotcom %} GraphQL API.' -redirect_from: - - /v4/previews -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About schema previews - -During the preview period, we may change some features based on developer feedback. If we do make changes, we'll announce them on the [developer blog](https://developer.github.com/changes/) without advance notice. - -To access a schema preview, you'll need to provide a custom [media type](/v3/media) in the `Accept` header for your requests. Feature documentation for each preview specifies which custom media type to provide. - -{% note %} - -**Note:** The GraphQL schema members under preview cannot be accessed via the Explorer at this time. - -{% endnote %} - -{% for preview in graphql.previewsForCurrentVersion %} -### {{ preview.title }} - -{{ preview.description }} - -To toggle this preview and access the following schema members, you must provide a custom media type in the `Accept` header: - -``` -{{ preview.accept_header }} -``` - -Previewed schema members: - -{% for schemaMemberPath in preview.toggled_on %} -- `{{ schemaMemberPath }}` -{% endfor %} - -{% if preview.announcement %} -**Announced:** [{{ preview.announcement.date }}]({{ preview.announcement.url }}) -{% endif %} - -{% if preview.updates %} -{% for update in preview.updates %} -**Updated:** [{{ update.date }}]({{ update.url }}) -{% endfor %} -{% endif %} - -{% endfor %} diff --git a/content/graphql/reference/enums.md b/content/graphql/reference/enums.md deleted file mode 100644 index 48254c6ebd00..000000000000 --- a/content/graphql/reference/enums.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Enums -redirect_from: - - /v4/enum -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About enums - -[Enums](https://graphql.github.io/graphql-spec/June2018/#sec-Enums) represent possible sets of values for a field. - -For example, the [`Issue`](/v4/object/issue) object has a field called `state`. The state is an enum (specifically, of type [`IssueState`](/v4/enum/issuestate/)) because it may be `OPEN` or `CLOSED`. - -For more information, see "[Introduction to GraphQL](/v4/guides/intro-to-graphql)." - -{% for item in graphql.schemaForCurrentVersion.enums %} - {% include graphql-enum %} -{% endfor %} diff --git a/content/graphql/reference/index.md b/content/graphql/reference/index.md deleted file mode 100644 index 553212d49bd7..000000000000 --- a/content/graphql/reference/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Reference -intro: 'View reference documentation to learn about the data types available in the {% data variables.product.prodname_dotcom %} GraphQL API schema.' -redirect_from: - - /v4/reference -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% link_in_list /queries %} - -{% link_in_list /mutations %} - -{% link_in_list /objects %} - -{% link_in_list /interfaces %} - -{% link_in_list /enums %} - -{% link_in_list /unions %} - -{% link_in_list /input-objects %} - -{% link_in_list /scalars %} diff --git a/content/graphql/reference/input-objects.md b/content/graphql/reference/input-objects.md deleted file mode 100644 index dc17e9c4bb98..000000000000 --- a/content/graphql/reference/input-objects.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Input objects -redirect_from: - - /v4/input_object -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About input objects - -[Input objects](https://graphql.github.io/graphql-spec/June2018/#sec-Input-Objects) can be described as "composable objects" because they include a set of input fields that define the object. - -For example, [`CommitAuthor`](/v4/input_object/commitauthor/) takes a field called `emails`. Providing a value for `emails` transforms `CommitAuthor` into a list of `User` objects containing that email address. Note that [objects](/v4/object) **may** have input objects, whereas [mutations](/v4/mutation) **require** input objects. - -For more information, see "[About mutations](/v4/guides/forming-calls#about-mutations)." - -{% for item in graphql.schemaForCurrentVersion.inputObjects %} - {% include graphql-input-object %} -{% endfor %} diff --git a/content/graphql/reference/interfaces.md b/content/graphql/reference/interfaces.md deleted file mode 100644 index fd4d5822cb75..000000000000 --- a/content/graphql/reference/interfaces.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Interfaces -redirect_from: - - /v4/interface -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About interfaces - -[Interfaces](https://graphql.github.io/graphql-spec/June2018/#sec-Interfaces) serve as parent objects from which other objects can inherit. - -For example, [`Lockable`](/v4/interface/lockable/) is an interface because both [`Issue`](/v4/object/issue/) and [`PullRequest`](/v4/object/pullrequest/) objects can be locked. An interface has its own list of named fields that are shared by implementing objects. - -For more information, see "[Implementation](/v4/guides/intro-to-graphql#implementation)." - -{% for item in graphql.schemaForCurrentVersion.interfaces %} - {% include graphql-interface %} -{% endfor %} diff --git a/content/graphql/reference/mutations.md b/content/graphql/reference/mutations.md deleted file mode 100644 index 6018f29f57cb..000000000000 --- a/content/graphql/reference/mutations.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Mutations -redirect_from: - - /v4/mutation -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About mutations - -Every GraphQL schema has a root type for both queries and mutations. The [mutation type](https://graphql.github.io/graphql-spec/June2018/#sec-Type-System) defines GraphQL operations that change data on the server. It is analogous to performing HTTP verbs such as `POST`, `PATCH`, and `DELETE`. - -For more information, see "[About mutations](/v4/guides/forming-calls#about-mutations)." - -{% for item in graphql.schemaForCurrentVersion.mutations %} - {% include graphql-mutation %} -{% endfor %} diff --git a/content/graphql/reference/objects.md b/content/graphql/reference/objects.md deleted file mode 100644 index 08e8c9748da2..000000000000 --- a/content/graphql/reference/objects.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Objects -redirect_from: - - /v4/object -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About objects - -[Objects](https://graphql.github.io/graphql-spec/June2018/#sec-Objects) in GraphQL represent the resources you can access. An object can contain a list of fields, which are specifically typed. - -For example, the [`Repository`](/graphql/reference/objects#repository) object has a field called `name`, which is a `String`. - -For more information, see "[Introduction to GraphQL](/v4/guides/intro-to-graphql)." - - - diff --git a/content/graphql/reference/queries.md b/content/graphql/reference/queries.md deleted file mode 100644 index acf2f1b98c63..000000000000 --- a/content/graphql/reference/queries.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Queries -miniTocMaxHeadingLevel: 2 -redirect_from: - - /v4/query -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About queries - -Every GraphQL schema has a root type for both queries and mutations. The [query type](https://graphql.github.io/graphql-spec/June2018/#sec-Type-System) defines GraphQL operations that retrieve data from the server. - -For more information, see "[About queries](/v4/guides/forming-calls#about-queries)." - -{% note %} - -**Note:** For [user-to-server](/developers/apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests) {% data variables.product.prodname_github_app %} requests, you should use separate queries for issues and pull requests. For example, use the `is:issue` or `is:pull-request` filters and their equivalents. Using the `search` connection to return a combination of issues and pull requests in a single query will result in an empty set of nodes. - -{% endnote %} - -## Connections - -{% for item in graphql.schemaForCurrentVersion.queries.connections %} - {% include graphql-query %} -{% endfor %} - -## Fields - -{% for item in graphql.schemaForCurrentVersion.queries.fields %} - {% include graphql-query %} -{% endfor %} diff --git a/content/graphql/reference/scalars.md b/content/graphql/reference/scalars.md deleted file mode 100644 index 0fea4770afb0..000000000000 --- a/content/graphql/reference/scalars.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Scalars -redirect_from: - - /v4/scalar -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About scalars - -[Scalars](https://graphql.github.io/graphql-spec/June2018/#sec-Scalars) are primitive values: `Int`, `Float`, `String`, `Boolean`, or `ID`. - -When calling the GraphQL API, you must specify nested subfields until you return only scalars. - -For more information, see "[Introduction to GraphQL](/v4/guides/intro-to-graphql#field)." - -{% for item in graphql.schemaForCurrentVersion.scalars %} - {% include graphql-scalar %} -{% endfor %} diff --git a/content/graphql/reference/unions.md b/content/graphql/reference/unions.md deleted file mode 100644 index 7c016fd2aba2..000000000000 --- a/content/graphql/reference/unions.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Unions -redirect_from: - - /v4/union -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About unions - -A [union](https://graphql.github.io/graphql-spec/June2018/#sec-Unions) is a type of object representing many objects. - -For example, a field marked as an [`ProjectCardItem`](/v4/union/projectcarditem/) could be an [`Issue`](/v4/object/issue/) or a [`PullRequest`](/v4/object/pullrequest/) because each of those objects can be inside a project card. Using a union instead of an object gives you flexibility. - -For more information, see "[Introduction to GraphQL](/v4/guides/intro-to-graphql)." - -{% for item in graphql.schemaForCurrentVersion.unions %} - {% include graphql-union %} -{% endfor %} diff --git a/content/insights/exploring-your-usage-of-github-enterprise/index.md b/content/insights/exploring-your-usage-of-github-enterprise/index.md deleted file mode 100644 index dd3b9f465bdc..000000000000 --- a/content/insights/exploring-your-usage-of-github-enterprise/index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Exploring your usage of GitHub Enterprise -shortTitle: Exploring your usage -intro: You can use metrics and reports to understand and improve your software delivery process through data. -redirect_from: - - /github/installing-and-configuring-github-insights/exploring-your-usage-of-github-enterprise -versions: - enterprise-server: '*' ---- - -{% link_in_list /metrics-available-with-github-insights %} -{% link_in_list /viewing-key-metrics-and-reports %} -{% link_in_list /setting-your-timezone-for-github-insights %} -{% link_in_list /navigating-between-github-enterprise-and-github-insights %} diff --git a/content/insights/exploring-your-usage-of-github-enterprise/metrics-available-with-github-insights.md b/content/insights/exploring-your-usage-of-github-enterprise/metrics-available-with-github-insights.md deleted file mode 100644 index 5fd646f6fb7a..000000000000 --- a/content/insights/exploring-your-usage-of-github-enterprise/metrics-available-with-github-insights.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Metrics available with GitHub Insights -product: '{% data reusables.gated-features.github-insights %}' -intro: '{% data variables.product.prodname_insights %} includes a variety of metrics to give you visibility into your team''s software delivery process.' -redirect_from: - - /github/installing-and-configuring-github-insights/metrics-available-with-github-insights - - /github/installing-and-configuring-github-insights/key-metrics-for-collaboration-in-pull-requests -versions: - enterprise-server: '*' ---- - -### About metrics in {% data variables.product.prodname_insights %} - -{% data reusables.github-insights.key-metrics-and-reports %} - -{% data reusables.github-insights.about-key-metrics %} You can set and measure goals for each key metric. For more information, see "[Managing goals](/insights/installing-and-configuring-github-insights/managing-goals)." - -{% data reusables.github-insights.about-reports %} - -{% data reusables.github-insights.manage-metrics %} - -### Key metrics for collaboration in pull requests - -Key metrics for collaboration in pull requests help teams remove bottlenecks in process, improve collaboration, and deliver projects faster, with higher quality. Improving these metrics results in a more productive team. - -- [Code review distribution](#code-review-distribution) -- [Code review turnaround](#code-review-turnaround) -- [Time to open](#time-to-open) -- [Pull request size](#pull-request-size) -- [Work in progress](#work-in-progress) - -#### Code review distribution - -Measures the distribution of code reviews across a team or organization. A value closer to 1 indicates a more equal distribution. Includes members who have previously opened, reviewed, or commented on a pull request, or committed to a branch. - -The index is equal to 1 minus the Gini coefficient of code reviews for an organization or team. For more information, see [Gini coefficient](https://en.wikipedia.org/wiki/Gini_coefficient) on Wikipedia. - -#### Code review turnaround - -The time elapsed between a review assignment and a completed review. - -To counteract code reviews as a blocker for teams, organizations can optimize their review assignment process and set goals for turnaround time. - -#### Time to open - -The time elapsed between a user's first commit to a branch and opening a pull request for that branch. - -Decreasing this period of time allows contributors to receive feedback earlier in the process and allows more time for collaboration and iteration. - -#### Pull request size - -Total diff size of a pull request (total of lines added, removed, and changed). - -Large pull requests carry more risk when deploying to production and are more difficult to review, merge, and release. Deploying pull requests of a reasonable size enables your team to review and ship new features at a faster cadence and with greater confidence - -#### Work in progress - -The number of open pull requests for a given team or organization, expressed as a total as well as a ratio of open pull requests to developer. - -A large pull request backlog means work may be out of date, indicating wasted effort from your team. This metric helps keep your team focused while ensuring no one on the team is blocked or overburdened. - -### Reports - -| Metric | Description | -| ------ | ----------- | -| Activity | An activity is any one of the following:
  • Committing to a branch
  • Opening a pull request
  • Closing a pull request
  • Merging a pull request
  • Commenting on a pull request
  • Approving a pull request
| -| Activity, hour | An hour with activity is any hour in which at least one contributor records an activity. | -| Churn code | Churn code is code changed within three weeks of being added or last changed. This includes lines of code that were overwritten by the author or by another contributor. | -| Lines of code added and changed | Total count of new lines of code added plus lines of code changed. You can include or exclude churn code. | -| Ownership | Percentage breakdown of lines of code added and changed by the last contributor to add or change each line of code. | -| Pairings | Contributors who modify or remove another contributor's code. | -| Percentage of codebase changed | Lines of code added or changed in the codebase as a percentage of total lines of code in the codebase. | -| Percentage of new and changed code vs churn code | Lines of code added and changed, excluding churn code, as a percentage of total lines of code added and changed, including churn code. | -| Pull requests open | The count of all pull requests which are open at the end of the period selected or the time interval displayed on the chart. | -| Retention | Percentage of lines of code persisting in the codebase after each week, grouped by the week the lines were created. | -| Time to merge | Time between the first commit on a branch and the merge action of a pull request on that branch. The timestamp of the first commit on a branch is subtracted from the timestamp on the merge action of the pull request. | diff --git a/content/insights/exploring-your-usage-of-github-enterprise/navigating-between-github-enterprise-and-github-insights.md b/content/insights/exploring-your-usage-of-github-enterprise/navigating-between-github-enterprise-and-github-insights.md deleted file mode 100644 index 2896caf64e1f..000000000000 --- a/content/insights/exploring-your-usage-of-github-enterprise/navigating-between-github-enterprise-and-github-insights.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Navigating between GitHub Enterprise and GitHub Insights -intro: '' -product: '{% data reusables.gated-features.github-insights %}' -permissions: 'Anyone with access to {% data variables.product.prodname_insights %} can navigate between {% data variables.product.prodname_enterprise %} and {% data variables.product.prodname_insights %}.' -versions: - enterprise-server: '*' ---- - -Before you can navigate between {% data variables.product.prodname_enterprise %} and {% data variables.product.prodname_insights %}, a site administrator must enable a link between {% data variables.product.prodname_insights %} and {% data variables.product.prodname_enterprise %}. For more information, see "[Enabling a link between {% data variables.product.prodname_insights %} and {% data variables.product.prodname_enterprise %}](/insights/installing-and-configuring-github-insights/enabling-a-link-between-github-insights-and-github-enterprise)." - -1. In the upper-right corner of any page, click your profile photo, then click **GitHub Insights**. - ![Link to GitHub Insights](/assets/images/help/insights/github-insights-link.png) diff --git a/content/insights/exploring-your-usage-of-github-enterprise/setting-your-timezone-for-github-insights.md b/content/insights/exploring-your-usage-of-github-enterprise/setting-your-timezone-for-github-insights.md deleted file mode 100644 index d8b614cf207b..000000000000 --- a/content/insights/exploring-your-usage-of-github-enterprise/setting-your-timezone-for-github-insights.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Setting your timezone for GitHub Insights -intro: 'You can set the timezone for metrics you view in {% data variables.product.prodname_insights %}.' -product: '{% data reusables.gated-features.github-insights %}' -permissions: 'Anyone with access to {% data variables.product.prodname_insights %} can set their own timezone.' -versions: - enterprise-server: '*' ---- - -Your timezone setting only affects how you see data in {% data variables.product.prodname_insights %}. The setting does not apply to other users. - -{% data reusables.github-insights.settings-tab %} -2. Use the "Timezone" drop-down menu, and select your timezone. - ![Timezone drop-down menu](/assets/images/help/insights/timezone-drop-down.png) -3. Click **Save Changes**. diff --git a/content/insights/exploring-your-usage-of-github-enterprise/viewing-key-metrics-and-reports.md b/content/insights/exploring-your-usage-of-github-enterprise/viewing-key-metrics-and-reports.md deleted file mode 100644 index 31703a70f56d..000000000000 --- a/content/insights/exploring-your-usage-of-github-enterprise/viewing-key-metrics-and-reports.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Viewing key metrics and reports -intro: You can view and filter key metrics and reports to help you understand and improve your software delivery process through data. -product: '{% data reusables.gated-features.github-insights %}' -redirect_from: - - /github/installing-and-configuring-github-insights/viewing-and-filtering-key-metrics-and-reports -permissions: 'Anyone with access to {% data variables.product.prodname_insights %} can view key metrics and reports.' -versions: - enterprise-server: '*' ---- - -### About metrics and reports - -{% data reusables.github-insights.key-metrics-and-reports %} For more information about available metrics, see "[Metrics available with {% data variables.product.prodname_insights %}](/insights/exploring-your-usage-of-github-enterprise/metrics-available-with-github-insights)." - -You can view goals and success rates for each key metric. For more information, see "[Managing goals](/insights/installing-and-configuring-github-insights/managing-goals)" - -You will only have access to the {% data variables.product.prodname_insights %} data which you also have access to in {% data variables.product.prodname_enterprise %}. - -You can filter the data included in key metrics or reports by teams, repositories, or date range. - -### Viewing key metrics - -{% data reusables.github-insights.navigate-to-key-metrics %} -{% data reusables.github-insights.choose-key-metric %} -{% data reusables.github-insights.filter-reports %} -{% data reusables.github-insights.view-events %} - -### Viewing reports - -1. In {% data variables.product.prodname_insights %}, click **{% octicon "file" aria-label="The file icon" %} Reports**. - ![Reports tab](/assets/images/help/insights/reports-tab.png) -2. Under **{% octicon "file" aria-label="The file icon" %} Reports**, click the name of the report you want to view. - ![List of reports](/assets/images/help/insights/reports-list.png) -{% data reusables.github-insights.filter-reports %} -{% data reusables.github-insights.view-events %} - -### Further reading - -- "[Managing contributors and teams](/insights/installing-and-configuring-github-insights/managing-contributors-and-teams)" -- "[Managing repositories](/insights/installing-and-configuring-github-insights/managing-repositories)" -- "[Managing organizations](/insights/installing-and-configuring-github-insights/managing-organizations)" -- "[Managing events](/insights/installing-and-configuring-github-insights/managing-events)" diff --git a/content/insights/index.md b/content/insights/index.md deleted file mode 100644 index 068ac882f760..000000000000 --- a/content/insights/index.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: GitHub Insights Documentation -shortTitle: GitHub Insights -intro: 'Understand and improve your software delivery process through data with {% data variables.product.prodname_insights %}. You can view customized reports based on data from {% data variables.product.prodname_enterprise %}.' -featuredLinks: - gettingStarted: - - /insights/installing-and-configuring-github-insights/about-github-insights - - /insights/installing-and-configuring-github-insights/system-overview-for-github-insights - - /insights/installing-and-configuring-github-insights/installing-github-insights - - /insights/exploring-your-usage-of-github-enterprise/viewing-key-metrics-and-reports - popular: - - /insights/installing-and-configuring-github-insights/about-data-in-github-insights - - /insights/exploring-your-usage-of-github-enterprise/metrics-available-with-github-insights -redirect_from: - - /github/installing-and-configuring-github-insights -versions: - enterprise-server: '*' ---- - -{% link_with_intro /installing-and-configuring-github-insights %} -{% link_with_intro /exploring-your-usage-of-github-enterprise %} diff --git a/content/insights/installing-and-configuring-github-insights/about-data-in-github-insights.md b/content/insights/installing-and-configuring-github-insights/about-data-in-github-insights.md deleted file mode 100644 index ee319fad221e..000000000000 --- a/content/insights/installing-and-configuring-github-insights/about-data-in-github-insights.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: About data in GitHub Insights -intro: 'The data included in {% data variables.product.prodname_insights %} metrics is highly customizable.' -product: '{% data reusables.gated-features.github-insights %}' -permissions: '' -versions: - enterprise-server: '*' ---- - -{% data variables.product.prodname_insights %} displays data about your team's work in key metrics and reports. You can choose which of these metrics are displayed. For more information, see "[Managing available metrics and reports](/insights/installing-and-configuring-github-insights/managing-available-metrics-and-reports)." - -You can manage which organizations in {% data variables.product.prodname_enterprise %} are included in metrics. For more information, see "[Managing organizations](/insights/installing-and-configuring-github-insights/managing-organizations)." - -After you add an organization to {% data variables.product.prodname_insights %}, you can choose which of that organization's repositories are included in metrics. {% data reusables.github-insights.repository-groups %} For more information, see "[Managing repositories](/insights/installing-and-configuring-github-insights/managing-repositories)." - -You can choose which contributors are included in metrics and create teams of contributors. For more information, see "[Managing contributors and teams](/insights/installing-and-configuring-github-insights/managing-contributors-and-teams)." - -{% data reusables.github-insights.events %} For more information, see "[Managing events](/insights/installing-and-configuring-github-insights/managing-events)." - -### Further reading -- "[Metrics available with {% data variables.product.prodname_insights %}](/insights/exploring-your-usage-of-github-enterprise/metrics-available-with-github-insights)" -- "[{% data variables.product.prodname_insights %} and data protection for your organization](/github/site-policy/github-insights-and-data-protection-for-your-organization)" diff --git a/content/insights/installing-and-configuring-github-insights/about-github-insights.md b/content/insights/installing-and-configuring-github-insights/about-github-insights.md deleted file mode 100644 index 05fcc49f8657..000000000000 --- a/content/insights/installing-and-configuring-github-insights/about-github-insights.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: About GitHub Insights -intro: '{% data variables.product.prodname_insights %} provides metrics and analytical reports to help engineering teams understand and improve their software delivery process.' -product: '{% data reusables.gated-features.github-insights %}' -redirect_from: - - /github/installing-and-configuring-github-insights/about-github-insights -versions: - enterprise-server: '*' ---- - -### About {% data variables.product.prodname_insights %} - -{% data variables.product.prodname_insights %} is a standalone application that provides analytic reports based on data from {% data variables.product.product_location %} to help you understand and improve your software delivery process. You can use these metrics to remove bottlenecks in process, improve collaboration, and deliver projects faster, with higher quality. - -{% data variables.product.prodname_insights %} is hosted on a machine and interfaces with {% data variables.product.prodname_enterprise %}. For more information, see "[System overview for {% data variables.product.prodname_insights %}](/insights/installing-and-configuring-github-insights/system-overview-for-github-insights)." - -Anyone with access to {% data variables.product.prodname_insights %} can view and interact with metrics, using team and repository filters to contextualize data. For more information, see "[Exploring your usage of {% data variables.product.prodname_enterprise %}](/insights/exploring-your-usage-of-github-enterprise)." - -People with admin permissions to {% data variables.product.prodname_insights %} can choose which metrics are displayed and which organizations, repositories, and people are included in those metrics. They can also add context to metrics by managing events. For more information, see "[About data in {% data variables.product.prodname_insights %} ](/insights/installing-and-configuring-github-insights/about-data-in-github-insights)." - -### Contacting support - -You can receive support for {% data variables.product.prodname_insights %} from {% data variables.contact.github_support %}. For more information, see {% if currentVersion == "free-pro-team@latest" %}"[Submitting a ticket](/github/working-with-github-support/submitting-a-ticket)."{% else %}"[Reaching {% data variables.contact.github_support %}](/enterprise/{{ currentVersion }}/admin/enterprise-support/reaching-github-support)."{% endif %} - -### Further reading - -- "[Installing {% data variables.product.prodname_insights %}](/insights/installing-and-configuring-github-insights/installing-github-insights)" -- "[Configuring {% data variables.product.prodname_insights %}](/insights/installing-and-configuring-github-insights/configuring-github-insights)" diff --git a/content/insights/installing-and-configuring-github-insights/configuring-github-insights.md b/content/insights/installing-and-configuring-github-insights/configuring-github-insights.md deleted file mode 100644 index c936478f25e5..000000000000 --- a/content/insights/installing-and-configuring-github-insights/configuring-github-insights.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Configuring GitHub Insights -shortTitle: Configuring -intro: 'You can manage the connection between {% data variables.product.prodname_insights %} and {% data variables.product.prodname_enterprise %} and manage permissions for {% data variables.product.prodname_insights %} users.' -mapTopic: true -versions: - enterprise-server: '*' ---- - diff --git a/content/insights/installing-and-configuring-github-insights/configuring-the-connection-between-github-insights-and-github-enterprise.md b/content/insights/installing-and-configuring-github-insights/configuring-the-connection-between-github-insights-and-github-enterprise.md deleted file mode 100644 index 6cbf5de5cc19..000000000000 --- a/content/insights/installing-and-configuring-github-insights/configuring-the-connection-between-github-insights-and-github-enterprise.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Configuring the connection between GitHub Insights and GitHub Enterprise -intro: 'You can manage how {% data variables.product.prodname_insights %} connects to {% data variables.product.prodname_enterprise %}.' -product: '{% data reusables.gated-features.github-insights %}' -permissions: 'People with admin permissions to {% data variables.product.prodname_insights %} can configure the connection to {% data variables.product.prodname_enterprise %}.' -versions: - enterprise-server: '*' ---- - -{% data reusables.github-insights.settings-tab %} -2. Under {% octicon "gear" aria-label="The gear icon" %} Settings, click **Enterprise**. - ![Enterprise tab](/assets/images/help/insights/enterprise-tab.png) -{% data reusables.github-insights.enterprise-api-url %} -{% data reusables.github-insights.app-id %} -{% data reusables.github-insights.client-id %} -{% data reusables.github-insights.client-secret %} -{% data reusables.github-insights.private-key %} -{% data reusables.github-insights.webhook-secret %} -{% data reusables.github-insights.skip-ssl %} -10. Click **Save**. -{% data reusables.github-insights.insights-license %} -11. Click **Update License**. diff --git a/content/insights/installing-and-configuring-github-insights/enabling-a-link-between-github-insights-and-github-enterprise.md b/content/insights/installing-and-configuring-github-insights/enabling-a-link-between-github-insights-and-github-enterprise.md deleted file mode 100644 index 6997730e26c3..000000000000 --- a/content/insights/installing-and-configuring-github-insights/enabling-a-link-between-github-insights-and-github-enterprise.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Enabling a link between GitHub Insights and GitHub Enterprise -intro: 'You can enable a link that will allow users to navigate from {% data variables.product.prodname_ghe_server %} to {{ site.data.variables.product.prodname_insights }}.' -product: '{% data reusables.gated-features.github-insights %}' -permissions: 'Site administrators for {% data variables.product.prodname_ghe_server %} can enable a link between {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_insights %}.' -redirect_from: - - /github/installing-and-configuring-github-insights/navigating-between-github-insights-and-github-enterprise - - /github/installing-and-configuring-github-insights/enabling-a-link-between-github-insights-and-github-enterprise -versions: - enterprise-server: '*' ---- - -After you enable the link, each user can navigate directly from {% data variables.product.prodname_ghe_server %} to {% data variables.product.prodname_insights %}. For more information, see "[Navigating between {% data variables.product.prodname_enterprise %} and {% data variables.product.prodname_insights %}](/insights/exploring-your-usage-of-github-enterprise/navigating-between-github-enterprise-and-github-insights)." - -1. Connect to the administrative shell for {% data variables.product.prodname_ghe_server %}. For more information, see "[Accessing the administrative shell (SSH)](/enterprise/{{ currentVersion }}/admin/guides/installation/accessing-the-administrative-shell-ssh/)." -2. Run the following command. - ``` - ghe-config 'app.github.insights-available' 'true' && ghe-config-apply - ``` -3. Return to {% data variables.product.prodname_ghe_server %}. -{% data reusables.enterprise_site_admin_settings.access-settings %} -{% data reusables.enterprise_site_admin_settings.business %} -{% data reusables.enterprise-accounts.settings-tab %} -7. Under {% octicon "gear" aria-label="The Settings gear" %} **Settings**, click **{% data variables.product.prodname_insights %}**. - {% note %} - - **Note:** It takes several minutes after you run the configuration command for this option to become available in {% data variables.product.prodname_enterprise %}. If you don't see **{% data variables.product.prodname_insights %}**, wait, or restart {% data variables.product.prodname_enterprise %}. - - {% endnote %} - - ![{% data variables.product.prodname_insights %} tab](/assets/images/help/business-accounts/github-insights-tab.png) -3. Under "{% data variables.product.prodname_insights %} instance URL", type the URL of the server your company uses for {% data variables.product.prodname_insights %}. - ![{% data variables.product.prodname_insights %} instance URL](/assets/images/help/business-accounts/insights-instance-url.png) -4. Click **Save**. diff --git a/content/insights/installing-and-configuring-github-insights/index.md b/content/insights/installing-and-configuring-github-insights/index.md deleted file mode 100644 index dff14d56aeaf..000000000000 --- a/content/insights/installing-and-configuring-github-insights/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Installing and configuring GitHub Insights -shortTitle: Installing and configuring -intro: You can start using GitHub Insights by installing and configuring the application. -versions: - enterprise-server: '*' ---- - -{% topic_link_in_list /installing-and-updating-github-insights %} - {% link_in_list /about-github-insights %} - {% link_in_list /system-overview-for-github-insights %} - {% link_in_list /installing-github-insights %} - {% link_in_list /updating-github-insights %} -{% topic_link_in_list /configuring-github-insights %} - {% link_in_list /configuring-the-connection-between-github-insights-and-github-enterprise %} - {% link_in_list /managing-permissions-in-github-insights %} - {% link_in_list /enabling-a-link-between-github-insights-and-github-enterprise %} -{% topic_link_in_list /managing-data-in-github-insights %} - {% link_in_list /about-data-in-github-insights %} - {% link_in_list /managing-available-metrics-and-reports %} - {% link_in_list /managing-contributors-and-teams %} - {% link_in_list /managing-repositories %} - {% link_in_list /managing-organizations %} - {% link_in_list /managing-goals %} - {% link_in_list /managing-events %} diff --git a/content/insights/installing-and-configuring-github-insights/installing-and-updating-github-insights.md b/content/insights/installing-and-configuring-github-insights/installing-and-updating-github-insights.md deleted file mode 100644 index 0019e213f10b..000000000000 --- a/content/insights/installing-and-configuring-github-insights/installing-and-updating-github-insights.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Installing and updating GitHub Insights -shortTitle: Installing and updating -intro: 'You can install the {% data variables.product.prodname_insights %} application and update the application to the latest version.' -mapTopic: true -versions: - enterprise-server: '*' ---- - diff --git a/content/insights/installing-and-configuring-github-insights/installing-github-insights.md b/content/insights/installing-and-configuring-github-insights/installing-github-insights.md deleted file mode 100644 index 6e4a019e2d3b..000000000000 --- a/content/insights/installing-and-configuring-github-insights/installing-github-insights.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Installing GitHub Insights -intro: 'You can install {% data variables.product.prodname_insights %} and connect the standalone application to {% data variables.product.prodname_ghe_server %}.' -product: '{% data reusables.gated-features.github-insights %}' -redirect_from: - - /github/installing-and-configuring-github-insights/installing-github-insights -permissions: 'Organization owners in {% data variables.product.prodname_enterprise %} with read permissions to the `github/insights-releases` repository and administrative access to the application server can install {% data variables.product.prodname_insights %}.' -versions: - enterprise-server: '*' ---- - -### Prerequisites - -- You must have a {% data variables.product.prodname_enterprise %} license file that includes {% data variables.product.prodname_insights %}. After you purchase {% data variables.product.prodname_insights %}, you can download the updated license file in the [{% data variables.product.prodname_enterprise %} web portal](https://enterprise.github.com/download). -- {% data reusables.github-insights.requires-machine %} For more information, see "[System overview for {% data variables.product.prodname_insights %}](/github/installing-and-configuring-github-insights/system-overview-for-github-insights#requirements-for-running-github-insights)." -- You must install dependencies on the application server. - - [Docker](https://docs.docker.com/install/) 1.13.0+ - - [Docker Compose](https://docs.docker.com/compose/install/) v1.17.0+ - - {% note %} - - **Note:** {% data reusables.github-insights.docker-requirements %} - - {% endnote %} - -### Creating a {% data variables.product.prodname_github_app %} - -To connect {% data variables.product.prodname_insights %} to {% data variables.product.prodname_enterprise %}, you must create a {% data variables.product.prodname_github_app %} in an organization on {% data variables.product.prodname_enterprise %}. A slugged version of your app's name will be shown on {% data variables.product.prodname_enterprise %} when your integration takes an action. - -{% data reusables.enterprise_site_admin_settings.sign-in %} -2. Navigate to the organization you'd like to connect to {% data variables.product.prodname_insights %}. -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.github-apps-settings-sidebar %} -5. Click **New {% data variables.product.prodname_github_app %}**. - ![New GitHub App button](/assets/images/help/apps/github_apps_new.png) -6. Under "{% data variables.product.prodname_github_app %} name", type a name for the app. Your app cannot have the same name as an existing user or organization, unless the name is your own user or organization name. - ![GitHub App name field](/assets/images/help/apps/github_apps_app_name.png) -7. Under "Homepage URL", type the URL of the application server for {% data variables.product.prodname_insights %}. For more information, see "[System overview for {% data variables.product.prodname_insights %}](/insights/installing-and-configuring-github-insights/system-overview-for-github-insights#requirements-for-running-github-insights)." - ![Homepage URL field](/assets/images/help/apps/github_apps_homepage_url.png) -8. Under "User authorization callback URL", type the following, replacing `` with the URL of the application server. - ``` - /public/applogin - ``` - ![User authorization callback field](/assets/images/help/apps/github_apps_user_authorization.png) -9. Under "Setup URL", type `/public/setup`. - ![Setup URL field](/assets/images/help/apps/github-apps-setup-url.png) -9. Under "Webhook URL", type `/webhooks`. - ![Webhook URL field](/assets/images/help/apps/github_apps_webhook_url.png) -10. Under "Webhook secret", type a secret, then record the secret for later reference. - ![Webhook secret field](/assets/images/help/apps/github_apps_webhook_secret.png) -11. Under "Permissions", use the drop-down menus and configure the following permissions for the app. - - Repository: - - Contents: **Read-only** - - Metadata: **Read-only** - - Pull requests: **Read-only** - - Commit statuses: **Read-only** - - Organization: - - Members: **Read-only** - - Projects: **Read-only** - - ![Permissions drop-down menus](/assets/images/help/apps/github_apps_new_permissions_post2dot13.png) -12. Under "Subscribe to events", select: - - Member - - Pull request - - Push - - Repository - - Team - ![Subscribe to events checkboxes](/assets/images/help/apps/github_apps_subscribe_to_events_pr_push_repository.png) - -13. To enable the {% data variables.product.prodname_github_app %} to access data from any user or organization in {% data variables.product.product_location_enterprise %}, under "Where can this {% data variables.product.prodname_github_app %} be installed?", select **Any account**. - ![Radio buttons to enable access to any account](/assets/images/help/apps/github_apps_installation_options_any_account.png) -14. Click **Create {% data variables.product.prodname_github_app %}**. - ![Create GitHub App button](/assets/images/help/apps/github_apps_create_github_app.png) -15. Review your app's configuration. -16. Under "Private keys", click **Generate a private key**. - ![Generate a private key button](/assets/images/help/apps/generate-private-key.png) -17. Save the resulting PEM file for later reference. -18. Make note of the following information about your app for later reference. - - App ID - - Client ID - - Client secret - - Private key - - Webhook secret - -### Installing {% data variables.product.prodname_insights %} - -{% data reusables.github-insights.download-latest-release %} -{% data reusables.github-insights.install-script %} -{% data reusables.github-insights.run-script %} - -### Configuring {% data variables.product.prodname_insights %} - -To configure {% data variables.product.prodname_insights %} to connect to {% data variables.product.prodname_ghe_server %}, you must provide the information you recorded in previous steps. - -1. In your browser, navigate to `/setup`. -{% data reusables.github-insights.enterprise-api-url %} -{% data reusables.github-insights.insights-license %} -{% data reusables.github-insights.app-id %} -{% data reusables.github-insights.client-id %} -{% data reusables.github-insights.client-secret %} -{% data reusables.github-insights.private-key %} -{% data reusables.github-insights.webhook-secret %} -{% data reusables.github-insights.skip-ssl %} -11. Click **Submit**. -12. Click **Log in with {% data variables.product.prodname_dotcom %}**. -13. To authorize the {% data variables.product.prodname_github_app %} and access {% data variables.product.prodname_insights %}, click **Authorize {% data variables.product.prodname_github_app %}**. - -### Further reading - -- "[Managing repositories](/insights/installing-and-configuring-github-insights/managing-repositories)" -- "[{% data variables.product.prodname_insights %} and data protection for your organization](/github/site-policy/github-insights-and-data-protection-for-your-organization)" diff --git a/content/insights/installing-and-configuring-github-insights/managing-available-metrics-and-reports.md b/content/insights/installing-and-configuring-github-insights/managing-available-metrics-and-reports.md deleted file mode 100644 index 63ef9134f532..000000000000 --- a/content/insights/installing-and-configuring-github-insights/managing-available-metrics-and-reports.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Managing available metrics and reports -intro: 'You can enable and disable specific metrics across {% data variables.product.prodname_insights %}.' -product: '{% data reusables.gated-features.github-insights %}' -redirect_from: - - /github/installing-and-configuring-github-insights/managing-settings-in-github-insights -permissions: 'People with admin permissions to {% data variables.product.prodname_insights %} can manage available metrics and reports.' -versions: - enterprise-server: '*' ---- - -When you disable a metric, the metric will not be visible for any user, anywhere on {% data variables.product.prodname_insights %}. - -{% data reusables.github-insights.settings-tab %} -2. Under **{% octicon "gear" aria-label="The gear icon" %} Settings**, click **Toggle reports**. - ![Toggle reports tab](/assets/images/help/insights/toggle-reports-tab.png) -3. To the right of the metric you want to manage, use the **Enabled** or **Disabled** drop-down menu. - ![Drop-down menu to toggle metric](/assets/images/help/insights/toggle-report-drop-down.png) diff --git a/content/insights/installing-and-configuring-github-insights/managing-contributors-and-teams.md b/content/insights/installing-and-configuring-github-insights/managing-contributors-and-teams.md deleted file mode 100644 index 0fffd0737420..000000000000 --- a/content/insights/installing-and-configuring-github-insights/managing-contributors-and-teams.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Managing contributors and teams -intro: You can manage the people and teams included in metrics and reports. -product: '{% data reusables.gated-features.github-insights %}' -redirect_from: - - /github/installing-and-configuring-github-insights/managing-contributors-and-teams -permissions: 'People with admin permissions in {% data variables.product.prodname_insights %} can manage contributors and teams.' -miniTocMaxHeadingLevel: 4 -versions: - enterprise-server: '*' ---- - -### About contributors and teams in {% data variables.product.prodname_insights %} - -A contributor in {% data variables.product.prodname_insights %} is an entity associated with {% data variables.product.prodname_enterprise %} data. You can edit and hide contributors. - -Sometimes, the same person can appear as more than one contributor. For example, if one person has used multiple commit email addresses in Git, there will be a unique contributor for each email address in {% data variables.product.prodname_insights %}. You can merge multiple contributors to combine all the data from one person. - -You can also group contributors into teams. You can use teams as a filter on reports. For more information, see "[Viewing key metrics and reports](/insights/exploring-your-usage-of-github-enterprise/viewing-key-metrics-and-reports)." - -### Editing a contributor - -You can edit a contributor's display name in {% data variables.product.prodname_insights %}. - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.contributors-tab %} -{% data reusables.github-insights.edit-contributor %} -4. Under "First Name", type the contributor's first name. - ![First Name field](/assets/images/help/insights/first-name.png) -5. Under "Last Name", type the contributor's last name. - ![Last Name field](/assets/images/help/insights/last-name.png) -6. Click **Rename**. - -### Managing contributor visibility - -Hiding a contributor excludes all data associated with that contributor from all metrics. - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.contributors-tab %} -{% data reusables.github-insights.edit-contributor %} -3. Select or deselect **Show contributor**. - ![Checkbox to show or hide contributor](/assets/images/help/insights/show-contributor.png) -4. Click **Done**. - -### Merging contributor data - -When you merge two or more contributors, the {% data variables.product.prodname_insights %} data for those contributors becomes associated with one primary contributor. All of the merged contributor data belongs to the primary contributor in metrics. - -You can merge contributors manually or automatically, based on contributors {% data variables.product.prodname_insights %} has detected with matching names. - -#### Auto-merging contributors - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.contributors-tab %} -3. Under "All Contributors", click **Auto-Merge** - ![Auto-Merge button](/assets/images/help/insights/auto-merge.png) -4. Optionally, to exclude a contributor from being merged, to the right of the contributor, click **Skip**. - ![Skip button](/assets/images/help/insights/skip-contributor.png) -5. For each group, select a primary contributor. - ![Radio buttons to select primary contributor](/assets/images/help/insights/select-primary.png) -6. Click **Merge All**. - -#### Manually merging contributors - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.contributors-tab %} -3. Select the contributors you want to merge. - ![Select contributors](/assets/images/help/insights/select-contributors.png) -4. Under "All Contributors", click **Merge**. - ![Merge button](/assets/images/help/insights/merge-button.png) -5. Select a primary contributor. - ![Radio buttons to select primary contributor](/assets/images/help/insights/select-primary.png) -6. Click **Merge accounts**. - -#### Unmerging a contributor - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.contributors-tab %} -4. To the right of the contributor, click **Unmerge**. - ![Unmerge button](/assets/images/help/insights/unmerge-contributor.png) - -### Managing teams in {% data variables.product.prodname_insights %} - -There are two types of teams in {% data variables.product.prodname_insights %}: teams imported from {% data variables.product.product_name %} and custom teams. - -When an organization is added to {% data variables.product.prodname_insights %}, all of the organization's teams are imported from {% data variables.product.product_name %}. You can search and filter by these teams in {% data variables.product.prodname_insights %}. You can manage the teams in {% data variables.product.product_name %}. - -You can create and manage custom teams in {% data variables.product.prodname_insights %}. Custom teams may include members from multiple organizations in {% data variables.product.product_name %}. - -#### Creating a custom team - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.teams-tab %} -2. To the right of "Teams", click **Create Team**. - ![Create Team button](/assets/images/help/insights/create-team.png) -3. Under "Team Name", type a unique name for your team. - ![Team Name field](/assets/images/help/insights/team-name.png) -4. Click **Create**. - -#### Adding contributors to a custom team - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.teams-tab %} -{% data reusables.github-insights.edit-team %} -3. Under "Contributors", use the drop-down menu and select a contributor. - ![Contibutors drop-down](/assets/images/help/insights/contributors-drop-down.png) -4. Click **Done**. - -#### Removing a contributor from a custom team - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.teams-tab %} -{% data reusables.github-insights.edit-team %} -3. To the right of the contributor you'd like to remove, click {% octicon "trashcan" aria-label="The trashcan icon" %}. - ![Trashcan button](/assets/images/help/insights/contributor-trashcan.png) - -#### Renaming a custom team - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.teams-tab %} -{% data reusables.github-insights.edit-team %} -3. Under "Team Name", type a unique name for your team. - ![Team Name field](/assets/images/help/insights/rename-team.png) -4. Click **Rename**. - ![Rename button](/assets/images/help/insights/rename-button-team.png) -5. Click **Done**. - -#### Deleting a custom team - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.teams-tab %} -{% data reusables.github-insights.edit-team %} -3. Click **Delete Team**. - ![Delete Team button](/assets/images/help/insights/delete-team.png) -4. Click **Confirm**. diff --git a/content/insights/installing-and-configuring-github-insights/managing-data-in-github-insights.md b/content/insights/installing-and-configuring-github-insights/managing-data-in-github-insights.md deleted file mode 100644 index 94a9ee173287..000000000000 --- a/content/insights/installing-and-configuring-github-insights/managing-data-in-github-insights.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing data in GitHub Insights -shortTitle: Managing data -intro: 'You can choose which metrics are displayed in {% data variables.product.prodname_insights %} and which organizations, repositories, and people are included in those metrics. You can set targets for and add context to metrics.' -mapTopic: true -redirect_from: - - /github/installing-and-configuring-github-insights/managing-data-in-github-insights -versions: - enterprise-server: '*' ---- - diff --git a/content/insights/installing-and-configuring-github-insights/managing-events.md b/content/insights/installing-and-configuring-github-insights/managing-events.md deleted file mode 100644 index e857b38f0984..000000000000 --- a/content/insights/installing-and-configuring-github-insights/managing-events.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Managing events -intro: '{% data reusables.github-insights.events %}' -product: '{% data reusables.gated-features.github-insights %}' -redirect_from: - - /github/installing-and-configuring-github-insights/creating-and-managing-events -permissions: 'People with admin permissions to {% data variables.product.prodname_insights %} can manage events.' -versions: - enterprise-server: '*' ---- - -### About events - -Events add context to metrics. For example, holidays or release dates can cause changes in work patterns, so knowing when those events occurred can change your evaluation of metrics. You can create events for the reorganization of teams, start dates of new employees, changes in scope for teams, and anything else that would affect your team's work. - -After you create an event in {% data variables.product.prodname_insights %}, anyone can view the event as an annotation in some metrics. For more information, see "[Viewing key metrics and reports](/insights/exploring-your-usage-of-github-enterprise/viewing-key-metrics-and-reports)." - -### Creating an event - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.events-tab %} -2. Click **Add Event**. - ![Add Event button](/assets/images/help/insights/add-event.png) -3. Under "Title", type a descriptive name for your event. - ![Title field](/assets/images/help/insights/title-field.png) -4. Use the "Start Date" drop-down menu, and select a start date for your event. - ![Start Date drop-down menu](/assets/images/help/insights/start-date.png) -5. Use the "End Date" drop-down menu, and select an end date for your event. - ![End Date drop-down menu](/assets/images/help/insights/end-date.png) -6. Click **Save**. - -### Deleting an event - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.events-tab %} -3. To the right of the event you want to delete, click **{% octicon "trashcan" aria-label="The trashcan icon" %}**. - ![Trash can button](/assets/images/help/insights/trashcan-button.png) -4. Click **Confirm**. diff --git a/content/insights/installing-and-configuring-github-insights/managing-goals.md b/content/insights/installing-and-configuring-github-insights/managing-goals.md deleted file mode 100644 index 302025dbe3a0..000000000000 --- a/content/insights/installing-and-configuring-github-insights/managing-goals.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Managing goals -intro: You can use goals to set targets for key metrics and measure success reaching those targets. -product: '{% data reusables.gated-features.github-insights %}' -redirect_from: - - /github/installing-and-configuring-github-insights/creating-and-managing-goals -permissions: 'Anyone with access to {% data variables.product.prodname_insights %} can manage goals.' -versions: - enterprise-server: '*' ---- - -### About goals - -Goals are targets that you can set for key metrics to measure your team's success. When you set a goal for a key metric, you can see how your team's performance compares to the goal using the goal line on charts and the success rate metric. For example, you can set the goal for `code review turnaround time` to 4 hours. A goal line on the key metric chart shows which code reviews achieved the goal and which did not. If your team completed one half of code reviews in less than 4 hours, your `success rate` will be 50%. - -Goals are only available in key metrics. Some reports also show which work, such as individual pull requests, did not meet your goal. For more information, see "[Viewing key metrics and reports](/insights/exploring-your-usage-of-github-enterprise/viewing-key-metrics-and-reports)." - -Goals cannot be created or deleted. When you edit a goal, the new goal applies to everyone using your {% data variables.product.prodname_insights %} application. - -### Editing a goal - -{% data reusables.github-insights.navigate-to-key-metrics %} -{% data reusables.github-insights.choose-key-metric %} -1. To the right of the goal, click {% octicon "gear" aria-label="The gear icon" %}. - ![Gear icon to edit goal](/assets/images/help/insights/edit-goal.png) -2. In the text field, type a new goal value. - ![Goal value field](/assets/images/help/insights/input-goal.png) -3. Click **Save**. - ![Save goal](/assets/images/help/insights/save-goal.png) diff --git a/content/insights/installing-and-configuring-github-insights/managing-organizations.md b/content/insights/installing-and-configuring-github-insights/managing-organizations.md deleted file mode 100644 index e4cf45dbab74..000000000000 --- a/content/insights/installing-and-configuring-github-insights/managing-organizations.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Managing organizations -intro: 'You can manage the {% data variables.product.prodname_enterprise %} organizations that are included in metrics.' -product: '{% data reusables.gated-features.github-insights %}' -redirect_from: - - /github/installing-and-configuring-github-insights/managing-organizations -permissions: 'People with admin permissions in {% data variables.product.prodname_insights %} can manage organizations.' -versions: - enterprise-server: '*' ---- - -### About organization management - -When you add an organization to {% data variables.product.prodname_insights %}, repositories owned by that organization are included in metrics. You can choose to add all repositories or select specific repositories to add. - -You can add an organization to {% data variables.product.prodname_insights %} if you are an owner of that organization in {% data variables.product.prodname_enterprise %}. If you are not an owner of the organization, you can send a request for an owner to add the organization to {% data variables.product.prodname_insights %}. - -### Adding an organization to {% data variables.product.prodname_insights %} - -Adding an organization to {% data variables.product.prodname_insights %} installs the {% data variables.product.prodname_github_app %} for {% data variables.product.prodname_insights %} in that organization. For more information about the {% data variables.product.prodname_github_app %}, see "[Installing {% data variables.product.prodname_insights %}](/github/installing-and-configuring-github-insights/installing-github-insights)." - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.repositories-tab %} -{% data reusables.github-insights.add-organizations %} -4. Click the organization you want to add to {% data variables.product.prodname_insights %}. -5. Select whether to add all repositories or to specify repositories to include. - ![Checkboxes to add all repositories or select repositories](/assets/images/help/insights/all-or-select-repos.png) -6. If you chose to install {% data variables.product.product_name %} on select repositories, use the drop-down menu and select the repositories you want to include. - ![Drop-down menu to select repositories](/assets/images/help/insights/select-repos.png) -5. Click **Install** or **Request**. - -### Removing an organization from {% data variables.product.prodname_insights %} - -Removing an organization from {% data variables.product.prodname_insights %} uninstalls the {% data variables.product.prodname_github_app %} for {% data variables.product.prodname_insights %} from the organization. For more information about the {% data variables.product.prodname_github_app %}, see "[Installing {% data variables.product.prodname_insights %}](/github/installing-and-configuring-github-insights/installing-github-insights)." - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.repositories-tab %} -{% data reusables.github-insights.add-organizations %} -4. Click the organization you want to remove from {% data variables.product.prodname_insights %}. -4. Under "Uninstall {% data variables.product.prodname_insights %}", click **Uninstall**. - ![Uninstall button](/assets/images/help/insights/uninstall-button.png) -5. Click **OK**. diff --git a/content/insights/installing-and-configuring-github-insights/managing-permissions-in-github-insights.md b/content/insights/installing-and-configuring-github-insights/managing-permissions-in-github-insights.md deleted file mode 100644 index f74745251455..000000000000 --- a/content/insights/installing-and-configuring-github-insights/managing-permissions-in-github-insights.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Managing permissions in GitHub Insights -intro: 'You can update a user''s permissions in {% data variables.product.prodname_insights %}.' -product: '{% data reusables.gated-features.github-insights %}' -permissions: 'People with admin permissions to {% data variables.product.prodname_insights %} can manage permissions.' -versions: - enterprise-server: '*' ---- - -{% data reusables.github-insights.permissions-levels %} - -If you want to give admin permissions to someone who is not a site administrator in {% data variables.product.prodname_enterprise %}, contact {% data variables.contact.github_support %}. For more information, see {% if currentVersion == "free-pro-team@latest" %}"[Submitting a ticket](/github/working-with-github-support/submitting-a-ticket)."{% else %}"[Reaching {% data variables.contact.github_support %}](/enterprise/{{ currentVersion }}/admin/enterprise-support/reaching-github-support)."{% endif %} - -To remove a user's access from {% data variables.product.prodname_insights %}, you must remove the user from {% data variables.product.prodname_enterprise %}. diff --git a/content/insights/installing-and-configuring-github-insights/managing-repositories.md b/content/insights/installing-and-configuring-github-insights/managing-repositories.md deleted file mode 100644 index 6f25f6b33352..000000000000 --- a/content/insights/installing-and-configuring-github-insights/managing-repositories.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Managing repositories -intro: 'You can manage the repositories connected to {% data variables.product.prodname_insights %} and the data included in metrics for each repository.' -product: '{% data reusables.gated-features.github-insights %}' -redirect_from: - - /github/installing-and-configuring-github-insights/managing-repositories -permissions: 'People with admin permissions in {% data variables.product.prodname_insights %} can manage repositories. ' -miniTocMaxHeadingLevel: 4 -versions: - enterprise-server: '*' ---- - -### About repository management - -For {% data variables.product.prodname_insights %} to include data from a repository in {% data variables.product.prodname_enterprise %}, you must add the organization that owns the repository to {% data variables.product.prodname_insights %}. For more information, see "[Managing organizations](/github/installing-and-configuring-github-insights/managing-organizations)." - -After you add an organization to {% data variables.product.prodname_insights %}, each repository owned by the organization is automatically imported if the repository: -- Has at least one commit -- Is not private -- Is not archived -- Has been pushed to in the last 6 months - -Repository data is updated through webhooks and periodic synchronizations. You can manually refresh repository data at any time or cancel a data import that is in progress. - -{% data reusables.github-insights.repository-groups %} - -You can exclude specific files from {% data variables.product.prodname_insights %} for a specific repository or for all repositories. - -### About import times - -{% data variables.product.prodname_insights %} imports the last three years of data for each repository. Depending on the size and complexity of your repositories, the initial import can some time, during which {% data variables.product.prodname_insights %} data is incomplete. Typically, the initial import of a few teams will take one or two days. Large and complex initial imports can take up to two weeks. - -| Repository Size | Initial import time | -| ----------|--------------| -| < 10,000 commits | < 1 hour | -| 10,000 to 300,000 commits | 1 to 10 days | -| 300,000 commits or more | 10 days + | - -Once the initial import is complete, subsequent imports from incremental changes should take two minutes or less. - -To reduce import times, you can exclude any third party libraries in non-standard folders from {% data variables.product.prodname_insights %} before importing. For more information, see using "[Managing exclusion filters](#managing-exclusion-filters)." - -If you have many large repositories, you can improve initial import times by providing the application server with more cores. Application servers with more cores can perform more parallel import jobs. - -| Application server cores | Parallel initial import jobs | -| ----------|--------------| -| 16 core | 1 job | -| 32 core | 4 jobs | - -Importing a large number of pull requests can trigger rate-limiting from {% data variables.product.prodname_enterprise %}. In this case, importing will pause for one hour before resuming. You can temporarily increase the {% data variables.product.prodname_enterprise %} rate limit to improve import times. For more information, see "[Configuring rate limits](/enterprise/{{ currentVersion }}/admin/installation/configuring-rate-limits)." - -### Viewing and managing repositories - -You can view imported repositories and repositories that are available to import. If an import is in progress, you can see the import's status and a time estimate for the import's completion. - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.repositories-tab %} -3. Optionally, to add a repository which has not been imported, to the right of the repository's name, click **Add**. - ![Add button](/assets/images/help/insights/add-button.png) -4. Optionally, to manually refresh repository data, to the right of the repository's name, click **{% octicon "sync" aria-label="The refresh icon" %}** the refresh icon. - ![Refresh button](/assets/images/help/insights/refresh-button.png) -5. Optionally, to cancel an import in progress, to the right of the repository's name, click **Cancel**. - ![Cancel button](/assets/images/help/insights/cancel-button.png) -6. Optionally, to remove an imported repository, to the right of the repository's name, click **Remove**. - ![Remove button](/assets/images/help/insights/remove-button.png) - -### Managing repository groups for reports - -You can create a repository group, add or remove repositories to a group, and delete a repository group. - -#### Creating a repository group - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.repo-groups-tab %} -2. In the upper-right corner, click **Create Group**. - ![Create Group button](/assets/images/help/insights/create-group.png) -3. Under "Group Name", type a name for your group. - ![Group Name field](/assets/images/help/insights/group-name.png) -4. Click **Create**. - -#### Adding a repository to a repository group - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.repo-groups-tab %} -{% data reusables.github-insights.edit-group %} -4. Under "Repositories", use the drop-down menu and select a repository to add to the group. - ![Repositories drop-down menu](/assets/images/help/insights/repositories-drop-down.png) -5. Click **Done**. - -#### Deleting a repository group - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.repo-groups-tab %} -{% data reusables.github-insights.edit-group %} -4. Click **Delete Group**. - ![Delete Group button](/assets/images/help/insights/delete-group.png) -5. Click **Confirm**. - -### Managing exclusion filters - -You can create a list of file exclusion rules to omit specified files from all {% data variables.product.prodname_insights %} data. File exclusion rules follow the same rules used in *.gitignore* files. For more information, see "[gitignore](https://git-scm.com/docs/gitignore)" in the Git documentation. - -#### Adding a file exclusion rule for all repositories - -Changes to global file exclusions only apply to newly imported data and will not retroactively affect existing data. To apply new exclusion rules to existing data, you can remove and re-add repositories to {% data variables.product.prodname_insights %}. - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.exclude-files-tab %} -3. Optionally, under "Exclude files", select **Include all binaries**. - ![Include all binaries checkbox](/assets/images/help/insights/include-all-binaries-global.png) -4. In the code editor, add a new exclusion rule to the list. - ![Code editor to add global exclusion rule](/assets/images/help/insights/global-exclusion-list.png) -5. Click **Save Changes**. - -#### Adding a file exclusion rule for a repository - -{% data reusables.github-insights.settings-tab %} -{% data reusables.github-insights.exclude-files-tab %} -3. To the right of "Repositories with File Filters", click **Add Filter**. - ![Add Filter button](/assets/images/help/insights/add-filter.png) -4. Use the "Repository" drop-down menu, and select a repository. - ![Repository drop-down menu](/assets/images/help/insights/repository-drop-down-exclude.png) -5. Optionally, to apply exclusion rules to existing data, select **Re-import**. - ![Re-import checkbox](/assets/images/help/insights/re-import-checkbox.png) -6. Optionally, select **Include all binaries**. - ![Include all binaries checkbox](/assets/images/help/insights/include-all-binaries-repo.png) -7. In the code editor, add exclusion rules you want to apply to the repository. - ![Code editor to add repository exclusion rule](/assets/images/help/insights/repo-exclusion-list.png) -8. Click **Create Filter**. diff --git a/content/insights/installing-and-configuring-github-insights/system-overview-for-github-insights.md b/content/insights/installing-and-configuring-github-insights/system-overview-for-github-insights.md deleted file mode 100644 index e42f1f43c224..000000000000 --- a/content/insights/installing-and-configuring-github-insights/system-overview-for-github-insights.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: System overview for GitHub Insights -intro: '{% data variables.product.prodname_insights %} is a standalone application which interfaces with {% data variables.product.prodname_enterprise %}.' -product: '{% data reusables.gated-features.github-insights %}' -redirect_from: - - /github/installing-and-configuring-github-insights/system-overview-for-github-insights -versions: - enterprise-server: '*' ---- - -### Requirements for running {% data variables.product.prodname_insights %} - -{% data variables.product.prodname_insights %} requires a supported version of {% data variables.product.prodname_ghe_server %}. - -{% data reusables.github-insights.requires-machine %} Standard type machines with a base OS of Debian Buster, Debian Stretch, or any LTS versions of Ubuntu 16.04+ are supported. - -To provision {% data variables.product.prodname_insights %}, the application server must be able to run certain dependencies, including Docker. {% data reusables.github-insights.docker-requirements %} For more information, see "[Installing {% data variables.product.prodname_insights %}](/insights/installing-and-configuring-github-insights/installing-github-insights#prerequisites)." - -The application server should meet minimum specifications. - -| Specification | Minimum | -| --------|-----------| -| vCPUs | 16 | -| RAM | 64GB | -| Disk | 250GB | - -If you'll use {% data variables.product.prodname_insights %} to import large amounts of data, we recommend greater minimum specifications. For more information, see "[Managing repositories](/github/installing-and-configuring-github-insights/managing-repositories#about-import-times)." - -### Security and authentication for {% data variables.product.prodname_insights %} - -{% data variables.product.prodname_insights %} runs on your infrastructure and is governed by your existing information security controls. {% data variables.product.prodname_insights %} uses existing user accounts in {% data variables.product.prodname_enterprise %} for authentication and access permissions. - -#### Network Security - -{% data variables.product.prodname_insights %}'s internal firewall restricts network access to the application server's services. Only services necessary for the application server to function are available over the network. - -{% data variables.product.prodname_insights %} requires the following ports to be open for inbound and outbound traffic. - -| Port | Service | Protocol | -| ----------|--------------|-----------------| -| 22 | SSH USER | TCP | -| 80 | HTTP USER | TCP | -| 443 | HTTPS USER | TCP | - -#### Authentication and access permissions - -Authentication for {% data variables.product.prodname_insights %} is handled through {% data variables.product.prodname_enterprise %}. During installation, you will create a {% data variables.product.prodname_github_app %}, which allows {% data variables.product.prodname_insights %} to authorize users. The {% data variables.product.prodname_github_app %} is also used to interact with {% data variables.product.prodname_enterprise %} within the scope of the user and app’s permissions. - -{% data reusables.github-insights.permissions-levels %} - -Data access in {% data variables.product.prodname_insights %} is restricted according to each user's data access in {% data variables.product.prodname_enterprise %}. A user will never see data in {% data variables.product.prodname_insights %} for repositories the user does not have access to in {% data variables.product.prodname_enterprise %}. - -### Architecture of {% data variables.product.prodname_insights %} - -![System architecture](/assets/images/help/insights/github-isights-system-diagram.png) diff --git a/content/insights/installing-and-configuring-github-insights/updating-github-insights.md b/content/insights/installing-and-configuring-github-insights/updating-github-insights.md deleted file mode 100644 index e17b23f341d4..000000000000 --- a/content/insights/installing-and-configuring-github-insights/updating-github-insights.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Updating GitHub Insights -intro: 'You can update to the latest version of {% data variables.product.prodname_insights %} to benefit from improvements and bug fixes.' -product: '{% data reusables.gated-features.github-insights %}' -redirect_from: - - /github/installing-and-configuring-github-insights/updating-github-insights -permissions: 'People with read permissions to the `github/insights-releases` repository and administrative access to the application server can update {% data variables.product.prodname_insights %}.' -versions: - enterprise-server: '*' ---- - -### About {% data variables.product.prodname_insights %} updates - -Before you update {% data variables.product.prodname_insights %}, you can check the version that you're currently using in the lower-right corner of any page. - -The update process will take up to 10 minutes. During this time, users cannot access {% data variables.product.prodname_insights %}. - -### Updating from {% data variables.product.prodname_insights %} 0.4.0+ - -To update {% data variables.product.prodname_insights %} from 0.4.0+, you can install the latest version. {% data variables.product.prodname_insights %} will ask to use the previous installation configuration. - -{% data reusables.github-insights.download-latest-release %} -4. Run the shell script `install.sh`. -5. If SSL was previously enabled, {% data variables.product.prodname_insights %} will find an existing SSL certificate. Enter "Y" to accept or "n" to change the SSL certificate or disable SSL. -6. If SSL was previously enabled, {% data variables.product.prodname_insights %} will find an existing SSL key. Enter "Y" to accept or "n" to change the SSL key. -5. {% data variables.product.prodname_insights %} will find an existing hostname. Enter "Y" to accept or "n" to enter a different hostname. The hostname is the same URL you used for the application server when creating the {% data variables.product.prodname_github_app %}. -6. The installation will take a few minutes to run. When complete, you will see a message printed to the terminal. - ``` - Installation complete - Run /opt/insights/scripts/start.sh to start GitHub Insights - ``` -{% data reusables.github-insights.run-script %} - -### Updating from {% data variables.product.prodname_insights %} 0.3.1 or lower - -{% data variables.product.prodname_insights %} versions 0.3.1 or lower are incompatible with versions 0.4.0+. To update from {% data variables.product.prodname_insights %} 0.3.1 or lower, install and configure {% data variables.product.prodname_insights %} on a new application server. diff --git a/content/packages/getting-started-with-github-container-registry/about-github-container-registry.md b/content/packages/getting-started-with-github-container-registry/about-github-container-registry.md deleted file mode 100644 index 8e538eeaf436..000000000000 --- a/content/packages/getting-started-with-github-container-registry/about-github-container-registry.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: About GitHub Container Registry -intro: 'The {% data variables.product.prodname_github_container_registry %} allows you to seamlessly host and manage Docker container images in your organization or personal user account on {% data variables.product.prodname_dotcom %}. {% data variables.product.prodname_github_container_registry %} allows you to configure who can manage and access packages using fine-grained permissions.' -product: '{% data reusables.gated-features.packages %}' -versions: - free-pro-team: '*' ---- - -{% note %} - -**Note:** {% data variables.product.prodname_github_container_registry %} is currently in public beta and subject to change. Currently, {% data variables.product.prodname_github_container_registry %} only supports Docker image formats. During the beta, storage and bandwidth is free. - -{% endnote %} - - -{% data reusables.package_registry.container-registry-feature-highlights %} - -To share context about your package's use, you can link a repository to your container image on {% data variables.product.prodname_dotcom %}. For more information, see "[Connecting a repository to a container image](/packages/managing-container-images-with-github-container-registry/connecting-a-repository-to-a-container-image)." - -### Supported formats - -The {% data variables.product.prodname_container_registry %} currently only supports Docker images. - - -### Visibility and access permissions for container images - -If you have admin permissions to a container image, you can set the container image to private or public. Public images allow anonymous access and can be pulled without authentication or signing in via the CLI. - -As an admin, you can also grant access permissions for a container image that are separate from the permissions you've set at the organization and repository levels. - -For container images published and owned by a user account, you can give any person an access role. For container images published and owned by an organization, you can give any person or team in the organization an access role. - -| Permission role | Access description | -|-----|----| -| Read | Can download package.
Can read package metadata. | -| Write | Can upload and download this package.
Can read and write package metadata. | -| Admin | Can upload, download, delete, and manage this package.
Can read and write package metadata.
Can grant package permissions. - -For more information, see "[Configuring access control and visibility for container images](/packages/managing-container-images-with-github-container-registry/configuring-access-control-and-visibility-for-container-images)." - -### About billing for {% data variables.product.prodname_github_container_registry %} - -{% data reusables.package_registry.billing-for-container-registry %} - -### Contacting support - -If you have feedback or feature requests for {% data variables.product.prodname_github_container_registry %}, use the [feedback form](https://support.github.com/contact/feedback?contact%5Bcategory%5D=packages). - -Contact {% data variables.contact.github_support %} about {% data variables.product.prodname_github_container_registry %} using [our contact form](https://support.github.com/contact?form%5Bsubject%5D=Re:%20GitHub%20Packages) if: - -* You experience anything that contradicts the documentation. -* You encounter vague or unclear errors. -* Your published package contains sensitive data, such as GDPR violations, API Keys, or personally-identifying information. diff --git a/content/packages/getting-started-with-github-container-registry/core-concepts-for-github-container-registry.md b/content/packages/getting-started-with-github-container-registry/core-concepts-for-github-container-registry.md deleted file mode 100644 index 0eb31c63278e..000000000000 --- a/content/packages/getting-started-with-github-container-registry/core-concepts-for-github-container-registry.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Core concepts for GitHub Container Registry -intro: 'Below is a list of common {% data variables.product.prodname_github_container_registry %} terms we use across our sites and documentation.' -product: '{% data reusables.gated-features.packages %}' -versions: - free-pro-team: '*' ---- - -{% data reusables.package_registry.container-registry-beta %} - -### {% data variables.product.prodname_github_container_registry %} - -The {% data variables.product.prodname_github_container_registry %} is a registry for containers with support for Docker images. For more information, see "[About {% data variables.product.prodname_github_container_registry %}](/packages/getting-started-with-github-container-registry/about-github-container-registry)." - -### Package - -A package is a self-contained and reusable piece of software that includes code and metadata that a developer bundles together in a common place for others to use. A package's metadata may include the version number, name, and the code's dependencies. Packages simplify using and distributing solutions to common problems such as needing frameworks for developing or testing a project, linters to improve code quality, or industry-standard machine learning tools to power your application. Packages exist in many ecosystems. For example, you can package Node.js and Java code or container images. - -### Container - -A container is a unit of software designed to reliably deploy software in a standardized way on any platform. A container operates as an isolated virtual environment or instance that can run various software packages and components on the same host kernel as your operating system. Containers use fewer resources than virtual machines because they don't need to include their own virtual hardware to run. Containers are created using a container image file, such as a Dockerfile, and a container client or runtime program. - -### Container image - -A container image is a type of package archive that specifies the software requirements to run an app from a container. A container image typically includes the app's code, libraries, and runtime instructions. To ensure that the same image details are used wherever an image is deployed and run, a container image is automatically versioned and cannot be changed once a container image is built in a container. - -### Docker container - -A Docker container is a type of open source container built on the Docker platform. Docker's original image format has become the OCI (Open Container Initiative) Image Specification. For more information, see the "[Docker documentation](https://docs.docker.com/get-started/overview/)." diff --git a/content/packages/getting-started-with-github-container-registry/enabling-github-container-registry-for-your-organization.md b/content/packages/getting-started-with-github-container-registry/enabling-github-container-registry-for-your-organization.md deleted file mode 100644 index ea75eedc3f38..000000000000 --- a/content/packages/getting-started-with-github-container-registry/enabling-github-container-registry-for-your-organization.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Enabling GitHub Container Registry for your organization -intro: 'In an organization, organization admins can allow organization members to publish public or private container images to {% data variables.product.prodname_github_container_registry %}.' -product: '{% data reusables.gated-features.packages %}' -versions: - free-pro-team: '*' ---- - -{% data reusables.package_registry.container-registry-beta %} - -Before organization members can publish container images to {% data variables.product.prodname_github_container_registry %}, an organization admin must enable package creation. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -{% data reusables.organizations.org_settings %} -{% data reusables.organizations.member-privileges %} -5. Under "Package creation", choose whether you want to enable the creation of public or private container images. - - To enable organization members to create a public container image, click **Public**. - - To enable organization members to create a private container image that is only visible to other organization members, click **Private**. You can further customize the visibility of a private container image. For more information, see "[Configuring access control and visibility for container images](/packages/managing-container-images-with-github-container-registry/configuring-access-control-and-visibility-for-container-images)." - - ![Options to enable public or private packages ](/assets/images/help/package-registry/package-creation-org-settings.png) diff --git a/content/packages/getting-started-with-github-container-registry/index.md b/content/packages/getting-started-with-github-container-registry/index.md deleted file mode 100644 index 46849f39a609..000000000000 --- a/content/packages/getting-started-with-github-container-registry/index.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Getting started with GitHub Container Registry -intro: 'Learn about {% data variables.product.prodname_container_registry %} concepts and how to migrate your Docker images from {% data variables.product.prodname_registry %}.' -versions: - free-pro-team: '*' ---- - -{% data reusables.package_registry.container-registry-beta %} - -{% link_in_list /about-github-container-registry %} -{% link_in_list /core-concepts-for-github-container-registry %} -{% link_in_list /migrating-to-github-container-registry-for-docker-images %} -{% link_in_list /enabling-github-container-registry-for-your-organization %} - -For more information about configuring, deleting, pushing, or pulling container images, see "[Managing container images with {% data variables.product.prodname_github_container_registry %}](/packages/managing-container-images-with-github-container-registry)." diff --git a/content/packages/getting-started-with-github-container-registry/migrating-to-github-container-registry-for-docker-images.md b/content/packages/getting-started-with-github-container-registry/migrating-to-github-container-registry-for-docker-images.md deleted file mode 100644 index 3a89524a8455..000000000000 --- a/content/packages/getting-started-with-github-container-registry/migrating-to-github-container-registry-for-docker-images.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Migrating to GitHub Container Registry for Docker images -intro: 'If you''ve used the GitHub Packages Docker registry to store Docker images, you can migrate to the new {% data variables.product.prodname_container_registry %}.' -product: '{% data reusables.gated-features.packages %}' -versions: - free-pro-team: '*' ---- - -### Key differences between {% data variables.product.prodname_github_container_registry %} and the Docker package registry - -{% data reusables.package_registry.container-registry-beta %} - -The {% data variables.product.prodname_github_container_registry %} supersedes the existing Packages Docker registry and is optimized to support some of the unique needs of containers. - -{% data reusables.package_registry.container-registry-feature-highlights %} - -For more information, see "[About {% data variables.product.prodname_github_container_registry %}](/packages/getting-started-with-github-container-registry/about-github-container-registry)." - -### Billing changes - -{% data reusables.package_registry.billing-for-container-registry %} - -### Domain changes - -The domain for the {% data variables.product.prodname_container_registry %} is `ghcr.io`. - -| Registry | Example URL | -|-----------------|-------------| -| {% data variables.product.prodname_registry %} Docker registry | `docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME` -| {% data variables.product.prodname_github_container_registry %} | `ghcr.io/OWNER/IMAGE_NAME` - -### Authenticating with the container registry - -You will need to authenticate to the {% data variables.product.prodname_container_registry %} with the base URL `ghcr.io`. We recommend creating a new access token for using the {% data variables.product.prodname_container_registry %}. - -{% data reusables.package_registry.authenticate_with_pat_for_container_registry %} - -{% data reusables.package_registry.authenticate-to-container-registry-steps %} - -### Migrating a Docker image using the Docker CLI - -To move Docker images that you host on {% data variables.product.prodname_registry %} Docker registry, you must republish the images to {% data variables.product.prodname_container_registry %}. We recommend republishing your existing Docker images using the command line on your local machine. - -1. Sign in to the Docker registry using a temporary PAT with at least the `read:packages` scope. This PAT will only be used to sign in to the Docker registry to pull down images and can be deleted afterward. - {% raw %} - ```shell - $ echo $READ_PACKAGES_TOKEN | docker login docker.pkg.github.com -u USERNAME --password-stdin - ``` - {% endraw %} -2. Pull down the image you'd like to migrate, replacing OWNER with the name of the user or organization account that owns the repository, REPOSITORY with the name of the repository containing your project, IMAGE_NAME with name of the package or image, VERSION with tag for the image you want to install. For example, `docker pull docker.pkg.github.com/octo-org/octoshift/octoshift:latest` pulls the latest tag of the `octoshift/octoshift` image in the octo-org organization. - ```shell - $ docker pull docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION - ``` - -3. Re-tag the image with the new domain and a new image name. For more information, see "[Docker tag](https://docs.docker.com/engine/reference/commandline/tag/)" in the Docker documentation. Use the same URL that you used in the previous step for the SOURCE URL. Replace the TARGET_OWNER with the user or organization that you are migrating the container image to and replace the TARGET_IMAGE_NAME with the new {% data variables.product.prodname_container_registry %} image name. - ```shell - $ docker tag docker.pkg.github.com/SOURCE_OWNER/SOURCE_REPOSITORY/SOURCE_IMAGE_NAME:VERSION ghcr.io/TARGET_OWNER/TARGET_IMAGE_NAME:VERSION - ``` - -4. Sign in to the new {% data variables.product.prodname_container_registry %}. We recommend creating a new PAT limited to the `read:packages` and `write:packages` scopes since you no longer need the `repo` scope and your previous PAT may not have the `write:packages` scope. - {% raw %} - ```shell - $ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin - ``` - {% endraw %} -5. Push your re-tagged image to the {% data variables.product.prodname_container_registry %}. - ```shell - $ docker push ghcr.io/OWNER/IMAGE_NAME:VERSION - ``` - -### Updating your {% data variables.product.prodname_actions %} workflow - -If you have a {% data variables.product.prodname_actions %} workflow that uses a Docker image from the {% data variables.product.prodname_registry %} Docker registry, you may want to update your workflow to the {% data variables.product.prodname_container_registry %} to allow for anonymous access for public container images, finer-grain access permissions, and better storage and bandwidth compatibility for containers. - -1. Migrate your Docker images to the new {% data variables.product.prodname_container_registry %} at `ghcr.io`. For an example, see "[Migrating a Docker image using the Docker CLI](#migrating-a-docker-image-using-the-docker-cli)." - -2. In your {% data variables.product.prodname_actions %} workflow file, update the package url from `https://docker.pkg.github.com` to `ghcr.io`. - -3. Add your new {% data variables.product.prodname_container_registry %} authentication personal access token (PAT) as a GitHub Actions secret. {% data variables.product.prodname_github_container_registry %} does not support using `GITHUB_TOKEN` for your PAT so you must use a different custom variable, such as `CR_PAT`. For more information, see "[Creating and storing encrypted secrets](/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets)." - -4. In your {% data variables.product.prodname_actions %} workflow file, update the authentication PAT by replacing your Docker registry PAT ({% raw %}`${{ secrets.GITHUB_TOKEN }}`{% endraw %}) with a new variable for your {% data variables.product.prodname_container_registry %} PAT, such as {% raw %}`${{ secrets.CR_PAT }}`{% endraw %}. - -#### Example of updated workflow - -If part of your workflow accessed a Docker image hosted by the Docker registry like this: - -{% raw %} -```yaml -echo ${{ secrets.GITHUB_TOKEN }} | docker login https://docker.pkg.github.com -u $GITHUB_ACTOR --password-stdin -docker pull docker.pkg.github.com/github/octoshift/octoshift:latest -docker build . --tag docker.pkg.github.com/github/octoshift/octoshift:$GITHUB_SHA --cache-from docker.pkg.github.com/github/octoshift/octoshift:latest -docker push docker.pkg.github.com/github/octoshift/octoshift:$GITHUB_SHA -``` -{% endraw %} - -Then you'll need to update your workflow with the new {% data variables.product.prodname_container_registry %} URL and PAT like this: - -{% raw %} -```yaml -# new login with new container registry url and PAT -echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin -# new container registry urls added -docker pull ghcr.io/github/octoshift:latest -docker build . --tag ghcr.io/github/octoshift:$GITHUB_SHA --cache-from ghcr.io/github/octoshift:latest -docker push ghcr.io/github/octoshift:$GITHUB_SHA -``` -{% endraw %} diff --git a/content/packages/index.md b/content/packages/index.md deleted file mode 100644 index e00d89f22a59..000000000000 --- a/content/packages/index.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: GitHub Packages Documentation -shortTitle: GitHub Packages -intro: 'Learn to safely publish and consume packages, store your packages alongside your code, and share your packages privately with your team or publicly with the open source community. You can also automate your packages with {% data variables.product.prodname_actions %}.' -featuredLinks: - gettingStarted: - - /packages/publishing-and-managing-packages/about-github-packages - - /packages/getting-started-with-github-container-registry/about-github-container-registry - - /packages/getting-started-with-github-container-registry - - /packages/managing-container-images-with-github-container-registry/pushing-and-pulling-docker-images - - /packages/publishing-and-managing-packages/publishing-a-package - - /packages/publishing-and-managing-packages/installing-a-package - popular: - - /packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages - - /packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages - - /packages/managing-container-images-with-github-container-registry/pushing-and-pulling-docker-images - - /packages/using-github-packages-with-your-projects-ecosystem/using-github-packages-with-github-actions -redirect_from: - - /github/managing-packages-with-github-packages - - /categories/managing-packages-with-github-package-registry - - /github/managing-packages-with-github-package-registry -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -{% link_with_intro /getting-started-with-github-container-registry %} -{% link_with_intro /managing-container-images-with-github-container-registry %} -{% link_with_intro /publishing-and-managing-packages %} -{% link_with_intro /using-github-packages-with-your-projects-ecosystem %} diff --git a/content/packages/managing-container-images-with-github-container-registry/configuring-access-control-and-visibility-for-container-images.md b/content/packages/managing-container-images-with-github-container-registry/configuring-access-control-and-visibility-for-container-images.md deleted file mode 100644 index 23507122e81b..000000000000 --- a/content/packages/managing-container-images-with-github-container-registry/configuring-access-control-and-visibility-for-container-images.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Configuring access control and visibility for container images -intro: 'Choose who has read, write, or admin access to your container image and the visibility of your container images on {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.packages %}' -versions: - free-pro-team: '*' ---- - -{% data reusables.package_registry.container-registry-beta %} - -### Configuring access to container images for your personal account - -If you have admin permissions to a user-account owned container image, you can assign read, write, or admin roles to other users. For more information about these permission roles, see "[Visibility and access permissions for container images](/packages/getting-started-with-github-container-registry/about-github-container-registry#visibility-and-access-permissions-for-container-images)." - -{% data reusables.package_registry.package-settings-from-user-level %} -1. On the package settings page, click **Invite teams or people** and enter the name, username, or email of the person you want to give access. Teams cannot be given access to a container image owned by a user account. - ![Container access invite button](/assets/images/help/package-registry/container-access-invite.png) -1. Next to the username or team name, use the "Role" drop-down menu to select a desired permission level. - ![Container access options](/assets/images/help/package-registry/container-access-control-options.png) - -The selected users will automatically be given access and don't need to accept an invitation first. - -### Configuring access to container images for an organization - -If you have admin permissions to an organization-owned container image, you can assign read, write, or admin roles to other users and teams. For more information about these permission roles, see "[Visibility and access permissions for container images](/packages/getting-started-with-github-container-registry/about-github-container-registry#visibility-and-access-permissions-for-container-images)." - -If your package is owned by an organization and private, then you can only give access to other organization members or teams. - -For organization image containers, organizations admins must enable packages before you can set the visibility to public. For more information, see "[Enabling GitHub Container Registry for your organization](/packages/getting-started-with-github-container-registry/enabling-github-container-registry-for-your-organization)." - -{% data reusables.package_registry.package-settings-from-org-level %} -1. On the package settings page, click **Invite teams or people** and enter the name, username, or email of the person you want to give access. You can also enter a team name from the organization to give all team members access. - ![Container access invite button](/assets/images/help/package-registry/container-access-invite.png) -1. Next to the username or team name, use the "Role" drop-down menu to select a desired permission level. - ![Container access options](/assets/images/help/package-registry/container-access-control-options.png) - -The selected users or teams will automatically be given access and don't need to accept an invitation first. - -### Configuring visibility of container images for your personal account - -When you first publish a package, the default visibility is private and only you can see the package. You can modify a private or public container image's access by changing the access settings. - -A public package can be accessed anonymously without authentication. Once you make your package public, you cannot make your package private again. - -{% data reusables.package_registry.package-settings-from-user-level %} -5. Under "Danger Zone", choose a visibility setting: - - To make the container image visible to anyone, click **Make public**. - {% warning %} - - **Warning:** Once you make a package public, you cannot make it private again. - - {% endwarning %} - - To make the container image visible to a custom selection of people, click **Make private**. - ![Container visibility options](/assets/images/help/package-registry/container-visibility-option.png) - -### Configuring visibility of container images for an organization - -When you first publish a package, the default visibility is private and only you can see the package. You can grant users or teams different access roles for your container image through the access settings. - -A public package can be accessed anonymously without authentication. Once you make your package public, you cannot make your package private again. - -For organization image containers, organizations admins must enable public packages before you can set the visibility to public. For more information, see "[Enabling GitHub Container Registry for your organization](/packages/getting-started-with-github-container-registry/enabling-github-container-registry-for-your-organization)." - -{% data reusables.package_registry.package-settings-from-org-level %} -5. Under "Danger Zone", choose a visibility setting: - - To make the container image visible to anyone, click **Make public**. - {% warning %} - - **Warning:** Once you make a package public, you cannot make it private again. - - {% endwarning %} - - To make the container image visible to a custom selection of people, click **Make private**. - ![Container visibility options](/assets/images/help/package-registry/container-visibility-option.png) diff --git a/content/packages/managing-container-images-with-github-container-registry/connecting-a-repository-to-a-container-image.md b/content/packages/managing-container-images-with-github-container-registry/connecting-a-repository-to-a-container-image.md deleted file mode 100644 index 36623b8ecf9d..000000000000 --- a/content/packages/managing-container-images-with-github-container-registry/connecting-a-repository-to-a-container-image.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Connecting a repository to a container image -intro: 'You can link a repository with a container image locally and on {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.packages %}' -versions: - free-pro-team: '*' ---- - -When you link a container image with a repository, the package landing page will show information and links from the repository, such as the README. - -To connect a repository and a container image on {% data variables.product.prodname_dotcom %}, they must share the same owner on {% data variables.product.prodname_dotcom %}. For example, both `my_repo` and `hello_docker` are owned by the user `monalisa`: -```shell -https://github.com/monalisa/my_repo -https://github.com/monalisa/hello_docker -``` - -### Connecting a repository to a user-owned container image on {% data variables.product.prodname_dotcom %} - -{% data reusables.package_registry.package-settings-from-user-level %} - -{% data reusables.package_registry.repository_connection_steps %} - -### Connecting a repository to an organization-owned container image on {% data variables.product.prodname_dotcom %} - -{% data reusables.package_registry.package-settings-from-org-level %} - -{% data reusables.package_registry.repository_connection_steps %} - -### Connecting a repository to a container image on the command line - -1. In your Dockerfile, add this line, replacing `OWNER` and `REPO` with your details: - - ```shell - LABEL org.opencontainers.image.source https://github.com/OWNER/REPO - ``` - For example, if you're the user `monalisa` and own `my-repo`, you would add this line to your Dockerfile: - ```shell - LABEL org.opencontainers.image.source https://github.com/monalisa/my-repo - ``` - For more information, see "[LABEL](https://docs.docker.com/engine/reference/builder/#label)" in the official Docker documentation and "[Pre-defined Annotation Keys](https://github.com/opencontainers/image-spec/blob/master/annotations.md#pre-defined-annotation-keys)" in the `opencontainers/image-spec` repository. - -2. Build your container image. This example builds an image from the Dockerfile in the current directory and assigns the image name `hello_docker`. - - ```shell - $ docker build -t hello_docker . - ``` -3. Optionally, review details for the Docker image you want to tag. - ```shell - $ docker images - > REPOSITORY TAG IMAGE ID CREATED SIZE - > ghcr.io/my-org/hello_docker latest 38f737a91f39 47 hours ago 91.7MB - > ghcr.io/my-username/hello_docker latest 38f737a91f39 47 hours ago 91.7MB - > hello-world latest fce289e99eb9 16 months ago 1.84kB - ``` - -4. Tag your Docker image with your desired image name and hosting destination. - ```shell - $ docker tag IMAGE_NAME ghcr.io/OWNER/NEW_IMAGE_NAME:TAG - ``` - For example: - ```shell - $ docker tag 38f737a91f39 ghcr.io/monalisa/hello_docker:latest - ``` - -5. If you haven't already, authenticate to {% data variables.product.prodname_github_container_registry %}. For more information, see "[Authenticating to GitHub Container Registry](/packages/managing-container-images-with-github-container-registry/pushing-and-pulling-docker-images#authenticating-to-github-container-registry)." - {% raw %} - ```shell - $ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin - > Login Succeeded - ``` - {% endraw %} -6. Push your container image to {% data variables.product.prodname_github_container_registry %}. - ```shell - $ docker push ghcr.io/OWNER/IMAGE-NAME:TAG - ``` - For example: - ```shell - $ docker push ghcr.io/monalisa/hello_docker:latest - ``` diff --git a/content/packages/managing-container-images-with-github-container-registry/deleting-a-container-image.md b/content/packages/managing-container-images-with-github-container-registry/deleting-a-container-image.md deleted file mode 100644 index fdce765c810e..000000000000 --- a/content/packages/managing-container-images-with-github-container-registry/deleting-a-container-image.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Deleting a container image -intro: 'You can delete a version of a private container image using GraphQL or on {% data variables.product.prodname_dotcom %}.' -product: '{% data reusables.gated-features.packages %}' -versions: - free-pro-team: '*' ---- - -{% data reusables.package_registry.container-registry-beta %} - -### About package deletion - -You can remove an entire container image or a specific version on {% data variables.product.prodname_dotcom %}. To delete a container image, you must use the UI. Using GraphQL to delete a container image is not supported at this time. - -To delete a container image, you must have admin permissions to the container image. - -When deleting public packages, be aware that you may break projects that depend on your package. - - - -### Reserved package versions and names - -{% data reusables.package_registry.package-immutability %} - -### Deleting a version of a user-owned container image on {% data variables.product.prodname_dotcom %} - -{% data reusables.package_registry.package-settings-from-user-level %} -5. On the left, click **Manage versions**. -5. To the right of the version you want to delete, click **Delete**. - ![Delete package button](/assets/images/help/package-registry/delete-package-button.png) -6. To confirm deletion, type the package name and click **I understand the consequences, delete this version**. - ![Confirm package deletion button](/assets/images/help/package-registry/confirm-package-deletion.png) - -### Deleting a version of an organization-owned container image on {% data variables.product.prodname_dotcom %} - -{% data reusables.package_registry.package-settings-from-org-level %} -5. On the left, click **Manage versions**. -5. To the right of the version you want to delete, click **Delete**. - ![Delete package button](/assets/images/help/package-registry/delete-package-button.png) -6. To confirm deletion, type the package name and click **I understand the consequences, delete this version**. - ![Confirm package deletion button](/assets/images/help/package-registry/confirm-package-deletion.png) diff --git a/content/packages/managing-container-images-with-github-container-registry/index.md b/content/packages/managing-container-images-with-github-container-registry/index.md deleted file mode 100644 index c556ba7b516c..000000000000 --- a/content/packages/managing-container-images-with-github-container-registry/index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Managing container images with GitHub Container Registry -intro: 'Learn how to manage container images using a supported CLI or on {% data variables.product.prodname_dotcom %}.' -versions: - free-pro-team: '*' ---- - -{% link_in_list /configuring-access-control-and-visibility-for-container-images %} -{% link_in_list /connecting-a-repository-to-a-container-image %} -{% link_in_list /pushing-and-pulling-docker-images %} -{% link_in_list /deleting-a-container-image %} diff --git a/content/packages/managing-container-images-with-github-container-registry/pushing-and-pulling-docker-images.md b/content/packages/managing-container-images-with-github-container-registry/pushing-and-pulling-docker-images.md deleted file mode 100644 index e4e1db91970c..000000000000 --- a/content/packages/managing-container-images-with-github-container-registry/pushing-and-pulling-docker-images.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: Pushing and pulling Docker images -intro: 'You can store and manage Docker images in {% data variables.product.prodname_github_container_registry %}.' -product: '{% data reusables.gated-features.packages %}' -versions: - free-pro-team: '*' ---- - -{% data reusables.package_registry.container-registry-beta %} - -To push and pull container images owned by an organization, an organization admin must enable {% data variables.product.prodname_github_container_registry %} for the organization. For more information, see "[Enabling GitHub Container Registry for your organization](/packages/getting-started-with-github-container-registry/enabling-github-container-registry-for-your-organization)." - -### Authenticating to {% data variables.product.prodname_github_container_registry %} - -{% data reusables.package_registry.authenticate_with_pat_for_container_registry %} - -{% data reusables.package_registry.authenticate-to-container-registry-steps %} - -### Pushing container images - -This example pushes the latest version of `IMAGE-NAME`. - ```shell - $ docker push ghcr.io/OWNER/IMAGE_NAME:latest - ``` - -This example pushes the `2.5` version of the image. - ```shell - $ docker push ghcr.io/OWNER/IMAGE-NAME:2.5 - ``` - -When you first publish a package, the default visibility is private. To change the visibility or set access permissions, see "[Configuring access control and visibility for container images](/packages/managing-container-images-with-github-container-registry/configuring-access-control-and-visibility-for-container-images)." - -### Pulling container images - -#### Pull by digest - -To ensure you're always using the same image, you can specify the exact container image version you want to pull by the `digest` SHA value. - -1. To find the digest SHA value, use `docker inspect` or `docker pull` and copy the SHA value after `Digest:` - ```shell - $ docker inspect ghcr.io/OWNER/IMAGE_NAME - ``` -2. Remove image locally as needed. - ```shell - $ docker rmi ghcr.io/OWNER/IMAGE_NAME:latest - ``` - -3. Pull the container image with `@YOUR_SHA_VALUE` after the image name. - ```shell - $ docker pull ghcr.io/OWNER/IMAGE_NAME@sha256:82jf9a84u29hiasldj289498uhois8498hjs29hkuhs - ``` - -#### Pull by name - - ```shell - $ docker pull ghcr.io/OWNER/IMAGE_NAME - ``` - -#### Pull by name and version - -Docker CLI example showing an image pulled by its name and the `1.14.1` version tag: - ```shell - $ docker pull ghcr.io/OWNER/IMAGE_NAME:1.14.1 - > 5e35bd43cf78: Pull complete - > 0c48c2209aab: Pull complete - > fd45dd1aad5a: Pull complete - > db6eb50c2d36: Pull complete - > Digest: sha256:ae3b135f133155b3824d8b1f62959ff8a72e9cf9e884d88db7895d8544010d8e - > Status: Downloaded newer image for ghcr.io/orgname/image-name/release:1.14.1 - > ghcr.io/orgname/image-name/release:1.14.1 - ``` - -#### Pull by name and latest version - - ```shell - $ docker pull ghcr.io/OWNER/IMAGE_NAME:latest - > latest: Pulling from user/image-name - > Digest: sha256:b3d3e366b55f9a54599220198b3db5da8f53592acbbb7dc7e4e9878762fc5344 - > Status: Downloaded newer image for ghcr.io/user/image-name:latest - > ghcr.io/user/image-name:latest - ``` - -### Building container images - -This example builds the `hello_docker` image: - ```shell - $ docker build -t hello_docker . - ``` - -### Tagging container images - -1. Find the ID for the Docker image you want to tag. - ```shell - $ docker images - > REPOSITORY TAG IMAGE ID CREATED SIZE - > ghcr.io/my-org/hello_docker latest 38f737a91f39 47 hours ago 91.7MB - > ghcr.io/my-username/hello_docker latest 38f737a91f39 47 hours ago 91.7MB - > hello-world latest fce289e99eb9 16 months ago 1.84kB - ``` - -2. Tag your Docker image using the image ID and your desired image name and hosting destination. - ```shell - $ docker tag 38f737a91f39 ghcr.io/OWNER/NEW_IMAGE_NAME:latest - ``` diff --git a/content/packages/publishing-and-managing-packages/about-github-packages.md b/content/packages/publishing-and-managing-packages/about-github-packages.md deleted file mode 100644 index 72b38843420e..000000000000 --- a/content/packages/publishing-and-managing-packages/about-github-packages.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -title: About GitHub Packages -intro: '{% data variables.product.prodname_registry %} is a software package hosting service that allows you to host your software packages privately or publicly and use packages as dependencies in your projects.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /articles/about-github-package-registry - - /github/managing-packages-with-github-package-registry/about-github-package-registry - - /github/managing-packages-with-github-packages/about-github-packages -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -### About {% data variables.product.prodname_registry %} - -{% data variables.product.prodname_registry %} is a platform for hosting and managing packages, including containers and other dependencies. {% data variables.product.prodname_registry %} combines your source code and packages in one place to provide integrated permissions management and billing, so you can centralize your software development on {% data variables.product.product_name %}. - -You can integrate {% data variables.product.prodname_registry %} with {% data variables.product.product_name %} APIs, {% data variables.product.prodname_actions %}, and webhooks to create an end-to-end DevOps workflow that includes your code, CI, and deployment solutions. - -{% data variables.product.prodname_registry %} offers different package registries for commonly used packages, such as for Node, RubyGems, Apache Maven, Gradle, and Nuget. - -{% if currentVersion == "free-pro-team@latest" %} -{% data variables.product.prodname_registry %} also offers a {% data variables.product.prodname_container_registry %} designed to support the unique needs of container images. For more information, see "[About {% data variables.product.prodname_github_container_registry %}](/packages/getting-started-with-github-container-registry/about-github-container-registry)." - -{% data reusables.package_registry.container-registry-beta %} - -{% endif %} - -#### Viewing packages - -You can review the package's README, some metadata like licensing, download statistics, version history, and more on {% data variables.product.product_name %}. For more information, see "[Viewing packages](/packages/publishing-and-managing-packages/viewing-packages)." - -#### About package permissions and visibility - -{% if currentVersion == "free-pro-team@latest" %} - -| | Package registries | {% data variables.product.prodname_github_container_registry %} | -|----|----|----| -| Hosting locations | You can host multiple packages in one repository. | You can host multiple container images in one organization or user account. | -| Permissions | Each package inherits the permissions of the repository where the package is hosted.

For example, anyone with read permissions for a repository can install a package as a dependency in a project, and anyone with write permissions can publish a new package version. | For each container image, you can choose the access level that others have. The permissions for container image access are separate from your organization and repository permissions. -Visibility | {% data reusables.package_registry.public-or-private-packages %} | You can set the visibility of each of your container images. A private container image is only visible to people and teams who are given access within your organization. A public container image is visible to anyone. | -Anonymous access | N/A | You can access public container images anonymously. - -{% else %} -| | Package registries | -|----|----| -| Hosting locations | You can host multiple packages in one repository. | -| Permissions | Each package inherits the permissions of the repository where the package is hosted.

For example, anyone with read permissions for a repository can install a package as a dependency in a project, and anyone with write permissions can publish a new package version. | -| Visibility | {% data reusables.package_registry.public-or-private-packages %} | - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} - -For more information about permissions and visibility for {% data variables.product.prodname_github_container_registry %}, see "[Configuring access control and visibility for containers](/packages/managing-container-images-with-github-container-registry/configuring-access-control-and-visibility-for-container-images)." - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -### About billing for {% data variables.product.prodname_registry %} - -{% data reusables.package_registry.packages-billing %} For more information, see "[About billing for {% data variables.product.prodname_registry %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-packages)." - -{% data reusables.package_registry.container-registry-beta-billing-note %} -{% endif %} - -### Supported clients and formats - -{% data variables.product.prodname_registry %} uses the native package tooling commands you're already familiar with to publish and install package versions. - -{% if currentVersion == "free-pro-team@latest" %} -#### Support for {% data variables.product.prodname_github_container_registry %} - -The {% data variables.product.prodname_github_container_registry %} hosts containers at `ghcr.io/OWNER/IMAGE-NAME`. - -| Package client | Language | Package format | Description | -| --- | --- | --- | --- | -| Docker CLI | N/A | `Dockerfile` | Docker container support. | - -For more information about the container support offered by {% data variables.product.prodname_github_container_registry %}, see "[About {% data variables.product.prodname_github_container_registry %}](/packages/getting-started-with-github-container-registry/about-github-container-registry)." -{% endif %} - -#### Support for package registries - -{% if currentVersion == "free-pro-team@latest" %} -Package registries use `PACKAGE-TYPE.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME` as the package host URL, replacing `PACKAGE-TYPE` with the Package namespace. For example, your Gemfile will be hosted at `rubygem.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME`. - -{% else %} - -The package types supported on {% data variables.product.product_location_enterprise %} may vary since your site administrator can enable or disable support for different package types. For more information, see "[Managing GitHub Packages for your enterprise](/enterprise/admin/packages)." - -If {% data variables.product.product_location_enterprise %} has subdomain isolation enabled, then package registries will use `PACKAGE-TYPE.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME` as the package host URL, replacing `PACKAGE-TYPE` with the Package namespace. For example, your Dockerfile will be hosted at `docker.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME`. - -If {% data variables.product.product_location_enterprise %} has subdomain isolation disabled, then package registries will use `HOSTNAME/_registry/PACKAGE-TYPE/OWNER/REPOSITORY/IMAGE-NAME` as the package host URL. For example, your Gemfile will be hosted at `HOSTNAME/_registry/rubygems/OWNER/REPOSITORY/IMAGE-NAME`, replacing *HOSTNAME* with the host name of your {% data variables.product.prodname_ghe_server %} instance. - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} - -| Language | Description | Package format | Package client | Package namespace | -| --- | --- | --- | --- | --- | -| JavaScript | Node package manager | `package.json` | `npm` | `npm.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME` -| Ruby | RubyGems package manager | `Gemfile` | `gem` | `rubygems.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME` -| Java | Apache Maven project management and comprehension tool | `pom.xml` | `mvn` | `maven.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME` -| Java | Gradle build automation tool for Java | `build.gradle` or `build.gradle.kts` | `gradle` | `maven.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME` -| .NET | NuGet package management for .NET | `nupkg` | `dotnet` CLI | `nuget.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME` - -{% else %} - -With subdomain isolation enabled on {% data variables.product.product_location_enterprise %}: - -| Language | Description | Package format | Package client | Package namespace | -| --- | --- | --- | --- | --- | -| JavaScript | Node package manager | `package.json` | `npm` | `npm.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME` -| Ruby | RubyGems package manager | `Gemfile` | `gem` | `rubygems.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME` -| Java | Apache Maven project management and comprehension tool | `pom.xml` | `mvn` | `maven.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME` -| Java | Gradle build automation tool for Java | `build.gradle` or `build.gradle.kts` | `gradle` | `maven.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME` -| .NET | NuGet package management for .NET | `nupkg` | `dotnet` CLI | `nuget.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME` -| N/A | Docker container management | `Dockerfile` | `Docker` | `docker.HOSTNAME/OWNER/REPOSITORY/IMAGE-NAME` - -With subdomain isolation disabled on {% data variables.product.product_location_enterprise %}: - -| Language | Description | Package format | Package client | Package namespace | -| --- | --- | --- | --- | --- | -| JavaScript | Node package manager | `package.json` | `npm` | `HOSTNAME/_registry/npm/OWNER/REPOSITORY/IMAGE-NAME` -| Ruby | RubyGems package manager | `Gemfile` | `gem` | `HOSTNAME/_registry/rubygems/OWNER/REPOSITORY/IMAGE-NAME` -| Java | Apache Maven project management and comprehension tool | `pom.xml` | `mvn` | `HOSTNAME/_registry/maven/OWNER/REPOSITORY/IMAGE-NAME` -| Java | Gradle build automation tool for Java | `build.gradle` or `build.gradle.kts` | `gradle` | `HOSTNAME/_registry/maven/OWNER/REPOSITORY/IMAGE-NAME` -| .NET | NuGet package management for .NET | `nupkg` | `dotnet` CLI | `HOSTNAME/_registry/nuget/OWNER/REPOSITORY/IMAGE-NAME` - -{% note %} - -**Note:** Docker is not supported when subdomain isolation is disabled. - -{% endnote %} - -For more information about subdomain isolation, see "[Enabling subdomain isolation](/enterprise/admin/configuration/enabling-subdomain-isolation)." - -{% endif %} - -For more information about configuring your package client for use with {% data variables.product.prodname_registry %}, see "[Using {% data variables.product.prodname_registry %} with your project's ecosystem](/packages/using-github-packages-with-your-projects-ecosystem)." - -### Authenticating to {% data variables.product.prodname_registry %} - -{% data reusables.package_registry.authenticate-packages %} - -{% if currentVersion == "free-pro-team@latest" %} -### About scopes and permissions for {% data variables.product.prodname_github_container_registry %} - -| Scope | Description | -| --- | --- | -|`read:packages`| Download and install container images from {% data variables.product.prodname_github_container_registry %} | -|`write:packages`| Upload and publish container images to {% data variables.product.prodname_github_container_registry %} | -| `delete:packages` | Delete specified versions of private or public container images from {% data variables.product.prodname_github_container_registry %}. For more information, see "[Deleting a container image](/packages/managing-container-images-with-github-container-registry/deleting-a-container-image)." | - -To learn about available scopes and permissions for container images, see "[About {% data variables.product.prodname_github_container_registry %}](/packages/getting-started-with-github-container-registry/about-github-container-registry)" or "[Configuring access control and visibility for container images](/packages/managing-container-images-with-github-container-registry/configuring-access-control-and-visibility-for-container-images)." - -For more information, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token/)" and "[Available scopes](/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes)." - -{% endif %} - -### About scopes and permissions for package registries - -To use or manage a package hosted by a package registry, you must use a token with the appropriate scope, and your user account must have appropriate permissions for that repository. - -For example: -- To download and install packages from a repository, your token must have the `read:packages` scope, and your user account must have read permissions for the repository. If the repository is private, your token must also have the `repo` scope. -- To delete a specified version of a private package on {% data variables.product.product_name %}, your token must have the `delete:packages` and `repo` scope. Public packages cannot be deleted. For more information, see "[Deleting a package](/packages/publishing-and-managing-packages/deleting-a-package)." - -| Scope | Description | Repository permissions | -| --- | --- | --- | -|`read:packages`| Download and install packages from {% data variables.product.prodname_registry %} | read | -|`write:packages`| Upload and publish packages to {% data variables.product.prodname_registry %} | write | -| `delete:packages` | Delete specified versions of private packages from {% data variables.product.prodname_registry %} | admin | -| `repo` | Install, upload, and delete certain packages in private repositories (along with `read:packages`, `write:packages`, or `delete:packages`) | read, write, or admin | - -When you create a {% data variables.product.prodname_actions %} workflow, you can use the `GITHUB_TOKEN` to publish and install packages in {% data variables.product.prodname_registry %} without needing to store and manage a personal access token. - -For more information, see: -- "[Using {% data variables.product.prodname_registry %} with {% data variables.product.prodname_actions %}](/packages/using-github-packages-with-your-projects-ecosystem/)" -- "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token/)" -- "[Available scopes](/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes)" - -### Managing packages - -You can delete a version of a private package on {% data variables.product.product_name %} or using the GraphQL API. When you use the GraphQL API to query and delete private packages, you must use the same token you use to authenticate to {% data variables.product.prodname_registry %}. For more information, see "[Deleting a package](/packages/publishing-and-managing-packages/deleting-a-package)" and "[Forming calls with GraphQL](/v4/guides/forming-calls/)." - -You can configure webhooks to subscribe to package-related events, such as when a package is published or updated. For more information, see the "[`package` webhook event](/webhooks/event-payloads/#package)." - -### Contacting support - -{% if currentVersion == "free-pro-team@latest" %} -If you have feedback or feature requests for {% data variables.product.prodname_registry %}, use the [feedback form for {% data variables.product.prodname_registry %}](https://support.github.com/contact/feedback?contact%5Bcategory%5D=github-packages). - -Contact {% data variables.contact.github_support %} about {% data variables.product.prodname_registry %} using [our contact form](https://support.github.com/contact?form%5Bsubject%5D=Re:%20GitHub%20Packages) if: - -* You experience anything that contradicts the documentation -* You encounter vague or unclear errors -* Your published package contains sensitive data, such as GDPR violations, API Keys, or personally identifying information - -{% else %} -If you need support for {% data variables.product.prodname_registry %}, please contact your site administrators. - -{% endif %} diff --git a/content/packages/publishing-and-managing-packages/deleting-a-package.md b/content/packages/publishing-and-managing-packages/deleting-a-package.md deleted file mode 100644 index e43d8f4ca603..000000000000 --- a/content/packages/publishing-and-managing-packages/deleting-a-package.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Deleting a package -intro: 'You can delete a version of a private package using GraphQL or on {% data variables.product.product_name %}.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /github/managing-packages-with-github-packages/deleting-a-package -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -{% if currentVersion == "free-pro-team@latest" %} -### About container image deletion - -To delete a container image package on {% data variables.product.product_name %}, see "[Deleting a container image](/packages/managing-container-images-with-github-container-registry/deleting-a-container-image)." - -{% endif %} - -### About private package deletion - -You can only delete a specified version of a private package on {% data variables.product.product_name %} or with the GraphQL API. To remove an entire private package from appearing on {% data variables.product.product_name %}, you must delete every version of the package first. - -{% if currentVersion == "free-pro-team@latest" %} -### About public package deletion - -To avoid breaking projects that may depend on your packages, you cannot delete an entire public package or specific versions of a public package. - -Under special circumstances, such as for legal reasons or to conform with GDPR standards, you can ask {% data variables.contact.github_support %} to delete a public package for you, using [our contact form](https://github.com/contact?form%5Bsubject%5D=Re:%20GitHub%20Package%20Registry). - -{% else %} - -At this time, {% data variables.product.prodname_registry %} on {% data variables.product.product_location_enterprise %} does not support deleting public packages. - -{% endif %} - -### Reserved package versions and names - -{% data reusables.package_registry.package-immutability %} - -### Deleting a version of a private package on {% data variables.product.product_name %} - -To delete a private package version, you must have admin permissions in the repository. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.package_registry.packages-from-code-tab %} -3. Click the name of the package that you want to delete. - ![Package name](/assets/images/help/package-registry/select-pkg-cloud.png) -4. On the right, use the **Edit package** drop-down and select "Manage versions". - ![Package name](/assets/images/help/package-registry/manage-versions.png) -5. To the right of the version you want to delete, click **Delete**. - ![Delete package button](/assets/images/help/package-registry/delete-package-button.png) -6. To confirm deletion, type the package name and click **I understand the consequences, delete this version**. - ![Confirm package deletion button](/assets/images/help/package-registry/confirm-package-deletion.png) - -### Deleting a version of a private package with GraphQL - -Use the `deletePackageVersion` mutation in the GraphQL API. You must use a token with the `read:packages`, `delete:packages`, and `repo` scopes. For more information about tokens, see "[About {% data variables.product.prodname_registry %}](/packages/publishing-and-managing-packages/about-github-packages#authenticating-to-github-packages)." - -Here is an example cURL command to delete a package version with the package version ID of `MDIyOlJlZ2lzdHJ5UGFja2FnZVZlcnNpb243MTExNg`, using a personal access token. - -{% if currentVersion == "free-pro-team@latest" %} -``` -curl -X POST \ --H "Accept: application/vnd.github.package-deletes-preview+json" \ --H "Authorization: bearer TOKEN" \ --d '{"query":"mutation { deletePackageVersion(input:{packageVersionId:\"MDIyOlJlZ2lzdHJ5UGFja2FnZVZlcnNpb243MTExNg==\"}) { success }}"}' \ -https://api.github.com/graphql -``` - -{% else %} - -``` -curl -X POST \ --H "Accept: application/vnd.github.package-deletes-preview+json" \ --H "Authorization: bearer TOKEN" \ --d '{"query":"mutation { deletePackageVersion(input:{packageVersionId:\"MDIyOlJlZ2lzdHJ5UGFja2FnZVZlcnNpb243MTExNg==\"}) { success }}"}' \ -HOSTNAME/graphql -``` - -{% endif %} - -To find all of the private packages you have published to {% data variables.product.prodname_registry %}, along with the version IDs for the packages, you can use the `packages` connection through the `repository` object. You will need a token with the `read:packages` and `repo` scopes. For more information, see the [`packages`](/graphql/reference/objects#repository) connection or the [`PackageOwner`](/graphql/reference/interfaces#packageowner) interface. - -For more information about the `deletePackageVersion` mutation, see "[`deletePackageVersion`](/graphql/reference/mutations#deletepackageversion)." - -You cannot delete an entire package, but if you delete every version of a package, the package will no longer show on {% data variables.product.product_name %} diff --git a/content/packages/publishing-and-managing-packages/index.md b/content/packages/publishing-and-managing-packages/index.md deleted file mode 100644 index e69cc46f750f..000000000000 --- a/content/packages/publishing-and-managing-packages/index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Publishing and managing packages -shortTitle: Publishing and managing packages -intro: 'You can publish new packages to {% data variables.product.prodname_registry %}, view and install existing packages, and, in special circumstances, delete existing packages.' -redirect_from: - - /github/managing-packages-with-github-packages/publishing-and-managing-packages -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -{% link_in_list /about-github-packages %} -{% link_in_list /publishing-a-package %} -{% link_in_list /viewing-packages %} -{% link_in_list /installing-a-package %} -{% link_in_list /deleting-a-package %} diff --git a/content/packages/publishing-and-managing-packages/installing-a-package.md b/content/packages/publishing-and-managing-packages/installing-a-package.md deleted file mode 100644 index cb2b1f16ad28..000000000000 --- a/content/packages/publishing-and-managing-packages/installing-a-package.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Installing a package -intro: 'You can install a package from {% data variables.product.prodname_registry %} and use the package as a dependency in your own project.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /github/managing-packages-with-github-packages/installing-a-package -permissions: Anyone with read permissions for a repository can install a package from that repository. -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -### About package installation - -You can search {% data variables.product.product_name %} to find packages in {% data variables.product.prodname_registry %} that you can install in your own project. For more information, see "[Searching {% data variables.product.prodname_registry %} for packages](/github/searching-for-information-on-github/searching-for-packages)." - -After you find a package, you can read the package's description and installation and usage instructions on the package page. - -### Installing a package - -You can install a package from {% data variables.product.prodname_registry %} using any {% if currentVersion == "free-pro-team@latest" %}supported package client{% else %}package type enabled for your instance{% endif %} by following the same general guidelines. - -1. Authenticate to {% data variables.product.prodname_registry %} using the instructions for your package client. For more information, see "[About tokens](/packages/publishing-and-managing-packages/about-github-packages#authenticating-to-github-packages)." -2. Install the package using the instructions for your package client. - -For instructions specific to your package client, see "[Using {% data variables.product.prodname_registry %} with your project's ecosystem](/packages/using-github-packages-with-your-projects-ecosystem)." diff --git a/content/packages/publishing-and-managing-packages/publishing-a-package.md b/content/packages/publishing-and-managing-packages/publishing-a-package.md deleted file mode 100644 index 93fbdbffb4b7..000000000000 --- a/content/packages/publishing-and-managing-packages/publishing-a-package.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Publishing a package -intro: 'You can publish a package to {% data variables.product.prodname_registry %} to make the package available for others to download and re-use.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /github/managing-packages-with-github-packages/publishing-a-package -permissions: Anyone with write permissions for a repository can publish a package to that repository. -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -### About published packages - -You can help people understand and use your package by providing a description and other details like installation and usage instructions on the package page. {% data variables.product.product_name %} provides metadata for each version, such as the publication date, download activity, and recent versions. For an example package page, see [@Codertocat/hello-world-npm](https://github.com/Codertocat/hello-world-npm/packages/10696?version=1.0.1). - -{% data reusables.package_registry.public-or-private-packages %} A repository can contain more than one package. To prevent confusion, make sure the README and description clearly provide information about each package. - -{% data reusables.package_registry.package-immutability %} - -{% if currentVersion == "free-pro-team@latest" %} -If a new version of a package fixes a security vulnerability, you should publish a security advisory in your repository. {% data variables.product.prodname_dotcom %} reviews each published security advisory and may use it to send {% data variables.product.prodname_dependabot_short %} alerts to affected repositories. For more information, see "[About GitHub Security Advisories](/github/managing-security-vulnerabilities/about-github-security-advisories)." -{% endif %} - -### Publishing a package - -You can publish a package to {% data variables.product.prodname_registry %} using any {% if currentVersion == "free-pro-team@latest" %}supported package client{% else %}package type enabled for your instance{% endif %} by following the same general guidelines. - -1. Create or use an existing access token with the appropriate scopes for the task you want to accomplish. For more information, see "[About {% data variables.product.prodname_registry %}](/packages/publishing-and-managing-packages/about-github-packages#authenticating-to-github-packages)." -2. Authenticate to {% data variables.product.prodname_registry %} using your access token and the instructions for your package client. -3. Publish the package using the instructions for your package client. - -For instructions specific to your package client, see "[Using {% data variables.product.prodname_registry %} with your project's ecosystem](/packages/using-github-packages-with-your-projects-ecosystem)." - -After you publish a package, you can view the package on {% data variables.product.prodname_dotcom %}. For more information, see “[Viewing packages](/packages/publishing-and-managing-packages/viewing-packages).” diff --git a/content/packages/publishing-and-managing-packages/viewing-packages.md b/content/packages/publishing-and-managing-packages/viewing-packages.md deleted file mode 100644 index 55ba29e41806..000000000000 --- a/content/packages/publishing-and-managing-packages/viewing-packages.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Viewing packages -intro: 'You can see details about packages published to a repository, and narrow results by organization or user.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /articles/viewing-a-repositorys-packages - - /github/managing-packages-with-github-packages/publishing-and-managing-packages/viewing-a-repositorys-packages - - /github/managing-packages-with-github-packages/viewing-packages -permissions: Anyone with read permissions to a repository can view the repository's packages. -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -### About package views - -Packages must be installed at the repository level, but you can view all packages in an organization and all packages you've published. {% data reusables.package_registry.package-page-info %} - -### Viewing a repository's packages - -You can see all the packages in a repository and search for a specific package in the repository. - -{% data reusables.repositories.navigate-to-repo %} -{% data reusables.package_registry.packages-from-code-tab %} -{% data reusables.package_registry.navigate-to-packages %} - -### Viewing an organization's packages - -You can see all the packages installed in an organization and search for a specific package installed in an organization's repositories. - -{% data reusables.profile.access_profile %} -{% data reusables.profile.access_org %} -3. Under your organization name, click {% octicon "package" aria-label="The package icon" %} **Packages**. -{% data reusables.package_registry.navigate-to-packages %} - -### Viewing your packages - -You can see all the packages you've installed and search for a specific package you've installed across all organizations and repositories. - -{% data reusables.profile.access_profile %} -2. On the top of the profile page, in the main navigation, click **Packages**. - ![Project tab](/assets/images/help/package-registry/user-packages-tab.png) -{% data reusables.package_registry.navigate-to-packages %} - -### Further reading - -- "[Searching for packages](/github/searching-for-information-on-github/searching-for-packages)" diff --git a/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-apache-maven-for-use-with-github-packages.md b/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-apache-maven-for-use-with-github-packages.md deleted file mode 100644 index 9ac1b3572eb0..000000000000 --- a/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-apache-maven-for-use-with-github-packages.md +++ /dev/null @@ -1,192 +0,0 @@ ---- -title: Configuring Apache Maven for use with GitHub Packages -intro: 'You can configure Apache Maven to publish packages to {% data variables.product.prodname_registry %} and to use packages stored on {% data variables.product.prodname_registry %} as dependencies in a Java project.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /articles/configuring-apache-maven-for-use-with-github-package-registry - - /github/managing-packages-with-github-package-registry/configuring-apache-maven-for-use-with-github-package-registry - - /github/managing-packages-with-github-packages/configuring-apache-maven-for-use-with-github-packages -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -{% data reusables.package_registry.admins-can-configure-package-types %} - -### Authenticating to {% data variables.product.prodname_registry %} - -{% data reusables.package_registry.authenticate-packages %} - -#### Authenticating with a personal access token - -{% data reusables.package_registry.required-scopes %} - -You can authenticate to {% data variables.product.prodname_registry %} with Apache Maven by editing your *~/.m2/settings.xml* file to include your personal access token. Create a new *~/.m2/settings.xml* file if one doesn't exist. - -In the `servers` tag, add a child `server` tag with an `id`, replacing *USERNAME* with your {% data variables.product.prodname_dotcom %} username, and *TOKEN* with your personal access token. - -In the `repositories` tag, configure a repository by mapping the `id` of the repository to the `id` you added in the `server` tag containing your credentials. Replace {% if enterpriseServerVersions contains currentVersion %}*HOSTNAME* with the host name of your {% data variables.product.prodname_ghe_server %} instance, {% endif %}*REPOSITORY* with the name of the repository you'd like to publish a package to or install a package from, and *OWNER* with the name of the user or organization account that owns the repository. {% data reusables.package_registry.lowercase-name-field %} - -If you want to interact with multiple repositories, you can add each repository to separate `repository` children in the `repositories` tag, mapping the `id` of each to the credentials in the `servers` tag. - -{% data reusables.package_registry.apache-maven-snapshot-versions-supported %} - -{% if enterpriseServerVersions contains currentVersion %} -If your instance has subdomain isolation enabled: -{% endif %} - -``` - - - - github - - - - - github - - - central - https://repo1.maven.org/maven2 - true - true - - - github - GitHub OWNER Apache Maven Packages - https://{% if currentVersion == "free-pro-team@latest" %}maven.pkg.github.com{% else %}maven.HOSTNAME{% endif %}/OWNER/REPOSITORY - - - - - - - - github - USERNAME - TOKEN - - - -``` - -{% if enterpriseServerVersions contains currentVersion %} -If your instance has subdomain isolation disabled: - -``` - - - - github - - - - - github - - - central - https://repo1.maven.org/maven2 - true - true - - - github - GitHub OWNER Apache Maven Packages - https://HOSTNAME/_registry/maven/OWNER/REPOSITORY - - - - - - - - github - USERNAME - TOKEN - - - -``` -{% endif %} - -#### Authenticating with the `GITHUB_TOKEN` - -{% data reusables.package_registry.package-registry-with-github-tokens %} - -### Publishing a package - -{% data reusables.package_registry.default-name %} For example, {% data variables.product.prodname_dotcom %} will publish a package named `com.example:test` in a repository called `OWNER/test`. - -If you would like to publish multiple packages to the same repository, you can include the URL of the repository in the `` element of the *pom.xml* file. {% data variables.product.prodname_dotcom %} will match the repository based on that field. Since the repository name is also part of the `distributionManagement` element, there are no additional steps to publish multiple packages to the same repository. - -For more information on creating a package, see the [maven.apache.org documentation](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html). - -1. Edit the `distributionManagement` element of the *pom.xml* file located in your package directory, replacing {% if enterpriseServerVersions contains currentVersion %}*HOSTNAME* with the host name of your {% data variables.product.prodname_ghe_server %} instance, {% endif %}`OWNER` with the name of the user or organization account that owns the repository and `REPOSITORY` with the name of the repository containing your project. - {% if enterpriseServerVersions contains currentVersion %} - If your instance has subdomain isolation enabled: - {% endif %} - ``` - - - github - GitHub OWNER Apache Maven Packages - https://{% if currentVersion == "free-pro-team@latest" %}maven.pkg.github.com{% else %}maven.HOSTNAME{% endif %}/OWNER/REPOSITORY - - - ``` - {% if enterpriseServerVersions contains currentVersion %} - If your instance has subdomain isolation disabled: - ``` - - - github - GitHub OWNER Apache Maven Packages - https://HOSTNAME/_registry/maven/OWNER/REPOSITORY - - - ``` - {% endif %} -2. Publish the package. - - ```shell - $ mvn deploy - ``` - -{% data reusables.package_registry.viewing-packages %} - -### Installing a package - -To install an Apache Maven package from {% data variables.product.prodname_registry %}, edit the *pom.xml* file to include the package as a dependency. If you want to install packages from more than one repository, add a `repository` tag for each. For more information on using a *pom.xml* file in your project, see "[Introduction to the POM](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html)" in the Apache Maven documentation. - -{% data reusables.package_registry.authenticate-step %} -2. Add the package dependencies to the `dependencies` element of your project *pom.xml* file, replacing `com.example:test` with your package. - - ``` - - - com.example - test - 1.0.0-SNAPSHOT - - - ``` -3. Install the package. - - ```shell - $ mvn install - ``` - -### Further reading - -- "[Configuring Gradle for use with {% data variables.product.prodname_registry %}](/packages/using-github-packages-with-your-projects-ecosystem/configuring-gradle-for-use-with-github-packages)" -- "[Deleting a package](/packages/publishing-and-managing-packages/deleting-a-package/)" diff --git a/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages.md b/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages.md deleted file mode 100644 index 09665952b53a..000000000000 --- a/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -title: Configuring Docker for use with GitHub Packages -intro: 'You can configure the Docker client to use {% data variables.product.prodname_registry %} to publish and retrieve docker images.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /articles/configuring-docker-for-use-with-github-package-registry - - /github/managing-packages-with-github-package-registry/configuring-docker-for-use-with-github-package-registry - - /github/managing-packages-with-github-packages/configuring-docker-for-use-with-github-packages -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -{% data reusables.package_registry.admins-can-configure-package-types %} - -### About Docker and {% data variables.product.prodname_registry %} - -{% data reusables.package_registry.docker_registry_deprecation_status %} - -When installing or publishing a docker image, {% data variables.product.prodname_registry %} does not currently support foreign layers, such as Windows images. - -{% if enterpriseServerVersions contains currentVersion %} - -Before you can use the Docker registry on {% data variables.product.prodname_registry %}, the site administrator for {% data variables.product.product_location_enterprise %} must enable Docker support and subdomain isolation for your instance. For more information, see "[Managing GitHub Packages for your enterprise](/enterprise/admin/packages)." - -{% endif %} - -### Authenticating to {% data variables.product.prodname_registry %} - -{% data reusables.package_registry.docker_registry_deprecation_status %} - -{% data reusables.package_registry.authenticate-packages %} - -#### Authenticating with a personal access token - -{% data reusables.package_registry.required-scopes %} - -You can authenticate to {% data variables.product.prodname_registry %} with Docker using the `docker` login command. - -To keep your credentials secure, we recommend you save your personal access token in a local file on your computer and use Docker's `--password-stdin` flag, which reads your token from a local file. - -{% if currentVersion == "free-pro-team@latest" %} -{% raw %} - ```shell - $ cat ~/TOKEN.txt | docker login https://docker.pkg.github.com -u USERNAME --password-stdin - ``` -{% endraw %} -{% endif %} - -{% if enterpriseServerVersions contains currentVersion %} -{% raw %} - ```shell - $ cat ~/TOKEN.txt | docker login docker.HOSTNAME -u USERNAME --password-stdin -``` -{% endraw %} -{% endif %} - -To use this example login command, replace `USERNAME` with your {% data variables.product.product_name %} username{% if enterpriseServerVersions contains currentVersion %}, `HOSTNAME` with the URL for {% data variables.product.product_location_enterprise %},{% endif %} and `~/TOKEN.txt` with the file path to your personal access token for {% data variables.product.product_name %}. - -For more information, see "[Docker login](https://docs.docker.com/engine/reference/commandline/login/#provide-a-password-using-stdin)." - -#### Authenticating with the `GITHUB_TOKEN` - -{% data reusables.package_registry.package-registry-with-github-tokens %} - -### Publishing a package - -{% data reusables.package_registry.docker_registry_deprecation_status %} - -{% data variables.product.prodname_registry %} supports multiple top-level Docker images per repository. A repository can have any number of image tags. You may experience degraded service publishing or installing Docker images larger than 10GB, layers are capped at 5GB each. For more information, see "[Docker tag](https://docs.docker.com/engine/reference/commandline/tag/)" in the Docker documentation. - -{% data reusables.package_registry.lowercase-name-field %} - -{% data reusables.package_registry.viewing-packages %} - -1. Determine the image name and ID for your docker image using `docker images`. - ```shell - $ docker images - > < > - > REPOSITORY TAG IMAGE ID CREATED SIZE - > IMAGE_NAME VERSION IMAGE_ID 4 weeks ago 1.11MB - ``` -2. Using the Docker image ID, tag the docker image, replacing *OWNER* with the name of the user or organization account that owns the repository, *REPOSITORY* with the name of the repository containing your project, *IMAGE_NAME* with name of the package or image,{% if enterpriseServerVersions contains currentVersion %} *HOSTNAME* with the hostname of {% data variables.product.product_location_enterprise %},{% endif %} and *VERSION* with package version at build time. - {% if currentVersion == "free-pro-team@latest" %} - ```shell - $ docker tag IMAGE_ID docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION - ``` - {% else %} - ```shell - $ docker tag IMAGE_ID docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION - ``` - {% endif %} -3. If you haven't already built a docker image for the package, build the image, replacing *OWNER* with the name of the user or organization account that owns the repository, *REPOSITORY* with the name of the repository containing your project, *IMAGE_NAME* with name of the package or image, *VERSION* with package version at build time,{% if enterpriseServerVersions contains currentVersion %} *HOSTNAME* with the hostname of {% data variables.product.product_location_enterprise %},{% endif %} and *PATH* to the image if it isn't in the current working directory.s - {% if currentVersion == "free-pro-team@latest" %} - ```shell - $ docker build -t docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH - ``` - {% else %} - ```shell - $ docker build -t docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH - ``` - {% endif %} -4. Publish the image to {% data variables.product.prodname_registry %}. - {% if currentVersion == "free-pro-team@latest" %} - ```shell - $ docker push docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION - ``` - {% else %} - ```shell - $ docker push docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION - ``` - {% endif %} - {% note %} - - **Note:** You must push your image using `IMAGE_NAME:VERSION` and not using `IMAGE_NAME:SHA`. - - {% endnote %} - -#### Example publishing a Docker image - -{% data reusables.package_registry.docker_registry_deprecation_status %} - -You can publish version 1.0 of the `monalisa` image to the `octocat/octo-app` repository using an image ID. - -{% if currentVersion == "free-pro-team@latest" %} -```shell -$ docker images - -> REPOSITORY TAG IMAGE ID CREATED SIZE -> monalisa 1.0 c75bebcdd211 4 weeks ago 1.11MB - -# Tag the image with OWNER/REPO/IMAGE_NAME -$ docker tag c75bebcdd211 docker.pkg.github.com/octocat/octo-app/monalisa:1.0 - -# Push the image to {% data variables.product.prodname_registry %} -$ docker push docker.pkg.github.com/octocat/octo-app/monalisa:1.0 -``` - -{% else %} - -```shell -$ docker images - -> REPOSITORY TAG IMAGE ID CREATED SIZE -> monalisa 1.0 c75bebcdd211 4 weeks ago 1.11MB - -# Tag the image with OWNER/REPO/IMAGE_NAME -$ docker tag c75bebcdd211 docker.HOSTNAME/octocat/octo-app/monalisa:1.0 - -# Push the image to {% data variables.product.prodname_registry %} -$ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0 -``` - -{% endif %} - -You can publish a new Docker image for the first time and name it `monalisa`. - -{% if currentVersion == "free-pro-team@latest" %} -```shell -# Build the image with docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION -# Assumes Dockerfile resides in the current working directory (.) -$ docker build -t docker.pkg.github.com/octocat/octo-app/monalisa:1.0 . - -# Push the image to {% data variables.product.prodname_registry %} -$ docker push docker.pkg.github.com/octocat/octo-app/monalisa:1.0 -``` - -{% else %} -```shell -# Build the image with docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION -# Assumes Dockerfile resides in the current working directory (.) -$ docker build -t docker.HOSTNAME/octocat/octo-app/monalisa:1.0 . - -# Push the image to {% data variables.product.prodname_registry %} -$ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0 -``` -{% endif %} - -### Installing a package - -{% data reusables.package_registry.docker_registry_deprecation_status %} - -You can use the `docker pull` command to install a docker image from {% data variables.product.prodname_registry %}, replacing *OWNER* with the name of the user or organization account that owns the repository, *REPOSITORY* with the name of the repository containing your project, *IMAGE_NAME* with name of the package or image,{% if enterpriseServerVersions contains currentVersion %}*HOSTNAME* with the host name of your {% data variables.product.prodname_ghe_server %} instance, {% endif %} and *TAG_NAME* with tag for the image you want to install. {% data reusables.package_registry.lowercase-name-field %} - -{% if currentVersion == "free-pro-team@latest" %} -```shell -$ docker pull docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME -``` -{% else %} -```shell -$ docker pull docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME -``` -{% endif %} - -{% note %} - -**Note:** You must pull the image using `IMAGE_NAME:VERSION` and not using `IMAGE_NAME:SHA`. - -{% endnote %} - -### Further reading - -- "[Deleting a package](/packages/publishing-and-managing-packages/deleting-a-package/)" diff --git a/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-dotnet-cli-for-use-with-github-packages.md b/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-dotnet-cli-for-use-with-github-packages.md deleted file mode 100644 index b85d34767712..000000000000 --- a/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-dotnet-cli-for-use-with-github-packages.md +++ /dev/null @@ -1,195 +0,0 @@ ---- -title: Configuring `dotnet` CLI for use with GitHub Packages -intro: 'You can configure the `dotnet` command-line interface (CLI) to publish NuGet packages to {% data variables.product.prodname_registry %} and to use packages stored on {% data variables.product.prodname_registry %} as dependencies in a .NET project.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /articles/configuring-nuget-for-use-with-github-package-registry - - /github/managing-packages-with-github-package-registry/configuring-nuget-for-use-with-github-package-registry - - /github/managing-packages-with-github-packages/configuring-nuget-for-use-with-github-packages - - /github/managing-packages-with-github-packages/configuring-dotnet-cli-for-use-with-github-packages -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -{% data reusables.package_registry.admins-can-configure-package-types %} - -### Authenticating to {% data variables.product.prodname_registry %} - -{% data reusables.package_registry.authenticate-packages %} - -#### Authenticating with a personal access token - -{% data reusables.package_registry.required-scopes %} - -To authenticate to {% data variables.product.prodname_registry %} with the `dotnet` command-line interface (CLI), create a *nuget.config* file in your project directory specifying {% data variables.product.prodname_registry %} as a source under `packageSources` for the `dotnet` CLI client. - -You must replace: -- `USERNAME` with the name of your user account on {% data variables.product.prodname_dotcom %}. -- `TOKEN` with your personal access token. -- `OWNER` with the name of the user or organization account that owns the repository containing your project.{% if enterpriseServerVersions contains currentVersion %} -- `HOSTNAME` with the host name for your {% data variables.product.prodname_ghe_server %} instance. - -If your instance has subdomain isolation enabled: -{% endif %} - -```xml - - - - - - - - - - - - - -``` - -{% if enterpriseServerVersions contains currentVersion %} -If your instance has subdomain isolation disabled: - -```xml - - - - - - - - - - - - - -``` -{% endif %} - -#### Authenticating with the `GITHUB_TOKEN` - -{% data reusables.package_registry.package-registry-with-github-tokens %} - -### Publishing a package - -You can publish a package to {% data variables.product.prodname_registry %} by authenticating with a *nuget.config* file. When publishing, you need to use the same value for `OWNER` in your *csproj* file that you use in your *nuget.config* authentication file. Specify or increment the version number in your *.csproj* file, then use the `dotnet pack` command to create a *.nuspec* file for that version. For more information on creating your package, see "[Create and publish a package](https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package-using-the-dotnet-cli)" in the Microsoft documentation. - -{% data reusables.package_registry.viewing-packages %} - -{% data reusables.package_registry.authenticate-step %} -2. Create a new project. - ```shell - dotnet new console --name OctocatApp - ``` -3. Add your project's specific information to your project's file, which ends in *.csproj*. You must replace: - - `OWNER` with the name of the user or organization account that owns the repository containing your project. - - `REPOSITORY` with the name of the repository containing the package you want to publish. - - `1.0.0` with the version number of the package.{% if enterpriseServerVersions contains currentVersion %} - - `HOSTNAME` with the host name for your {% data variables.product.prodname_ghe_server %} instance.{% endif %} - ``` xml - - - - Exe - netcoreapp3.0 - OctocatApp - 1.0.0 - Octocat - GitHub - This package adds an Octocat! - https://{% if currentVersion == "free-pro-team@latest" %}github.com{% else %}HOSTNAME{% endif %}/OWNER/REPOSITORY - - - - ``` -4. Package the project. - ```shell - dotnet pack --configuration Release - ``` - -5. Publish the package using the `key` you specified in the *nuget.config* file. - ```shell - dotnet nuget push "bin/Release/OctocatApp.1.0.0.nupkg" --source "github" - ``` - -### Publishing multiple packages to the same repository - -To publish multiple packages to the same repository, you can include the same {% data variables.product.prodname_dotcom %} repository URL in the `RepositoryURL` fields in all *.csproj* project files. {% data variables.product.prodname_dotcom %} matches the repository based on that field. - -For example, the *OctodogApp* and *OctocatApp* projects will publish to the same repository: - -``` xml - - - - Exe - netcoreapp3.0 - OctodogApp - 1.0.0 - Octodog - GitHub - This package adds an Octodog! - https://{% if currentVersion == "free-pro-team@latest" %}github.com{% else %}HOSTNAME{% endif %}/octo-org/octo-cats-and-dogs - - - -``` - -``` xml - - - - Exe - netcoreapp3.0 - OctocatApp - 1.0.0 - Octocat - GitHub - This package adds an Octocat! - https://{% if currentVersion == "free-pro-team@latest" %}github.com{% else %}HOSTNAME{% endif %}/octo-org/octo-cats-and-dogs - - - -``` - -### Installing a package - -Using packages from {% data variables.product.prodname_dotcom %} in your project is similar to using packages from *nuget.org*. Add your package dependencies to your *.csproj* file, specifying the package name and version. For more information on using a *.csproj* file in your project, see "[Working with NuGet packages](https://docs.microsoft.com/en-us/nuget/consume-packages/overview-and-workflow)" in the Microsoft documentation. - -{% data reusables.package_registry.authenticate-step %} - -2. To use a package, add `ItemGroup` and configure the `PackageReference` field in the *.csproj* project file, replacing the `OctokittenApp` package with your package dependency and `1.0.0` with the version you want to use: - ``` xml - - - - Exe - netcoreapp3.0 - OctocatApp - 1.0.0 - Octocat - GitHub - This package adds an Octocat! - https://{% if currentVersion == "free-pro-team@latest" %}github.com{% else %}HOSTNAME{% endif %}/OWNER/REPOSITORY - - - - - - - - ``` - -3. Install the packages with the `restore` command. - ```shell - dotnet restore - ``` - -### Further reading - -- "[Deleting a package](/packages/publishing-and-managing-packages/deleting-a-package/)" diff --git a/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-gradle-for-use-with-github-packages.md b/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-gradle-for-use-with-github-packages.md deleted file mode 100644 index 7e84a715f372..000000000000 --- a/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-gradle-for-use-with-github-packages.md +++ /dev/null @@ -1,213 +0,0 @@ ---- -title: Configuring Gradle for use with GitHub Packages -intro: 'You can configure Gradle to publish packages to {% data variables.product.prodname_registry %} and to use packages stored on {% data variables.product.prodname_registry %} as dependencies in a Java project.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /articles/configuring-gradle-for-use-with-github-package-registry - - /github/managing-packages-with-github-package-registry/configuring-gradle-for-use-with-github-package-registry - - /github/managing-packages-with-github-packages/configuring-gradle-for-use-with-github-packages -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -{% data reusables.package_registry.admins-can-configure-package-types %} - -### Authenticating to {% data variables.product.prodname_registry %} - -{% data reusables.package_registry.authenticate-packages %} - -#### Authenticating with a personal access token - -{% data reusables.package_registry.required-scopes %} - -You can authenticate to {% data variables.product.prodname_registry %} with Gradle using either Gradle Groovy or Kotlin DSL by editing your *build.gradle* file (Gradle Groovy) or *build.gradle.kts* file (Kotlin DSL) file to include your personal access token. You can also configure Gradle Groovy and Kotlin DSL to recognize a single package or multiple packages in a repository. - -{% if enterpriseServerVersions contains currentVersion %} -Replace *REGISTRY-URL* with the URL for your instance's Maven registry. If your instance has subdomain isolation enabled, use `maven.HOSTNAME`. If your instance has subdomain isolation disabled, use `HOSTNAME/_registry/maven`. In either case, replace *HOSTNAME* with the host name of your {% data variables.product.prodname_ghe_server %} instance. -{% endif %} - -Replace *USERNAME* with your {% data variables.product.prodname_dotcom %} username, *TOKEN* with your personal access token, *REPOSITORY* with the name of the repository containing the package you want to publish, and *OWNER* with the name of the user or organization account on {% data variables.product.prodname_dotcom %} that owns the repository. {% data reusables.package_registry.lowercase-name-field %} - -{% note %} - -**Note:** {% data reusables.package_registry.apache-maven-snapshot-versions-supported %} For an example, see "[Configuring Apache Maven for use with {% data variables.product.prodname_registry %}](/packages/using-github-packages-with-your-projects-ecosystem/configuring-apache-maven-for-use-with-github-packages)." - -{% endnote %} - -##### Example using Gradle Groovy for a single package in a repository - -```shell -plugins { - id("maven-publish") -} - -publishing { - repositories { - maven { - name = "GitHubPackages" - url = uri("https://{% if currentVersion == "free-pro-team@latest" %}maven.pkg.github.com{% else %}REGISTRY-URL{% endif %}/OWNER/REPOSITORY") - credentials { - username = project.findProperty("gpr.user") ?: System.getenv("USERNAME") - password = project.findProperty("gpr.key") ?: System.getenv("TOKEN") - } - } - } - publications { - gpr(MavenPublication) { - from(components.java) - } - } -} -``` - -##### Example using Gradle Groovy for multiple packages in the same repository - -```shell -plugins { - id("maven-publish") apply false -} - -subprojects { - apply plugin: "maven-publish" - publishing { - repositories { - maven { - name = "GitHubPackages" - url = uri("https://{% if currentVersion == "free-pro-team@latest" %}maven.pkg.github.com{% else %}REGISTRY-URL{% endif %}/OWNER/REPOSITORY") - credentials { - username = project.findProperty("gpr.user") ?: System.getenv("USERNAME") - password = project.findProperty("gpr.key") ?: System.getenv("TOKEN") - } - } - } - publications { - gpr(MavenPublication) { - from(components.java) - } - } - } -} -``` - -##### Example using Kotlin DSL for a single package in the same repository - -```shell -plugins { - `maven-publish` -} - -publishing { - repositories { - maven { - name = "GitHubPackages" - url = uri("https://{% if currentVersion == "free-pro-team@latest" %}maven.pkg.github.com{% else %}REGISTRY-URL{% endif %}/OWNER/REPOSITORY") - credentials { - username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME") - password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN") - } - } - } - publications { - register("gpr") { - from(components["java"]) - } - } -} -``` - -##### Example using Kotlin DSL for multiple packages in the same repository - -```shell -plugins { - `maven-publish` apply false -} - -subprojects { - apply(plugin = "maven-publish") - configure { - repositories { - maven { - name = "GitHubPackages" - url = uri("https://{% if currentVersion == "free-pro-team@latest" %}maven.pkg.github.com{% else %}REGISTRY-URL{% endif %}/OWNER/REPOSITORY") - credentials { - username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME") - password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN") - } - } - } - publications { - register("gpr") { - from(components["java"]) - } - } - } -} -``` - - #### Authenticating with the `GITHUB_TOKEN` - - {% data reusables.package_registry.package-registry-with-github-tokens %} - - For more information about using `GITHUB_TOKEN` with Maven, see "[Publishing Java packages with Maven](/actions/language-and-framework-guides/publishing-java-packages-with-maven#publishing-packages-to-github-packages)." - - ### Publishing a package - - {% data reusables.package_registry.default-name %} For example, {% data variables.product.prodname_dotcom %} will publish a package named `com.example.test` in the `OWNER/test` {% data variables.product.prodname_registry %} repository. - - {% data reusables.package_registry.viewing-packages %} - - {% data reusables.package_registry.authenticate-step %} - 2. After creating your package, you can publish the package. - - ```shell - $ gradle publish - ``` - -### Installing a package - -You can install a package by adding the package as a dependency to your project. For more information, see "[Declaring dependencies](https://docs.gradle.org/current/userguide/declaring_dependencies.html)" in the Gradle documentation. - -{% data reusables.package_registry.authenticate-step %} -2. Add the package dependencies to your *build.gradle* file (Gradle Groovy) or *build.gradle.kts* file (Kotlin DSL) file. - - Example using Gradle Groovy: - ```shell - dependencies { - implementation 'com.example:package' - } - ``` - Example using Kotlin DSL: - ```shell - dependencies { - implementation("com.example:package") - } - ``` - -3. Add the maven plugin to your *build.gradle* file (Gradle Groovy) or *build.gradle.kts* file (Kotlin DSL) file. - - Example using Gradle Groovy: - ```shell - plugins { - id 'maven' - } - ``` - Example using Kotlin DSL: - ```shell - plugins { - `maven` - } - ``` - - 3. Install the package. - - ```shell - $ gradle install - ``` - -### Further reading - -- "[Configuring Apache Maven for use with {% data variables.product.prodname_registry %}](/packages/using-github-packages-with-your-projects-ecosystem/configuring-apache-maven-for-use-with-github-packages)" -- "[Deleting a package](/packages/publishing-and-managing-packages/deleting-a-package/)" diff --git a/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages.md b/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages.md deleted file mode 100644 index 77b4552fe5d2..000000000000 --- a/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages.md +++ /dev/null @@ -1,193 +0,0 @@ ---- -title: Configuring npm for use with GitHub Packages -intro: 'You can configure npm to publish packages to {% data variables.product.prodname_registry %} and to use packages stored on {% data variables.product.prodname_registry %} as dependencies in an npm project.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /articles/configuring-npm-for-use-with-github-package-registry - - /github/managing-packages-with-github-package-registry/configuring-npm-for-use-with-github-package-registry - - /github/managing-packages-with-github-packages/configuring-npm-for-use-with-github-packages -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -{% data reusables.package_registry.admins-can-configure-package-types %} - -### Authenticating to {% data variables.product.prodname_registry %} - -{% data reusables.package_registry.authenticate-packages %} - -#### Authenticating with a personal access token - -{% data reusables.package_registry.required-scopes %} - -You can authenticate to {% data variables.product.prodname_registry %} with npm by either editing your per-user *~/.npmrc* file to include your personal access token or by logging in to npm on the command line using your username and personal access token. - -To authenticate by adding your personal access token to your *~/.npmrc* file, edit the *~/.npmrc* file for your project to include the following line, replacing {% if enterpriseServerVersions contains currentVersion %}*HOSTNAME* with the host name of your {% data variables.product.prodname_ghe_server %} instance and {% endif %}*TOKEN* with your personal access token. Create a new *~/.npmrc* file if one doesn't exist. - -{% if enterpriseServerVersions contains currentVersion %} -If your instance has subdomain isolation enabled: -{% endif %} - -```shell -//{% if currentVersion == "free-pro-team@latest" %}npm.pkg.github.com{% else %}npm.HOSTNAME/{% endif %}/:_authToken=TOKEN -``` - -{% if enterpriseServerVersions contains currentVersion %} -If your instance has subdomain isolation disabled: - -```shell -//HOSTNAME/_registry/npm/:_authToken=TOKEN -``` -{% endif %} - -To authenticate by logging in to npm, use the `npm login` command, replacing *USERNAME* with your {% data variables.product.prodname_dotcom %} username, *TOKEN* with your personal access token, and *PUBLIC-EMAIL-ADDRESS* with your email address. - -{% if enterpriseServerVersions contains currentVersion %} -If your instance has subdomain isolation enabled: -{% endif %} - -```shell -$ npm login --registry=https://{% if currentVersion == "free-pro-team@latest" %}npm.pkg.github.com{% else %}npm.HOSTNAME/{% endif %} -> Username: USERNAME -> Password: TOKEN -> Email: PUBLIC-EMAIL-ADDRESS -``` - -{% if enterpriseServerVersions contains currentVersion %} -If your instance has subdomain isolation disabled: - -```shell -$ npm login --registry=https://HOSTNAME/_registry/npm/ -> Username: USERNAME -> Password: TOKEN -> Email: PUBLIC-EMAIL-ADDRESS -``` -{% endif %} - -#### Authenticating with the `GITHUB_TOKEN` - -{% data reusables.package_registry.package-registry-with-github-tokens %} - -### Publishing a package - -By default, {% data variables.product.prodname_registry %} publishes a package in the {% data variables.product.prodname_dotcom %} repository you specify in the name field of the *package.json* file. For example, you would publish a package named `@my-org/test` to the `my-org/test` {% data variables.product.prodname_dotcom %} repository. You can add a summary for the package listing page by including a *README.md* file in your package directory. For more information, see "[Working with package.json](https://docs.npmjs.com/getting-started/using-a-package.json)" and "[How to create Node.js Modules](https://docs.npmjs.com/getting-started/creating-node-modules)" in the npm documentation. - -You can publish multiple packages to the same {% data variables.product.prodname_dotcom %} repository by including a `URL` field in the *package.json* file. For more information, see "[Publishing multiple packages to the same repository](#publishing-multiple-packages-to-the-same-repository)." - -You can set up the scope mapping for your project using either a local *.npmrc* file in the project or using the `publishConfig` option in the *package.json*. {% data variables.product.prodname_registry %} only supports scoped npm packages. Scoped packages have names with the format of `@owner/name`. Scoped packages always begin with an `@` symbol. You may need to update the name in your *package.json* to use the scoped name. For example, `"name": "@codertocat/hello-world-npm"`. - -{% data reusables.package_registry.viewing-packages %} - -#### Publishing a package using a local *.npmrc* file - -You can use an *.npmrc* file to configure the scope mapping for your project. In the *.npmrc* file, use the {% data variables.product.prodname_registry %} URL and account owner so {% data variables.product.prodname_registry %} knows where to route package requests. Using an *.npmrc* file prevents other developers from accidentally publishing the package to npmjs.org instead of {% data variables.product.prodname_registry %}. {% data reusables.package_registry.lowercase-name-field %} - -{% data reusables.package_registry.authenticate-step %} -{% data reusables.package_registry.create-npmrc-owner-step %} -{% data reusables.package_registry.add-npmrc-to-repo-step %} -4. Verify the name of your package in your project's *package.json*. The `name` field must contain the scope and the name of the package. For example, if your package is called "test", and you are publishing to the "My-org" {% data variables.product.prodname_dotcom %} organization, the `name` field in your *package.json* should be `@my-org/test`. -{% data reusables.package_registry.verify_repository_field %} -{% data reusables.package_registry.publish_package %} - -#### Publishing a package using `publishConfig` in the *package.json* file - -You can use `publishConfig` element in the *package.json* file to specify the registry where you want the package published. For more information, see "[publishConfig](https://docs.npmjs.com/files/package.json#publishconfig)" in the npm documentation. - -1. Edit the *package.json* file for your package and include a `publishConfig` entry. - {% if enterpriseServerVersions contains currentVersion %} - If your instance has subdomain isolation enabled: - {% endif %} - ```shell - "publishConfig": { - "registry":"https://{% if currentVersion == "free-pro-team@latest" %}npm.pkg.github.com{% else %}npm.HOSTNAME/{% endif %}" - }, - ``` - {% if enterpriseServerVersions contains currentVersion %} - If your instance has subdomain isolation disabled: - ```shell - "publishConfig": { - "registry":"https://HOSTNAME/_registry/npm/" - }, - ``` - {% endif %} -{% data reusables.package_registry.verify_repository_field %} -{% data reusables.package_registry.publish_package %} - -### Publishing multiple packages to the same repository - -To publish multiple packages to the same repository, you can include the URL of the {% data variables.product.prodname_dotcom %} repository in the `repository` field of the *package.json* file for each package. - -To ensure the repository's URL is correct, replace REPOSITORY with the name of the repository containing the package you want to publish, and OWNER with the name of the user or organization account on {% data variables.product.prodname_dotcom %} that owns the repository. - -{% data variables.product.prodname_registry %} will match the repository based on the URL, instead of based on the package name. If you store the *package.json* file outside the root directory of your repository, you can use the `directory` field to specify the location where {% data variables.product.prodname_registry %} can find the *package.json* files. - -```shell -"repository" : { - "type" : "git", - "url": "ssh://git@{% if currentVersion == "free-pro-team@latest" %}github.com{% else %}HOSTNAME{% endif %}/OWNER/REPOSITORY.git", - "directory": "packages/name" - }, -``` - -### Installing a package - -You can install packages from {% data variables.product.prodname_registry %} by adding the packages as dependencies in the *package.json* file for your project. For more information on using a *package.json* in your project, see "[Working with package.json](https://docs.npmjs.com/getting-started/using-a-package.json)" in the npm documentation. - -By default, you can add packages from one organization. For more information, see "[Installing packages from other organizations](#installing-packages-from-other-organizations)." - -You also need to add the *.npmrc* file to your project so all requests to install packages will go through {% data variables.product.prodname_registry %}. When you route all package requests through {% data variables.product.prodname_registry %}, you can use both scoped and unscoped packages from *npmjs.com*. For more information, see "[npm-scope](https://docs.npmjs.com/misc/scope)" in the npm documentation. - -{% data reusables.package_registry.authenticate-step %} -{% data reusables.package_registry.create-npmrc-owner-step %} -{% data reusables.package_registry.add-npmrc-to-repo-step %} -4. Configure *package.json* in your project to use the package you are installing. To add your package dependencies to the *package.json* file for {% data variables.product.prodname_registry %}, specify the full-scoped package name, such as `@my-org/server`. For packages from *npmjs.com*, specify the full name, such as `@babel/core` or `@lodash`. For example, this following *package.json* uses the `@octo-org/octo-app` package as a dependency. - - ``` - { - "name": "@my-org/server", - "version": "1.0.0", - "description": "Server app that uses the @octo-org/octo-app package", - "main": "index.js", - "author": "", - "license": "MIT", - "dependencies": { - "@octo-org/octo-app": "1.0.0" - } - } - ``` -5. Install the package. - - ```shell - $ npm install - ``` - -#### Installing packages from other organizations - -By default, you can only use {% data variables.product.prodname_registry %} packages from one organization. If you'd like to route package requests to multiple organizations and users, you can add additional lines to your *.npmrc* file, replacing {% if enterpriseServerVersions contains currentVersion %}*HOSTNAME* with the host name of your {% data variables.product.prodname_ghe_server %} instance and {% endif %}*OWNER* with the name of the user or organization account that owns the repository containing your project. {% data reusables.package_registry.lowercase-name-field %} - -{% if enterpriseServerVersions contains currentVersion %} -If your instance has subdomain isolation enabled: -{% endif %} - -```shell -registry=https://{% if currentVersion == "free-pro-team@latest" %}npm.pkg.github.com{% else %}npm.HOSTNAME{% endif %}/OWNER -@OWNER:registry={% if currentVersion == "free-pro-team@latest" %}npm.pkg.github.com{% else %}npm.HOSTNAME/{% endif %} -@OWNER:registry={% if currentVersion == "free-pro-team@latest" %}npm.pkg.github.com{% else %}npm.HOSTNAME/{% endif %} -``` - -{% if enterpriseServerVersions contains currentVersion %} -If your instance has subdomain isolation disabled: - -```shell -registry=https://HOSTNAME/_registry/npm/OWNER -@OWNER:registry=HOSTNAME/_registry/npm/ -@OWNER:registry=HOSTNAME/_registry/npm/ -``` -{% endif %} - -### Further reading - -- "[Deleting a package](/packages/publishing-and-managing-packages/deleting-a-package/)" diff --git a/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-rubygems-for-use-with-github-packages.md b/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-rubygems-for-use-with-github-packages.md deleted file mode 100644 index da2523152173..000000000000 --- a/content/packages/using-github-packages-with-your-projects-ecosystem/configuring-rubygems-for-use-with-github-packages.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: Configuring RubyGems for use with GitHub Packages -intro: 'You can configure RubyGems to publish a package to {% data variables.product.prodname_registry %} and to use packages stored on {% data variables.product.prodname_registry %} as dependencies in a Ruby project with Bundler.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /articles/configuring-rubygems-for-use-with-github-package-registry - - /github/managing-packages-with-github-package-registry/configuring-rubygems-for-use-with-github-package-registry - - /github/managing-packages-with-github-packages/configuring-rubygems-for-use-with-github-packages -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -{% data reusables.package_registry.admins-can-configure-package-types %} - -### Prerequisites - -- You must have rubygems 2.4.1 or higher. To find your rubygems version: - - ```shell - $ gem --version - ``` - - - You must have bundler 1.6.4 or higher. To find your Bundler version: - ```shell - $ bundle --version - Bundler version 1.13.7 - ``` - - - Install keycutter to manage multiple credentials. To install keycutter: - ```shell - $ gem install keycutter - ``` - -### Authenticating to {% data variables.product.prodname_registry %} - -{% data reusables.package_registry.authenticate-packages %} - -#### Authenticating with a personal access token - -{% data reusables.package_registry.required-scopes %} - -You can authenticate to {% data variables.product.prodname_registry %} with RubyGems by editing the *~/.gem/credentials* file for publishing gems, editing the *~/.gemrc* file for installing a single gem, or using Bundler for tracking and installing one or more gems. - -To publish new gems, you need to authenticate to {% data variables.product.prodname_registry %} with RubyGems by editing your *~/.gem/credentials* file to include your personal access token. Create a new *~/.gem/credentials* file if this file doesn't exist. - -For example, you would create or edit a *~/.gem/credentials* to include the following, replacing *TOKEN* with your personal access token. - -```shell ---- -:github: Bearer TOKEN -``` - -To install gems, you need to authenticate to {% data variables.product.prodname_registry %} by editing the *~/.gemrc* file for your project to include `https://USERNAME:TOKEN@{% if currentVersion == "free-pro-team@latest" %}rubygems.pkg.github.com{% else %}REGISTRY-URL{% endif %}/OWNER/`. You must replace: - - `USERNAME` with your {% data variables.product.prodname_dotcom %} username. - - `TOKEN` with your personal access token. - - `OWNER` with the name of the user or organization account that owns the repository containing your project.{% if enterpriseServerVersions contains currentVersion %} - - `REGISTRY-URL` with the URL for your instance's Rubygems registry. If your instance has subdomain isolation enabled, use `rubygems.HOSTNAME`. If your instance has subdomain isolation disabled, use `HOSTNAME/_registry/rubygems`. In either case, replace *HOSTNAME* with the hostname of your {% data variables.product.prodname_ghe_server %} instance. -{% endif %} - -If you don't have a *~/.gemrc* file, create a new *~/.gemrc* file using this example. - -```shell ---- -:backtrace: false -:bulk_threshold: 1000 -:sources: -- https://rubygems.org/ -- https://USERNAME:TOKEN@{% if currentVersion == "free-pro-team@latest" %}rubygems.pkg.github.com{% else %}REGISTRY-URL{% endif %}/OWNER/ -:update_sources: true -:verbose: true - -``` - -To authenticate with Bundler, configure Bundler to use your personal access token, replacing *USERNAME* with your {% data variables.product.prodname_dotcom %} username, *TOKEN* with your personal access token, and *OWNER* with the name of the user or organization account that owns the repository containing your project.{% if enterpriseServerVersions contains currentVersion %} Replace `REGISTRY-URL` with the URL for your instance's Rubygems registry. If your instance has subdomain isolation enabled, use `rubygems.HOSTNAME`. If your instance has subdomain isolation disabled, use `HOSTNAME/_registry/rubygems`. In either case, replace *HOSTNAME* with the hostname of your {% data variables.product.prodname_ghe_server %} instance.{% endif %} - -{% data reusables.package_registry.lowercase-name-field %} - -```shell -$ bundle config https://{% if currentVersion == "free-pro-team@latest" %}rubygems.pkg.github.com{% else %}REGISTRY-URL{% endif %}/OWNER USERNAME:TOKEN -``` - -#### Authenticating with the `GITHUB_TOKEN` - -{% data reusables.package_registry.package-registry-with-github-tokens %} - -### Publishing a package - -{% data reusables.package_registry.default-name %} For example, when you publish `octo-gem` to the `octo-org` organization, {% data variables.product.prodname_registry %} publishes the gem to the `octo-org/octo-gem` repository. For more information on creating your gem, see "[Make your own gem](http://guides.rubygems.org/make-your-own-gem/)" in the RubyGems documentation. - -{% data reusables.package_registry.viewing-packages %} - -{% data reusables.package_registry.authenticate-step %} -2. Build the package from the *gemspec* to create the *.gem* package. - ```shell - gem build OCTO-GEM.gemspec - ``` -3. Publish a package to {% data variables.product.prodname_registry %}, replacing `OWNER` with the name of the user or organization account that owns the repository containing your project and `OCTO-GEM` with the name of your gem package.{% if enterpriseServerVersions contains currentVersion %} Replace `REGISTRY-URL` with the URL for your instance's Rubygems registry. If your instance has subdomain isolation enabled, use `rubygems.HOSTNAME`. If your instance has subdomain isolation disabled, use `HOSTNAME/_registry/rubygems`. In either case, replace *HOSTNAME* with the host name of your {% data variables.product.prodname_ghe_server %} instance.{% endif %} - - ```shell - $ gem push --key github \ - --host https://{% if currentVersion == "free-pro-team@latest" %}rubygems.pkg.github.com{% else %}REGISTRY-URL{% endif %}/OWNER \ - OCTO-GEM-0.0.1.gem - ``` - -### Publishing multiple packages to the same repository - -To publish multiple gems to the same repository, you can include the URL to the {% data variables.product.prodname_dotcom %} repository in the `github_repo` field in `gem.metadata`. If you include this field, {% data variables.product.prodname_dotcom %} matches the repository based on this value, instead of using the gem name.{% if enterpriseServerVersions contains currentVersion %} Replace *HOSTNAME* with the host name of your {% data variables.product.prodname_ghe_server %} instance.{% endif %} - -``` -gem.metadata = { "github_repo" => "ssh://{% if currentVersion == "free-pro-team@latest" %}github.com{% else %}HOSTNAME{% endif %}/OWNER/REPOSITORY" } -``` - -### Installing a package - -You can use gems from {% data variables.product.prodname_registry %} much like you use gems from *rubygems.org*. You need to authenticate to {% data variables.product.prodname_registry %} by adding your {% data variables.product.prodname_dotcom %} user or organization as a source in the *~/.gemrc* file or by using Bundler and editing you *Gemfile*. - -{% data reusables.package_registry.authenticate-step %} -2. For Bundler, add your {% data variables.product.prodname_dotcom %} user or organization as a source in your *Gemfile* to fetch gems from this new source. For example, you can add a new `source` block to your *Gemfile* that uses {% data variables.product.prodname_registry %} only for the packages you specify, replacing *GEM NAME* with the package you want to install from {% data variables.product.prodname_registry %} and *OWNER* with the user or organization that owns the repository containing the gem you want to install.{% if enterpriseServerVersions contains currentVersion %} Replace `REGISTRY-URL` with the URL for your instance's Rubygems registry. If your instance has subdomain isolation enabled, use `rubygems.HOSTNAME`. If your instance has subdomain isolation disabled, use `HOSTNAME/_registry/rubygems`. In either case, replace *HOSTNAME* with the host name of your {% data variables.product.prodname_ghe_server %} instance.{% endif %} - - ``` - source "https://rubygems.org" - - gem "rails" - - source "https://{% if currentVersion == "free-pro-team@latest" %}rubygems.pkg.github.com{% else %}REGISTRY-URL{% endif %}/OWNER" do - gem "GEM NAME" - end - ``` - -3. For Bundler versions earlier than 1.7.0, you need to add a new global `source`. For more information on using Bundler, see the [bundler.io documentation](http://bundler.io/v1.5/gemfile.html). - - ``` - source "https://{% if currentVersion == "free-pro-team@latest" %}rubygems.pkg.github.com{% else %}REGISTRY-URL{% endif %}/OWNER" - source "https://rubygems.org" - - gem "rails" - gem "GEM NAME" - ``` - -4. Install the package: - ```shell - $ gem install octo-gem --version "0.1.1" - ``` - -### Further reading - -- "[Deleting a package](/packages/publishing-and-managing-packages/deleting-a-package/)" diff --git a/content/packages/using-github-packages-with-your-projects-ecosystem/index.md b/content/packages/using-github-packages-with-your-projects-ecosystem/index.md deleted file mode 100644 index 02c88cf6323e..000000000000 --- a/content/packages/using-github-packages-with-your-projects-ecosystem/index.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Using GitHub Packages with your project's ecosystem -shortTitle: Using GitHub Packages with your project's ecosystem -intro: 'You can configure {% data variables.product.prodname_actions %} or your package client to work with {% data variables.product.prodname_registry %}.' -redirect_from: - - /github/managing-packages-with-github-packages/using-github-packages-with-your-projects-ecosystem -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -{% link_in_list /using-github-packages-with-github-actions %} -{% link_in_list /configuring-docker-for-use-with-github-packages %} -{% link_in_list /configuring-apache-maven-for-use-with-github-packages %} -{% link_in_list /configuring-gradle-for-use-with-github-packages %} -{% link_in_list /configuring-npm-for-use-with-github-packages %} -{% link_in_list /configuring-dotnet-cli-for-use-with-github-packages %} -{% link_in_list /configuring-rubygems-for-use-with-github-packages %} diff --git a/content/packages/using-github-packages-with-your-projects-ecosystem/using-github-packages-with-github-actions.md b/content/packages/using-github-packages-with-your-projects-ecosystem/using-github-packages-with-github-actions.md deleted file mode 100644 index 8875879a16f7..000000000000 --- a/content/packages/using-github-packages-with-your-projects-ecosystem/using-github-packages-with-github-actions.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Using GitHub Packages with GitHub Actions -intro: 'You can configure a workflow in {% data variables.product.prodname_actions %} to automatically publish or install a package from {% data variables.product.prodname_registry %}.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /github/managing-packages-with-github-packages/using-github-packages-with-github-actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.package_registry.packages-ghes-release-stage %} - -### About {% data variables.product.prodname_registry %} with {% data variables.product.prodname_actions %} - -{% data reusables.repositories.about-github-actions %} {% data reusables.repositories.actions-ci-cd %} For more information, see "[About {% data variables.product.prodname_actions %}](/github/automating-your-workflow-with-github-actions/about-github-actions)." - -You can extend the CI and CD capabilities of your repository by publishing or installing packages as part of your workflow. - -{% if currentVersion == "free-pro-team@latest" %} -#### Authenticating to {% data variables.product.prodname_github_container_registry %} - -{% data reusables.package_registry.container-registry-beta %} - -{% data reusables.package_registry.authenticate_with_pat_for_container_registry %} - -For an authentication example, see "[Authenticating with the {% data variables.product.prodname_container_registry %}](/packages/getting-started-with-github-container-registry/migrating-to-github-container-registry-for-docker-images#authenticating-with-the-container-registry)." - -{% endif %} - -#### Authenticating to package registries on {% data variables.product.prodname_dotcom %} - -{% if currentVersion == "free-pro-team@latest" %}If you want your workflow to authenticate to {% data variables.product.prodname_registry %} to access a package registry other than the {% data variables.product.prodname_container_registry %} on {% data variables.product.product_name %}, then{% else %}To authenticate to package registries on {% data variables.product.product_name %},{% endif %} we recommend using the `GITHUB_TOKEN` that {% data variables.product.product_name %} automatically creates for your repository when you enable {% data variables.product.prodname_actions %} instead of a personal access token for authentication. The `GITHUB_TOKEN` has `read:packages` and `write:packages` scopes to the current repository. For forks, the token also has the `read:packages` scope for the parent repository. - -You can reference the `GITHUB_TOKEN` in your workflow file using the {% raw %}`{{secrets.GITHUB_TOKEN}}`{% endraw %} context. For more information, see "[Authenticating with the GITHUB_TOKEN](/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token)." - -### Publishing a package using an action - -You can publish packages as part of your continuous integration (CI) flow using {% data variables.product.prodname_actions %}. For example, you could configure a workflow so that anytime a developer pushes code to the default branch, the workflow runs CI tests. If those tests pass, the workflow publishes a new package version to {% data variables.product.prodname_registry %}. This workflow automates the creation of new package versions only if the code meets your quality standards. - -{% data reusables.package_registry.actions-configuration %} - -### Installing a package using an action - -You can install packages as part of your CI flow using {% data variables.product.prodname_actions %}. For example, you could configure a workflow so that anytime a developer pushes code to a pull request, the workflow resolves dependencies by downloading and installing packages hosted by {% data variables.product.prodname_registry %}. Then, the workflow can run CI tests that require the dependencies. - -Installing packages hosted by {% data variables.product.prodname_registry %} through {% data variables.product.prodname_actions %} requires minimal configuration or additional authentication when you use `GITHUB_TOKEN`.{% if currentVersion == "free-pro-team@latest" %} Data transfer is also free when an action installs a package. For more information, see "[About billing for {% data variables.product.prodname_registry %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-packages)."{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -`GITHUB_TOKEN` cannot install packages from any private repository besides the repository where the action runs. You cannot currently use `GITHUB_TOKEN` to authenticate to {% data variables.product.prodname_github_container_registry %}. -{% endif %} - -{% data reusables.package_registry.actions-configuration %} diff --git a/content/rest/guides/basics-of-authentication.md b/content/rest/guides/basics-of-authentication.md deleted file mode 100644 index 20bb8620ee88..000000000000 --- a/content/rest/guides/basics-of-authentication.md +++ /dev/null @@ -1,367 +0,0 @@ ---- -title: Basics of authentication -intro: Learn about the different ways to authenticate with some examples. -redirect_from: - - /guides/basics-of-authentication - - /v3/guides/basics-of-authentication - - /rest/basics-of-authentication -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -In this section, we're going to focus on the basics of authentication. Specifically, -we're going to create a Ruby server (using [Sinatra][Sinatra]) that implements -the [web flow][webflow] of an application in several different ways. - -{% tip %} - -You can download the complete source code for this project [from the platform-samples repo](https://github.com/github/platform-samples/tree/master/api/). - -{% endtip %} - -### Registering your app - -First, you'll need to [register your application][new oauth app]. Every -registered OAuth application is assigned a unique Client ID and Client Secret. -The Client Secret should not be shared! That includes checking the string -into your repository. - -You can fill out every piece of information however you like, except the -**Authorization callback URL**. This is easily the most important piece to setting -up your application. It's the callback URL that {% data variables.product.product_name %} returns the user to after -successful authentication. - -Since we're running a regular Sinatra server, the location of the local instance -is set to `http://localhost:4567`. Let's fill in the callback URL as `http://localhost:4567/callback`. - -### Accepting user authorization - -{% data reusables.apps.deprecating_auth_with_query_parameters %} - -Now, let's start filling out our simple server. Create a file called _server.rb_ and paste this into it: - -``` ruby -require 'sinatra' -require 'rest-client' -require 'json' - -CLIENT_ID = ENV['GH_BASIC_CLIENT_ID'] -CLIENT_SECRET = ENV['GH_BASIC_SECRET_ID'] - -get '/' do - erb :index, :locals => {:client_id => CLIENT_ID} -end -``` - -Your client ID and client secret keys come from [your application's configuration -page][app settings]. You should **never, _ever_** store these values in -{% data variables.product.product_name %}--or any other public place, for that matter. We recommend storing them as -[environment variables][about env vars]--which is exactly what we've done here. - -Next, in _views/index.erb_, paste this content: - -``` erb - - - - -

- Well, hello there! -

-

- We're going to now talk to the GitHub API. Ready? - Click here to begin! -

-

- If that link doesn't work, remember to provide your own Client ID! -

- - -``` - -(If you're unfamiliar with how Sinatra works, we recommend [reading the Sinatra guide][Sinatra guide].) - -Also, notice that the URL uses the `scope` query parameter to define the -[scopes][oauth scopes] requested by the application. For our application, we're -requesting `user:email` scope for reading private email addresses. - -Navigate your browser to `http://localhost:4567`. After clicking on the link, you -should be taken to {% data variables.product.product_name %}, and presented with a dialog that looks something like this: -![GitHub's OAuth Prompt](/assets/images/oauth_prompt.png) - -If you trust yourself, click **Authorize App**. Wuh-oh! Sinatra spits out a -`404` error. What gives?! - -Well, remember when we specified a Callback URL to be `callback`? We didn't provide -a route for it, so {% data variables.product.product_name %} doesn't know where to drop the user after they authorize -the app. Let's fix that now! - -#### Providing a callback - -In _server.rb_, add a route to specify what the callback should do: - -``` ruby -get '/callback' do - # get temporary GitHub code... - session_code = request.env['rack.request.query_hash']['code'] - - # ... and POST it back to GitHub - result = RestClient.post('https://github.com/login/oauth/access_token', - {:client_id => CLIENT_ID, - :client_secret => CLIENT_SECRET, - :code => session_code}, - :accept => :json) - - # extract the token and granted scopes - access_token = JSON.parse(result)['access_token'] -end -``` - -After a successful app authentication, {% data variables.product.product_name %} provides a temporary `code` value. -You'll need to `POST` this code back to {% data variables.product.product_name %} in exchange for an `access_token`. -To simplify our GET and POST HTTP requests, we're using the [rest-client][REST Client]. -Note that you'll probably never access the API through REST. For a more serious -application, you should probably use [a library written in the language of your choice][libraries]. - -#### Checking granted scopes - -Users can edit the scopes you requested by directly changing the URL. This can grant your application less access than you originally asked for. Before making any requests with the token, check the scopes that were granted for the token by the user. For more information about requested and granted scopes, see "[Scopes for OAuth Apps](/developers/apps/scopes-for-oauth-apps#requested-scopes-and-granted-scopes)." - -The scopes that were granted are returned as a part of the response from -exchanging a token. - -``` ruby -get '/callback' do - # ... - # Get the access_token using the code sample above - # ... - - # check if we were granted user:email scope - scopes = JSON.parse(result)['scope'].split(',') - has_user_email_scope = scopes.include? 'user:email' -end -``` - -In our application, we're using `scopes.include?` to check if we were granted -the `user:email` scope needed for fetching the authenticated user's private -email addresses. Had the application asked for other scopes, we would have -checked for those as well. - -Also, since there's a hierarchical relationship between scopes, you should -check that you were granted the lowest level of required scopes. For example, -if the application had asked for `user` scope, it might have been granted only -`user:email` scope. In that case, the application wouldn't have been granted -what it asked for, but the granted scopes would have still been sufficient. - -Checking for scopes only before making requests is not enough since it's possible -that users will change the scopes in between your check and the actual request. -In case that happens, API calls you expected to succeed might fail with a `404` -or `401` status, or return a different subset of information. - -To help you gracefully handle these situations, all API responses for requests -made with valid tokens also contain an [`X-OAuth-Scopes` header][oauth scopes]. -This header contains the list of scopes of the token that was used to make the -request. In addition to that, the OAuth Applications API provides an endpoint to {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -[check a token for validity][/v3/apps/oauth_applications/#check-a-token]{% else %}[check a token for validity][/v3/apps/oauth_applications/#check-an-authorization]{% endif %}. -Use this information to detect changes in token scopes, and inform your users of -changes in available application functionality. - -#### Making authenticated requests - -At last, with this access token, you'll be able to make authenticated requests as -the logged in user: - -``` ruby -# fetch user information -auth_result = JSON.parse(RestClient.get('{% data variables.product.api_url_code %}/user', - {:params => {:access_token => access_token}})) - -# if the user authorized it, fetch private emails -if has_user_email_scope - auth_result['private_emails'] = - JSON.parse(RestClient.get('{% data variables.product.api_url_code %}/user/emails', - {:params => {:access_token => access_token}})) -end - -erb :basic, :locals => auth_result -``` - -We can do whatever we want with our results. In this case, we'll just dump them straight into _basic.erb_: - -``` erb -

Hello, <%= login %>!

-

- <% if !email.nil? && !email.empty? %> It looks like your public email address is <%= email %>. - <% else %> It looks like you don't have a public email. That's cool. - <% end %> -

-

- <% if defined? private_emails %> - With your permission, we were also able to dig up your private email addresses: - <%= private_emails.map{ |private_email_address| private_email_address["email"] }.join(', ') %> - <% else %> - Also, you're a bit secretive about your private email addresses. - <% end %> -

-``` - -### Implementing "persistent" authentication - -It'd be a pretty bad model if we required users to log into the app every single -time they needed to access the web page. For example, try navigating directly to -`http://localhost:4567/basic`. You'll get an error. - -What if we could circumvent the entire -"click here" process, and just _remember_ that, as long as the user's logged into -{% data variables.product.product_name %}, they should be able to access this application? Hold on to your hat, -because _that's exactly what we're going to do_. - -Our little server above is rather simple. In order to wedge in some intelligent -authentication, we're going to switch over to using sessions for storing tokens. -This will make authentication transparent to the user. - -Also, since we're persisting scopes within the session, we'll need to -handle cases when the user updates the scopes after we checked them, or revokes -the token. To do that, we'll use a `rescue` block and check that the first API -call succeeded, which verifies that the token is still valid. After that, we'll -check the `X-OAuth-Scopes` response header to verify that the user hasn't revoked -the `user:email` scope. - -Create a file called _advanced_server.rb_, and paste these lines into it: - -``` ruby -require 'sinatra' -require 'rest_client' -require 'json' - -# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!! -# Instead, set and test environment variables, like below -# if ENV['GITHUB_CLIENT_ID'] && ENV['GITHUB_CLIENT_SECRET'] -# CLIENT_ID = ENV['GITHUB_CLIENT_ID'] -# CLIENT_SECRET = ENV['GITHUB_CLIENT_SECRET'] -# end - -CLIENT_ID = ENV['GH_BASIC_CLIENT_ID'] -CLIENT_SECRET = ENV['GH_BASIC_SECRET_ID'] - -use Rack::Session::Pool, :cookie_only => false - -def authenticated? - session[:access_token] -end - -def authenticate! - erb :index, :locals => {:client_id => CLIENT_ID} -end - -get '/' do - if !authenticated? - authenticate! - else - access_token = session[:access_token] - scopes = [] - - begin - auth_result = RestClient.get('{% data variables.product.api_url_code %}/user', - {:params => {:access_token => access_token}, - :accept => :json}) - rescue => e - # request didn't succeed because the token was revoked so we - # invalidate the token stored in the session and render the - # index page so that the user can start the OAuth flow again - - session[:access_token] = nil - return authenticate! - end - - # the request succeeded, so we check the list of current scopes - if auth_result.headers.include? :x_oauth_scopes - scopes = auth_result.headers[:x_oauth_scopes].split(', ') - end - - auth_result = JSON.parse(auth_result) - - if scopes.include? 'user:email' - auth_result['private_emails'] = - JSON.parse(RestClient.get('{% data variables.product.api_url_code %}/user/emails', - {:params => {:access_token => access_token}, - :accept => :json})) - end - - erb :advanced, :locals => auth_result - end -end - -get '/callback' do - session_code = request.env['rack.request.query_hash']['code'] - - result = RestClient.post('https://github.com/login/oauth/access_token', - {:client_id => CLIENT_ID, - :client_secret => CLIENT_SECRET, - :code => session_code}, - :accept => :json) - - session[:access_token] = JSON.parse(result)['access_token'] - - redirect '/' -end -``` - -Much of the code should look familiar. For example, we're still using `RestClient.get` -to call out to the {% data variables.product.product_name %} API, and we're still passing our results to be rendered -in an ERB template (this time, it's called `advanced.erb`). - -Also, we now have the `authenticated?` method which checks if the user is already -authenticated. If not, the `authenticate!` method is called, which performs the -OAuth flow and updates the session with the granted token and scopes. - -Next, create a file in _views_ called _advanced.erb_, and paste this markup into it: - -``` erb - - - - -

Well, well, well, <%= login %>!

-

- <% if !email.empty? %> It looks like your public email address is <%= email %>. - <% else %> It looks like you don't have a public email. That's cool. - <% end %> -

-

- <% if defined? private_emails %> - With your permission, we were also able to dig up your private email addresses: - <%= private_emails.map{ |private_email_address| private_email_address["email"] }.join(', ') %> - <% else %> - Also, you're a bit secretive about your private email addresses. - <% end %> -

- - -``` - -From the command line, call `ruby advanced_server.rb`, which starts up your -server on port `4567` -- the same port we used when we had a simple Sinatra app. -When you navigate to `http://localhost:4567`, the app calls `authenticate!` -which redirects you to `/callback`. `/callback` then sends us back to `/`, -and since we've been authenticated, renders _advanced.erb_. - -We could completely simplify this roundtrip routing by simply changing our callback -URL in {% data variables.product.product_name %} to `/`. But, since both _server.rb_ and _advanced.rb_ are relying on -the same callback URL, we've got to do a little bit of wonkiness to make it work. - -Also, if we had never authorized this application to access our {% data variables.product.product_name %} data, -we would've seen the same confirmation dialog from earlier pop-up and warn us. - -[webflow]: /apps/building-oauth-apps/authorizing-oauth-apps/ -[Sinatra]: http://www.sinatrarb.com/ -[about env vars]: http://en.wikipedia.org/wiki/Environment_variable#Getting_and_setting_environment_variables -[Sinatra guide]: https://github.com/sinatra/sinatra-book/blob/master/book/Introduction.markdown#hello-world-application -[REST Client]: https://github.com/archiloque/rest-client -[libraries]: /libraries/ -[oauth scopes]: /apps/building-oauth-apps/understanding-scopes-for-oauth-apps/ -[platform samples]: https://github.com/github/platform-samples/tree/master/api/ruby/basics-of-authentication -[new oauth app]: https://github.com/settings/applications/new -[app settings]: https://github.com/settings/developers diff --git a/content/rest/guides/best-practices-for-integrators.md b/content/rest/guides/best-practices-for-integrators.md deleted file mode 100644 index 19f5cc9c5137..000000000000 --- a/content/rest/guides/best-practices-for-integrators.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -title: Best practices for integrators -intro: 'Build an app that reliably interacts with the {% data variables.product.prodname_dotcom %} API and provides the best experience for your users.' -redirect_from: - - /guides/best-practices-for-integrators/ - - /v3/guides/best-practices-for-integrators -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -Interested in integrating with the GitHub platform? [You're in good company](https://github.com/integrations). This guide will help you build an app that provides the best experience for your users *and* ensure that it's reliably interacting with the API. - -### Secure payloads delivered from GitHub - -It's very important that you secure [the payloads sent from GitHub][event-types]. Although no personal information (like passwords) is ever transmitted in a payload, leaking *any* information is not good. Some information that might be sensitive include committer email address or the names of private repositories. - -There are several steps you can take to secure receipt of payloads delivered by GitHub: - -1. Ensure that your receiving server is on an HTTPS connection. By default, GitHub will verify SSL certificates when delivering payloads.{% if currentVersion == "free-pro-team@latest" %} -1. You can add [the IP address we use when delivering hooks](/github/authenticating-to-github/about-githubs-ip-addresses) to your server's allow list. To ensure that you're always checking the right IP address, you can [use the `/meta` endpoint](/v3/meta/#meta) to find the address we use.{% endif %} -1. Provide [a secret token](/webhooks/securing/) to ensure payloads are definitely coming from GitHub. By enforcing a secret token, you're ensuring that any data received by your server is absolutely coming from GitHub. Ideally, you should provide a different secret token *per user* of your service. That way, if one token is compromised, no other user would be affected. - -### Favor asynchronous work over synchronous - -GitHub expects that integrations respond within {% if currentVersion == "free-pro-team@latest" %}10{% else %}30{% endif %} seconds of receiving the webhook payload. If your service takes longer than that to complete, then GitHub terminates the connection and the payload is lost. - -Since it's impossible to predict how fast your service will complete, you should do all of "the real work" in a background job. [Resque](https://github.com/resque/resque/) (for Ruby), [RQ](http://python-rq.org/) (for Python), or [RabbitMQ](http://www.rabbitmq.com/) (for Java) are examples of libraries that can handle queuing and processing of background jobs. - -Note that even with a background job running, GitHub still expects your server to respond within {% if currentVersion == "free-pro-team@latest" %}ten{% else %}thirty{% endif %} seconds. Your server needs to acknowledge that it received the payload by sending some sort of response. It's critical that your service performs any validations on a payload as soon as possible, so that you can accurately report whether your server will continue with the request or not. - -### Use appropriate HTTP status codes when responding to GitHub - -Every webhook has its own "Recent Deliveries" section, which lists whether a deployment was successful or not. - -![Recent Deliveries view](/assets/images/webhooks_recent_deliveries.png) - -You should make use of proper HTTP status codes in order to inform users. You can use codes like `201` or `202` to acknowledge receipt of payload that won't be processed (for example, a payload delivered by a branch that's not the default). Reserve the `500` error code for catastrophic failures. - -### Provide as much information as possible to the user - -Users can dig into the server responses you send back to GitHub. Ensure that your messages are clear and informative. - -![Viewing a payload response](/assets/images/payload_response_tab.png) - -### Follow any redirects that the API sends you - -GitHub is explicit in telling you when a resource has moved by providing a redirect status code. You should follow these redirections. Every redirect response sets the `Location` header with the new URI to go to. If you receive a redirect, it's best to update your code to follow the new URI, in case you're requesting a deprecated path that we might remove. - -We've provided [a list of HTTP status codes](/v3/#http-redirects) to watch out for when designing your app to follow redirects. - -### Don't manually parse URLs - -Often, API responses contain data in the form of URLs. For example, when requesting a repository, we'll send a key called `clone_url` with a URL you can use to clone the repository. - -For the stability of your app, you shouldn't try to parse this data or try to guess and construct the format of future URLs. Your app is liable to break if we decide to change the URL. - -For example, when working with paginated results, it's often tempting to construct URLs that append `?page=` to the end. Avoid that temptation. [Our guide on pagination](/guides/traversing-with-pagination) offers some safe tips on dependably following paginated results. - -### Check the event type and action before processing the event - -There are multiple [webhook event types][event-types], and each event can have multiple actions. As GitHub's feature set grows, we will occasionally add new event types or add new actions to existing event types. Ensure that your application explicitly checks the type and action of an event before doing any webhook processing. The `X-GitHub-Event` request header can be used to know which event has been received so that processing can be handled appropriately. Similarly, the payload has a top-level `action` key that can be used to know which action was taken on the relevant object. - -For example, if you have configured a GitHub webhook to "Send me **everything**", your application will begin receiving new event types and actions as they are added. It is therefore **not recommended to use any sort of catch-all else clause**. Take the following code example: - -```ruby -# Not recommended: a catch-all else clause -def receive - event_type = request.headers["X-GitHub-Event"] - payload = request.body - - case event_type - when "repository" - process_repository(payload) - when "issues" - process_issues(payload) - else - process_pull_requests - end -end -``` - -In this code example, the `process_repository` and `process_issues` methods will be correctly called if a `repository` or `issues` event was received. However, any other event type would result in `process_pull_requests` being called. As new event types are added, this would result in incorrect behavior and new event types would be processed in the same way that a `pull_request` event would be processed. - -Instead, we suggest explicitly checking event types and acting accordingly. In the following code example, we explicitly check for a `pull_request` event and the `else` clause simply logs that we've received a new event type: - -```ruby -# Recommended: explicitly check each event type -def receive - event_type = request.headers["X-GitHub-Event"] - payload = JSON.parse(request.body) - - case event_type - when "repository" - process_repository(payload) - when "issues" - process_issue(payload) - when "pull_request" - process_pull_requests(payload) - else - puts "Oooh, something new from GitHub: #{event_type}" - end -end -``` - -Because each event can also have multiple actions, it's recommended that actions are checked similarly. For example, the [`IssuesEvent`](/webhooks/event-payloads/#issues) has several possible actions. These include `opened` when the issue is created, `closed` when the issue is closed, and `assigned` when the issue is assigned to someone. - -As with adding event types, we may add new actions to existing events. It is therefore again **not recommended to use any sort of catch-all else clause** when checking an event's action. Instead, we suggest explicitly checking event actions as we did with the event type. An example of this looks very similar to what we suggested for event types above: - -```ruby -# Recommended: explicitly check each action -def process_issue(payload) - case payload["action"] - when "opened" - process_issue_opened(payload) - when "assigned" - process_issue_assigned(payload) - when "closed" - process_issue_closed(payload) - else - puts "Oooh, something new from GitHub: #{payload["action"]}" - end -end -``` - -In this example the `closed` action is checked first before calling the `process_closed` method. Any unidentified actions are logged for future reference. - -{% if currentVersion == "free-pro-team@latest" %} - -### Dealing with rate limits - -The GitHub API [rate limit](/rest/overview/resources-in-the-rest-api#rate-limiting) ensures that the API is fast and available for everyone. - -If you hit a rate limit, it's expected that you back off from making requests and try again later when you're permitted to do so. Failure to do so may result in the banning of your app. - -You can always [check your rate limit status](/rest/reference/rate-limit) at any time. Checking your rate limit incurs no cost against your rate limit. - -### Dealing with abuse rate limits - -[Abuse rate limits](/rest/overview/resources-in-the-rest-api#abuse-rate-limits) are another way we ensure the API's availability. -To avoid hitting this limit, you should ensure your application follows the guidelines below. - -* Make authenticated requests, or use your application's client ID and secret. Unauthenticated - requests are subject to more aggressive abuse rate limiting. -* Make requests for a single user or client ID serially. Do not make requests for a single user - or client ID concurrently. -* If you're making a large number of `POST`, `PATCH`, `PUT`, or `DELETE` requests for a single user - or client ID, wait at least one second between each request. -* When you have been limited, use the `Retry-After` response header to slow down. The value of the - `Retry-After` header will always be an integer, representing the number of seconds you should wait - before making requests again. For example, `Retry-After: 30` means you should wait 30 seconds - before sending more requests. -* Requests that create content which triggers notifications, such as issues, comments and pull requests, - may be further limited and will not include a `Retry-After` header in the response. Please create this - content at a reasonable pace to avoid further limiting. - -We reserve the right to change these guidelines as needed to ensure availability. - -{% endif %} - -### Dealing with API errors - -Although your code would never introduce a bug, you may find that you've encountered successive errors when trying to access the API. - -Rather than ignore repeated `4xx` and `5xx` status codes, you should ensure that you're correctly interacting with the API. For example, if an endpoint requests a string and you're passing it a numeric value, you're going to receive a `5xx` validation error, and your call won't succeed. Similarly, attempting to access an unauthorized or nonexistent endpoint will result in a `4xx` error. - -Intentionally ignoring repeated validation errors may result in the suspension of your app for abuse. - -[event-types]: /webhooks/event-payloads diff --git a/content/rest/guides/building-a-ci-server.md b/content/rest/guides/building-a-ci-server.md deleted file mode 100644 index 9a6e10167732..000000000000 --- a/content/rest/guides/building-a-ci-server.md +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: Building a CI server -intro: Build your own CI system using the Status API. -redirect_from: - - /guides/building-a-ci-server/ - - /v3/guides/building-a-ci-server -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - - -The [Status API][status API] is responsible for tying together commits with -a testing service, so that every push you make can be tested and represented -in a {% data variables.product.product_name %} pull request. - -This guide will use that API to demonstrate a setup that you can use. -In our scenario, we will: - -* Run our CI suite when a Pull Request is opened (we'll set the CI status to pending). -* When the CI is finished, we'll set the Pull Request's status accordingly. - -Our CI system and host server will be figments of our imagination. They could be -Travis, Jenkins, or something else entirely. The crux of this guide will be setting up -and configuring the server managing the communication. - -If you haven't already, be sure to [download ngrok][ngrok], and learn how -to [use it][using ngrok]. We find it to be a very useful tool for exposing local -connections. - -Note: you can download the complete source code for this project -[from the platform-samples repo][platform samples]. - -### Writing your server - -We'll write a quick Sinatra app to prove that our local connections are working. -Let's start with this: - -``` ruby -require 'sinatra' -require 'json' - -post '/event_handler' do - payload = JSON.parse(params[:payload]) - "Well, it worked!" -end -``` - -(If you're unfamiliar with how Sinatra works, we recommend [reading the Sinatra guide][Sinatra].) - -Start this server up. By default, Sinatra starts on port `4567`, so you'll want -to configure ngrok to start listening for that, too. - -In order for this server to work, we'll need to set a repository up with a webhook. -The webhook should be configured to fire whenever a Pull Request is created, or merged. -Go ahead and create a repository you're comfortable playing around in. Might we -suggest [@octocat's Spoon/Knife repository](https://github.com/octocat/Spoon-Knife)? -After that, you'll create a new webhook in your repository, feeding it the URL -that ngrok gave you, and choosing `application/x-www-form-urlencoded` as the -content type: - -![A new ngrok URL](/assets/images/webhook_sample_url.png) - -Click **Update webhook**. You should see a body response of `Well, it worked!`. -Great! Click on **Let me select individual events**, and select the following: - -* Status -* Pull Request - -These are the events {% data variables.product.product_name %} will send to our server whenever the relevant action -occurs. Let's update our server to *just* handle the Pull Request scenario right now: - -``` ruby -post '/event_handler' do - @payload = JSON.parse(params[:payload]) - - case request.env['HTTP_X_GITHUB_EVENT'] - when "pull_request" - if @payload["action"] == "opened" - process_pull_request(@payload["pull_request"]) - end - end -end - -helpers do - def process_pull_request(pull_request) - puts "It's #{pull_request['title']}" - end -end -``` - -What's going on? Every event that {% data variables.product.product_name %} sends out attached a `X-GitHub-Event` -HTTP header. We'll only care about the PR events for now. From there, we'll -take the payload of information, and return the title field. In an ideal scenario, -our server would be concerned with every time a pull request is updated, not just -when it's opened. That would make sure that every new push passes the CI tests. -But for this demo, we'll just worry about when it's opened. - -To test out this proof-of-concept, make some changes in a branch in your test -repository, and open a pull request. Your server should respond accordingly! - -### Working with statuses - -With our server in place, we're ready to start our first requirement, which is -setting (and updating) CI statuses. Note that at any time you update your server, -you can click **Redeliver** to send the same payload. There's no need to make a -new pull request every time you make a change! - -Since we're interacting with the {% data variables.product.product_name %} API, we'll use [Octokit.rb][octokit.rb] -to manage our interactions. We'll configure that client with -[a personal access token][access token]: - -``` ruby -# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!! -# Instead, set and test environment variables, like below -ACCESS_TOKEN = ENV['MY_PERSONAL_TOKEN'] - -before do - @client ||= Octokit::Client.new(:access_token => ACCESS_TOKEN) -end -``` - -After that, we'll just need to update the pull request on {% data variables.product.product_name %} to make clear -that we're processing on the CI: - -``` ruby -def process_pull_request(pull_request) - puts "Processing pull request..." - @client.create_status(pull_request['base']['repo']['full_name'], pull_request['head']['sha'], 'pending') -end -``` - -We're doing three very basic things here: - -* we're looking up the full name of the repository -* we're looking up the last SHA of the pull request -* we're setting the status to "pending" - -That's it! From here, you can run whatever process you need to in order to execute -your test suite. Maybe you're going to pass off your code to Jenkins, or call -on another web service via its API, like [Travis][travis api]. After that, you'd -be sure to update the status once more. In our example, we'll just set it to `"success"`: - -``` ruby -def process_pull_request(pull_request) - @client.create_status(pull_request['base']['repo']['full_name'], pull_request['head']['sha'], 'pending') - sleep 2 # do busy work... - @client.create_status(pull_request['base']['repo']['full_name'], pull_request['head']['sha'], 'success') - puts "Pull request processed!" -end -``` - -### Conclusion - -At GitHub, we've used a version of [Janky][janky] to manage our CI for years. -The basic flow is essentially the exact same as the server we've built above. -At GitHub, we: - -* Fire to Jenkins when a pull request is created or updated (via Janky) -* Wait for a response on the state of the CI -* If the code is green, we merge the pull request - -All of this communication is funneled back to our chat rooms. You don't need to -build your own CI setup to use this example. -You can always rely on [GitHub integrations][integrations]. - -[deploy API]: /v3/repos/deployments/ -[status API]: /v3/repos/statuses/ -[ngrok]: https://ngrok.com/ -[using ngrok]: /webhooks/configuring/#using-ngrok -[platform samples]: https://github.com/github/platform-samples/tree/master/api/ruby/building-a-ci-server -[Sinatra]: http://www.sinatrarb.com/ -[webhook]: /webhooks/ -[octokit.rb]: https://github.com/octokit/octokit.rb -[access token]: /articles/creating-an-access-token-for-command-line-use -[travis api]: https://api.travis-ci.org/docs/ -[janky]: https://github.com/github/janky -[heaven]: https://github.com/atmos/heaven -[hubot]: https://github.com/github/hubot -[integrations]: https://github.com/integrations diff --git a/content/rest/guides/delivering-deployments.md b/content/rest/guides/delivering-deployments.md deleted file mode 100644 index c4187ee640ec..000000000000 --- a/content/rest/guides/delivering-deployments.md +++ /dev/null @@ -1,199 +0,0 @@ ---- -title: Delivering deployments -intro: 'Using the Deployments REST API, you can build custom tooling that interacts with your server and a third-party app.' -redirect_from: - - /guides/delivering-deployments/ - - /guides/automating-deployments-to-integrators/ - - /v3/guides/delivering-deployments -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - - -The [Deployments API][deploy API] provides your projects hosted on {% data variables.product.product_name %} with -the capability to launch them on a server that you own. Combined with -[the Status API][status API], you'll be able to coordinate your deployments -the moment your code lands on the default branch. - -This guide will use that API to demonstrate a setup that you can use. -In our scenario, we will: - -* Merge a pull request -* When the CI is finished, we'll set the pull request's status accordingly. -* When the pull request is merged, we'll run our deployment to our server. - -Our CI system and host server will be figments of our imagination. They could be -Heroku, Amazon, or something else entirely. The crux of this guide will be setting up -and configuring the server managing the communication. - -If you haven't already, be sure to [download ngrok][ngrok], and learn how -to [use it][using ngrok]. We find it to be a very useful tool for exposing local -connections. - -Note: you can download the complete source code for this project -[from the platform-samples repo][platform samples]. - -### Writing your server - -We'll write a quick Sinatra app to prove that our local connections are working. -Let's start with this: - -``` ruby -require 'sinatra' -require 'json' - -post '/event_handler' do - payload = JSON.parse(params[:payload]) - "Well, it worked!" -end -``` - -(If you're unfamiliar with how Sinatra works, we recommend [reading the Sinatra guide][Sinatra].) - -Start this server up. By default, Sinatra starts on port `4567`, so you'll want -to configure ngrok to start listening for that, too. - -In order for this server to work, we'll need to set a repository up with a webhook. -The webhook should be configured to fire whenever a pull request is created, or merged. -Go ahead and create a repository you're comfortable playing around in. Might we -suggest [@octocat's Spoon/Knife repository](https://github.com/octocat/Spoon-Knife)? -After that, you'll create a new webhook in your repository, feeding it the URL -that ngrok gave you, and choosing `application/x-www-form-urlencoded` as the -content type: - -![A new ngrok URL](/assets/images/webhook_sample_url.png) - -Click **Update webhook**. You should see a body response of `Well, it worked!`. -Great! Click on **Let me select individual events.**, and select the following: - -* Deployment -* Deployment status -* Pull Request - -These are the events {% data variables.product.product_name %} will send to our server whenever the relevant action -occurs. We'll configure our server to *just* handle when pull requests are merged -right now: - -``` ruby -post '/event_handler' do - @payload = JSON.parse(params[:payload]) - - case request.env['HTTP_X_GITHUB_EVENT'] - when "pull_request" - if @payload["action"] == "closed" && @payload["pull_request"]["merged"] - puts "A pull request was merged! A deployment should start now..." - end - end -end -``` - -What's going on? Every event that {% data variables.product.product_name %} sends out attached a `X-GitHub-Event` -HTTP header. We'll only care about the PR events for now. When a pull request is -merged (its state is `closed`, and `merged` is `true`), we'll kick off a deployment. - -To test out this proof-of-concept, make some changes in a branch in your test -repository, open a pull request, and merge it. Your server should respond accordingly! - -### Working with deployments - -With our server in place, the code being reviewed, and our pull request -merged, we want our project to be deployed. - -We'll start by modifying our event listener to process pull requests when they're -merged, and start paying attention to deployments: - -``` ruby -when "pull_request" - if @payload["action"] == "closed" && @payload["pull_request"]["merged"] - start_deployment(@payload["pull_request"]) - end -when "deployment" - process_deployment(@payload) -when "deployment_status" - update_deployment_status -end -``` - -Based on the information from the pull request, we'll start by filling out the -`start_deployment` method: - -``` ruby -def start_deployment(pull_request) - user = pull_request['user']['login'] - payload = JSON.generate(:environment => 'production', :deploy_user => user) - @client.create_deployment(pull_request['head']['repo']['full_name'], pull_request['head']['sha'], {:payload => payload, :description => "Deploying my sweet branch"}) -end -``` - -Deployments can have some metadata attached to them, in the form of a `payload` -and a `description`. Although these values are optional, it's helpful to use -for logging and representing information. - -When a new deployment is created, a completely separate event is triggered. That's -why we have a new `switch` case in the event handler for `deployment`. You can -use this information to be notified when a deployment has been triggered. - -Deployments can take a rather long time, so we'll want to listen for various events, -such as when the deployment was created, and what state it's in. - -Let's simulate a deployment that does some work, and notice the effect it has on -the output. First, let's complete our `process_deployment` method: - -``` ruby -def process_deployment - payload = JSON.parse(@payload['payload']) - # you can send this information to your chat room, monitor, pager, etc. - puts "Processing '#{@payload['description']}' for #{payload['deploy_user']} to #{payload['environment']}" - sleep 2 # simulate work - @client.create_deployment_status("repos/#{@payload['repository']['full_name']}/deployments/#{@payload['id']}", 'pending') - sleep 2 # simulate work - @client.create_deployment_status("repos/#{@payload['repository']['full_name']}/deployments/#{@payload['id']}", 'success') -end -``` - -Finally, we'll simulate storing the status information as console output: - -``` ruby -def update_deployment_status - puts "Deployment status for #{@payload['id']} is #{@payload['state']}" -end -``` - -Let's break down what's going on. A new deployment is created by `start_deployment`, -which triggers the `deployment` event. From there, we call `process_deployment` -to simulate work that's going on. During that processing, we also make a call to -`create_deployment_status`, which lets a receiver know what's going on, as we -switch the status to `pending`. - -After the deployment is finished, we set the status to `success`. - -### Conclusion - -At GitHub, we've used a version of [Heaven][heaven] to manage -our deployments for years. The basic flow is essentially the exact same as the -server we've built above. At GitHub, we: - -* Wait for a response on the state of the CI -* If the code is green, we merge the pull request -* Heaven takes the merged code, and deploys it to our production and staging servers -* In the meantime, Heaven also notifies everyone about the build, via [Hubot][hubot] sitting in our chat rooms - -That's it! You don't need to build your own deployment setup to use this example. -You can always rely on [GitHub integrations][integrations]. - -[deploy API]: /v3/repos/deployments/ -[status API]: /guides/building-a-ci-server -[ngrok]: https://ngrok.com/ -[using ngrok]: /webhooks/configuring/#using-ngrok -[platform samples]: https://github.com/github/platform-samples/tree/master/api/ruby/delivering-deployments -[Sinatra]: http://www.sinatrarb.com/ -[webhook]: /webhooks/ -[octokit.rb]: https://github.com/octokit/octokit.rb -[access token]: /articles/creating-an-access-token-for-command-line-use -[travis api]: https://api.travis-ci.org/docs/ -[janky]: https://github.com/github/janky -[heaven]: https://github.com/atmos/heaven -[hubot]: https://github.com/github/hubot -[integrations]: https://github.com/integrations diff --git a/content/rest/guides/discovering-resources-for-a-user.md b/content/rest/guides/discovering-resources-for-a-user.md deleted file mode 100644 index 7615a18b4cd0..000000000000 --- a/content/rest/guides/discovering-resources-for-a-user.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Discovering resources for a user -intro: Learn how to find the repositories and organizations that your app can access for a user in a reliable way for your authenticated requests to the REST API. -redirect_from: - - /guides/discovering-resources-for-a-user/ - - /v3/guides/discovering-resources-for-a-user -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - - -When making authenticated requests to the {% data variables.product.product_name %} API, applications often need to fetch the current user's repositories and organizations. In this guide, we'll explain how to reliably discover those resources. - -To interact with the {% data variables.product.product_name %} API, we'll be using [Octokit.rb][octokit.rb]. You can find the complete source code for this project in the [platform-samples][platform samples] repository. - -### Getting started - -If you haven't already, you should read the ["Basics of Authentication"][basics-of-authentication] guide before working through the examples below. The examples below assume that you have [registered an OAuth application][register-oauth-app] and that your [application has an OAuth token for a user][make-authenticated-request-for-user]. - -### Discover the repositories that your app can access for a user - -In addition to having their own personal repositories, a user may be a collaborator on repositories owned by other users and organizations. Collectively, these are the repositories where the user has privileged access: either it's a private repository where the user has read or write access, or it's a public repository where the user has write access. - -[OAuth scopes][scopes] and [organization application policies][oap] determine which of those repositories your app can access for a user. Use the workflow below to discover those repositories. - -As always, first we'll require [GitHub's Octokit.rb][octokit.rb] Ruby library. Then we'll configure Octokit.rb to automatically handle [pagination][pagination] for us. - -``` ruby -require 'octokit' - -Octokit.auto_paginate = true -``` - -Next, we'll pass in our application's [OAuth token for a given user][make-authenticated-request-for-user]: - -``` ruby -# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!! -# Instead, set and test environment variables, like below. -client = Octokit::Client.new :access_token => ENV["OAUTH_ACCESS_TOKEN"] -``` - -Then, we're ready to fetch the [repositories that our application can access for the user][list-repositories-for-current-user]: - -``` ruby -client.repositories.each do |repository| - full_name = repository[:full_name] - has_push_access = repository[:permissions][:push] - - access_type = if has_push_access - "write" - else - "read-only" - end - - puts "User has #{access_type} access to #{full_name}." -end -``` - -### Discover the organizations that your app can access for a user - -Applications can perform all sorts of organization-related tasks for a user. To perform these tasks, the app needs an [OAuth authorization][scopes] with sufficient permission. For example, the `read:org` scope allows you to [list teams][list-teams], and the `user` scope lets you [publicize the user’s organization membership][publicize-membership]. Once a user has granted one or more of these scopes to your app, you're ready to fetch the user’s organizations. - -Just as we did when discovering repositories above, we'll start by requiring [GitHub's Octokit.rb][octokit.rb] Ruby library and configuring it to take care of [pagination][pagination] for us: - -``` ruby -require 'octokit' - -Octokit.auto_paginate = true -``` - -Next, we'll pass in our application's [OAuth token for a given user][make-authenticated-request-for-user] to initialize our API client: - -``` ruby -# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!! -# Instead, set and test environment variables, like below. -client = Octokit::Client.new :access_token => ENV["OAUTH_ACCESS_TOKEN"] -``` - -Then, we can [list the organizations that our application can access for the user][list-orgs-for-current-user]: - -``` ruby -client.organizations.each do |organization| - puts "User belongs to the #{organization[:login]} organization." -end -``` - -#### Don’t rely on public organizations - -If you've read the docs from cover to cover, you may have noticed an [API method for listing a user's public organization memberships][list-public-orgs]. Most applications should avoid this API method. This method only returns the user's public organization memberships, not their private organization memberships. - -As an application, you typically want all of the user's organizations (public and private) that your app is authorized to access. The workflow above will give you exactly that. - -[basics-of-authentication]: /v3/guides/basics-of-authentication/ -[list-public-orgs]: /v3/orgs/#list-organizations-for-a-user -[list-repositories-for-current-user]: /v3/repos/#list-repositories-for-the-authenticated-user -[list-orgs-for-current-user]: /v3/orgs/#list-organizations-for-the-authenticated-user -[list-teams]: /v3/teams/#list-teams -[make-authenticated-request-for-user]: /v3/guides/basics-of-authentication/#making-authenticated-requests -[oap]: https://developer.github.com/changes/2015-01-19-an-integrators-guide-to-organization-application-policies/ -[octokit.rb]: https://github.com/octokit/octokit.rb -[pagination]: /v3/#pagination -[platform samples]: https://github.com/github/platform-samples/tree/master/api/ruby/discovering-resources-for-a-user -[publicize-membership]: /v3/orgs/members/#set-public-organization-membership-for-the-authenticated-user -[register-oauth-app]: /v3/guides/basics-of-authentication/#registering-your-app -[scopes]: /apps/building-oauth-apps/understanding-scopes-for-oauth-apps/ diff --git a/content/rest/guides/getting-started-with-the-checks-api.md b/content/rest/guides/getting-started-with-the-checks-api.md deleted file mode 100644 index bd4c1a2e595a..000000000000 --- a/content/rest/guides/getting-started-with-the-checks-api.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Getting started with the Checks API -intro: 'The Check Runs API enables you to build GitHub Apps that run powerful checks against code changes in a repository. You can create apps that perform continuous integration, code linting, or code scanning services and provide detailed feedback on commits.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Overview - -Rather than binary pass/fail build statuses, GitHub Apps can report rich statuses, annotate lines of code with detailed information, and re-run tests. The Checks API functionality is available exclusively to your GitHub Apps. - -For an example of how to use the Checks API with a {% data variables.product.prodname_github_app %}, see "[Creating CI tests with the Checks API](/apps/quickstart-guides/creating-ci-tests-with-the-checks-api/)." - -### About check suites - -When someone pushes code to a repository, GitHub creates a check suite for the last commit. A check suite is a collection of the [check runs](/rest/reference/checks#check-runs) created by a single GitHub App for a specific commit. Check suites summarize the status and conclusion of the check runs that a suite includes. - -![Check suites workflow](/assets/images/check_suites.png) - -The check suite reports the highest priority check run `conclusion` in the check suite's `conclusion`. For example, if three check runs have conclusions of `timed_out`, `success`, and `neutral` the check suite conclusion will be `timed_out`. - -By default, GitHub creates a check suite automatically when code is pushed to the repository. This default flow sends the `check_suite` event (with `requested` action) to all GitHub App's that have the `checks:write` permission. When your GitHub App receives the `check_suite` event, it can create new check runs for the latest commit. GitHub automatically adds new check runs to the correct [check suite](/rest/reference/checks#check-suites) based on the check run's repository and SHA. - -If you don't want to use the default automatic flow, you can control when you create check suites. To change the default settings for the creation of check suites, use the [Update repository preferences for check suites](/rest/reference/checks#update-repository-preferences-for-check-suites) endpoint. All changes to the automatic flow settings are recorded in the audit log for the repository. If you have disabled the automatic flow, you can create a check suite using the [Create a check suite](/rest/reference/checks#create-a-check-suite) endpoint. You should continue to use the [Create a check run](/rest/reference/checks#create-a-check-run) endpoint to provide feedback on a commit. - -{% data reusables.apps.checks-availability %} - -To use the check suites API, the GitHub App must have the `checks:write` permission and can also subscribe to the [check_suite](/webhooks/event-payloads/#check_suite) webhook. - -{% data reusables.shortdesc.authenticating_github_app %} - -### About check runs - -A check run is an individual test that is part of a check suite. Each run includes a status and conclusion. - -![Check runs workflow](/assets/images/check_runs.png) - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -If a check run is in a incomplete state for more than 14 days, then the check run's `conclusion` becomes `stale` and appears on {% data variables.product.prodname_dotcom %} as stale with {% octicon "issue-reopened" aria-label="The issue-reopened icon" %}. Only {% data variables.product.prodname_dotcom %} can mark check runs as `stale`. For more information about possible conclusions of a check run, see the [`conclusion` parameter](/rest/reference/checks#create-a-check-run--parameters). -{% endif %} - -As soon as you receive the [`check_suite`](/webhooks/event-payloads/#check_suite) webhook, you can create the check run, even if the check is not complete. You can update the `status` of the check run as it completes with the values `queued`, `in_progress`, or `completed`, and you can update the `output` as more details become available. A check run can contain timestamps, a link to more details on your external site, detailed annotations for specific lines of code, and information about the analysis performed. - -![Check run annotation](/assets/images/check_run_annotations.png) - -A check can also be manually re-run in the GitHub UI. See "[About status checks](/articles/about-status-checks#checks)" for more details. When this occurs, the GitHub App that created the check run will receive the [`check_run`](/webhooks/event-payloads/#check_run) webhook requesting a new check run. If you create a check run without creating a check suite, GitHub creates the check suite for you automatically. - -{% data reusables.apps.checks-availability %} - -To use the Check Runs API, the GitHub App must have the `checks:write` permission and can also subscribe to the [check_run](/webhooks/event-payloads#check_run) webhook. - -### Check runs and requested actions - -When you set up a check run with requested actions (not to be confused with {% data variables.product.prodname_actions %}), you can display a button in the pull request view on {% data variables.product.prodname_dotcom %} that allows people to request your {% data variables.product.prodname_github_app %} to perform additional tasks. - -For example, a code linting app could use requested actions to display a button in a pull request to automatically fix detected syntax errors. - -To create a button that can request additional actions from your app, use the [`actions` object](/rest/reference/checks#create-a-check-run--parameters) when you [Create a check run](/rest/reference/checks/#create-a-check-run). For example, the `actions` object below displays a button in a pull request with the label "Fix this." The button appears after the check run completes. - - ```json - "actions": [{ - "label": "Fix this", - "description": "Let us fix that for you", - "identifier": "fix_errors" - }] - ``` - - ![Check run requested action button](/assets/images/github-apps/github_apps_checks_fix_this_button.png) - -When a user clicks the button, {% data variables.product.prodname_dotcom %} sends the [`check_run.requested_action` webhook](/webhooks/event-payloads/#check_run) to your app. When your app receives a `check_run.requested_action` webhook event, it can look for the `requested_action.identifier` key in the webhook payload to determine which button was clicked and perform the requested task. - -For a detailed example of how to set up requested actions with the Checks API, see "[Creating CI tests with the Checks API](/apps/quickstart-guides/creating-ci-tests-with-the-checks-api/#part-2-creating-the-octo-rubocop-ci-test)." diff --git a/content/rest/guides/getting-started-with-the-git-database-api.md b/content/rest/guides/getting-started-with-the-git-database-api.md deleted file mode 100644 index 778759991a30..000000000000 --- a/content/rest/guides/getting-started-with-the-git-database-api.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Getting started with the Git Database API -intro: 'The Git Database API gives you access to read and write raw Git objects to your Git database on {% data variables.product.product_name %} and to list and update your references (branch heads and tags).' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Overview - -This basically allows you to reimplement a lot of Git functionality over our API - by creating raw objects directly into the database and updating branch references you could technically do just about anything that Git can do without having Git installed. - -Git Database API functions will return a `409 Conflict` if the Git repository is empty -or unavailable. An unavailable repository typically means {% data variables.product.product_name %} is in the process of creating the repository. For an empty repository, you can use the "[Create or update file contents](/v3/repos/contents/#create-or-update-file-contents)" endpoint to create content and initialize the repository so you can use the Git Database API. Contact {% data variables.contact.contact_support %} if this response status persists. - -![git database overview](/assets/images/git-database-overview.png) - -For more information on the Git object database, please read the -[Git Internals](http://git-scm.com/book/en/v1/Git-Internals) chapter of -the Pro Git book. - -As an example, if you wanted to commit a change to a file in your -repository, you would: - -* Get the current commit object -* Retrieve the tree it points to -* Retrieve the content of the blob object that tree has for that particular file path -* Change the content somehow and post a new blob object with that new content, getting a blob SHA back -* Post a new tree object with that file path pointer replaced with your new blob SHA getting a tree SHA back -* Create a new commit object with the current commit SHA as the parent and the new tree SHA, getting a commit SHA back -* Update the reference of your branch to point to the new commit SHA - -It might seem complex, but it's actually pretty simple when you understand -the model and it opens up a ton of things you could potentially do with the API. - -### Checking mergeability of pull requests - -{% warning %} - -**Warning!** Please do not depend on using Git directly or [`GET /repos/{owner}/{repo}/git/refs/{ref}`](/v3/git/refs/#get-a-reference) for updates to `merge` Git refs, because this content becomes outdated without warning. - -{% endwarning %} - -A consuming API needs to explicitly request a pull request to create a _test_ merge commit. A _test_ merge commit is created when you view the pull request in the UI and the "Merge" button is displayed, or when you [get](/v3/pulls/#get-a-pull-request), [create](/v3/pulls/#create-a-pull-request), or [edit](/v3/pulls/#update-a-pull-request) a pull request using the REST API. Without this request, the `merge` Git refs will fall out of date until the next time someone views the pull request. - -If you are currently using polling methods that produce outdated `merge` Git refs, then GitHub recommends using the following steps to get the latest changes from the default branch: - -1. Receive the pull request webhook. -2. Call [`GET /repos/{owner}/{repo}/pulls/{pull_number}`](/v3/pulls/#get-a-pull-request) to start a background job for creating the merge commit candidate. -3. Poll your repository using [`GET /repos/{owner}/{repo}/pulls/{pull_number}`](/v3/pulls/#get-a-pull-request) to see if the `mergeable` attribute is `true` or `false`. You can use Git directly or [`GET /repos/{owner}/{repo}/git/refs/{ref}`](/v3/git/refs/#get-a-reference) for updates to `merge` Git refs only after performing the previous steps. diff --git a/content/rest/guides/getting-started-with-the-rest-api.md b/content/rest/guides/getting-started-with-the-rest-api.md deleted file mode 100644 index 9edebf89f2a2..000000000000 --- a/content/rest/guides/getting-started-with-the-rest-api.md +++ /dev/null @@ -1,457 +0,0 @@ ---- -title: Getting started with the REST API -intro: 'Learn the foundations for using the REST API, starting with authentication and some endpoint examples.' -redirect_from: - - /guides/getting-started/ - - /v3/guides/getting-started -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -Let's walk through core API concepts as we tackle some everyday use cases. - -### Overview - -Most applications will use an existing [wrapper library][wrappers] in the language -of your choice, but it's important to familiarize yourself with the underlying API -HTTP methods first. - -There's no easier way to kick the tires than through [cURL][curl].{% if currentVersion == "free-pro-team@latest" %} If you are using -an alternative client, note that you are required to send a valid -[User Agent header](/rest/overview/resources-in-the-rest-api#user-agent-required) in your request.{% endif %} - -#### Hello World - -Let's start by testing our setup. Open up a command prompt and enter the -following command: - -```shell -$ curl {% data variables.product.api_url_pre %}/zen - -> Keep it logically awesome. -``` - -The response will be a random selection from our design philosophies. - -Next, let's `GET` [Chris Wanstrath's][defunkt github] [GitHub profile][users api]: - -```shell -# GET /users/defunkt -$ curl {% data variables.product.api_url_pre %}/users/defunkt - -> { -> "login": "defunkt", -> "id": 2, -> "url": "{% data variables.product.api_url_pre %}/users/defunkt", -> "html_url": "https://github.com/defunkt", -> ... -> } -``` - -Mmmmm, tastes like [JSON][json]. Let's add the `-i` flag to include headers: - -```shell -$ curl -i {% data variables.product.api_url_pre %}/users/defunkt - -> HTTP/1.1 200 OK -> Server: GitHub.com -> Date: Sun, 11 Nov 2012 18:43:28 GMT -> Content-Type: application/json; charset=utf-8 -> Status: 200 OK -> ETag: "bfd85cbf23ac0b0c8a29bee02e7117c6" -> X-RateLimit-Limit: 60 -> X-RateLimit-Remaining: 57 -> X-RateLimit-Reset: 1352660008 -> X-GitHub-Media-Type: github.v3 -> Vary: Accept -> Cache-Control: public, max-age=60, s-maxage=60 -> X-Content-Type-Options: nosniff -> Content-Length: 692 -> Last-Modified: Tue, 30 Oct 2012 18:58:42 GMT - -> { -> "login": "defunkt", -> "id": 2, -> "url": "{% data variables.product.api_url_pre %}/users/defunkt", -> "html_url": "https://github.com/defunkt", -> ... -> } -``` - -There are a few interesting bits in the response headers. As expected, the -`Content-Type` is `application/json`. - -Any headers beginning with `X-` are custom headers, and are not included in the -HTTP spec. For example: - -* `X-GitHub-Media-Type` has a value of `github.v3`. This lets us know the [media type][media types] -for the response. Media types have helped us version our output in API v3. We'll -talk more about that later. -* Take note of the `X-RateLimit-Limit` and `X-RateLimit-Remaining` headers. This -pair of headers indicate [how many requests a client can make][rate-limiting] in -a rolling time period (typically an hour) and how many of those requests the -client has already spent. - -### Authentication - -Unauthenticated clients can make 60 requests per hour. To get more requests per hour, we'll need to -_authenticate_. In fact, doing anything interesting with the {% data variables.product.product_name %} API requires -[authentication][authentication]. - -#### Using personal access tokens - -The easiest and best way to authenticate with the {% data variables.product.product_name %} API is by using Basic Authentication [via OAuth tokens](/rest/overview/other-authentication-methods#via-oauth-and-personal-access-tokens). OAuth tokens include [personal access tokens][personal token]. - -Use a `-u` flag to set your username: - -```shell -$ curl -i -u your_username {% data variables.product.api_url_pre %}/users/octocat - -``` - -When prompted, you can enter your OAuth token, but we recommend you set up a variable for it: - -You can use `-u "username:$token"` and set up a variable for `token` to avoid leaving your token in shell history, which should be avoided. - -```shell -$ curl -i -u username:$token {% data variables.product.api_url_pre %}/users/octocat - -``` - -When authenticating, you should see your rate limit bumped to 5,000 requests an hour, as indicated in the `X-RateLimit-Limit` header. In addition to providing more calls per hour, authentication enables you to read and write private information using the API. - -You can easily [create a **personal access token**][personal token] using your [Personal access tokens settings page][tokens settings]: - -![Personal Token selection](/assets/images/personal_token.png) - -#### Get your own user profile - -When properly authenticated, you can take advantage of the permissions -associated with your {% data variables.product.product_name %} account. For example, try getting -[your own user profile][auth user api]: - -```shell -$ curl -i -u your_username:your_token {% data variables.product.api_url_pre %}/user - -> { -> ... -> "plan": { -> "space": 2516582, -> "collaborators": 10, -> "private_repos": 20, -> "name": "medium" -> } -> ... -> } -``` - -This time, in addition to the same set of public information we -retrieved for [@defunkt][defunkt github] earlier, you should also see the non-public -information for your user profile. For example, you'll see a `plan` object -in the response which gives details about the {% data variables.product.product_name %} plan for the account. - -#### Using OAuth tokens for apps - -Apps that need to read or write private information using the API on behalf of another user should use [OAuth][oauth]. - -OAuth uses _tokens_. Tokens provide two big features: - -* **Revokable access**: users can revoke authorization to third party apps at any time -* **Limited access**: users can review the specific access that a token - will provide before authorizing a third party app - -Tokens should be created via a [web flow][webflow]. An application -sends users to {% data variables.product.product_name %} to log in. {% data variables.product.product_name %} then presents a dialog -indicating the name of the app, as well as the level of access the app -has once it's authorized by the user. After a user authorizes access, {% data variables.product.product_name %} -redirects the user back to the application: - -![GitHub's OAuth Prompt](/assets/images/oauth_prompt.png) - -**Treat OAuth tokens like passwords!** Don't share them with other users or store -them in insecure places. The tokens in these examples are fake and the names have -been changed to protect the innocent. - -Now that we've got the hang of making authenticated calls, let's move along to -the [Repositories API][repos-api]. - -### Repositories - -Almost any meaningful use of the {% data variables.product.product_name %} API will involve some level of Repository -information. We can [`GET` repository details][get repo] in the same way we fetched user -details earlier: - -```shell -$ curl -i {% data variables.product.api_url_pre %}/repos/twbs/bootstrap -``` - -In the same way, we can [view repositories for the authenticated user][user repos api]: - -```shell -$ curl -i -H "Authorization: token 5199831f4dd3b79e7c5b7e0ebe75d67aa66e79d4" \ - {% data variables.product.api_url_pre %}/user/repos -``` - -Or, we can [list repositories for another user][other user repos api]: - -```shell -$ curl -i {% data variables.product.api_url_pre %}/users/octocat/repos -``` - -Or, we can [list repositories for an organization][org repos api]: - -```shell -$ curl -i {% data variables.product.api_url_pre %}/orgs/octo-org/repos -``` - -The information returned from these calls will depend on which scopes our token has when we authenticate: - -* A token with `public_repo` [scope][scopes] returns a response that includes all public repositories we have access to see on github.com. -* A token with `repo` [scope][scopes] returns a response that includes all public and private repositories we have access to see on github.com. - -As the [docs][repos-api] indicate, these methods take a `type` parameter that -can filter the repositories returned based on what type of access the user has -for the repository. In this way, we can fetch only directly-owned repositories, -organization repositories, or repositories the user collaborates on via a team. - -```shell -$ curl -i "{% data variables.product.api_url_pre %}/users/octocat/repos?type=owner" -``` - -In this example, we grab only those repositories that octocat owns, not the -ones on which she collaborates. Note the quoted URL above. Depending on your -shell setup, cURL sometimes requires a quoted URL or else it ignores the -query string. - -#### Create a repository - -Fetching information for existing repositories is a common use case, but the -{% data variables.product.product_name %} API supports creating new repositories as well. To [create a repository][create repo], -we need to `POST` some JSON containing the details and configuration options. - -```shell -$ curl -i -H "Authorization: token 5199831f4dd3b79e7c5b7e0ebe75d67aa66e79d4" \ - -d '{ \ - "name": "blog", \ - "auto_init": true, \ - "private": true, \ - "gitignore_template": "nanoc" \ - }' \ - {% data variables.product.api_url_pre %}/user/repos -``` - -In this minimal example, we create a new repository for our blog (to be served -on [GitHub Pages][pages], perhaps). Though the blog will be public, we've made -the repository private. In this single step, we'll also initialize it with -a README and a [nanoc][nanoc]-flavored [.gitignore template][gitignore templates]. - -The resulting repository will be found at `https://github.com//blog`. -To create a repository under an organization for which you're -an owner, just change the API method from `/user/repos` to `/orgs//repos`. - -Next, let's fetch our newly created repository: - -```shell -$ curl -i {% data variables.product.api_url_pre %}/repos/pengwynn/blog - -> HTTP/1.1 404 Not Found - -> { -> "message": "Not Found" -> } -``` - -Oh noes! Where did it go? Since we created the repository as _private_, we need -to authenticate in order to see it. If you're a grizzled HTTP user, you might -expect a `403` instead. Since we don't want to leak information about private -repositories, the {% data variables.product.product_name %} API returns a `404` in this case, as if to say "we can -neither confirm nor deny the existence of this repository." - -### Issues - -The UI for Issues on {% data variables.product.product_name %} aims to provide 'just enough' workflow while -staying out of your way. With the {% data variables.product.product_name %} [Issues API][issues-api], you can pull -data out or create issues from other tools to create a workflow that works for -your team. - -Just like github.com, the API provides a few methods to view issues for the -authenticated user. To [see all your issues][get issues api], call `GET /issues`: - -```shell -$ curl -i -H "Authorization: token 5199831f4dd3b79e7c5b7e0ebe75d67aa66e79d4" \ - {% data variables.product.api_url_pre %}/issues -``` - -To get only the [issues under one of your {% data variables.product.product_name %} organizations][get issues api], call `GET -/orgs//issues`: - -```shell -$ curl -i -H "Authorization: token 5199831f4dd3b79e7c5b7e0ebe75d67aa66e79d4" \ - {% data variables.product.api_url_pre %}/orgs/rails/issues -``` - -We can also get [all the issues under a single repository][repo issues api]: - -```shell -$ curl -i {% data variables.product.api_url_pre %}/repos/rails/rails/issues -``` - -#### Pagination - -A project the size of Rails has thousands of issues. We'll need to [paginate][pagination], -making multiple API calls to get the data. Let's repeat that last call, this -time taking note of the response headers: - -```shell -$ curl -i {% data variables.product.api_url_pre %}/repos/rails/rails/issues - -> HTTP/1.1 200 OK - -> ... -> Link: <{% data variables.product.api_url_pre %}/repositories/8514/issues?page=2>; rel="next", <{% data variables.product.api_url_pre %}/repositories/8514/issues?page=30>; rel="last" -> ... -``` - -The [`Link` header][link-header] provides a way for a response to link to -external resources, in this case additional pages of data. Since our call found -more than thirty issues (the default page size), the API tells us where we can -find the next page and the last page of results. - -#### Creating an issue - -Now that we've seen how to paginate lists of issues, let's [create an issue][create issue] from -the API. - -To create an issue, we need to be authenticated, so we'll pass an -OAuth token in the header. Also, we'll pass the title, body, and labels in the JSON -body to the `/issues` path underneath the repository in which we want to create -the issue: - -```shell -$ curl -i -H 'Authorization: token 5199831f4dd3b79e7c5b7e0ebe75d67aa66e79d4' \ -$ -d '{ \ -$ "title": "New logo", \ -$ "body": "We should have one", \ -$ "labels": ["design"] \ -$ }' \ -$ {% data variables.product.api_url_pre %}/repos/pengwynn/api-sandbox/issues - -> HTTP/1.1 201 Created -> Location: {% data variables.product.api_url_pre %}/repos/pengwynn/api-sandbox/issues/17 -> X-RateLimit-Limit: 5000 - -> { -> "pull_request": { -> "patch_url": null, -> "html_url": null, -> "diff_url": null -> }, -> "created_at": "2012-11-14T15:25:33Z", -> "comments": 0, -> "milestone": null, -> "title": "New logo", -> "body": "We should have one", -> "user": { -> "login": "pengwynn", -> "gravatar_id": "7e19cd5486b5d6dc1ef90e671ba52ae0", -> "avatar_url": "https://secure.gravatar.com/avatar/7e19cd5486b5d6dc1ef90e671ba52ae0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png", -> "id": 865, -> "url": "{% data variables.product.api_url_pre %}/users/pengwynn" -> }, -> "closed_at": null, -> "updated_at": "2012-11-14T15:25:33Z", -> "number": 17, -> "closed_by": null, -> "html_url": "https://github.com/pengwynn/api-sandbox/issues/17", -> "labels": [ -> { -> "color": "ededed", -> "name": "design", -> "url": "{% data variables.product.api_url_pre %}/repos/pengwynn/api-sandbox/labels/design" -> } -> ], -> "id": 8356941, -> "assignee": null, -> "state": "open", -> "url": "{% data variables.product.api_url_pre %}/repos/pengwynn/api-sandbox/issues/17" -> } -``` - -The response gives us a couple of pointers to the newly created issue, both in -the `Location` response header and the `url` field of the JSON response. - -### Conditional requests - -A big part of being a good API citizen is respecting rate limits by caching information that hasn't changed. The API supports [conditional -requests][conditional-requests] and helps you do the right thing. Consider the -first call we made to get defunkt's profile: - -```shell -$ curl -i {% data variables.product.api_url_pre %}/users/defunkt - -> HTTP/1.1 200 OK -> ETag: "bfd85cbf23ac0b0c8a29bee02e7117c6" -``` - -In addition to the JSON body, take note of the HTTP status code of `200` and -the `ETag` header. -The [ETag][etag] is a fingerprint of the response. If we pass that on subsequent calls, -we can tell the API to give us the resource again, only if it has changed: - -```shell -$ curl -i -H 'If-None-Match: "bfd85cbf23ac0b0c8a29bee02e7117c6"' \ -$ {% data variables.product.api_url_pre %}/users/defunkt - -> HTTP/1.1 304 Not Modified -``` - -The `304` status indicates that the resource hasn't changed since the last time -we asked for it and the response will contain no body. As a bonus, `304` responses don't count against your [rate limit][rate-limiting]. - -Woot! Now you know the basics of the {% data variables.product.product_name %} API! - -* Basic & OAuth authentication -* Fetching and creating repositories and issues -* Conditional requests - -Keep learning with the next API guide [Basics of Authentication][auth guide]! - -[wrappers]: /libraries/ -[curl]: http://curl.haxx.se/ -[media types]: /rest/overview/media-types -[oauth]: /apps/building-integrations/setting-up-and-registering-oauth-apps/ -[webflow]: /apps/building-oauth-apps/authorizing-oauth-apps/ -[create a new authorization API]: /rest/reference/oauth-authorizations#create-a-new-authorization -[scopes]: /apps/building-oauth-apps/understanding-scopes-for-oauth-apps/ -[repos-api]: /v3/repos/ -[pages]: http://pages.github.com -[nanoc]: http://nanoc.ws/ -[gitignore templates]: https://github.com/github/gitignore -[issues-api]: /v3/issues/ -[link-header]: http://www.w3.org/wiki/LinkHeader/ -[conditional-requests]: /v3/#conditional-requests -[rate-limiting]: /v3/#rate-limiting -[users api]: /v3/users/#get-a-user -[auth user api]: /v3/users/#get-the-authenticated-user -[defunkt github]: https://github.com/defunkt -[json]: http://en.wikipedia.org/wiki/JSON -[authentication]: /v3/#authentication -[2fa]: /articles/about-two-factor-authentication -[2fa header]: /rest/overview/other-authentication-methods#working-with-two-factor-authentication -[oauth section]: /v3/guides/getting-started/#oauth -[personal token]: /articles/creating-an-access-token-for-command-line-use -[tokens settings]: https://github.com/settings/tokens -[pagination]: /v3/#pagination -[get repo]: /v3/repos/#get-a-repository -[create repo]: /v3/repos/#create-a-repository-for-the-authenticated-user -[create issue]: /v3/issues/#create-an-issue -[auth guide]: /guides/basics-of-authentication -[user repos api]: /v3/repos/#list-repositories-for-the-authenticated-user -[other user repos api]: /v3/repos/#list-repositories-for-a-user -[org repos api]: /v3/repos/#list-organization-repositories -[get issues api]: /v3/issues/#list-issues-assigned-to-the-authenticated-user -[repo issues api]: /v3/issues/#list-repository-issues -[etag]: http://en.wikipedia.org/wiki/HTTP_ETag -[2fa section]: /v3/guides/getting-started/#two-factor-authentication diff --git a/content/rest/guides/index.md b/content/rest/guides/index.md deleted file mode 100644 index c1cebd3f8862..000000000000 --- a/content/rest/guides/index.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Guides -intro: 'Learn about getting started with the REST API, authentication, and how to use the REST API for a variety of tasks.' -redirect_from: - - /guides/ - - /v3/guides -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - - -This section of the documentation is intended to get you up-and-running with -real-world {% data variables.product.product_name %} API applications. We'll cover everything you need to know, from -authentication, to manipulating results, to combining results with other apps. - -Every tutorial here will have a project, and every project will be -stored and documented in our public -[platform-samples](https://github.com/github/platform-samples) repository. - -![The Electrocat](/assets/images/electrocat.png) - -### Table of Contents - -{% link_in_list /getting-started-with-the-rest-api %} -{% link_in_list /basics-of-authentication %} -{% link_in_list /discovering-resources-for-a-user %} -{% link_in_list /delivering-deployments %} -{% link_in_list /rendering-data-as-graphs %} -{% link_in_list /working-with-comments %} -{% link_in_list /traversing-with-pagination %} -{% link_in_list /building-a-ci-server %} -{% link_in_list /best-practices-for-integrators %} -{% link_in_list /getting-started-with-the-git-database-api %} -{% link_in_list /getting-started-with-the-checks-api %} diff --git a/content/rest/guides/rendering-data-as-graphs.md b/content/rest/guides/rendering-data-as-graphs.md deleted file mode 100644 index 5684e5ba380a..000000000000 --- a/content/rest/guides/rendering-data-as-graphs.md +++ /dev/null @@ -1,376 +0,0 @@ ---- -title: Rendering data as graphs -intro: Learn how to visualize the programming languages from your repository using the D3.js library and Ruby Octokit. -redirect_from: - - /guides/rendering-data-as-graphs/ - - /v3/guides/rendering-data-as-graphs -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - - -In this guide, we're going to use the API to fetch information about repositories -that we own, and the programming languages that make them up. Then, we'll -visualize that information in a couple of different ways using the [D3.js][D3.js] library. To -interact with the {% data variables.product.product_name %} API, we'll be using the excellent Ruby library, [Octokit][Octokit]. - -If you haven't already, you should read the ["Basics of Authentication"][basics-of-authentication] -guide before starting this example. You can find the complete source code for this project in the [platform-samples][platform samples] repository. - -Let's jump right in! - -### Setting up an OAuth application - -First, [register a new application][new oauth application] on {% data variables.product.product_name %}. Set the main and callback -URLs to `http://localhost:4567/`. As [before][basics-of-authentication], we're going to handle authentication for the API by -implementing a Rack middleware using [sinatra-auth-github][sinatra auth github]: - -``` ruby -require 'sinatra/auth/github' - -module Example - class MyGraphApp < Sinatra::Base - # !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!! - # Instead, set and test environment variables, like below - # if ENV['GITHUB_CLIENT_ID'] && ENV['GITHUB_CLIENT_SECRET'] - # CLIENT_ID = ENV['GITHUB_CLIENT_ID'] - # CLIENT_SECRET = ENV['GITHUB_CLIENT_SECRET'] - # end - - CLIENT_ID = ENV['GH_GRAPH_CLIENT_ID'] - CLIENT_SECRET = ENV['GH_GRAPH_SECRET_ID'] - - enable :sessions - - set :github_options, { - :scopes => "repo", - :secret => CLIENT_SECRET, - :client_id => CLIENT_ID, - :callback_url => "/" - } - - register Sinatra::Auth::Github - - get '/' do - if !authenticated? - authenticate! - else - access_token = github_user["token"] - end - end - end -end -``` - -Set up a similar _config.ru_ file as in the previous example: - -``` ruby -ENV['RACK_ENV'] ||= 'development' -require "rubygems" -require "bundler/setup" - -require File.expand_path(File.join(File.dirname(__FILE__), 'server')) - -run Example::MyGraphApp -``` - -### Fetching repository information - -This time, in order to talk to the {% data variables.product.product_name %} API, we're going to use the [Octokit -Ruby library][Octokit]. This is much easier than directly making a bunch of -REST calls. Plus, Octokit was developed by a GitHubber, and is actively maintained, -so you know it'll work. - -Authentication with the API via Octokit is easy. Just pass your login -and token to the `Octokit::Client` constructor: - -``` ruby -if !authenticated? - authenticate! -else - octokit_client = Octokit::Client.new(:login => github_user.login, :oauth_token => github_user.token) -end -``` - -Let's do something interesting with the data about our repositories. We're going -to see the different programming languages they use, and count which ones are used -most often. To do that, we'll first need a list of our repositories from the API. -With Octokit, that looks like this: - -``` ruby -repos = client.repositories -``` - -Next, we'll iterate over each repository, and count the language that {% data variables.product.product_name %} -associates with it: - -``` ruby -language_obj = {} -repos.each do |repo| - # sometimes language can be nil - if repo.language - if !language_obj[repo.language] - language_obj[repo.language] = 1 - else - language_obj[repo.language] += 1 - end - end -end - -languages.to_s -``` - -When you restart your server, your web page should display something -that looks like this: - -``` ruby -{"JavaScript"=>13, "PHP"=>1, "Perl"=>1, "CoffeeScript"=>2, "Python"=>1, "Java"=>3, "Ruby"=>3, "Go"=>1, "C++"=>1} -``` - -So far, so good, but not very human-friendly. A visualization -would be great in helping us understand how these language counts are distributed. Let's feed -our counts into D3 to get a neat bar graph representing the popularity of the languages we use. - -### Visualizing language counts - -D3.js, or just D3, is a comprehensive library for creating many kinds of charts, graphs, and interactive visualizations. -Using D3 in detail is beyond the scope of this guide, but for a good introductory article, -check out ["D3 for Mortals"][D3 mortals]. - -D3 is a JavaScript library, and likes working with data as arrays. So, let's convert our Ruby hash into -a JSON array for use by JavaScript in the browser. - -``` ruby -languages = [] -language_obj.each do |lang, count| - languages.push :language => lang, :count => count -end - -erb :lang_freq, :locals => { :languages => languages.to_json} -``` - -We're simply iterating over each key-value pair in our object and pushing them into -a new array. The reason we didn't do this earlier is because we didn't want to iterate -over our `language_obj` object while we were creating it. - -Now, _lang_freq.erb_ is going to need some JavaScript to support rendering a bar graph. -For now, you can just use the code provided here, and refer to the resources linked above -if you want to learn more about how D3 works: - -``` html - - - - - - - - -

Check this sweet data out:

-
- - - - -``` - -Phew! Again, don't worry about what most of this code is doing. The relevant part -here is a line way at the top--`var data = <%= languages %>;`--which indicates -that we're passing our previously created `languages` array into ERB for manipulation. - -As the "D3 for Mortals" guide suggests, this isn't necessarily the best use of -D3. But it does serve to illustrate how you can use the library, along with Octokit, -to make some really amazing things. - -### Combining different API calls - -Now it's time for a confession: the `language` attribute within repositories -only identifies the "primary" language defined. That means that if you have -a repository that combines several languages, the one with the most bytes of code -is considered to be the primary language. - -Let's combine a few API calls to get a _true_ representation of which language -has the greatest number of bytes written across all our code. A [treemap][D3 treemap] -should be a great way to visualize the sizes of our coding languages used, rather -than simply the count. We'll need to construct an array of objects that looks -something like this: - -``` json -[ { "name": "language1", "size": 100}, - { "name": "language2", "size": 23} - ... -] -``` - -Since we already have a list of repositories above, let's inspect each one, and -call [the language listing API method][language API]: - -``` ruby -repos.each do |repo| - repo_name = repo.name - repo_langs = octokit_client.languages("#{github_user.login}/#{repo_name}") -end -``` - -From there, we'll cumulatively add each language found to a list of languages: - -``` ruby -repo_langs.each do |lang, count| - if !language_obj[lang] - language_obj[lang] = count - else - language_obj[lang] += count - end -end -``` - -After that, we'll format the contents into a structure that D3 understands: - -``` ruby -language_obj.each do |lang, count| - language_byte_count.push :name => "#{lang} (#{count})", :count => count -end - -# some mandatory formatting for D3 -language_bytes = [ :name => "language_bytes", :elements => language_byte_count] -``` - -(For more information on D3 tree map magic, check out [this simple tutorial][language API].) - -To wrap up, we pass this JSON information over to the same ERB template: - -``` ruby -erb :lang_freq, :locals => { :languages => languages.to_json, :language_byte_count => language_bytes.to_json} -``` - -Like before, here's a bunch of JavaScript that you can drop -directly into your template: - -``` html -
- -``` - -Et voila! Beautiful rectangles containing your repo languages, with relative -proportions that are easy to see at a glance. You might need to -tweak the height and width of your treemap, passed as the first two -arguments to `drawTreemap` above, to get all the information to show up properly. - - -[D3.js]: http://d3js.org/ -[basics-of-authentication]: /rest/guides/basics-of-authentication -[sinatra auth github]: https://github.com/atmos/sinatra_auth_github -[Octokit]: https://github.com/octokit/octokit.rb -[D3 mortals]: http://www.recursion.org/d3-for-mere-mortals/ -[D3 treemap]: http://bl.ocks.org/mbostock/4063582 -[language API]: /v3/repos/#list-repository-languages -[simple tree map]: http://2kittymafiasoftware.blogspot.com/2011/09/simple-treemap-visualization-with-d3.html -[platform samples]: https://github.com/github/platform-samples/tree/master/api/ruby/rendering-data-as-graphs -[new oauth application]: https://github.com/settings/applications/new diff --git a/content/rest/guides/traversing-with-pagination.md b/content/rest/guides/traversing-with-pagination.md deleted file mode 100644 index 60e74421d5a0..000000000000 --- a/content/rest/guides/traversing-with-pagination.md +++ /dev/null @@ -1,261 +0,0 @@ ---- -title: Traversing with pagination -intro: Explore how to use pagination to manage your responses with some examples using the Search API. -redirect_from: - - /guides/traversing-with-pagination/ - - /v3/guides/traversing-with-pagination -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - - -The {% data variables.product.product_name %} API provides a vast wealth of information for developers to consume. -Most of the time, you might even find that you're asking for _too much_ information, -and in order to keep our servers happy, the API will automatically [paginate the requested items][pagination]. - -In this guide, we'll make some calls to the {% data variables.product.product_name %} Search API, and iterate over -the results using pagination. You can find the complete source code for this project -in the [platform-samples][platform samples] repository. - -### Basics of Pagination - -To start with, it's important to know a few facts about receiving paginated items: - -1. Different API calls respond with different defaults. For example, a call to -[List public repositories](/v3/repos/#list-public-repositories) -provides paginated items in sets of 30, whereas a call to the GitHub Search API -provides items in sets of 100 -2. You can specify how many items to receive (up to a maximum of 100); but, -3. For technical reasons, not every endpoint behaves the same. For example, -[events](/v3/activity/events/) won't let you set a maximum for items to receive. -Be sure to read the documentation on how to handle paginated results for specific endpoints. - -Information about pagination is provided in [the Link header](http://tools.ietf.org/html/rfc5988) -of an API call. For example, let's make a curl request to the search API, to find -out how many times Mozilla projects use the phrase `addClass`: - -```shell -$ curl -I "{% data variables.product.api_url_pre %}/search/code?q=addClass+user:mozilla" -``` - -The `-I` parameter indicates that we only care about the headers, not the actual -content. In examining the result, you'll notice some information in the Link header -that looks like this: - - Link: <{% data variables.product.api_url_code %}/search/code?q=addClass+user%3Amozilla&page=2>; rel="next", - <{% data variables.product.api_url_code %}/search/code?q=addClass+user%3Amozilla&page=34>; rel="last" - -Let's break that down. `rel="next"` says that the next page is `page=2`. This makes -sense, since by default, all paginated queries start at page `1.` `rel="last"` -provides some more information, stating that the last page of results is on page `34`. -Thus, we have 33 more pages of information about `addClass` that we can consume. -Nice! - -**Always** rely on these link relations provided to you. Don't try to guess or construct your own URL. - -#### Navigating through the pages - -Now that you know how many pages there are to receive, you can start navigating -through the pages to consume the results. You do this by passing in a `page` -parameter. By default, `page` always starts at `1`. Let's jump ahead to page 14 -and see what happens: - -```shell -$ curl -I "{% data variables.product.api_url_pre %}/search/code?q=addClass+user:mozilla&page=14" -``` - -Here's the link header once more: - - Link: <{% data variables.product.api_url_code %}/search/code?q=addClass+user%3Amozilla&page=15>; rel="next", - <{% data variables.product.api_url_code %}/search/code?q=addClass+user%3Amozilla&page=34>; rel="last", - <{% data variables.product.api_url_code %}/search/code?q=addClass+user%3Amozilla&page=1>; rel="first", - <{% data variables.product.api_url_code %}/search/code?q=addClass+user%3Amozilla&page=13>; rel="prev" - -As expected, `rel="next"` is at 15, and `rel="last"` is still 34. But now we've -got some more information: `rel="first"` indicates the URL for the _first_ page, -and more importantly, `rel="prev"` lets you know the page number of the previous -page. Using this information, you could construct some UI that lets users jump -between the first, previous, next, or last list of results in an API call. - -#### Changing the number of items received - -By passing the `per_page` parameter, you can specify how many items you want -each page to return, up to 100 items. Let's try asking for 50 items about `addClass`: - -```shell -$ curl -I "{% data variables.product.api_url_pre %}/search/code?q=addClass+user:mozilla&per_page=50" -``` - -Notice what it does to the header response: - - Link: <{% data variables.product.api_url_code %}/search/code?q=addClass+user%3Amozilla&per_page=50&page=2>; rel="next", - <{% data variables.product.api_url_code %}/search/code?q=addClass+user%3Amozilla&per_page=50&page=20>; rel="last" - -As you might have guessed, the `rel="last"` information says that the last page -is now 20. This is because we are asking for more information per page about -our results. - -### Consuming the information - -You don't want to be making low-level curl calls just to be able to work with -pagination, so let's write a little Ruby script that does everything we've -just described above. - -As always, first we'll require [GitHub's Octokit.rb][octokit.rb] Ruby library, and -pass in our [personal access token][personal token]: - -``` ruby -require 'octokit' - -# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!! -# Instead, set and test environment variables, like below -client = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN'] -``` - -Next, we'll execute the search, using Octokit's `search_code` method. Unlike -using `curl`, we can also immediately retrieve the number of results, so let's -do that: - -``` ruby -results = client.search_code('addClass user:mozilla') -total_count = results.total_count -``` - -Now, let's grab the number of the last page, similar to `page=34>; rel="last"` -information in the link header. Octokit.rb support pagination information through -an implementation called "[Hypermedia link relations][hypermedia-relations]." -We won't go into detail about what that is, but, suffice to say, each element -in the `results` variable has a hash called `rels`, which can contain information -about `:next`, `:last`, `:first`, and `:prev`, depending on which result you're -on. These relations also contain information about the resulting URL, by calling -`rels[:last].href`. - -Knowing this, let's grab the page number of the last result, and present all -this information to the user: - -``` ruby -last_response = client.last_response -number_of_pages = last_response.rels[:last].href.match(/page=(\d+).*$/)[1] - -puts "There are #{total_count} results, on #{number_of_pages} pages!" -``` - -Finally, let's iterate through the results. You could do this with a loop `for i in 1..number_of_pages.to_i`, -but instead, let's follow the `rels[:next]` headers to retrieve information from -each page. For the sake of simplicity, let's just grab the file path of the first -result from each page. To do this, we'll need a loop; and at the end of every loop, -we'll retrieve the data set for the next page by following the `rels[:next]` information. -The loop will finish when there is no `rels[:next]` information to consume (in other -words, we are at `rels[:last]`). It might look something like this: - -``` ruby -puts last_response.data.items.first.path -until last_response.rels[:next].nil? - last_response = last_response.rels[:next].get - puts last_response.data.items.first.path -end -``` - -Changing the number of items per page is extremely simple with Octokit.rb. Simply -pass a `per_page` options hash to the initial client construction. After that, -your code should remain intact: - -``` ruby -require 'octokit' - -# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!! -# Instead, set and test environment variables, like below -client = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN'] - -results = client.search_code('addClass user:mozilla', :per_page => 100) -total_count = results.total_count - -last_response = client.last_response -number_of_pages = last_response.rels[:last].href.match(/page=(\d+).*$/)[1] - -puts last_response.rels[:last].href -puts "There are #{total_count} results, on #{number_of_pages} pages!" - -puts "And here's the first path for every set" - -puts last_response.data.items.first.path -until last_response.rels[:next].nil? - last_response = last_response.rels[:next].get - puts last_response.data.items.first.path -end -``` - -### Constructing Pagination Links - -Normally, with pagination, your goal isn't to concatenate all of the possible -results, but rather, to produce a set of navigation, like this: - -![Sample of pagination links](/assets/images/pagination_sample.png) - -Let's sketch out a micro-version of what that might entail. - -From the code above, we already know we can get the `number_of_pages` in the -paginated results from the first call: - -``` ruby -require 'octokit' - -# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!! -# Instead, set and test environment variables, like below -client = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN'] - -results = client.search_code('addClass user:mozilla') -total_count = results.total_count - -last_response = client.last_response -number_of_pages = last_response.rels[:last].href.match(/page=(\d+).*$/)[1] - -puts last_response.rels[:last].href -puts "There are #{total_count} results, on #{number_of_pages} pages!" -``` - -From there, we can construct a beautiful ASCII representation of the number boxes: -``` ruby -numbers = "" -for i in 1..number_of_pages.to_i - numbers << "[#{i}] " -end -puts numbers -``` - -Let's simulate a user clicking on one of these boxes, by constructing a random -number: - -``` ruby -random_page = Random.new -random_page = random_page.rand(1..number_of_pages.to_i) - -puts "A User appeared, and clicked number #{random_page}!" -``` - -Now that we have a page number, we can use Octokit to explicitly retrieve that -individual page, by passing the `:page` option: - -``` ruby -clicked_results = client.search_code('addClass user:mozilla', :page => random_page) -``` - -If we wanted to get fancy, we could also grab the previous and next pages, in -order to generate links for back (`<<`) and forward (`>>`) elements: - -``` ruby -prev_page_href = client.last_response.rels[:prev] ? client.last_response.rels[:prev].href : "(none)" -next_page_href = client.last_response.rels[:next] ? client.last_response.rels[:next].href : "(none)" - -puts "The prev page link is #{prev_page_href}" -puts "The next page link is #{next_page_href}" -``` - -[pagination]: /v3/#pagination -[platform samples]: https://github.com/github/platform-samples/tree/master/api/ruby/traversing-with-pagination -[octokit.rb]: https://github.com/octokit/octokit.rb -[personal token]: /articles/creating-an-access-token-for-command-line-use -[hypermedia-relations]: https://github.com/octokit/octokit.rb#pagination -[listing commits]: /v3/repos/commits/#list-commits diff --git a/content/rest/guides/working-with-comments.md b/content/rest/guides/working-with-comments.md deleted file mode 100644 index 81b0465ca43d..000000000000 --- a/content/rest/guides/working-with-comments.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Working with comments -intro: 'Using the REST API, you can access and manage comments in your pull requests, issues, or commits.' -redirect_from: - - /guides/working-with-comments/ - - /v3/guides/working-with-comments -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - - -For any Pull Request, {% data variables.product.product_name %} provides three kinds of comment views: -[comments on the Pull Request][PR comment] as a whole, [comments on a specific line][PR line comment] within the Pull Request, -and [comments on a specific commit][commit comment] within the Pull Request. - -Each of these types of comments goes through a different portion of the {% data variables.product.product_name %} API. -In this guide, we'll explore how you can access and manipulate each one. For every -example, we'll be using [this sample Pull Request made][sample PR] on the "octocat" -repository. As always, samples can be found in [our platform-samples repository][platform-samples]. - -### Pull Request Comments - -To access comments on a Pull Request, you'll go through [the Issues API][issues]. -This may seem counterintuitive at first. But once you understand that a Pull -Request is just an Issue with code, it makes sense to use the Issues API to -create comments on a Pull Request. - -We'll demonstrate fetching Pull Request comments by creating a Ruby script using -[Octokit.rb][octokit.rb]. You'll also want to create a [personal access token][personal token]. - -The following code should help you get started accessing comments from a Pull Request -using Octokit.rb: - -``` ruby -require 'octokit' - -# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!! -# Instead, set and test environment variables, like below -client = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN'] - -client.issue_comments("octocat/Spoon-Knife", 1176).each do |comment| - username = comment[:user][:login] - post_date = comment[:created_at] - content = comment[:body] - - puts "#{username} made a comment on #{post_date}. It says:\n'#{content}'\n" -end -``` - -Here, we're specifically calling out to the Issues API to get the comments (`issue_comments`), -providing both the repository's name (`octocat/Spoon-Knife`), and the Pull Request ID -we're interested in (`1176`). After that, it's simply a matter of iterating through -the comments to fetch information about each one. - -### Pull Request Comments on a Line - -Within the diff view, you can start a discussion on a particular aspect of a singular -change made within the Pull Request. These comments occur on the individual lines -within a changed file. The endpoint URL for this discussion comes from [the Pull Request Review API][PR Review API]. - -The following code fetches all the Pull Request comments made on files, given a single Pull Request number: - -``` ruby -require 'octokit' - -# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!! -# Instead, set and test environment variables, like below -client = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN'] - -client.pull_request_comments("octocat/Spoon-Knife", 1176).each do |comment| - username = comment[:user][:login] - post_date = comment[:created_at] - content = comment[:body] - path = comment[:path] - position = comment[:position] - - puts "#{username} made a comment on #{post_date} for the file called #{path}, on line #{position}. It says:\n'#{content}'\n" -end -``` - -You'll notice that it's incredibly similar to the example above. The difference -between this view and the Pull Request comment is the focus of the conversation. -A comment made on a Pull Request should be reserved for discussion or ideas on -the overall direction of the code. A comment made as part of a Pull Request review should -deal specifically with the way a particular change was implemented within a file. - -### Commit Comments - -The last type of comments occur specifically on individual commits. For this reason, -they make use of [the commit comment API][commit comment API]. - -To retrieve the comments on a commit, you'll want to use the SHA1 of the commit. -In other words, you won't use any identifier related to the Pull Request. Here's an example: - -``` ruby -require 'octokit' - -# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!! -# Instead, set and test environment variables, like below -client = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN'] - -client.commit_comments("octocat/Spoon-Knife", "cbc28e7c8caee26febc8c013b0adfb97a4edd96e").each do |comment| - username = comment[:user][:login] - post_date = comment[:created_at] - content = comment[:body] - - puts "#{username} made a comment on #{post_date}. It says:\n'#{content}'\n" -end -``` - -Note that this API call will retrieve single line comments, as well as comments made -on the entire commit. - -[PR comment]: https://github.com/octocat/Spoon-Knife/pull/1176#issuecomment-24114792 -[PR line comment]: https://github.com/octocat/Spoon-Knife/pull/1176#discussion_r6252889 -[commit comment]: https://github.com/octocat/Spoon-Knife/commit/cbc28e7c8caee26febc8c013b0adfb97a4edd96e#commitcomment-4049848 -[sample PR]: https://github.com/octocat/Spoon-Knife/pull/1176 -[platform-samples]: https://github.com/github/platform-samples/tree/master/api/ruby/working-with-comments -[issues]: /v3/issues/comments/ -[personal token]: /articles/creating-an-access-token-for-command-line-use -[octokit.rb]: https://github.com/octokit/octokit.rb -[PR Review API]: /v3/pulls/comments/ -[commit comment API]: /v3/repos/comments/#get-a-commit-comment diff --git a/content/rest/index.md b/content/rest/index.md deleted file mode 100644 index bca0a3e92453..000000000000 --- a/content/rest/index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: GitHub REST API -shortTitle: REST API -intro: 'You can use the {% data variables.product.prodname_dotcom %} REST API to create calls to get the data you need to integrate with GitHub.' -redirect_from: - - /v3 -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% link_with_intro /overview %} -{% link_with_intro /reference %} -{% link_with_intro /guides %} diff --git a/content/rest/overview/api-previews.md b/content/rest/overview/api-previews.md deleted file mode 100644 index c8fcd6dd3bb5..000000000000 --- a/content/rest/overview/api-previews.md +++ /dev/null @@ -1,326 +0,0 @@ ---- -title: API previews -intro: You can use API previews to try out new features and provide feedback before these features become official. -redirect_from: - - /early-access/ - - /v3/previews -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -API previews let you try out new APIs and changes to existing API methods before they become part of the official GitHub API. - -During the preview period, we may change some features based on developer feedback. If we do make changes, we'll announce them on the [developer blog](https://developer.github.com/changes/) without advance notice. - -To access an API preview, you'll need to provide a custom [media type](/v3/media) in the `Accept` header for your requests. Feature documentation for each preview specifies which custom media type to provide. - -{% if currentVersion == "free-pro-team@latest" %} -### Migrations - -Allows you to download repositories from your GitHub user or organization account to review, backup, and [migrate](/v3/migrations/) data to {% data variables.product.prodname_ghe_server %}. - -**Custom media type:** `wyandotte-preview` -**Announced:** [2018-05-24](https://developer.github.com/changes/2018-05-24-user-migration-api/) -{% endif %} - -### Enhanced deployments - -Exercise greater control over [deployments](/rest/reference/repos#deployments) with more information and finer granularity. - -**Custom media type:** `ant-man-preview` -**Announced:** [2016-04-06](https://developer.github.com/changes/2016-04-06-deployment-and-deployment-status-enhancements/) - -### Reactions - -Manage [reactions](/v3/reactions/) for commits, issues, and comments. - -**Custom media type:** `squirrel-girl-preview` -**Announced:** [2016-05-12](https://developer.github.com/changes/2016-05-12-reactions-api-preview/) -**Update:** [2016-06-07](https://developer.github.com/changes/2016-06-07-reactions-api-update/) - -### Timeline - -Get a [list of events](/v3/issues/timeline/) for an issue or pull request. - -**Custom media type:** `mockingbird-preview` -**Announced:** [2016-05-23](https://developer.github.com/changes/2016-05-23-timeline-preview-api/) - -{% if enterpriseServerVersions contains currentVersion %} -### Pre-receive environments - -Create, list, update, and delete environments for pre-receive hooks. - -**Custom media type:** `eye-scream-preview` -**Announced:** [2015-07-29](/rest/reference/enterprise-admin#pre-receive-environments) -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} -### Integrations - -Manage [integrations](/early-access/integrations/) through the API. - -**Custom media type:** `machine-man-preview` -**Announced:** [2016-09-14](https://developer.github.com/changes/2016-09-14-Integrations-Early-Access/) -{% endif %} - -### Projects - -Manage [projects](/v3/projects/). - -**Custom media type:** `inertia-preview` -**Announced:** [2016-09-14](https://developer.github.com/changes/2016-09-14-projects-api/) -**Update:** [2016-10-27](https://developer.github.com/changes/2016-10-27-changes-to-projects-api/) - -### Commit search - -[Search commits](/v3/search/). - -**Custom media type:** `cloak-preview` -**Announced:** [2017-01-05](https://developer.github.com/changes/2017-01-05-commit-search-api/) - -{% if currentVersion == "free-pro-team@latest" %} -### Community profile metrics - -Retrieve [community profile metrics](/v3/repos/community/) (also known as community health) for any public repository. - -**Custom media type:** `black-panther-preview` -**Announced:** [2017-02-09](https://developer.github.com/changes/2017-02-09-community-health/) -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -### User blocking - -Users can [block other users](/v3/users/blocking/). Organizations can [block users](/v3/orgs/blocking/), too. - -**Custom media type:** `giant-sentry-fist-preview` -**Announced:** [2011-05-31](https://github.com/blog/862-block-the-bullies) -**Update 1:** [2016-04-04](https://github.com/blog/2146-organizations-can-now-block-abusive-users) -**Update 2:** [2016-08-17](https://github.com/blog/2229-see-the-users-you-ve-blocked-on-your-settings-page) -{% endif %} - -### Repository topics - -View a list of [repository topics](/articles/about-topics/) in [calls](/v3/repos/) that return repository results. - -**Custom media type:** `mercy-preview` -**Announced:** [2017-01-31](https://github.com/blog/2309-introducing-topics) - -### Codes of conduct - -View all [codes of conduct](/v3/codes_of_conduct) or get which code of conduct a repository has currently. - -**Custom media type:** `scarlet-witch-preview` - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.20" %} -### Nested teams - -Include nested team content in [team](/v3/teams/) payloads. - -**Custom media type:** `hellcat-preview` -**Announced:** [2017-09-01](https://developer.github.com/changes/2017-08-30-preview-nested-teams) - -{% endif %} - -{% if enterpriseServerVersions contains currentVersion %} - -### Global webhooks - -Enables [global webhooks](/rest/reference/enterprise-admin#global-webhooks/) for [organization](/webhooks/event-payloads/#organization) and [user](/webhooks/event-payloads/#user) event types. This API preview is only available for {% data variables.product.prodname_ghe_server %}. - -**Custom media type:** `superpro-preview` -**Announced:** [2017-12-12](/rest/reference/enterprise-admin#global-webhooks) - -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.20" %} -### Repository transfer - -Transfer a [repository](/v3/repos/) to an organization or user. - -**Custom media type:** `nightshade-preview` -**Announced:** [2017-11-09](https://developer.github.com/changes/2017-11-09-repository-transfer-api-preview) -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.22" %} -### Add lock reason - -You can now add a reason when you [lock an issue](/v3/issues/#lock-an-issue). - -**Custom media type:** `sailor-v-preview` -**Announced:** [2018-01-10](https://developer.github.com/changes/2018-01-10-lock-reason-api-preview) -{% endif %} - -### Require signed commits - -You can now use the API to manage the setting for [requiring signed commits on protected branches](/v3/repos/branches). - -**Custom media type:** `zzzax-preview` -**Announced:** [2018-02-22](https://developer.github.com/changes/2018-02-22-protected-branches-required-signatures) - -### Require multiple approving reviews - -You can now [require multiple approving reviews](/v3/repos/branches) for a pull request using the API. - -**Custom media type:** `luke-cage-preview` -**Announced:** [2018-03-16](https://developer.github.com/changes/2018-03-16-protected-branches-required-approving-reviews) - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.19" %} -### Retrieve hovercard information - -Retrieve information from [someone's hovercard](/v3/users/#get-contextual-information-for-a-user). - -**Custom media type:** `hagar-preview` -**Announced:** [2018-03-21](https://developer.github.com/changes/2018-03-21-hovercard-api-preview) - -{% endif %} - -{% if currentVersion ver_lt "enterprise-server@2.23" %} -### Check runs and check suites API - -Allows a GitHub App to run external checks on a repository's code. See the [Check runs](/v3/checks/runs/) and [Check suites](/v3/checks/suites/) APIs for more details. - -**Custom media type:** `antiope-preview` -**Announced:** [2018-05-07](https://developer.github.com/changes/2018-05-07-new-checks-api-public-beta/) -{% endif %} - -{% if enterpriseServerVersions contains currentVersion %} - -### Anonymous Git access to repositories - -When a {% data variables.product.prodname_ghe_server %} instance is in private mode, site and repository administrators can enable anonymous Git access for a public repository. - -**Custom media type:** `x-ray-preview` -**Announced:** [2018-07-12](https://blog.github.com/2018-07-12-introducing-enterprise-2-14/) - -{% endif %} - -### Project card details - -The REST API responses for [issue events](/v3/issues/events/) and [issue timeline events](/v3/issues/timeline/) now return the `project_card` field for project-related events. - -**Custom media type:** `starfox-preview` -**Announced:** [2018-09-05](https://developer.github.com/changes/2018-09-05-project-card-events) - -{% if currentVersion == "free-pro-team@latest" %} - -### GitHub App Manifests - -GitHub App Manifests allow people to create preconfigured GitHub Apps. See "[Creating GitHub Apps from a manifest](/apps/building-github-apps/creating-github-apps-from-a-manifest/)" for more details. - -**Custom media type:** `fury-preview` - -{% endif %} - -### Deployment statuses - -You can now update the `environment` of a [deployment status](/rest/reference/repos#create-a-deployment-status) and use the `in_progress` and `queued` states. When you create deployment statuses, you can now use the `auto_inactive` parameter to mark old `production` deployments as `inactive`. - -**Custom media type:** `flash-preview` -**Announced:** [2018-10-16](https://developer.github.com/changes/2018-10-16-deployments-environments-states-and-auto-inactive-updates/) - -### Repository creation permissions - -You can now configure whether organization members can create repositories and which types of repositories they can create. See "[Update an organization](/v3/orgs/#update-an-organization)" for more details. - -**Custom media types:** `surtur-preview` -**Announced:** [2019-12-03](https://developer.github.com/changes/2019-12-03-internal-visibility-changes/) - -### Content attachments - -You can now provide more information in GitHub for URLs that link to registered domains by using the {% data variables.product.prodname_unfurls %} API. See "[Using content attachments](/apps/using-content-attachments/)" for more details. - -**Custom media types:** `corsair-preview` -**Announced:** [2018-12-10](https://developer.github.com/changes/2018-12-10-content-attachments-api/) - -{% if currentVersion == "free-pro-team@latest" %} - -### Interaction restrictions for repositories and organizations - -Allows you to temporarily restrict interactions, such as commenting, opening issues, and creating pull requests, for {% data variables.product.product_name %} repositories or organizations. When enabled, only the specified group of {% data variables.product.product_name %} users will be able to participate in these interactions. See the [Repository interactions](/v3/interactions/repos/) and [Organization interactions](/v3/interactions/orgs/) APIs for more details. - -**Custom media type:** `sombra-preview` -**Announced:** [2018-12-18](https://developer.github.com/changes/2018-12-18-interactions-preview/) - -{% endif %} - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.21" %} -### Draft pull requests - -You can use the Draft Pull Requests API and its [pull request](/v3/pulls/) endpoints to see whether a pull request is in draft state. To learn more about draft pull requests, see "[About pull requests](/articles/about-pull-requests/)". - -**Custom media types:** `shadow-cat-preview` -**Announced:** [2019-02-14](https://developer.github.com/changes/2019-02-14-draft-pull-requests/) - -{% endif %} - -### Enable and disable Pages - -You can use the new endpoints in the [Pages API](/rest/reference/repos#pages) to enable or disable Pages. To learn more about Pages, see "[GitHub Pages Basics](/categories/github-pages-basics)". - -**Custom media types:** `switcheroo-preview` -**Announced:** [2019-03-14](https://developer.github.com/changes/2019-03-14-enabling-disabling-pages/) - -### List branches or pull requests for a commit - -You can use two new endpoints in the [Commits API](/v3/repos/commits/) to list branches or pull requests for a commit. - -**Custom media types:** `groot-preview` -**Announced:** [2019-04-11](https://developer.github.com/changes/2019-04-11-pulls-branches-for-commit/) - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.21" %} -### Uninstall a GitHub App - -Owners of GitHub Apps can now uninstall an app using the [Apps API](/v3/apps/#delete-an-installation-for-the-authenticated-app). - -**Custom media types:** `gambit-preview` -{% endif %} - -### Enable or disable vulnerability alerts for a repository - -You can use two new endpoints in the [Repos API](/v3/repos/) to enable or disable vulnerability alerts. - -**Custom media types:** `dorian-preview` -**Announced:** [2019-04-24](https://developer.github.com/changes/2019-04-24-vulnerability-alerts/) - -### Update a pull request branch - -You can use a new endpoint to [update a pull request branch](/v3/pulls/#update-a-pull-request-branch) with changes from the HEAD of the upstream branch. - -**Custom media types:** `lydian-preview` -**Announced:** [2019-05-29](https://developer.github.com/changes/2019-05-29-update-branch-api/) - -{% if currentVersion == "free-pro-team@latest" %} -### Enable or disable automated security fixes - -You can use a new set of endpoints to [enable and disable automated security fixes](/v3/repos/#enable-automated-security-fixes). - -**Custom media types:** `london-preview` -**Announced:** [2019-06-04](https://developer.github.com/changes/2019-06-04-automated-security-fixes/) -{% endif %} - -### Create and use repository templates - -You can use a new endpoint to [Create a repository using a template](/v3/repos/#create-a-repository-using-a-template) and [Create a repository for the authenticated user](/v3/repos/#create-a-repository-for-the-authenticated-user) that is a template repository by setting the `is_template` parameter to `true`. [Get a repository](/v3/repos/#get-a-repository) to check whether it's set as a template repository using the `is_template` key. - -**Custom media types:** `baptiste-preview` -**Announced:** [2019-07-05](https://developer.github.com/changes/2019-07-16-repository-templates-api/) - -{% if currentVersion == "enterprise-server@2.20" %} -### New OAuth Applications API endpoints - -You can more securely manage tokens for OAuth Apps by using OAuth tokens as input parameters instead of path parameters with the new [OAuth Applications API](/v3/apps/oauth_applications/) endpoints. - -**Custom media types:** `doctor-strange-preview` -**Announced:** [2019-11-05](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api/) -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" %} -### New visibility parameter for the Repositories API - -You can set and retrieve the visibility of a repository in the [Repositories API](/v3/repos/). - -**Custom media types:** `nebula-preview` -**Announced:** [2019-11-25](https://developer.github.com/changes/2019-12-03-internal-visibility-changes/) -{% endif %} diff --git a/content/rest/overview/endpoints-available-for-github-apps.md b/content/rest/overview/endpoints-available-for-github-apps.md deleted file mode 100644 index 9ae64ab8c3d2..000000000000 --- a/content/rest/overview/endpoints-available-for-github-apps.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Endpoints available for GitHub Apps -intro: Your app can make requests to the following REST endpoints. -redirect_from: - - /v3/apps/available-endpoints - - /rest/reference/endpoints-available-for-github-apps -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You must use an installation access token to access endpoints using your {% data variables.product.prodname_github_app %}. For more information, see "[Authenticating with {% data variables.product.prodname_github_apps %}](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation)." - -{% for thing in rest.operationsEnabledForGitHubApps[currentVersion] %} -{% assign category = thing[0] %} -{% assign operations = thing[1] %} -{% if operations.size > 0 %} -

- {{ category }} -

- -{% endif %} -{% endfor %} diff --git a/content/rest/overview/index.md b/content/rest/overview/index.md deleted file mode 100644 index 05b787c18ff3..000000000000 --- a/content/rest/overview/index.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: REST API overview -shortTitle: Overview -intro: 'Learn about resources, libraries, previews and troubleshooting for {% data variables.product.prodname_dotcom %}''s REST API.' -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Table of Contents - -{% link_in_list /resources-in-the-rest-api %} -{% link_in_list /media-types %} -{% link_in_list /other-authentication-methods %} -{% link_in_list /troubleshooting %} -{% link_in_list /api-previews %} -{% link_in_list /libraries %} -{% link_in_list /openapi-description %} -{% link_in_list /endpoints-available-for-github-apps %} diff --git a/content/rest/overview/libraries.md b/content/rest/overview/libraries.md deleted file mode 100644 index 293c3a163214..000000000000 --- a/content/rest/overview/libraries.md +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: Libraries -intro: 'You can use the official Octokit library and other third-party libraries to extend and simplify how you use the {% data variables.product.prodname_dotcom %} API.' -redirect_from: - - /libraries/ - - /v3/libraries -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -
- The Gundamcat -

Octokit comes in
- many flavors

-

Use the official Octokit library, or choose between any of the available third party libraries.

- -
- -# Third-party libraries - -### Clojure - -* [Tentacles][tentacles] - -[tentacles]: https://github.com/Raynes/tentacles - -### Dart - -* [github.dart][github.dart] - -[github.dart]: https://github.com/DirectMyFile/github.dart - -### Emacs Lisp - -* [gh.el][gh.el] - -[gh.el]: https://github.com/sigma/gh.el - -### Erlang - -* [octo.erl][octo-erl] - -[octo-erl]: https://github.com/sdepold/octo.erl - -### Go - -* [go-github][] - -[go-github]: https://github.com/google/go-github - -### Haskell - -* [github][haskell-github] - -[haskell-github]: https://github.com/fpco/GitHub - -### Java - -* The [GitHub Java API (org.eclipse.egit.github.core)](https://github.com/eclipse/egit-github/tree/master/org.eclipse.egit.github.core) library -is part of the [GitHub Mylyn Connector](https://github.com/eclipse/egit-github) and aims to support the entire -GitHub v3 API. Builds are available in [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22org.eclipse.egit.github.core%22). -* [GitHub API for Java (org.kohsuke.github)](http://github-api.kohsuke.org/) defines an object oriented representation of the GitHub API. -* [JCabi GitHub API](http://github.jcabi.com) is based on Java7 JSON API (JSR-353), simplifies tests with a runtime GitHub stub, and -covers the entire API. - -### JavaScript - -* [NodeJS GitHub library][octonode] -* [gh3 client-side API v3 wrapper][gh3] -* [GitHub.js wrapper around the GitHub API][github] -* [Promise-Based CoffeeScript library for the browser or NodeJS][github-client] - -[octonode]: https://github.com/pksunkara/octonode -[gh3]: https://github.com/k33g/gh3 -[github]: https://github.com/michael/github -[github-client]: https://github.com/philschatz/github-client - -### Julia - -* [GitHub.jl][github.jl] - -[github.jl]: https://github.com/WestleyArgentum/GitHub.jl - -### OCaml - -* [ocaml-github][ocaml-github] - -[ocaml-github]: https://github.com/mirage/ocaml-github - -### Perl - -* [Pithub][pithub-github] ([CPAN][pithub-cpan]) -* [Net::GitHub][net-github-github] ([CPAN][net-github-cpan]) - -[net-github-github]: https://github.com/fayland/perl-net-github -[net-github-cpan]: https://metacpan.org/pod/Net::GitHub -[pithub-github]: https://github.com/plu/Pithub -[pithub-cpan]: http://metacpan.org/module/Pithub - -### PHP - -* [GitHub PHP Client][github-php-client] -* [PHP GitHub API][php-github-api] -* [GitHub API][github-api] -* [GitHub Joomla! Package][joomla] -* [Github Nette Extension][kdyby-github] -* [GitHub API Easy Access][milo-github-api] -* [GitHub bridge for Laravel][github-laravel] -* [PHP5.6|PHP7 Client & WebHook wrapper][flexyproject-githubapi] - -[github-php-client]: https://github.com/tan-tan-kanarek/github-php-client -[php-github-api]: https://github.com/KnpLabs/php-github-api -[github-api]: https://github.com/yiiext/github-api -[joomla]: https://github.com/joomla-framework/github-api -[kdyby-github]: https://github.com/kdyby/github -[milo-github-api]: https://github.com/milo/github-api -[github-laravel]: https://github.com/GrahamCampbell/Laravel-GitHub -[flexyproject-githubapi]: https://github.com/FlexyProject/GitHubAPI - -### Python - -* [PyGithub][jacquev6_pygithub] -* [libsaas][libsaas] -* [github3.py][github3py] -* [sanction][sanction] -* [agithub][agithub] -* [octohub][octohub] -* [Github-Flask][github-flask] -* [torngithub][torngithub] - -[jacquev6_pygithub]: https://github.com/PyGithub/PyGithub -[libsaas]: https://github.com/ducksboard/libsaas -[github3py]: https://github.com/sigmavirus24/github3.py -[sanction]: https://github.com/demianbrecht/sanction -[agithub]: https://github.com/jpaugh/agithub "Agnostic GitHub" -[octohub]: https://github.com/turnkeylinux/octohub -[github-flask]: http://github-flask.readthedocs.org -[torngithub]: https://github.com/jkeylu/torngithub - -### Ruby - -* [GitHub API Gem][ghapi] -* [Ghee][ghee] - -[ghapi]: https://github.com/peter-murach/github -[ghee]: https://github.com/rauhryan/ghee - -### Scala - -* [Hubcat][hubcat] -* [Github4s][github4s] - -[hubcat]: https://github.com/softprops/hubcat -[Github4s]: https://github.com/47deg/github4s - -### Shell - -* [ok.sh][ok.sh] - -[ok.sh]: https://github.com/whiteinge/ok.sh diff --git a/content/rest/overview/media-types.md b/content/rest/overview/media-types.md deleted file mode 100644 index f8d2387b5844..000000000000 --- a/content/rest/overview/media-types.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Media types -intro: Learn about media types for specifying the format of the data you want to consume. -redirect_from: - - /v3/media -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -Custom media types are used in the API to let consumers choose the format -of the data they wish to receive. This is done by adding one or more of -the following types to the `Accept` header when you make a request. Media types -are specific to resources, allowing them to change independently and support -formats that other resources don't. - -All {% data variables.product.product_name %} media types look like this: - - application/vnd.github[.version].param[+json] - -The most basic media types the API supports are: - - application/json - application/vnd.github+json - -Neither of these specify a [version][versions], so you will always get the -current default JSON representation of resources. - -{% note %} - -**Important:** The default version of the API may change in the -future. If you're building an application and care about the stability of -the API, be sure to request a specific version in the `Accept` -header as shown in the examples below. - -{% endnote %} - -You can specify a version like so: - - application/vnd.github.v3+json - -If you're specifying a property (such as full/raw/etc defined below), -put the version before the property: - - application/vnd.github.v3.raw+json - -You can check the current version through every response's headers. Look -for the `X-GitHub-Media-Type` header: - -```shell -$ curl {% data variables.product.api_url_pre %}/users/technoweenie -I -> HTTP/1.1 200 OK -> X-GitHub-Media-Type: github.v3 - -$ curl {% data variables.product.api_url_pre %}/users/technoweenie -I \ -$ -H "Accept: application/vnd.github.full+json" -> HTTP/1.1 200 OK -> X-GitHub-Media-Type: github.v3; param=full; format=json - -$ curl {% data variables.product.api_url_pre %}/users/technoweenie -I \ -$ -H "Accept: application/vnd.github.v3.full+json" -> HTTP/1.1 200 OK -> X-GitHub-Media-Type: github.v3; param=full; format=json -``` - -### Comment body properties - -The body of a comment can be written in [GitHub Flavored Markdown][gfm], [issues](/v3/issues/), [issue comments](/v3/issues/comments/), [pull request comments](/v3/pulls/comments/), and the [gist comments](/v3/gists/comments/) APIs all accept these same media types: - -#### Raw - - application/vnd.github.VERSION.raw+json - -Return the raw markdown body. Response will include `body`. This is the -default if you do not pass any specific media type. - -#### Text - - application/vnd.github.VERSION.text+json - -Return a text only representation of the markdown body. Response will -include `body_text`. - -#### HTML - - application/vnd.github.VERSION.html+json - -Return HTML rendered from the body's markdown. Response will include -`body_html`. - -#### Full - - application/vnd.github.VERSION.full+json - -Return raw, text and HTML representations. Response will include `body`, -`body_text`, and `body_html`: - -### Git blob properties - -The following media types are allowed when [getting a blob](/v3/git/blobs/#get-a-blob): - -#### JSON - - application/vnd.github.VERSION+json - application/json - -Return JSON representation of the blob with `content` as a base64 -encoded string. This is the default if nothing is passed. - -#### Raw - - application/vnd.github.VERSION.raw - -Return the raw blob data. - -### Commits, commit comparison, and pull requests - -The [commits API](/v3/repos/commits/) and [pull requests API](/v3/pulls/) support -[diff][git-diff] and [patch][git-patch] formats: - -#### diff - - application/vnd.github.VERSION.diff - -#### patch - - application/vnd.github.VERSION.patch - -#### sha - - application/vnd.github.VERSION.sha - -### Repository contents - -#### Raw - - application/vnd.github.VERSION.raw - -Return the raw contents of a file. This is the default if you do not pass any specific media type. - -#### HTML - - application/vnd.github.VERSION.html - -For markup files such as Markdown or AsciiDoc, you can retrieve the rendered HTML using the `.html` media type. Markup languages are rendered to HTML using our open-source [Markup library](https://github.com/github/markup). - -### Gists - -#### Raw - - application/vnd.github.VERSION.raw - -Return the raw contents of a gist. This is the default if you do not pass any specific media type. - -#### base64 - - application/vnd.github.VERSION.base64 - -The gist contents are base64-encoded before being sent out. This can be useful if your gist contains any invalid UTF-8 sequences. - -[gfm]:http://github.github.com/github-flavored-markdown/ -[git-diff]: http://git-scm.com/docs/git-diff -[git-patch]: http://git-scm.com/docs/git-format-patch -[hypermedia]: /v3/#hypermedia -[versions]: /v3/versions diff --git a/content/rest/overview/openapi-description.md b/content/rest/overview/openapi-description.md deleted file mode 100644 index cdd2e1188e98..000000000000 --- a/content/rest/overview/openapi-description.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: OpenAPI description -intro: The {% data variables.product.product_name %} REST API is fully described in an OpenAPI 3.0 compliant document. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About OpenAPI descriptions - -[OpenAPI](https://swagger.io/docs/specification/about/) is a standard specification for describing REST APIs. OpenAPI descriptions allow both humans and machines to discover the capabilities of an API without needing to first read documentation or understand the implementation. {% data variables.product.company_short %} has made its REST API publicly available as an OpenAPI 3.0 compliant document. - -### Getting the {% data variables.product.company_short %} OpenAPI description - -You can find the description in the open source [REST API OpenAPI Description](https://github.com/github/rest-api-description) repository. - -We provide the description in two formats. The bundled version works for most cases, as it includes OpenAPI components for reuse and readability. If your tooling does not support inline references to components, we also provide a fully dereferenced version. - -### Using the {% data variables.product.company_short %} OpenAPI description - -There are many uses for an OpenAPI description. For example, you could: - -* Generate your own API client. -* Validate and test a {% data variables.product.company_short %} REST API integration. -* Explore and interact with the {% data variables.product.product_name %} REST API using third-party tools, such as Insomnia or Postman. - -For example, {% data variables.product.company_short %} uses the REST OpenAPI description to generate the {% data variables.product.product_name %} [REST API reference documentation](/rest/reference). diff --git a/content/rest/overview/other-authentication-methods.md b/content/rest/overview/other-authentication-methods.md deleted file mode 100644 index 6b38bf4caf53..000000000000 --- a/content/rest/overview/other-authentication-methods.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Other authentication methods -intro: You can use basic authentication for testing in a non-production environment. -redirect_from: - - /v3/auth -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -While the API provides multiple methods for authentication, we strongly -recommend using [OAuth](/apps/building-integrations/setting-up-and-registering-oauth-apps/) for production applications. The other -methods provided are intended to be used for scripts or testing (i.e., cases -where full OAuth would be overkill). Third party applications that rely on -{% data variables.product.product_name %} for authentication should not ask for or collect {% data variables.product.product_name %} credentials. -Instead, they should use the [OAuth web flow](/apps/building-oauth-apps/authorizing-oauth-apps/). - -### Basic Authentication - -The API supports Basic Authentication as defined in -[RFC2617](http://www.ietf.org/rfc/rfc2617.txt) with a few slight differences. -The main difference is that the RFC requires unauthenticated requests to be -answered with `401 Unauthorized` responses. In many places, this would disclose -the existence of user data. Instead, the {% data variables.product.product_name %} API responds with `404 Not Found`. -This may cause problems for HTTP libraries that assume a `401 Unauthorized` -response. The solution is to manually craft the `Authorization` header. - -#### Via OAuth and personal access tokens - -We recommend you use OAuth tokens to authenticate to the GitHub API. OAuth tokens include [personal access tokens][personal-access-tokens] and enable the user to revoke access at any time. - -```shell -$ curl -u username:token {% data variables.product.api_url_pre %}/user -``` - -This approach is useful if your tools only support Basic Authentication but you want to take advantage of OAuth access token security features. - -#### Via username and password - -{% data reusables.apps.deprecating_password_auth %} - -To use Basic Authentication with the {% data variables.product.product_name %} API, simply send the username and -password associated with the account. - -For example, if you're accessing the API via [cURL][curl], the following command -would authenticate you if you replace `` with your {% data variables.product.product_name %} username. -(cURL will prompt you to enter the password.) - -```shell -$ curl -u username {% data variables.product.api_url_pre %}/user -``` -If you have two-factor authentication enabled, make sure you understand how to [work with two-factor authentication](/v3/auth/#working-with-two-factor-authentication). - -{% if currentVersion == "free-pro-team@latest" %} -#### Authenticating for SAML SSO - -{% note %} - -**Note:** Integrations and OAuth applications that generate tokens on behalf of others are automatically authorized. - -{% endnote %} - -If you're using the API to access an organization that enforces [SAML SSO][saml-sso] for authentication, you'll need to create a personal access token (PAT) and [authorize the token][allowlist] for that organization. Visit the URL specified in `X-GitHub-SSO` to authorize the token for the organization. - -```shell -$ curl -v -H "Authorization: token TOKEN" {% data variables.product.api_url_pre %}/repos/octodocs-test/test - -> X-GitHub-SSO: required; url=https://github.com/orgs/octodocs-test/sso?authorization_request=AZSCKtL4U8yX1H3sCQIVnVgmjmon5fWxks5YrqhJgah0b2tlbl9pZM4EuMz4 -{ - "message": "Resource protected by organization SAML enforcement. You must grant your personal token access to this organization.", - "documentation_url": "https://docs.github.com" -} -``` - -When requesting data that could come from multiple organizations (for example, [requesting a list of issues created by the user][user-issues]), the `X-GitHub-SSO` header indicates which organizations require you to authorize your personal access token: - -```shell -$ curl -v -H "Authorization: token TOKEN" {% data variables.product.api_url_pre %}/user/issues - -> X-GitHub-SSO: partial-results; organizations=21955855,20582480 -``` - -The value `organizations` is a comma-separated list of organization IDs for organizations require authorization of your personal access token. -{% endif %} - -### Working with two-factor authentication - -{% data reusables.apps.deprecating_password_auth %} - -When you have two-factor authentication enabled, [Basic Authentication](#basic-authentication) for _most_ endpoints in the REST API requires that you use a personal access token or OAuth token instead of your username and password. - -You can generate a new personal access token {% if currentVersion == "free-pro-team@latest" %}with [{% data variables.product.product_name %} developer settings](https://github.com/settings/tokens/new){% endif %} or use the "[Create a new authorization][create-access]" endpoint in the OAuth Authorizations API to generate a new OAuth token. For more information, see "[Creating a personal access token for the command line](/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)". Then you would use these tokens to [authenticate using OAuth token][oauth-auth] with the GitHub API. The only time you need to authenticate with your username and password is when you create your OAuth token or use the OAuth Authorizations API. - -#### Using the OAuth Authorizations API with two-factor authentication - -When you make calls to the OAuth Authorizations API, Basic Authentication requires that you use a one-time password (OTP) and your username and password instead of tokens. When you attempt to authenticate with the OAuth Authorizations API, the server will respond with a `401 Unauthorized` and one of these headers to let you know that you need a two-factor authentication code: - -`X-GitHub-OTP: required; SMS` or `X-GitHub-OTP: required; app`. - -This header tells you how your account receives its two-factor authentication codes. Depending how you set up your account, you will either receive your OTP codes via SMS or you will use an application like Google Authenticator or 1Password. For more information, see "[Configuring two-factor authentication](/articles/configuring-two-factor-authentication)." Pass the OTP in the header: - -```shell -$ curl --request POST \ - --url https://api.github.com/authorizations \ - --header 'authorization: Basic PASSWORD' \ - --header 'content-type: application/json' \ - --header 'x-github-otp: OTP' \ - --data '{"scopes": ["public_repo"], "note": "test"}' -``` - -[create-access]: /v3/oauth_authorizations/#create-a-new-authorization -[curl]: http://curl.haxx.se/ -[oauth-auth]: /v3/#authentication -[personal-access-tokens]: /articles/creating-a-personal-access-token-for-the-command-line -[saml-sso]: /articles/about-identity-and-access-management-with-saml-single-sign-on -[saml-sso-tokens]: https://github.com/settings/tokens -[allowlist]: /github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on -[user-issues]: /v3/issues/#list-issues-assigned-to-the-authenticated-user diff --git a/content/rest/overview/resources-in-the-rest-api.md b/content/rest/overview/resources-in-the-rest-api.md deleted file mode 100644 index 57fcf3f125d3..000000000000 --- a/content/rest/overview/resources-in-the-rest-api.md +++ /dev/null @@ -1,682 +0,0 @@ ---- -title: Resources in the REST API -intro: 'Learn how to navigate the resources provided by the {% data variables.product.prodname_dotcom %} API.' -redirect_from: - - /rest/initialize-the-repo/ -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - -This describes the resources that make up the official {% data variables.product.product_name %} REST API. If you have any problems or requests, please contact {% data variables.contact.contact_support %}. - -### Current version - -By default, all requests to `{% data variables.product.api_url_code %}` receive the **v3** [version](/v3/versions) of the REST API. -We encourage you to [explicitly request this version via the `Accept` header](/v3/media/#request-specific-version). - - Accept: application/vnd.github.v3+json - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt '2.9' %} - -For information about GitHub's GraphQL API, see the [v4 documentation](/v4). For information about migrating to GraphQL, see "[Migrating from REST](/v4/guides/migrating-from-rest/)." - -{% endif %} - -### Schema - -{% if currentVersion == "free-pro-team@latest" %}All API access is over HTTPS, and{% else %}The API is{% endif %} accessed from `{% data variables.product.api_url_code %}`. All data is -sent and received as JSON. - -```shell -$ curl -i {% data variables.product.api_url_pre %}/users/octocat/orgs - -> HTTP/1.1 200 OK -> Server: nginx -> Date: Fri, 12 Oct 2012 23:33:14 GMT -> Content-Type: application/json; charset=utf-8 -> Status: 200 OK -> ETag: "a00049ba79152d03380c34652f2cb612" -> X-GitHub-Media-Type: github.v3 -> X-RateLimit-Limit: 5000 -> X-RateLimit-Remaining: 4987 -> X-RateLimit-Reset: 1350085394{% if enterpriseServerVersions contains currentVersion %} -> X-GitHub-Enterprise-Version: {{ currentVersion }}.0{% endif %} -> Content-Length: 5 -> Cache-Control: max-age=0, private, must-revalidate -> X-Content-Type-Options: nosniff -``` - -Blank fields are included as `null` instead of being omitted. - -All timestamps return in ISO 8601 format: - - YYYY-MM-DDTHH:MM:SSZ - -For more information about timezones in timestamps, see [this section](#timezones). - -#### Summary representations - -When you fetch a list of resources, the response includes a _subset_ of the -attributes for that resource. This is the "summary" representation of the -resource. (Some attributes are computationally expensive for the API to provide. -For performance reasons, the summary representation excludes those attributes. -To obtain those attributes, fetch the "detailed" representation.) - -**Example**: When you get a list of repositories, you get the summary -representation of each repository. Here, we fetch the list of repositories owned -by the [octokit](https://github.com/octokit) organization: - - GET /orgs/octokit/repos - -#### Detailed representations - -When you fetch an individual resource, the response typically includes _all_ -attributes for that resource. This is the "detailed" representation of the -resource. (Note that authorization sometimes influences the amount of detail -included in the representation.) - -**Example**: When you get an individual repository, you get the detailed -representation of the repository. Here, we fetch the -[octokit/octokit.rb](https://github.com/octokit/octokit.rb) repository: - - GET /repos/octokit/octokit.rb - -The documentation provides an example response for each API method. The example -response illustrates all attributes that are returned by that method. - -### Authentication - -There are two ways to authenticate through {% data variables.product.product_name %} API v3. Requests that -require authentication will return `404 Not Found`, instead of -`403 Forbidden`, in some places. This is to prevent the accidental leakage -of private repositories to unauthorized users. - -#### Basic authentication - -```shell -$ curl -u "username" {% data variables.product.api_url_pre %} -``` - -#### OAuth2 token (sent in a header) - -```shell -$ curl -H "Authorization: token OAUTH-TOKEN" {% data variables.product.api_url_pre %} -``` - -{% note %} - -Note: GitHub recommends sending OAuth tokens using the Authorization header. - -{% endnote %} - -Read [more about OAuth2](/apps/building-oauth-apps/). Note that OAuth2 tokens can be acquired using the [web application flow](/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) for production applications. - -#### OAuth2 key/secret - -{% data reusables.apps.deprecating_auth_with_query_parameters %} - -```shell -curl -u my_client_id:my_client_secret '{% data variables.product.api_url_pre %}/user/repos' -``` - -Using your `client_id` and `client_secret` does _not_ authenticate as a user, it will only identify your OAuth application to increase your rate limit. Permissions are only granted to users, not applications, and you will only get back data that an unauthenticated user would see. For this reason, you should only use the OAuth2 key/secret in server-to-server scenarios. Don't leak your OAuth application's client secret to your users. - -{% if enterpriseServerVersions contains currentVersion %} -You will be unable to authenticate using your OAuth2 key and secret while in private mode, and trying to authenticate will return `401 Unauthorized`. For more information, see "[Enabling private mode](/enterprise/admin/installation/enabling-private-mode)". -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} - -Read [more about unauthenticated rate limiting](#increasing-the-unauthenticated-rate-limit-for-oauth-applications). - -{% endif %} - -#### Failed login limit - -Authenticating with invalid credentials will return `401 Unauthorized`: - -```shell -$ curl -i {% data variables.product.api_url_pre %} -u foo:bar -> HTTP/1.1 401 Unauthorized - -> { -> "message": "Bad credentials", -> "documentation_url": "{% data variables.product.doc_url_pre %}/v3" -> } -``` - -After detecting several requests with invalid credentials within a short period, -the API will temporarily reject all authentication attempts for that user -(including ones with valid credentials) with `403 Forbidden`: - -```shell -$ curl -i {% data variables.product.api_url_pre %} -u valid_username:valid_password -> HTTP/1.1 403 Forbidden - -> { -> "message": "Maximum number of login attempts exceeded. Please try again later.", -> "documentation_url": "{% data variables.product.doc_url_pre %}/v3" -> } -``` - -### Parameters - -Many API methods take optional parameters. For `GET` requests, any parameters not -specified as a segment in the path can be passed as an HTTP query string -parameter: - -```shell -$ curl -i "{% data variables.product.api_url_pre %}/repos/vmg/redcarpet/issues?state=closed" -``` - -In this example, the 'vmg' and 'redcarpet' values are provided for the `:owner` -and `:repo` parameters in the path while `:state` is passed in the query -string. - -For `POST`, `PATCH`, `PUT`, and `DELETE` requests, parameters not included in the URL should be encoded as JSON -with a Content-Type of 'application/json': - -```shell -$ curl -i -u username -d '{"scopes":["public_repo"]}' {% data variables.product.api_url_pre %}/authorizations -``` - -### Root endpoint - -You can issue a `GET` request to the root endpoint to get all the endpoint categories that the REST API supports: - -```shell -$ curl {% if enterpriseServerVersions contains currentVersion %}-u username:password {% endif %}{% data variables.product.api_url_pre %} -``` - -{% if enterpriseServerVersions contains currentVersion %} - -{% note %} - -**Note:** For {% data variables.product.prodname_ghe_server %}, [as with all other endpoints](/v3/enterprise-admin/#endpoint-urls), you'll need to pass your username and password. - -{% endnote %} - -{% endif %} - -### GraphQL global node IDs - -See the guide on "[Using Global Node IDs](/v4/guides/using-global-node-ids)" for detailed information about how to find `node_id`s via the REST API and use them in GraphQL operations. - -### Client errors - -There are three possible types of client errors on API calls that -receive request bodies: - -1. Sending invalid JSON will result in a `400 Bad Request` response. - - HTTP/1.1 400 Bad Request - Content-Length: 35 - - {"message":"Problems parsing JSON"} - -2. Sending the wrong type of JSON values will result in a `400 Bad - Request` response. - - HTTP/1.1 400 Bad Request - Content-Length: 40 - - {"message":"Body should be a JSON object"} - -3. Sending invalid fields will result in a `422 Unprocessable Entity` - response. - - HTTP/1.1 422 Unprocessable Entity - Content-Length: 149 - - { - "message": "Validation Failed", - "errors": [ - { - "resource": "Issue", - "field": "title", - "code": "missing_field" - } - ] - } - -All error objects have resource and field properties so that your client -can tell what the problem is. There's also an error code to let you -know what is wrong with the field. These are the possible validation error -codes: - -Error code name | Description ------------|-----------| -`missing` | A resource does not exist. -`missing_field` | A required field on a resource has not been set. -`invalid` | The formatting of a field is invalid. Review the documentation for the for more specific information. -`already_exists` | Another resource has the same value as this field. This can happen in resources that must have some unique key (such as label names). -`unprocessable` | The inputs provided were invalid. - -Resources may also send custom validation errors (where `code` is `custom`). Custom errors will always have a `message` field describing the error, and most errors will also include a `documentation_url` field pointing to some content that might help you resolve the error. - -### HTTP redirects - -API v3 uses HTTP redirection where appropriate. Clients should assume that any -request may result in a redirection. Receiving an HTTP redirection is *not* an -error and clients should follow that redirect. Redirect responses will have a -`Location` header field which contains the URI of the resource to which the -client should repeat the requests. - -Status Code | Description ------------|-----------| -`301` | Permanent redirection. The URI you used to make the request has been superseded by the one specified in the `Location` header field. This and all future requests to this resource should be directed to the new URI. -`302`, `307` | Temporary redirection. The request should be repeated verbatim to the URI specified in the `Location` header field but clients should continue to use the original URI for future requests. - -Other redirection status codes may be used in accordance with the HTTP 1.1 spec. - -### HTTP verbs - -Where possible, API v3 strives to use appropriate HTTP verbs for each -action. - -Verb | Description ------|----------- -`HEAD` | Can be issued against any resource to get just the HTTP header info. -`GET` | Used for retrieving resources. -`POST` | Used for creating resources. -`PATCH` | Used for updating resources with partial JSON data. For instance, an Issue resource has `title` and `body` attributes. A PATCH request may accept one or more of the attributes to update the resource. PATCH is a relatively new and uncommon HTTP verb, so resource endpoints also accept `POST` requests. -`PUT` | Used for replacing resources or collections. For `PUT` requests with no `body` attribute, be sure to set the `Content-Length` header to zero. -`DELETE` |Used for deleting resources. - -### Hypermedia - -All resources may have one or more `*_url` properties linking to other -resources. These are meant to provide explicit URLs so that proper API clients -don't need to construct URLs on their own. It is highly recommended that API -clients use these. Doing so will make future upgrades of the API easier for -developers. All URLs are expected to be proper [RFC 6570][rfc] URI templates. - -You can then expand these templates using something like the [uri_template][uri] -gem: - - >> tmpl = URITemplate.new('/notifications{?since,all,participating}') - >> tmpl.expand - => "/notifications" - - >> tmpl.expand :all => 1 - => "/notifications?all=1" - - >> tmpl.expand :all => 1, :participating => 1 - => "/notifications?all=1&participating=1" - -[rfc]: http://tools.ietf.org/html/rfc6570 -[uri]: https://github.com/hannesg/uri_template - -### Pagination - -Requests that return multiple items will be paginated to 30 items by -default. You can specify further pages with the `?page` parameter. For some -resources, you can also set a custom page size up to 100 with the `?per_page` parameter. -Note that for technical reasons not all endpoints respect the `?per_page` parameter, -see [events](/v3/activity/events/) for example. - -```shell -$ curl '{% data variables.product.api_url_pre %}/user/repos?page=2&per_page=100' -``` - -Note that page numbering is 1-based and that omitting the `?page` -parameter will return the first page. - -For more information on pagination, check out our guide on [Traversing with Pagination][pagination-guide]. - -#### Link header - -{% note %} - -**Note:** It's important to form calls with Link header values instead of constructing your own URLs. - -{% endnote %} - -The [Link header](http://tools.ietf.org/html/rfc5988) includes pagination information: - - Link: <{% data variables.product.api_url_code %}/user/repos?page=3&per_page=100>; rel="next", - <{% data variables.product.api_url_code %}/user/repos?page=50&per_page=100>; rel="last" - -_The example includes a line break for readability._ - -This `Link` response header contains one or more [Hypermedia](/v3/#hypermedia) link relations, some of which may require expansion as [URI templates](http://tools.ietf.org/html/rfc6570). - -The possible `rel` values are: - -Name | Description ------------|-----------| -`next` |The link relation for the immediate next page of results. -`last` |The link relation for the last page of results. -`first` |The link relation for the first page of results. -`prev` |The link relation for the immediate previous page of results. - -### Rate limiting - -For API requests using Basic Authentication or OAuth, you can make up to 5,000 requests per hour. Authenticated requests are associated with the authenticated user, regardless of whether [Basic Authentication](#basic-authentication) or [an OAuth token](#oauth2-token-sent-in-a-header) was used. This means that all OAuth applications authorized by a user share the same quota of 5,000 requests per hour when they authenticate with different tokens owned by the same user. - -{% if currentVersion == "free-pro-team@latest" %} - -For users that belong to a {% data variables.product.prodname_ghe_cloud %} account, requests made using an OAuth token to resources owned by the same {% data variables.product.prodname_ghe_cloud %} account have an increased limit of 15,000 requests per hour. - -{% endif %} - -For unauthenticated requests, the rate limit allows for up to 60 requests per hour. Unauthenticated requests are associated with the originating IP address, and not the user making requests. - -{% data reusables.enterprise.rate_limit %} - -Note that [the Search API has custom rate limit rules](/v3/search/#rate-limit). - -The returned HTTP headers of any API request show your current rate limit status: - -```shell -$ curl -i {% data variables.product.api_url_pre %}/users/octocat -> HTTP/1.1 200 OK -> Date: Mon, 01 Jul 2013 17:27:06 GMT -> Status: 200 OK -> X-RateLimit-Limit: 60 -> X-RateLimit-Remaining: 56 -> X-RateLimit-Reset: 1372700873 -``` - -Header Name | Description ------------|-----------| -`X-RateLimit-Limit` | The maximum number of requests you're permitted to make per hour. -`X-RateLimit-Remaining` | The number of requests remaining in the current rate limit window. -`X-RateLimit-Reset` | The time at which the current rate limit window resets in [UTC epoch seconds](http://en.wikipedia.org/wiki/Unix_time). - -If you need the time in a different format, any modern programming language can get the job done. For example, if you open up the console on your web browser, you can easily get the reset time as a JavaScript Date object. - -``` javascript -new Date(1372700873 * 1000) -// => Mon Jul 01 2013 13:47:53 GMT-0400 (EDT) -``` - -If you exceed the rate limit, an error response returns: - -```shell -> HTTP/1.1 403 Forbidden -> Date: Tue, 20 Aug 2013 14:50:41 GMT -> Status: 403 Forbidden -> X-RateLimit-Limit: 60 -> X-RateLimit-Remaining: 0 -> X-RateLimit-Reset: 1377013266 - -> { -> "message": "API rate limit exceeded for xxx.xxx.xxx.xxx. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)", -> "documentation_url": "{% data variables.product.doc_url_pre %}/v3/#rate-limiting" -> } -``` - -You can [check your rate limit status](/v3/rate_limit) without incurring an API hit. - -#### Increasing the unauthenticated rate limit for OAuth applications - -If your OAuth application needs to make unauthenticated calls with a higher rate limit, you can pass your app's client ID and secret before the endpoint route. - -```shell -$ curl -u my_client_id:my_client_secret {% data variables.product.api_url_pre %}/user/repos -> HTTP/1.1 200 OK -> Date: Mon, 01 Jul 2013 17:27:06 GMT -> Status: 200 OK -> X-RateLimit-Limit: 5000 -> X-RateLimit-Remaining: 4966 -> X-RateLimit-Reset: 1372700873 -``` - -{% note %} - -**Note:** Never share your client secret with anyone or include it in client-side browser code. Use the method shown here only for server-to-server calls. - -{% endnote %} - -#### Staying within the rate limit - -If you exceed your rate limit using Basic Authentication or OAuth, you can likely fix the issue by caching API responses and using [conditional requests](#conditional-requests). - -#### Abuse rate limits - -In order to provide quality service on {% data variables.product.product_name %}, additional rate limits may apply to some actions when using the API. For example, using the API to rapidly create content, poll aggressively instead of using webhooks, make multiple concurrent requests, or repeatedly request data that is computationally expensive may result in abuse rate limiting. - -Abuse rate limits are not intended to interfere with legitimate use of the API. Your normal rate limits should be the only limit you target. To ensure you're acting as a good API citizen, check out our [Best Practices guidelines](/guides/best-practices-for-integrators/). - -If your application triggers this rate limit, you'll receive an informative response: - -```shell -> HTTP/1.1 403 Forbidden -> Content-Type: application/json; charset=utf-8 -> Connection: close - -> { -> "message": "You have triggered an abuse detection mechanism and have been temporarily blocked from content creation. Please retry your request again later.", -> "documentation_url": "{% data variables.product.doc_url_pre %}/v3/#abuse-rate-limits" -> } -``` - -{% if currentVersion == "free-pro-team@latest" %} - -### User agent required - -All API requests MUST include a valid `User-Agent` header. Requests with no `User-Agent` -header will be rejected. We request that you use your {% data variables.product.product_name %} username, or the name of your -application, for the `User-Agent` header value. This allows us to contact you if there are problems. - -Here's an example: - -```shell -User-Agent: Awesome-Octocat-App -``` - -cURL sends a valid `User-Agent` header by default. If you provide an invalid `User-Agent` header via cURL (or via an alternative client), you will receive a `403 Forbidden` response: - -```shell -$ curl -iH 'User-Agent: ' {% data variables.product.api_url_pre %}/meta -> HTTP/1.0 403 Forbidden -> Connection: close -> Content-Type: text/html - -> Request forbidden by administrative rules. -> Please make sure your request has a User-Agent header. -> Check for other possible causes. -``` - -{% endif %} - -### Conditional requests - -Most responses return an `ETag` header. Many responses also return a `Last-Modified` header. You can use the values -of these headers to make subsequent requests to those resources using the -`If-None-Match` and `If-Modified-Since` headers, respectively. If the resource -has not changed, the server will return a `304 Not Modified`. - -{% if currentVersion == "free-pro-team@latest" %} - -{% tip %} - -**Note**: Making a conditional request and receiving a 304 response does not -count against your [Rate Limit](#rate-limiting), so we encourage you to use it -whenever possible. - -{% endtip %} - -{% endif %} - -```shell -$ curl -i {% data variables.product.api_url_pre %}/user -> HTTP/1.1 200 OK -> Cache-Control: private, max-age=60 -> ETag: "644b5b0155e6404a9cc4bd9d8b1ae730" -> Last-Modified: Thu, 05 Jul 2012 15:31:30 GMT -> Status: 200 OK -> Vary: Accept, Authorization, Cookie -> X-RateLimit-Limit: 5000 -> X-RateLimit-Remaining: 4996 -> X-RateLimit-Reset: 1372700873 - -$ curl -i {% data variables.product.api_url_pre %}/user -H 'If-None-Match: "644b5b0155e6404a9cc4bd9d8b1ae730"' -> HTTP/1.1 304 Not Modified -> Cache-Control: private, max-age=60 -> ETag: "644b5b0155e6404a9cc4bd9d8b1ae730" -> Last-Modified: Thu, 05 Jul 2012 15:31:30 GMT -> Status: 304 Not Modified -> Vary: Accept, Authorization, Cookie -> X-RateLimit-Limit: 5000 -> X-RateLimit-Remaining: 4996 -> X-RateLimit-Reset: 1372700873 - -$ curl -i {% data variables.product.api_url_pre %}/user -H "If-Modified-Since: Thu, 05 Jul 2012 15:31:30 GMT" -> HTTP/1.1 304 Not Modified -> Cache-Control: private, max-age=60 -> Last-Modified: Thu, 05 Jul 2012 15:31:30 GMT -> Status: 304 Not Modified -> Vary: Accept, Authorization, Cookie -> X-RateLimit-Limit: 5000 -> X-RateLimit-Remaining: 4996 -> X-RateLimit-Reset: 1372700873 -``` - -### Cross origin resource sharing - -The API supports Cross Origin Resource Sharing (CORS) for AJAX requests from -any origin. -You can read the [CORS W3C Recommendation](http://www.w3.org/TR/cors/), or -[this intro](https://code.google.com/archive/p/html5security/wikis/CrossOriginRequestSecurity.wiki) from the -HTML 5 Security Guide. - -Here's a sample request sent from a browser hitting -`http://example.com`: - -```shell -$ curl -i {% data variables.product.api_url_pre %} -H "Origin: http://example.com" -HTTP/1.1 302 Found -Access-Control-Allow-Origin: * -Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval -``` - -This is what the CORS preflight request looks like: - -```shell -$ curl -i {% data variables.product.api_url_pre %} -H "Origin: http://example.com" -X OPTIONS -HTTP/1.1 204 No Content -Access-Control-Allow-Origin: * -Access-Control-Allow-Headers: Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-GitHub-OTP, X-Requested-With -Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE -Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval -Access-Control-Max-Age: 86400 -``` - -### JSON-P callbacks - -You can send a `?callback` parameter to any GET call to have the results -wrapped in a JSON function. This is typically used when browsers want -to embed {% data variables.product.product_name %} content in web pages by getting around cross domain -issues. The response includes the same data output as the regular API, -plus the relevant HTTP Header information. - -```shell -$ curl {% data variables.product.api_url_pre %}?callback=foo - -> /**/foo({ -> "meta": { -> "status": 200, -> "X-RateLimit-Limit": "5000", -> "X-RateLimit-Remaining": "4966", -> "X-RateLimit-Reset": "1372700873", -> "Link": [ // pagination headers and other links -> ["{% data variables.product.api_url_pre %}?page=2", {"rel": "next"}] -> ] -> }, -> "data": { -> // the data -> } -> }) -``` - -You can write a JavaScript handler to process the callback. Here's a minimal example you can try out: - - - - - - - -

Open up your browser's console.

- - - -All of the headers are the same String value as the HTTP Headers with one -notable exception: Link. Link headers are pre-parsed for you and come -through as an array of `[url, options]` tuples. - -A link that looks like this: - - Link: ; rel="next", ; rel="foo"; bar="baz" - -... will look like this in the Callback output: - -```json -{ - "Link": [ - [ - "url1", - { - "rel": "next" - } - ], - [ - "url2", - { - "rel": "foo", - "bar": "baz" - } - ] - ] -} -``` - -### Timezones - -Some requests that create new data, such as creating a new commit, allow you to provide time zone information when specifying or generating timestamps. We apply the following rules, in order of priority, to determine timezone information for API calls. - -* [Explicitly providing an ISO 8601 timestamp with timezone information](#explicitly-providing-an-iso-8601-timestamp-with-timezone-information) -* [Using the `Time-Zone` header](#using-the-time-zone-header) -* [Using the last known timezone for the user](#using-the-last-known-timezone-for-the-user) -* [Defaulting to UTC without other timezone information](#defaulting-to-utc-without-other-timezone-information) - -#### Explicitly providing an ISO 8601 timestamp with timezone information - -For API calls that allow for a timestamp to be specified, we use that exact timestamp. An example of this is the [Commits API](/v3/git/commits). - -These timestamps look something like `2014-02-27T15:05:06+01:00`. Also see [this example](/v3/git/commits/#example-input) for how these timestamps can be specified. - -#### Using the `Time-Zone` header - -It is possible to supply a `Time-Zone` header which defines a timezone according to the [list of names from the Olson database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). - -```shell -$ curl -H "Time-Zone: Europe/Amsterdam" -X POST {% data variables.product.api_url_pre %}/repos/github/linguist/contents/new_file.md -``` - -This means that we generate a timestamp for the moment your API call is made in the timezone this header defines. For example, the [Contents API](/v3/repos/contents/) generates a git commit for each addition or change and uses the current time as the timestamp. This header will determine the timezone used for generating that current timestamp. - -#### Using the last known timezone for the user - -If no `Time-Zone` header is specified and you make an authenticated call to the API, we use the last known timezone for the authenticated user. The last known timezone is updated whenever you browse the {% data variables.product.product_name %} website. - -#### Defaulting to UTC without other timezone information - -If the steps above don't result in any information, we use UTC as the timezone to create the git commit. - -[pagination-guide]: /guides/traversing-with-pagination diff --git a/content/rest/overview/troubleshooting.md b/content/rest/overview/troubleshooting.md deleted file mode 100644 index 90755d1de5bb..000000000000 --- a/content/rest/overview/troubleshooting.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Troubleshooting -intro: Learn how to resolve the most common problems people encounter in the REST API. -redirect_from: - - /v3/troubleshooting -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - - - -If you're encountering some oddities in the API, here's a list of resolutions to -some of the problems you may be experiencing. - -### Why am I getting a `404` error on a repository that exists? - -Typically, we send a `404` error when your client isn't properly authenticated. -You might expect to see a `403 Forbidden` in these cases. However, since we don't -want to provide _any_ information about private repositories, the API returns a -`404` error instead. - -To troubleshoot, ensure [you're authenticating correctly](/guides/getting-started/), [your OAuth access token has the required scopes](/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), and [third-party application restrictions][oap-guide] are not blocking access. - -### Why am I not seeing all my results? - -Most API calls accessing a list of resources (_e.g._, users, issues, _etc._) support -pagination. If you're making requests and receiving an incomplete set of results, you're -probably only seeing the first page. You'll need to request the remaining pages -in order to get more results. - -It's important to *not* try and guess the format of the pagination URL. Not every -API call uses the same structure. Instead, extract the pagination information from -[the Link Header](/v3/#pagination), which is sent with every request. - -[oap-guide]: https://developer.github.com/changes/2015-01-19-an-integrators-guide-to-organization-application-policies/ diff --git a/content/rest/reference/actions.md b/content/rest/reference/actions.md deleted file mode 100644 index a162cda6f3ad..000000000000 --- a/content/rest/reference/actions.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Actions -product: '{% data reusables.gated-features.actions %}' -redirect_from: - - /v3/actions -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -The {% data variables.product.prodname_actions %} API enables you to manage {% data variables.product.prodname_actions %} using the REST API. {% data reusables.actions.actions-authentication %} {% data variables.product.prodname_github_app %}s require the permissions mentioned in each endpoint. For more information, see "[{% data variables.product.prodname_actions %} Documentation](/actions)." - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Artifacts - -The Artifacts API allows you to download, delete, and retrieve information about workflow artifacts. {% data reusables.actions.about-artifacts %} For more information, see "[Persisting workflow data using artifacts](/actions/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts)." - -{% data reusables.actions.actions-authentication %} {% data reusables.actions.actions-app-actions-permissions-api %} - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'artifacts' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Permissions - -The Permissions API allows you to set permissions for what organizations and repositories are allowed to run {% data variables.product.prodname_actions %}, and what actions are allowed to run. For more information, see "[Usage limits, billing, and administration](/actions/reference/usage-limits-billing-and-administration#disabling-or-limiting-github-actions-for-your-repository-or-organization)." - -You can also set permissions for an enterprise. For more information, see the "[{% data variables.product.prodname_dotcom %} Enterprise administration](/rest/reference/enterprise-admin#github-actions)" REST API. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'permissions' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Secrets - -The Secrets API lets you create, update, delete, and retrieve information about encrypted secrets. {% data reusables.actions.about-secrets %} For more information, see "[Creating and using encrypted secrets](/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)." - -{% data reusables.actions.actions-authentication %} {% data variables.product.prodname_github_app %}s must have the `secrets` permission to use this API. Authenticated users must have collaborator access to a repository to create, update, or read secrets. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'secrets' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Self-hosted runners - -The Self-hosted Runners API allows you to register, view, and delete self-hosted runners. {% data reusables.actions.about-self-hosted-runners %} For more information, see "[Hosting your own runners](/actions/hosting-your-own-runners)." - -{% data reusables.actions.actions-authentication %} {% data variables.product.prodname_github_app %}s must have the `administration` permission for repositories or the `organization_self_hosted_runners` permission for organizations. Authenticated users must have admin access to the repository or organization to use this API. - -You can manage self-hosted runners for an enterprise. For more information, see the "[{% data variables.product.prodname_dotcom %} Enterprise administration](/rest/reference/enterprise-admin#github-actions)" REST API. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'self-hosted-runners' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Self-hosted runner groups - -The Self-hosted Runners Groups API allows you manage groups of self-hosted runners. For more information, see "[Managing access to self-hosted runners using groups](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups)." - -{% data reusables.actions.actions-authentication %} {% data variables.product.prodname_github_app %}s must have the `administration` permission for repositories or the `organization_self_hosted_runners` permission for organizations. Authenticated users must have admin access to the repository or organization to use this API. - -You can manage self-hosted runner groups for an enterprise. For more information, see the "[{% data variables.product.prodname_dotcom %} Enterprise administration](/rest/reference/enterprise-admin##github-actions)" REST API. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'self-hosted-runner-groups' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Workflows - -The Workflows API allows you to view workflows for a repository. {% data reusables.actions.about-workflows %} For more information, see "[Automating your workflow with GitHub Actions](/actions/automating-your-workflow-with-github-actions)." - -{% data reusables.actions.actions-authentication %} {% data reusables.actions.actions-app-actions-permissions-api %} - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'workflows' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Workflow jobs - -The Workflow Jobs API allows you to view logs and workflow jobs. {% data reusables.actions.about-workflow-jobs %} For more information, see "[Workflow syntax for GitHub Actions](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions)". - -{% data reusables.actions.actions-authentication %} {% data reusables.actions.actions-app-actions-permissions-api %} - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'workflow-jobs' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Workflow runs - -The Workflow Runs API allows you to view, re-run, cancel, and view logs for workflow runs. {% data reusables.actions.about-workflow-runs %} For more information, see "[Managing a workflow run](/actions/automating-your-workflow-with-github-actions/managing-a-workflow-run)." - -{% data reusables.actions.actions-authentication %} {% data reusables.actions.actions-app-actions-permissions-api %} - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'workflow-runs' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/content/rest/reference/activity.md b/content/rest/reference/activity.md deleted file mode 100644 index 40e6118fd922..000000000000 --- a/content/rest/reference/activity.md +++ /dev/null @@ -1,193 +0,0 @@ ---- -title: Activity -redirect_from: - - /v3/activity -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Events - -The Events API is a read-only API to the {% data variables.product.prodname_dotcom %} events. These events power the various activity streams on the site. - -The Events API can return different types of events triggered by activity on {% data variables.product.product_name %}. For more information about the specific events that you can receive from the Events API, see "[{% data variables.product.prodname_dotcom %} Event types](/developers/webhooks-and-events/github-event-types)." An events API for repository issues is also available. For more information, see the "[Issue Events API](/rest/reference/issues#events)." - -Events are optimized for polling with the "ETag" header. If no new events have been triggered, you will see a "304 Not Modified" response, and your current rate limit will be untouched. There is also an "X-Poll-Interval" header that specifies how often (in seconds) you are allowed to poll. In times of high server load, the time may increase. Please obey the header. - -``` shell -$ curl -I {% data variables.product.api_url_pre %}/users/tater/events -> HTTP/1.1 200 OK -> X-Poll-Interval: 60 -> ETag: "a18c3bded88eb5dbb5c849a489412bf3" - -# The quotes around the ETag value are important -$ curl -I {% data variables.product.api_url_pre %}/users/tater/events \ -$ -H 'If-None-Match: "a18c3bded88eb5dbb5c849a489412bf3"' -> HTTP/1.1 304 Not Modified -> X-Poll-Interval: 60 -``` - -Events support pagination, however the `per_page` option is unsupported. The fixed page size is 30 items. Fetching up to ten pages is supported, for a total of 300 events. For information, see "[Traversing with pagination](/rest/guides/traversing-with-pagination)." - -Only events created within the past 90 days will be included in timelines. Events older than 90 days will not be included (even if the total number of events in the timeline is less than 300). - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'events' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Feeds - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'feeds' %}{% include rest_operation %}{% endif %} -{% endfor %} - -### Example of getting an Atom feed - -To get a feed in Atom format, you must specify the `application/atom+xml` type in the `Accept` header. For example, to get the Atom feed for GitHub security advisories: - - curl -H "Accept: application/atom+xml" https://github.com/security-advisories - -#### Response - -```shell -Status: 200 OK -``` - -```xml - - - tag:github.com,2008:/security-advisories - - GitHub Security Advisory Feed - - GitHub - - 2019-01-14T19:34:52Z - - tag:github.com,2008:GHSA-abcd-12ab-23cd - 2018-07-26T15:14:52Z - 2019-01-14T19:34:52Z - [GHSA-abcd-12ab-23cd] Moderate severity vulnerability that affects Octoapp - - - <p>Octoapp node module before 4.17.5 suffers from a Modification of Assumed-Immutable Data (MAID) vulnerability via defaultsDeep, merge, and mergeWith functions, which allows a malicious user to modify the prototype of "Object" via <strong>proto</strong>, causing the addition or modification of an existing property that will exist on all objects.</p> - <p><strong>Affected Packages</strong></p> - - <dl> - <dt>Octoapp</dt> - <dd>Ecosystem: npm</dd> - <dd>Severity: moderate</dd> - <dd>Versions: &lt; 4.17.5</dd> - <dd>Fixed in: 4.17.5</dd> - </dl> - - <p><strong>References</strong></p> - - <ul> - <li>https://nvd.nist.gov/vuln/detail/CVE-2018-123</li> - </ul> - - - - -``` - -## Notifications - -Users receive notifications for conversations in repositories they watch including: - -* Issues and their comments -* Pull Requests and their comments -* Comments on any commits - -Notifications are also sent for conversations in unwatched repositories when the user is involved including: - -* **@mentions** -* Issue assignments -* Commits the user authors or commits -* Any discussion in which the user actively participates - -All Notification API calls require the `notifications` or `repo` API scopes. Doing this will give read-only access to some issue and commit content. You will still need the `repo` scope to access issues and commits from their respective endpoints. - -Notifications come back as "threads". A thread contains information about the current discussion of an issue, pull request, or commit. - -Notifications are optimized for polling with the `Last-Modified` header. If there are no new notifications, you will see a `304 Not Modified` response, leaving your current rate limit untouched. There is an `X-Poll-Interval` header that specifies how often (in seconds) you are allowed to poll. In times of high server load, the time may increase. Please obey the header. - -``` shell -# Add authentication to your requests -$ curl -I {% data variables.product.api_url_pre %}/notifications -HTTP/1.1 200 OK -Last-Modified: Thu, 25 Oct 2012 15:16:27 GMT -X-Poll-Interval: 60 - -# Pass the Last-Modified header exactly -$ curl -I {% data variables.product.api_url_pre %}/notifications -$ -H "If-Modified-Since: Thu, 25 Oct 2012 15:16:27 GMT" -> HTTP/1.1 304 Not Modified -> X-Poll-Interval: 60 -``` - -### Notification reasons - -When retrieving responses from the Notifications API, each payload has a key titled `reason`. These correspond to events that trigger a notification. - -Here's a list of potential `reason`s for receiving a notification: - -Reason Name | Description -------------|------------ -`assign` | You were assigned to the issue. -`author` | You created the thread. -`comment` | You commented on the thread. -`invitation` | You accepted an invitation to contribute to the repository. -`manual` | You subscribed to the thread (via an issue or pull request). -`mention` | You were specifically **@mentioned** in the content. -`review_requested` | You, or a team you're a member of, were requested to review a pull request.{% if currentVersion == "free-pro-team@latest" %} -`security_alert` | {% data variables.product.prodname_dotcom %} discovered a [security vulnerability](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies) in your repository.{% endif %} -`state_change` | You changed the thread state (for example, closing an issue or merging a pull request). -`subscribed` | You're watching the repository. -`team_mention` | You were on a team that was mentioned. - -Note that the `reason` is modified on a per-thread basis, and can change, if the `reason` on a later notification is different. - -For example, if you are the author of an issue, subsequent notifications on that issue will have a `reason` of `author`. If you're then **@mentioned** on the same issue, the notifications you fetch thereafter will have a `reason` of `mention`. The `reason` remains as `mention`, regardless of whether you're ever mentioned again. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'notifications' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Starring - -Repository starring is a feature that lets users bookmark repositories. Stars are shown next to repositories to show an approximate level of interest. Stars have no effect on notifications or the activity feed. - -### Starring vs. Watching - -In August 2012, we [changed the way watching -works](https://github.com/blog/1204-notifications-stars) on {% data variables.product.prodname_dotcom %}. Many API -client applications may be using the original "watcher" endpoints for accessing -this data. You can now start using the "star" endpoints instead (described -below). For more information, see the [Watcher API Change post](https://developer.github.com/changes/2012-09-05-watcher-api/) and the "[Repository Watching API](/rest/reference/activity#watching)." - -### Custom media types for starring - -There is one supported custom media type for the Starring REST API. When you use this custom media type, you will receive a response with the `starred_at` timestamp property that indicates the time the star was created. The response also has a second property that includes the resource that is returned when the custom media type is not included. The property that contains the resource will be either `user` or `repo`. - - application/vnd.github.v3.star+json - -For more information about media types, see "[Custom media types](/rest/overview/media-types)." - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'starring' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Watching - -Watching a repository registers the user to receive notifications on new discussions, as well as events in the user's activity feed. For simple repository bookmarks, see "[Repository starring](/rest/reference/activity#starring)." - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'watching' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/content/rest/reference/apps.md b/content/rest/reference/apps.md deleted file mode 100644 index 96bd00167644..000000000000 --- a/content/rest/reference/apps.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Apps -redirect_from: - - /v3/apps -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The GitHub Apps API enables you to get high-level information about a GitHub App as well as specific information about installations of the app. To learn more about GitHub Apps, see "[Authenticating as a GitHub App](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app)." - -{% data reusables.apps.general-apps-restrictions %} - -This page lists endpoints that you can access while authenticated as a GitHub App. See "[Authenticating as a GitHub App](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app)" to learn more. - -When authenticated as a GitHub App, the GitHub Apps API enables you to get high-level information about a GitHub App as well as specific information about installations of an app. - -You can access REST API v3 endpoints while authenticated as a GitHub App. These endpoints have a "Notes" section that contains a bullet point that says "Works with GitHub Apps." You can also access these endpoints while authenticated as a user. - -A subset of REST API v3 endpoints requires authenticating as a GitHub App installation. See [Installations](/v3/apps/installations/) for a list of these endpoints. - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## OAuth Applications API - -You can use this API to manage the OAuth tokens an OAuth application uses to access people's {% data variables.product.prodname_dotcom %} accounts. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'oauth-applications' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Installations - -The Installations API enables you to get information about installations of your GitHub App and perform actions within those installations. An _installation_ refers to any user or organization account that has installed the app. For information on how to authenticate as an installation and limit access to specific repositories, see "[Authenticating as an installation](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation)." - -To list all GitHub App installations for an organization, see "[List app installations for an organization](/v3/orgs/#list-app-installations-for-an-organization)." - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'installations' %}{% include rest_operation %}{% endif %} -{% endfor %} - -{% if currentVersion == "free-pro-team@latest" %} -## Marketplace - -For more information about {% data variables.product.prodname_marketplace %}, see "[GitHub Marketplace](/marketplace/)." - -The {% data variables.product.prodname_marketplace %} API allows you to see which customers are using a pricing plan, see a customer's purchases, and see if an account has an active subscription. - -### Testing with stubbed endpoints - -This API includes endpoints that allow you to [test your {% data variables.product.prodname_github_app %}](/marketplace/integrating-with-the-github-marketplace-api/testing-github-marketplace-apps/) with **stubbed data**. Stubbed data is hard-coded, fake data that will not change based on actual subscriptions. - -To test with stubbed data, use a stubbed endpoint in place of its production counterpart. This allows you to test whether API logic succeeds before listing {% data variables.product.prodname_github_app %}s on {% data variables.product.prodname_marketplace %}. - -Be sure to replace stubbed endpoints with production endpoints before deploying your {% data variables.product.prodname_github_app %}. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'marketplace' %}{% include rest_operation %}{% endif %} -{% endfor %} - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} -## Webhooks - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'webhooks' %}{% include rest_operation %}{% endif %} -{% endfor %} - -{% endif %} \ No newline at end of file diff --git a/content/rest/reference/billing.md b/content/rest/reference/billing.md deleted file mode 100644 index e0ff6110c9c3..000000000000 --- a/content/rest/reference/billing.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Billing -versions: - free-pro-team: '*' ---- - -You can monitor your {% data variables.product.prodname_actions %} and {% data variables.product.prodname_registry %} charges and usage for a user and organization through the Billing API. - -You can get billing information for an enterprise. For more information, see the "[{% data variables.product.prodname_dotcom %} Enterprise administration](/rest/reference/enterprise-admin#billing)" REST API. - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} diff --git a/content/rest/reference/checks.md b/content/rest/reference/checks.md deleted file mode 100644 index 3719d4cefb4d..000000000000 --- a/content/rest/reference/checks.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Checks -redirect_from: - - /v3/checks -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The Checks API enables you to build GitHub Apps that run powerful checks against code changes in a repository. You can create apps that perform continuous integration, code linting, or code scanning services and provide detailed feedback on commits. For more information, see "[Getting started with the checks API](/rest/guides/getting-started-with-the-checks-api)" and "[Creating CI tests with the Checks API](/apps/quickstart-guides/creating-ci-tests-with-the-checks-api/)." - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Check Runs - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'runs' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Check Suites - -{% note %} - - **Note:** A GitHub App only receives one [`check_suite`](/webhooks/event-payloads/#check_suite) event per commit SHA, even if you push the commit SHA to more than one branch. To find out when a commit SHA is pushed to a branch, you can subscribe to branch [`create`](/webhooks/event-payloads/#create) events. - -{% endnote %} - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'suites' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/content/rest/reference/code-scanning.md b/content/rest/reference/code-scanning.md deleted file mode 100644 index 42f1f093fec7..000000000000 --- a/content/rest/reference/code-scanning.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Code scanning -redirect_from: - - /v3/code-scanning -versions: - free-pro-team: '*' - enterprise-server: '>=2.22' ---- - -{% data reusables.code-scanning.beta %} - -The {% data variables.product.prodname_code_scanning %} API lets you retrieve and update code scanning alerts from a repository. You can use the endpoints to create automated reports for the code scanning alerts in an organization or upload analysis results generated using offline code scanning tools. For more information, see "[Finding security vulnerabilities and errors in your code](/github/finding-security-vulnerabilities-and-errors-in-your-code)." - -{% include rest_operations_at_current_path %} diff --git a/content/rest/reference/codes-of-conduct.md b/content/rest/reference/codes-of-conduct.md deleted file mode 100644 index 5a2174b00e95..000000000000 --- a/content/rest/reference/codes-of-conduct.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Codes of conduct -redirect_from: - - /v3/codes_of_conduct - - /v3/codes-of-conduct -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can use the Codes of Conduct API to retrieve information about a repository's code of conduct. To get a repository's code of conduct, use the "[Get a repository](/v3/repos/#get-a-repository)" endpoint. - -{% include rest_operations_at_current_path %} diff --git a/content/rest/reference/emojis.md b/content/rest/reference/emojis.md deleted file mode 100644 index cff842b3ac25..000000000000 --- a/content/rest/reference/emojis.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Emojis -redirect_from: - - /v3/emojis - - /v3/misc -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% include rest_operations_at_current_path %} diff --git a/content/rest/reference/enterprise-admin.md b/content/rest/reference/enterprise-admin.md deleted file mode 100644 index 437ef39b46f0..000000000000 --- a/content/rest/reference/enterprise-admin.md +++ /dev/null @@ -1,337 +0,0 @@ ---- -title: GitHub Enterprise administration -allowTitleToDifferFromFilename: true -redirect_from: - - /v3/enterprise-admin - - /v3/enterprise -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -You can use these endpoints to administer your enterprise. - -{% if currentVersion == "free-pro-team@latest" %} - -{% note %} - -**Note:** This article applies to {% data variables.product.prodname_ghe_cloud %}. To see the {% data variables.product.prodname_ghe_server %} version, use the **{% data ui.pages.article_version %}** drop-down menu. - -{% endnote %} - -{% endif %} - -{% if enterpriseServerVersions contains currentVersion %} - -### Endpoint URLs - -REST API endpoints—except [Management Console](#management-console) API endpoints—are prefixed with the following URL: - -```shell -http(s)://hostname/api/v3/ -``` - -[Management Console](#management-console) API endpoints are only prefixed with a hostname: - -```shell -http(s)://hostname/ -``` - -### Authentication - -Your {% data variables.product.product_name %} installation's API endpoints accept [the same authentication methods](/rest/overview/resources-in-the-rest-api#authentication) as the GitHub.com API. You can authenticate yourself with **[OAuth tokens](/apps/building-integrations/setting-up-and-registering-oauth-apps/)** (which can be created using the [Authorizations API](/rest/reference/oauth-authorizations#create-a-new-authorization)) or **[basic authentication](/rest/overview/resources-in-the-rest-api#basic-authentication)**. {% if enterpriseServerVersions contains currentVersion %} -OAuth tokens must have the `site_admin` [OAuth scope](/developers/apps/scopes-for-oauth-apps#available-scopes) when used with Enterprise-specific endpoints.{% endif %} - -Enterprise administration API endpoints are only accessible to authenticated {% data variables.product.product_name %} site administrators, except for the [Management Console](#management-console) API, which requires the [Management Console password](/enterprise/admin/articles/accessing-the-management-console/). - -### Version information - -The current version of a {% data variables.product.product_name %} instance is returned in the response header of every API: -`X-GitHub-Enterprise-Version: {{currentVersion}}.0` -You can also read the current version by calling the [meta endpoint](/rest/reference/meta/). - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} - -## Billing - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'billing' %}{% include rest_operation %}{% endif %} -{% endfor %} - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.21" %} -## GitHub Actions - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'actions' %}{% include rest_operation %}{% endif %} -{% endfor %} - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -## SCIM - -### SCIM Provisioning for Enterprises - -SCIM-enabled Identity Providers (IdPs) can use the SCIM API to automate the provisioning of enterprise membership. The {% data variables.product.product_name %} API is based on version 2.0 of the [SCIM standard](http://www.simplecloud.info/). - -The IdP must use `{% data variables.product.api_url_code %}/scim/v2/enterprises/{enterprise}/` as the SCIM endpoint. - -{% note %} - -**Note:** The enterprise SCIM API is only available to enterprises on [{% data variables.product.prodname_ghe_cloud %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-accounts) with [SAML SSO](/v3/auth/#authenticating-for-saml-sso) enabled. For more information about SCIM, see "[About SCIM](/github/setting-up-and-managing-organizations-and-teams/about-scim)." - -{% endnote %} - -### Authenticating calls to the SCIM API - -You must authenticate as an owner of a {% data variables.product.product_name %} enterprise to use its SCIM API. The API expects an [OAuth 2.0 Bearer](/developers/apps/authenticating-with-github-apps) token to be included in the `Authorization` header. You may also use a personal access token, but you must first [authorize it for use with your SAML SSO enterprise](/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on). - -### Mapping of SAML and SCIM data - -The SAML IdP and the SCIM client must use matching `NameID` and `userName` values for each user. This allows a user authenticating through SAML to be linked to their provisioned SCIM identity. - -SCIM groups are matched with {% data variables.product.product_name %} organizations that have the exact same name, and are owned by the enterprise account. - -The SAML IdP and SCIM client must be configured to exactly match the `displayName` of the SCIM group with the name of the corresponding {% data variables.product.product_name %} organization. This allows {% data variables.product.product_name %} to link the SCIM group with the {% data variables.product.product_name %} organization membership. - -### Supported SCIM User attributes - -Name | Type | Description ------|------|-------------- -`userName`|`string` | The username for the user. -`name.givenName`|`string` | The first name of the user. -`name.lastName`|`string` | The last name of the user. -`emails` | `array` | List of user emails. -`externalId` | `string` | This identifier is generated by the SAML provider, and is used as a unique ID by the SAML provider to match against a GitHub user. You can find the `externalID` for a user either at the SAML provider, or using the [List SCIM provisioned identities for an enterprise](#list-scim-provisioned-identities-for-an-enterprise) endpoint and filtering on other known attributes, such as a user's GitHub username or email address. -`id` | `string` | Identifier generated by the GitHub SCIM endpoint. -`active` | `boolean` | Used to indicate whether the identity is active (true) or should be deprovisioned (false). -`groups` | `array` | Optional list of SCIM group IDs the user is a member of. - -{% note %} - -**Note:** Endpoint URLs for the SCIM API are case sensitive. For example, the first letter in the `Users` endpoint must be capitalized: - -```shell -GET /scim/v2/enterprises/{enterprise}/Users/{scim_user_id} -``` - -{% endnote %} - -### Supported SCIM Group attributes - -Name | Type | Description ------|------|-------------- -`displayName` | `string` | The name of the SCIM group, which must exactly match the name of the corresponding {% data variables.product.product_name %} organization. For example, if the URL of the organization is `https://github.com/octo-org`, the group name must be `octo-org`. -`members`| `array` | List of SCIM user IDs that are members of the group. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'scim' %}{% include rest_operation %}{% endif %} -{% endfor %} - -{% endif %} - -{% if enterpriseServerVersions contains currentVersion %} - -## Admin stats - -The Admin Stats API provides a variety of metrics about your installation. *It is only available to [authenticated](/rest/overview/resources-in-the-rest-api#authentication) site administrators.* Normal users will receive a `404` response if they try to access it. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'admin-stats' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Global webhooks - -Global webhooks are installed on a {% data variables.product.prodname_enterprise %} instance. You can use global webhooks to automatically monitor, respond to, or enforce rules for users, organizations, teams, and repositories on your instance. Global webhooks can subscribe to the [organization](/developers/webhooks-and-events/webhook-events-and-payloads#organization), [user](/developers/webhooks-and-events/webhook-events-and-payloads#user), [repository](/developers/webhooks-and-events/webhook-events-and-payloads#repository), [team](/developers/webhooks-and-events/webhook-events-and-payloads#team), [member](/developers/webhooks-and-events/webhook-events-and-payloads#member), [membership](/developers/webhooks-and-events/webhook-events-and-payloads#membership), [fork](/developers/webhooks-and-events/webhook-events-and-payloads#fork), and [ping](/developers/webhooks-and-events/about-webhooks#ping-event) event types. - -*This API is only available to [authenticated](/rest/overview/resources-in-the-rest-api#authentication) site administrators.* Normal users will receive a `404` response if they try to access it. To learn how to configure global webhooks, see [About global webhooks](/enterprise/admin/user-management/about-global-webhooks). - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'global-webhooks' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## LDAP - -You can use the LDAP API to update account relationships between a {% data variables.product.prodname_ghe_server %} user or team and its linked LDAP entry or queue a new synchronization. - -With the LDAP mapping endpoints, you're able to update the Distinguished Name (DN) that a user or team maps to. Note that the LDAP endpoints are generally only effective if your {% data variables.product.prodname_ghe_server %} appliance has [LDAP Sync enabled](/enterprise/admin/authentication/using-ldap). The [Update LDAP mapping for a user](#update-ldap-mapping-for-a-user) endpoint can be used when LDAP is enabled, even if LDAP Sync is disabled. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'ldap' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## License - -The License API provides information on your Enterprise license. *It is only available to [authenticated](/rest/overview/resources-in-the-rest-api#authentication) site administrators.* Normal users will receive a `404` response if they try to access it. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'license' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Management console - -The Management Console API helps you manage your {% data variables.product.prodname_ghe_server %} installation. - -{% tip %} - -You must explicitly set the port number when making API calls to the Management Console. If TLS is enabled on your Enterprise instance, the port number is `8443`; otherwise, the port number is `8080`. - -If you don't want to provide a port number, you'll need to configure your tool to automatically follow redirects. - -You may also need to add the [`-k` flag](http://curl.haxx.se/docs/manpage.html#-k) when using `curl`, since {% data variables.product.prodname_ghe_server %} uses a self-signed certificate before you [add your own TLS certificate](/enterprise/admin/guides/installation/configuring-tls/). - -{% endtip %} - -### Authentication - -You need to pass your [Management Console password](/enterprise/admin/articles/accessing-the-management-console/) as an authentication token to every Management Console API endpoint except [`/setup/api/start`](#create-a-github-enterprise-server-license). - -Use the `api_key` parameter to send this token with each request. For example: - -```shell -$ curl -L 'https://hostname:admin_port/setup/api?api_key=your-amazing-password' -``` - -You can also use standard HTTP authentication to send this token. For example: - -```shell -$ curl -L 'https://api_key:your-amazing-password@hostname:admin_port/setup/api' -``` - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'management-console' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Organizations - -The Organization Administration API allows you to create organizations on a {% data variables.product.prodname_ghe_server %} appliance. *It is only available to [authenticated](/rest/overview/resources-in-the-rest-api#authentication) site administrators.* Normal users will receive a `404` response if they try to access it. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'orgs' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Organization pre-receive hooks - -The Organization Pre-receive Hooks API allows you to view and modify -enforcement of the pre-receive hooks that are available to an organization. - -### Object attributes - -| Name | Type | Description | -|----------------------------------|-----------|-----------------------------------------------------------| -| `name` | `string` | The name of the hook. | -| `enforcement` | `string` | The state of enforcement for the hook on this repository. | -| `allow_downstream_configuration` | `boolean` | Whether repositories can override enforcement. | -| `configuration_url` | `string` | URL for the endpoint where enforcement is set. | - -Possible values for *enforcement* are `enabled`, `disabled` and`testing`. `disabled` indicates the pre-receive hook will not run. `enabled` indicates it will run and reject -any pushes that result in a non-zero status. `testing` means the script will run but will not cause any pushes to be rejected. - -`configuration_url` may be a link to this endpoint or this hook's global -configuration. Only site admins are able to access the global configuration. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'org-pre-receive-hooks' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Pre-receive environments - -The Pre-receive Environments API allows you to create, list, update and delete environments for pre-receive hooks. *It is only available to [authenticated](/rest/overview/resources-in-the-rest-api#authentication) site administrators.* Normal users will receive a `404` response if they try to access it. - -### Object attributes - -#### Pre-receive Environment - -| Name | Type | Description | -|-----------------------|-----------|----------------------------------------------------------------------------| -| `name` | `string` | The name of the environment as displayed in the UI. | -| `image_url` | `string` | URL to the tarball that will be downloaded and extracted. | -| `default_environment` | `boolean` | Whether this is the default environment that ships with {% data variables.product.prodname_ghe_server %}. | -| `download` | `object` | This environment's download status. | -| `hooks_count` | `integer` | The number of pre-receive hooks that use this environment. | - -#### Pre-receive Environment Download - -| Name | Type | Description | -|-----------------|----------|---------------------------------------------------------| -| `state` | `string` | The state of the most recent download. | -| `downloaded_at` | `string` | The time when the most recent download started. | -| `message` | `string` | On failure, this will have any error messages produced. | - -Possible values for `state` are `not_started`, `in_progress`, `success`, `failed`. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'pre-receive-environments' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Pre-receive hooks - -The Pre-receive Hooks API allows you to create, list, update and delete pre-receive hooks. *It is only available to -[authenticated](/rest/overview/resources-in-the-rest-api#authentication) site administrators.* Normal users will receive a `404` response if they try to access it. - -### Object attributes - -#### Pre-receive Hook - -| Name | Type | Description | -|----------------------------------|-----------|-----------------------------------------------------------------| -| `name` | `string` | The name of the hook. | -| `script` | `string` | The script that the hook runs. | -| `script_repository` | `object` | The GitHub repository where the script is kept. | -| `environment` | `object` | The pre-receive environment where the script is executed. | -| `enforcement` | `string` | The state of enforcement for this hook. | -| `allow_downstream_configuration` | `boolean` | Whether enforcement can be overridden at the org or repo level. | - -Possible values for *enforcement* are `enabled`, `disabled` and`testing`. `disabled` indicates the pre-receive hook will not run. `enabled` indicates it will run and reject -any pushes that result in a non-zero status. `testing` means the script will run but will not cause any pushes to be rejected. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'pre-receive-hooks' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Repository pre-receive hooks - -The Repository Pre-receive Hooks API allows you to view and modify -enforcement of the pre-receive hooks that are available to a repository. - -### Object attributes - -| Name | Type | Description | -|---------------------|----------|-----------------------------------------------------------| -| `name` | `string` | The name of the hook. | -| `enforcement` | `string` | The state of enforcement for the hook on this repository. | -| `configuration_url` | `string` | URL for the endpoint where enforcement is set. | - -Possible values for *enforcement* are `enabled`, `disabled` and`testing`. `disabled` indicates the pre-receive hook will not run. `enabled` indicates it will run and reject any pushes that result in a non-zero status. `testing` means the script will run but will not cause any pushes to be rejected. - -`configuration_url` may be a link to this repository, it's organization owner or global configuration. Authorization to access the endpoint at `configuration_url` is determined at the owner or site admin level. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'repo-pre-receive-hooks' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Search indexing - -The Search Indexing API allows you to queue up a variety of search indexing tasks. *It is only available to [authenticated](/rest/overview/resources-in-the-rest-api#authentication) site administrators.* Normal users will receive a `404` response if they try to access it. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'search-indexing' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Users - -The User Administration API allows you to promote, demote, suspend, and unsuspend users on a {% data variables.product.prodname_ghe_server %} appliance. *It is only available to [authenticated](/rest/overview/resources-in-the-rest-api#authentication) site administrators.* Normal users will receive a `403` response if they try to access it. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'users' %}{% include rest_operation %}{% endif %} -{% endfor %} - -{% endif %} diff --git a/content/rest/reference/gists.md b/content/rest/reference/gists.md deleted file mode 100644 index 14e6eed91246..000000000000 --- a/content/rest/reference/gists.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Gists -redirect_from: - - /v3/gists -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Authentication - -You can read public gists {% if enterpriseServerVersions contains currentVersion %}and create them for anonymous users without a token.{% else %} anonymously, but you must be signed into GitHub to create gists.{% endif %} To read or write gists on a user's behalf, you need the gist OAuth scope and a token. For more information, see "[Scopes for OAuth Apps](/developers/apps/scopes-for-oauth-apps)." - - - -### Truncation - -The Gist API provides up to one megabyte of content for each file in the gist. Each file returned for a gist through the API has a key called `truncated`. If `truncated` is `true`, the file is too large and only a portion of the contents were returned in `content`. - -If you need the full contents of the file, you can make a `GET` request to the URL specified by `raw_url`. Be aware that for files larger than ten megabytes, you'll need to clone the gist via the URL provided by `git_pull_url`. - -In addition to a specific file's contents being truncated, the entire files list may be truncated if the total number exceeds 300 files. If the top level `truncated` key is `true`, only the first 300 files have been returned in the files list. If you need to fetch all of the gist's files, you'll need to clone the gist via the URL provided by `git_pull_url`. - -### Custom media types for gists - -These are the supported media types for fetching gist contents. - - application/vnd.github.VERSION.raw - application/vnd.github.VERSION.base64 - -For more information, see "[Media types](/rest/overview/media-types)." - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Comments - -### Custom media types for Gist comments - -These are the supported media types for gist comments. - - application/vnd.github.VERSION.raw - application/vnd.github.VERSION.base64 - -For more information about media types, see "[Custom media types](/rest/overview/media-types)." - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'comments' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/content/rest/reference/git.md b/content/rest/reference/git.md deleted file mode 100644 index 01f01396f4df..000000000000 --- a/content/rest/reference/git.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Git database -allowTitleToDifferFromFilename: true -redirect_from: - - /v3/git -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The Git Database API gives you access to read and write raw Git objects to your Git database on {% data variables.product.product_name %} and to list and update your references (branch heads and tags). For more information about using the Git Database API, see "[Getting started with the Git data API](/rest/guides/getting-started-with-the-git-database-api)." - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Blobs - -A Git blob (binary large object) is the object type used to store the contents of each file in a repository. The file's SHA-1 hash is computed and stored in the blob object. These endpoints allow you to read and write [blob objects](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects) -to your Git database on {% data variables.product.product_name %}. Blobs leverage [these custom media types](#custom-media-types). You can read more about the use of media types in the API [here](/rest/overview/media-types). - -### Custom media types for blobs - -These are the supported media types for blobs. - - application/json - application/vnd.github.VERSION.raw - -For more information, see "[Media types](/rest/overview/media-types)." - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'blobs' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Commits - -A Git commit is a snapshot of the hierarchy ([Git tree](/v3/git/trees)) and the contents of the files ([Git blob](/v3/git/blobs)) in a Git repository. -These endpoints allow you to read and write [commit objects](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects) -to your Git database on {% data variables.product.product_name %}. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'commits' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## References - -A Git reference (`git ref`) is just a file that contains a Git commit SHA-1 hash. -When referring to a Git commit, you can use the Git reference, which is an -easy-to-remember name, rather than the hash. The Git reference can be rewritten -to point to a new commit. A branch is just a Git reference that stores the new Git -commit hash. These endpoints allow you to read and write [references](https://git-scm.com/book/en/v1/Git-Internals-Git-References) -to your Git database on {% data variables.product.product_name %}. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'refs' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Tags - -A Git tag is similar to a [Git reference](/v3/git/refs), but the Git commit that it points to never changes. Git tags are helpful when you want to point to specific releases. These endpoints allow you to read and write [tag objects](https://git-scm.com/book/en/v1/Git-Internals-Git-References#Tags) to your Git database on {% data variables.product.product_name %}. The Git tags API only supports [annotated tag objects](https://git-scm.com/book/en/v1/Git-Internals-Git-References#Tags), not lightweight tags. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'tags' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Trees - -A Git tree object creates the hierarchy between files in a Git repository. You can use the Git tree object to create the relationship between directories and the files they contain. These endpoints allow you to read and write [tree objects](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Tree-Objects) to your Git database on {% data variables.product.product_name %}. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'trees' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/content/rest/reference/gitignore.md b/content/rest/reference/gitignore.md deleted file mode 100644 index 137bdaf63852..000000000000 --- a/content/rest/reference/gitignore.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Gitignore -redirect_from: - - /v3/gitignore -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -When you create a new {% data variables.product.product_name %} repository via the API, you can specify a [.gitignore template](/github/using-git/ignoring-files) to apply to the repository upon creation. The .gitignore templates API lists and fetches templates from the {% data variables.product.product_name %} [.gitignore repository](https://github.com/github/gitignore). - -### Custom media types for gitignore - -You can use this custom media type when getting a gitignore template. - - application/vnd.github.VERSION.raw - -For more information, see "[Media types](/rest/overview/media-types)." - -{% include rest_operations_at_current_path %} diff --git a/content/rest/reference/index.md b/content/rest/reference/index.md deleted file mode 100644 index ef6617ac53b2..000000000000 --- a/content/rest/reference/index.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Reference -shortTitle: Reference -intro: View reference documentation to learn about the resources available in the GitHub REST API. -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Table of Contents - -{% link_in_list /actions %} -{% link_in_list /activity %} -{% link_in_list /apps %} -{% link_in_list /billing %} -{% link_in_list /checks %} - - -{% link_in_list /codes-of-conduct %} -{% link_in_list /code-scanning %} -{% link_in_list /emojis %} -{% link_in_list /enterprise-admin %} -{% link_in_list /gists %} -{% link_in_list /git %} -{% link_in_list /gitignore %} -{% link_in_list /interactions %} -{% link_in_list /issues %} -{% link_in_list /licenses %} -{% link_in_list /markdown %} -{% link_in_list /meta %} -{% link_in_list /migrations %} -{% link_in_list /oauth-authorizations %} -{% link_in_list /orgs %} -{% link_in_list /projects %} -{% link_in_list /pulls %} -{% link_in_list /rate-limit %} -{% link_in_list /reactions %} -{% link_in_list /repos %} -{% link_in_list /scim %} -{% link_in_list /search %} -{% link_in_list /teams %} -{% link_in_list /users %} -{% link_in_list /permissions-required-for-github-apps %} diff --git a/content/rest/reference/interactions.md b/content/rest/reference/interactions.md deleted file mode 100644 index 9ab1cdd10c27..000000000000 --- a/content/rest/reference/interactions.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Interactions -redirect_from: - - /v3/interactions -versions: - free-pro-team: '*' ---- - -Users interact with repositories by commenting, opening issues, and creating pull requests. The Interactions APIs allow people with owner or admin access to temporarily restrict certain users from interacting with public repositories. - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Organization - -The Organization Interactions API allows organization owners to temporarily restrict which users can comment, open issues, or create pull requests in the organization's public repositories. {% data reusables.interactions.interactions-detail %} Here's more about the groups of {% data variables.product.product_name %} users: - -* {% data reusables.interactions.existing-user-limit-definition %} in the organization. -* {% data reusables.interactions.contributor-user-limit-definition %} in the organization. -* {% data reusables.interactions.collaborator-user-limit-definition %} in the organization. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'orgs' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Repository - -The Repository Interactions API allows people with owner or admin access to temporarily restrict which users can comment, open issues, or create pull requests in a public repository. {% data reusables.interactions.interactions-detail %} Here's more about the groups of {% data variables.product.product_name %} users: - -* {% data reusables.interactions.existing-user-limit-definition %} in the repository. -* {% data reusables.interactions.contributor-user-limit-definition %} in the repository. -* {% data reusables.interactions.collaborator-user-limit-definition %} in the repository. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'repos' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/content/rest/reference/issues.md b/content/rest/reference/issues.md deleted file mode 100644 index 73d71532e670..000000000000 --- a/content/rest/reference/issues.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Issues -redirect_from: - - /v3/issues -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Custom media types for issues - -These are the supported media types for issues. - - application/vnd.github.VERSION.raw+json - application/vnd.github.VERSION.text+json - application/vnd.github.VERSION.html+json - application/vnd.github.VERSION.full+json - -For more information about media types, see "[Custom media types](/rest/overview/media-types)." - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Assignees - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'assignees' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Comments - -The Issue Comments API supports listing, viewing, editing, and creating -comments on issues and pull requests. - -Issue Comments use [these custom media types](#custom-media-types). -You can read more about the use of media types in the API -[here](/v3/media/). - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'comments' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Events - -The Issue Events API can return different types of events triggered by activity in issues and pull requests. For more information about the specific events that you can receive from the Issue Events API, see "[Issue event types](/developers/webhooks-and-events/issue-event-types)." An events API for GitHub activity outside of issues and pull requests is also available. For more information, see the "[Events API](/developers/webhooks-and-events/github-event-types)." - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'events' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Labels - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'labels' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Milestones - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'milestones' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Timeline - -The Timeline Events API can return different types of events triggered by timeline activity in issues and pull requests. For more information about the specific events that you can receive from the Issue Events API, see "[Issue event types](/developers/webhooks-and-events/issue-event-types)." An events API for GitHub activity outside of issues and pull requests is also available. For more information, see the "[GitHub Events API](/developers/webhooks-and-events/github-event-types)." - -You can use this API to display information about issues and pull request or determine who should be notified of issue comments. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'timeline' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/content/rest/reference/licenses.md b/content/rest/reference/licenses.md deleted file mode 100644 index fb755e75f8eb..000000000000 --- a/content/rest/reference/licenses.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Licenses -redirect_from: - - /v3/licenses -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The Licenses API returns metadata about popular open source licenses and information about a particular project's license file. - -The Licenses API uses [the open source Ruby Gem Licensee](https://github.com/benbalter/licensee) to attempt to identify the project's license. Licensee matches the contents of a project's `LICENSE` file (if it exists) against a short list of known licenses. As a result, the API does not take into account the licenses of project dependencies or other means of documenting a project's license such as references to the license name in the documentation. - -If a license is matched, the license key and name returned conforms to the [SPDX specification](https://spdx.org/). - -**Note:** These endpoints will also return a repository's license information: - -- [Get a repository](/v3/repos/#get-a-repository) -- [List repositories for a user](/v3/repos/#list-repositories-for-a-user) -- [List organization repositories](/v3/repos/#list-organization-repositories) -- [List forks](/rest/reference/repos#list-forks) -- [List repositories watched by a user](/rest/reference/activity#list-repositories-watched-by-a-user) -- [List team repositories](/v3/teams/#list-team-repositories) - -{% warning %} - -GitHub is a lot of things, but it’s not a law firm. As such, GitHub does not provide legal advice. Using the Licenses API or sending us an email about it does not constitute legal advice nor does it create an attorney-client relationship. If you have any questions about what you can and can't do with a particular license, you should consult with your own legal counsel before moving forward. In fact, you should always consult with your own lawyer before making any decisions that might have legal ramifications or that may impact your legal rights. - -GitHub created the License API to help users get information about open source licenses and the projects that use them. We hope it helps, but please keep in mind that we’re not lawyers (at least not most of us aren't) and that we make mistakes like everyone else. For that reason, GitHub provides the API on an “as-is” basis and makes no warranties regarding any information or licenses provided on or through it, and disclaims liability for damages resulting from using the API. - -{% endwarning %} - -{% include rest_operations_at_current_path %} diff --git a/content/rest/reference/markdown.md b/content/rest/reference/markdown.md deleted file mode 100644 index aff267306b37..000000000000 --- a/content/rest/reference/markdown.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Markdown -redirect_from: - - /v3/markdown -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% include rest_operations_at_current_path %} diff --git a/content/rest/reference/meta.md b/content/rest/reference/meta.md deleted file mode 100644 index cb3db05d3f7b..000000000000 --- a/content/rest/reference/meta.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Meta -redirect_from: - - /v3/meta -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% include rest_operations_at_current_path %} diff --git a/content/rest/reference/migrations.md b/content/rest/reference/migrations.md deleted file mode 100644 index f1709a3c8f94..000000000000 --- a/content/rest/reference/migrations.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: Migrations -redirect_from: - - /v3/migrations - - /v3/migration - - /v3/migration/migrations -versions: - free-pro-team: '*' ---- - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Organization - -The Migrations API is only available to authenticated organization owners. For more information, see "[Permission levels for an organization](/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization#permission-levels-for-an-organization)" and "[Other authentication methods](/rest/overview/other-authentication-methods)." - -{% data variables.migrations.organization_migrations_intro %} - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'orgs' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Source imports - -{% data variables.migrations.source_imports_intro %} - -A typical source import would start the import and then (optionally) update the authors and/or update the preference for using Git LFS if large files exist in the import. You can also create a webhook that listens for the [`RepositoryImportEvent`](/developers/webhooks-and-events/webhook-events-and-payloads#repository_import) to find out the status of the import. - -A more detailed example can be seen in this diagram: - -``` -+---------+ +--------+ +---------------------+ -| Tooling | | GitHub | | Original Repository | -+---------+ +--------+ +---------------------+ - | | | - | Start import | | - |----------------------------->| | - | | | - | | Download source data | - | |--------------------------------------------->| - | | Begin streaming data | - | |<---------------------------------------------| - | | | - | Get import progress | | - |----------------------------->| | - | "status": "importing" | | - |<-----------------------------| | - | | | - | Get commit authors | | - |----------------------------->| | - | | | - | Map a commit author | | - |----------------------------->| | - | | | - | | | - | | Finish streaming data | - | |<---------------------------------------------| - | | | - | | Rewrite commits with mapped authors | - | |------+ | - | | | | - | |<-----+ | - | | | - | | Update repository on GitHub | - | |------+ | - | | | | - | |<-----+ | - | | | - | Map a commit author | | - |----------------------------->| | - | | Rewrite commits with mapped authors | - | |------+ | - | | | | - | |<-----+ | - | | | - | | Update repository on GitHub | - | |------+ | - | | | | - | |<-----+ | - | | | - | Get large files | | - |----------------------------->| | - | | | - | opt_in to Git LFS | | - |----------------------------->| | - | | Rewrite commits for large files | - | |------+ | - | | | | - | |<-----+ | - | | | - | | Update repository on GitHub | - | |------+ | - | | | | - | |<-----+ | - | | | - | Get import progress | | - |----------------------------->| | - | "status": "complete" | | - |<-----------------------------| | - | | | - | | | -``` - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'source-imports' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## User - -The User migrations API is only available to authenticated account owners. For more information, see "[Other authentication methods](/rest/overview/other-authentication-methods)." - -{% data variables.migrations.user_migrations_intro %} For a list of migration data that you can download, see "[Download a user migration archive](#download-a-user-migration-archive)." - -To download an archive, you'll need to start a user migration first. Once the status of the migration is `exported`, you can download the migration. - -Once you've created a migration archive, it will be available to download for seven days. But, you can delete the user migration archive sooner if you'd like. You can unlock your repository when the migration is `exported` to begin using your repository again or delete the repository if you no longer need the source data. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'users' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/content/rest/reference/oauth-authorizations.md b/content/rest/reference/oauth-authorizations.md deleted file mode 100644 index 8bb3e8fa72cc..000000000000 --- a/content/rest/reference/oauth-authorizations.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: OAuth Authorizations -redirect_from: - - /v3/oauth_authorizations - - /v3/oauth-authorizations -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% data reusables.apps.deprecating_token_oauth_authorizations %} -{% data reusables.apps.deprecating_password_auth %} - -You can use this API to manage the access OAuth applications have to your account. You can only access this API via [Basic Authentication](/rest/overview/other-authentication-methods#basic-authentication) using your username and password, not tokens. - -If you or your users have two-factor authentication enabled, make sure you understand how to [work with two-factor authentication](/rest/overview/other-authentication-methods#working-with-two-factor-authentication). - -{% include rest_operations_at_current_path %} diff --git a/content/rest/reference/orgs.md b/content/rest/reference/orgs.md deleted file mode 100644 index 8ca05be12010..000000000000 --- a/content/rest/reference/orgs.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Organizations -allowTitleToDifferFromFilename: true -redirect_from: - - /v3/orgs -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Blocking users - -The token used to authenticate the call must have the `admin:org` scope in order to make any blocking calls for an organization. Otherwise, the response returns `HTTP 404`. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'blocking' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Members - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'members' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Outside collaborators - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'outside-collaborators' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Webhooks - -Organization webhooks allow you to receive HTTP `POST` payloads whenever certain events happen within the organization. Subscribing to these events makes it possible to build integrations that react to actions on {% data variables.product.prodname_dotcom %}.com. For more information on actions you can subscribe to, see "[{% data variables.product.prodname_dotcom %} event types](/developers/webhooks-and-events/github-event-types)." - -### Scopes & Restrictions - -All actions against organization webhooks require the authenticated user to be an admin of the organization being managed. Additionally, OAuth tokens require the `admin:org_hook` scope. For more information, see "[Scopes for OAuth Apps](/developers/apps/scopes-for-oauth-apps)." - -In order to protect sensitive data which may be present in webhook configurations, we also enforce the following access control rules: - -- OAuth applications cannot list, view, or edit webhooks which they did not create. -- Users cannot list, view, or edit webhooks which were created by OAuth applications. - -### Receiving Webhooks - -In order for {% data variables.product.product_name %} to send webhook payloads, your server needs to be accessible from the Internet. We also highly suggest using SSL so that we can send encrypted payloads over HTTPS. - -For more best practices, [see our guide](/guides/best-practices-for-integrators/). - -#### Webhook headers - -{% data variables.product.product_name %} will send along several HTTP headers to differentiate between event types and payload identifiers. See [webhook headers](/webhooks/event-payloads/#delivery-headers) for details. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'webhooks' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/content/rest/reference/permissions-required-for-github-apps.md b/content/rest/reference/permissions-required-for-github-apps.md deleted file mode 100644 index 21b4ed5983ca..000000000000 --- a/content/rest/reference/permissions-required-for-github-apps.md +++ /dev/null @@ -1,872 +0,0 @@ ---- -title: Permissions required for GitHub Apps -intro: 'You can find the required permissions for each {% data variables.product.prodname_github_app %}-compatible endpoint.' -redirect_from: - - /v3/apps/permissions -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### About {% data variables.product.prodname_github_app %} permissions - -{% data variables.product.prodname_github_app %}s are created with a set of permissions. Permissions define what resources the {% data variables.product.prodname_github_app %} can access via the API. For more information, see "[Setting permissions for GitHub Apps](/apps/building-github-apps/setting-permissions-for-github-apps/)." - -### Metadata permissions - -GitHub Apps have the `Read-only` metadata permission by default. The metadata permission provides access to a collection of read-only endpoints with metadata for various resources. These endpoints do not leak sensitive private repository information. - -{% data reusables.apps.metadata-permissions %} - -- [`GET /`](/v3/#root-endpoint) -- [`GET /codes_of_conduct`](/v3/codes_of_conduct/#get-all-codes-of-conduct) -- [`GET /codes_of_conduct/:key`](/v3/codes_of_conduct/#get-a-code-of-conduct) -- [`GET /emojis`](/v3/emojis/#emojis) -- [`GET /feeds`](/rest/reference/activity#get-feeds) -- [`GET /licenses`](/v3/licenses/#get-all-commonly-used-licenses) -- [`GET /licenses/:key`](/v3/licenses/#get-a-license) -- [`POST /markdown`](/v3/markdown/#render-a-markdown-document) -- [`POST /markdown/raw`](/v3/markdown/#render-a-markdown-document-in-raw-mode) -- [`GET /meta`](/v3/meta/#meta) -- [`GET /organizations`](/v3/orgs/#list-organizations) -- [`GET /orgs/:org`](/v3/orgs/#get-an-organization) -- [`GET /orgs/:org/projects`](/v3/projects/#list-organization-projects) -- [`GET /orgs/:org/repos`](/v3/repos/#list-organization-repositories) -- [`GET /rate_limit`](/v3/rate_limit/#get-rate-limit-status-for-the-authenticated-user) -- [`GET /repos/:owner/:repo`](/v3/repos/#get-a-repository) -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/community/profile`](/v3/repos/community/#get-community-profile-metrics) -{% endif %} -- [`GET /repos/:owner/:repo/contributors`](/v3/repos/#list-repository-contributors) -- [`GET /repos/:owner/:repo/forks`](/rest/reference/repos#list-forks) -- [`GET /repos/:owner/:repo/languages`](/v3/repos/#list-repository-languages) -- [`GET /repos/:owner/:repo/license`](/v3/licenses/#get-the-license-for-a-repository) -- [`GET /repos/:owner/:repo/stargazers`](/rest/reference/activity#list-stargazers) -- [`GET /repos/:owner/:repo/stats/code_frequency`](/v3/repos/statistics/#get-the-weekly-commit-activity) -- [`GET /repos/:owner/:repo/stats/commit_activity`](/v3/repos/statistics/#get-the-last-year-of-commit-activity) -- [`GET /repos/:owner/:repo/stats/contributors`](/v3/repos/statistics/#get-all-contributor-commit-activity) -- [`GET /repos/:owner/:repo/stats/participation`](/v3/repos/statistics/#get-the-weekly-commit-count) -- [`GET /repos/:owner/:repo/stats/punch_card`](/v3/repos/statistics/#get-the-hourly-commit-count-for-each-day) -- [`GET /repos/:owner/:repo/subscribers`](/rest/reference/activity#list-watchers) -- [`GET /repos/:owner/:repo/tags`](/v3/repos/#list-repository-tags) -- [`GET /repos/:owner/:repo/topics`](/v3/repos#get-all-repository-topics) -- [`GET /repositories`](/v3/repos/#list-public-repositories) -- [`GET /user/repos`](/v3/repos/#list-repositories-for-the-authenticated-user) -- [`GET /user/starred`](/rest/reference/activity#list-repositories-starred-by-a-user) -- [`GET /user/subscriptions`](/rest/reference/activity#list-repositories-watched-by-a-user) -- [`GET /users`](/v3/users/#list-users) -- [`GET /users/:username`](/v3/users/#get-a-user) -- [`GET /users/:username/followers`](/v3/users/followers/#list-followers-of-a-user) -- [`GET /users/:username/following`](/v3/users/followers/#list-the-people-a-user-follows) -- [`GET /users/:username/following/:target_user`](/v3/users/followers/#check-if-a-user-follows-another-user) -- [`GET /users/:username/gpg_keys`](/v3/users/gpg_keys/#list-gpg-keys-for-a-user) -- [`GET /users/:username/orgs`](/v3/orgs/#list-organizations-for-a-user) -- [`GET /users/:username/received_events`](/rest/reference/activity#list-events-received-by-the-authenticated-user) -- [`GET /users/:username/received_events/public`](/rest/reference/activity#list-public-events-received-by-a-user) -- [`GET /users/:username/repos`](/v3/repos/#list-repositories-for-a-user) -- [`GET /users/:username/subscriptions`](/rest/reference/activity#list-repositories-watched-by-a-user) - -_Collaborators_ -- [`GET /repos/:owner/:repo/collaborators`](/v3/repos/collaborators/#list-repository-collaborators) -- [`GET /repos/:owner/:repo/collaborators/:username`](/v3/repos/collaborators/#check-if-a-user-is-a-repository-collaborator) - -_Commit comments_ -- [`GET /repos/:owner/:repo/comments`](/v3/repos/comments/#list-commit-comments-for-a-repository) -- [`GET /repos/:owner/:repo/comments/:comment_id`](/v3/repos/comments/#get-a-commit-comment) -- [`GET /repos/:owner/:repo/comments/:comment_id/reactions`](/v3/reactions/#list-reactions-for-a-commit-comment) -- [`GET /repos/:owner/:repo/commits/:sha/comments`](/v3/repos/comments/#list-commit-comments) - -_Events_ -- [`GET /events`](/rest/reference/activity#list-public-events) -- [`GET /networks/:owner/:repo/events`](/rest/reference/activity#list-public-events-for-a-network-of-repositories) -- [`GET /orgs/:org/events`](/rest/reference/activity#list-public-organization-events) -- [`GET /repos/:owner/:repo/events`](/rest/reference/activity#list-repository-events) -- [`GET /users/:username/events`](/rest/reference/activity#list-events-for-the-authenticated-user) -- [`GET /users/:username/events/public`](/rest/reference/activity#list-public-events-for-a-user) - -_Git_ -- [`GET /gitignore/templates`](/v3/gitignore/#get-all-gitignore-templates) -- [`GET /gitignore/templates/:key`](/v3/gitignore/#get-a-gitignore-template) - -_Keys_ -- [`GET /users/:username/keys`](/v3/users/keys/#list-public-keys-for-a-user) - -_Organization members_ -- [`GET /orgs/:org/members`](/v3/orgs/members/#list-organization-members) -- [`GET /orgs/:org/members/:username`](/v3/orgs/members/#check-organization-membership-for-a-user) -- [`GET /orgs/:org/public_members`](/v3/orgs/members/#list-public-organization-members) -- [`GET /orgs/:org/public_members/:username`](/v3/orgs/members/#check-public-organization-membership-for-a-user) - -_Search_ -- [`GET /search/code`](/v3/search/#search-code) -- [`GET /search/commits`](/v3/search/#search-commits) -- [`GET /search/issues`](/v3/search/#search-issues-and-pull-requests) -- [`GET /search/labels`](/v3/search/#search-labels) -- [`GET /search/repositories`](/v3/search/#search-repositories) -- [`GET /search/topics`](/v3/search/#search-topics) -- [`GET /search/users`](/v3/search/#search-users) - -{% if currentVersion == "free-pro-team@latest" %} -### Permission on "actions" - -- [`GET /repos/:owner/:repo/actions/artifacts`](/v3/actions/artifacts/#list-artifacts-for-a-repository) (:read) -- [`GET /repos/:owner/:repo/actions/artifacts/:artifact_id`](/v3/actions/artifacts/#get-an-artifact) (:read) -- [`DELETE /repos/:owner/:repo/actions/artifacts/:artifact_id`](/v3/actions/artifacts/#delete-an-artifact) (:write) -- [`GET /repos/:owner/:repo/actions/artifacts/:artifact_id/zip`](/v3/actions/artifacts/#download-an-artifact) (:read) -- [`GET /repos/:owner/:repo/actions/jobs/:job_id`](/v3/actions/workflow-jobs/#get-a-job-for-a-workflow-run) (:read) -- [`GET /repos/:owner/:repo/actions/jobs/:job_id/logs`](/v3/actions/workflow-jobs/#download-job-logs-for-a-workflow-run) (:read) -- [`GET /repos/:owner/:repo/actions/runs`](/v3/actions/workflow-runs/#list-workflow-runs-for-a-repository) (:read) -- [`GET /repos/:owner/:repo/actions/runs/:run_id`](/v3/actions/workflow-runs/#get-a-workflow-run) (:read) -- [`GET /repos/:owner/:repo/actions/runs/:run_id/artifacts`](/v3/actions/artifacts/#list-workflow-run-artifacts) (:read) -- [`POST /repos/:owner/:repo/actions/runs/:run_id/cancel`](/v3/actions/workflow-runs/#cancel-a-workflow-run) (:write) -- [`GET /repos/:owner/:repo/actions/runs/:run_id/jobs`](/v3/actions/workflow-jobs/#list-jobs-for-a-workflow-run) (:read) -- [`GET /repos/:owner/:repo/actions/runs/:run_id/logs`](/v3/actions/workflow-runs/#download-workflow-run-logs) (:read) -- [`DELETE /repos/:owner/:repo/actions/runs/:run_id/logs`](/v3/actions/workflow-runs/#delete-workflow-run-logs) (:write) -- [`POST /repos/:owner/:repo/actions/runs/:run_id/rerun`](/v3/actions/workflow-runs/#re-run-a-workflow) (:write) -- [`GET /repos/:owner/:repo/actions/workflows`](/v3/actions/workflows/#list-repository-workflows) (:read) -- [`GET /repos/:owner/:repo/actions/workflows/:workflow_id`](/v3/actions/workflows/#get-a-workflow) (:read) -- [`GET /repos/:owner/:repo/actions/workflows/:workflow_id/runs`](/v3/actions/workflow-runs/#list-workflow-runs) (:read) -{% endif %} - -### Permission on "administration" - -- [`POST /orgs/:org/repos`](/v3/repos/#create-an-organization-repository) (:write) -- [`PATCH /repos/:owner/:repo`](/v3/repos/#update-a-repository) (:write) -- [`DELETE /repos/:owner/:repo`](/v3/repos/#delete-a-repository) (:write) -{% if currentVersion == "free-pro-team@latest" %} -- [`Get GET /repos/:owner/:repo/actions/runners/downloads`](/v3/actions/self-hosted-runners/#list-runner-applications-for-a-repository) (:read) -- [`GET /repos/:owner/:repo/actions/runners`](/v3/actions/self-hosted-runners/#list-self-hosted-runners-for-a-repository) (:read) -- [`GET /repos/:owner/:repo/actions/runners/:runner_id`](/v3/actions/self-hosted-runners/#get-a-self-hosted-runner-for-a-repository) (:read) -- [`DELETE /repos/:owner/:repo/actions/runners/:runner_id`](/v3/actions/self-hosted-runners/#delete-a-self-hosted-runner-from-a-repository) (:write) -- [`POST /repos/:owner/:repo/actions/runners/registration-token`](/v3/actions/self-hosted-runners/#create-a-registration-token-for-a-repository) (:write) -- [`POST /repos/:owner/:repo/actions/runners/remove-token`](/v3/actions/self-hosted-runners/#create-a-remove-token-for-a-repository) (:write)git -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`PUT /repos/:owner/:repo/automated-security-fixes`](/v3/repos/#enable-automated-security-fixes) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`DELETE /repos/:owner/:repo/automated-security-fixes`](/v3/repos/#disable-automated-security-fixes) (:write) -{% endif %} -- [`POST /repos/:owner/:repo/forks`](/v3/repos/forks/#create-a-fork) (:write) -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/interaction-limits`](/v3/interactions/repos/#get-interaction-restrictions-for-a-repository) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`PUT /repos/:owner/:repo/interaction-limits`](/v3/interactions/repos/#set-interaction-restrictions-for-a-repository) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`DELETE /repos/:owner/:repo/interaction-limits`](/v3/interactions/repos/#remove-interaction-restrictions-for-a-repository) (:write) -{% endif %} -- [`PUT /repos/:owner/:repo/topics`](/v3/repos/#replace-all-repository-topics) (:write) -- [`POST /repos/:owner/:repo/transfer`](/v3/repos/#transfer-a-repository) (:write) -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/vulnerability-alerts`](/v3/repos/#enable-vulnerability-alerts) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`PUT /repos/:owner/:repo/vulnerability-alerts`](/v3/repos/#enable-vulnerability-alerts) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`DELETE /repos/:owner/:repo/vulnerability-alerts`](/v3/repos/#disable-vulnerability-alerts) (:write) -{% endif %} -- [`PATCH /user/repository_invitations/:invitation_id`](/v3/repos/invitations/#accept-a-repository-invitation) (:write) -- [`DELETE /user/repository_invitations/:invitation_id`](/v3/repos/invitations/#decline-a-repository-invitation) (:write) - -_Branches_ -- [`GET /repos/:owner/:repo/branches/:branch/protection`](/v3/repos/branches/#get-branch-protection) (:read) -- [`PUT /repos/:owner/:repo/branches/:branch/protection`](/v3/repos/branches/#update-branch-protection) (:write) -- [`DELETE /repos/:owner/:repo/branches/:branch/protection`](/v3/repos/branches/#delete-branch-protection) (:write) -- [`GET /repos/:owner/:repo/branches/:branch/protection/enforce_admins`](/v3/repos/branches/#get-admin-branch-protection) (:read) -- [`POST /repos/:owner/:repo/branches/:branch/protection/enforce_admins`](/v3/repos/branches/#set-admin-branch-protection) (:write) -- [`DELETE /repos/:owner/:repo/branches/:branch/protection/enforce_admins`](/v3/repos/branches/#delete-admin-branch-protection) (:write) -- [`GET /repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews`](/v3/repos/branches/#get-pull-request-review-protection) (:read) -- [`PATCH /repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews`](/v3/repos/branches/#update-pull-request-review-protection) (:write) -- [`DELETE /repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews`](/v3/repos/branches/#delete-pull-request-review-protection) (:write) -- [`GET /repos/:owner/:repo/branches/:branch/protection/required_signatures`](/v3/repos/branches/#get-commit-signature-protection) (:read) -- [`POST /repos/:owner/:repo/branches/:branch/protection/required_signatures`](/v3/repos/branches/#create-commit-signature-protection) (:write) -- [`DELETE /repos/:owner/:repo/branches/:branch/protection/required_signatures`](/v3/repos/branches/#delete-commit-signature-protection) (:write) -- [`GET /repos/:owner/:repo/branches/:branch/protection/required_status_checks`](/v3/repos/branches/#get-status-checks-protection) (:read) -- [`PATCH /repos/:owner/:repo/branches/:branch/protection/required_status_checks`](/v3/repos/branches/#update-status-check-potection) (:write) -- [`DELETE /repos/:owner/:repo/branches/:branch/protection/required_status_checks`](/v3/repos/branches/#remove-status-check-protection) (:write) -- [`GET /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts`](/v3/repos/branches/#get-all-status-check-contexts) (:read) -- [`POST /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts`](/v3/repos/branches/#add-status-check-contexts) (:write) -- [`PUT /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts`](/v3/repos/branches/#set-status-check-contexts) (:write) -- [`DELETE /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts`](/v3/repos/branches/#remove-status-check-contexts) (:write) -- [`GET /repos/:owner/:repo/branches/:branch/protection/restrictions`](/v3/repos/branches/#get-access-restrictions) (:read) -- [`DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions`](/v3/repos/branches/#delete-access-restrictions) (:write) -- [`GET /repos/:owner/:repo/branches/:branch/protection/restrictions/teams`](/v3/repos/branches/#list-teams-with-access-to-the-protected-branch) (:read) -- [`POST /repos/:owner/:repo/branches/:branch/protection/restrictions/teams`](/v3/repos/branches/#add-team-access-restrictions) (:write) -- [`PUT /repos/:owner/:repo/branches/:branch/protection/restrictions/teams`](/v3/repos/branches/#set-team-access-restrictions) (:write) -- [`DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions/teams`](/v3/repos/branches/#remove-team-access-restrictions) (:write) -- [`GET /repos/:owner/:repo/branches/:branch/protection/restrictions/users`](/v3/repos/branches/#list-users-with-access-to-the-protected-branch) (:read) -- [`POST /repos/:owner/:repo/branches/:branch/protection/restrictions/users`](/v3/repos/branches/#add-user-access-restrictions) (:write) -- [`PUT /repos/:owner/:repo/branches/:branch/protection/restrictions/users`](/v3/repos/branches/#set-user-access-restrictions) (:write) -- [`DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions/users`](/v3/repos/branches/#remove-user-access-restrictions) (:write) - -_Collaborators_ -- [`PUT /repos/:owner/:repo/collaborators/:username`](/v3/repos/collaborators/#add-a-repository-collaborator) (:write) -- [`DELETE /repos/:owner/:repo/collaborators/:username`](/v3/repos/collaborators/#remove-a-repository-collaborator) (:write) - -_Invitations_ -- [`GET /repos/:owner/:repo/invitations`](/v3/repos/invitations/#list-repository-invitations) (:read) -- [`PATCH /repos/:owner/:repo/invitations/:invitation_id`](/v3/repos/invitations/#update-a-repository-invitation) (:write) -- [`DELETE /repos/:owner/:repo/invitations/:invitation_id`](/v3/repos/invitations/#delete-a-repository-invitation) (:write) - -_Keys_ -- [`GET /repos/:owner/:repo/keys`](/v3/repos/keys/#list-deploy-keys) (:read) -- [`POST /repos/:owner/:repo/keys`](/v3/repos/keys/#create-a-deploy-key) (:write) -- [`GET /repos/:owner/:repo/keys/:key_id`](/v3/repos/keys/#get-a-deploy-key) (:read) -- [`DELETE /repos/:owner/:repo/keys/:key_id`](/v3/repos/keys/#delete-a-deploy-key) (:write) - -_Teams_ -- [`GET /repos/:owner/:repo/teams`](/v3/repos/#list-repository-teams) (:read) -- [`PUT /teams/:team_id/repos/:owner/:repo`](/v3/teams/#add-or-update-team-repository-permissions) (:write) -- [`DELETE /teams/:team_id/repos/:owner/:repo`](/v3/teams/#remove-a-repository-from-a-team) (:write) - -{% if currentVersion == "free-pro-team@latest" %} -_Traffic_ -- [`GET /repos/:owner/:repo/traffic/clones`](/v3/repos/traffic/#get-repository-clones) (:read) -- [`GET /repos/:owner/:repo/traffic/popular/paths`](/v3/repos/traffic/#get-top-referral-paths) (:read) -- [`GET /repos/:owner/:repo/traffic/popular/referrers`](/v3/repos/traffic/#get-top-referral-sources) (:read) -- [`GET /repos/:owner/:repo/traffic/views`](/v3/repos/traffic/#get-page-views) (:read) -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -### Permission on "blocking" - -- [`GET /user/blocks`](/v3/users/blocking/#list-users-blocked-by-the-authenticated-user) (:read) -- [`GET /user/blocks/:username`](/v3/users/blocking/#check-if-a-user-is-blocked-by-the-authenticated-user) (:read) -- [`PUT /user/blocks/:username`](/v3/users/blocking/#block-a-user) (:write) -- [`DELETE /user/blocks/:username`](/v3/users/blocking/#unblock-a-user) (:write) -{% endif %} - -### Permission on "checks" - -- [`POST /repos/:owner/:repo/check-runs`](/v3/checks/runs/#create-a-check-run) (:write) -- [`GET /repos/:owner/:repo/check-runs/:check_run_id`](/v3/checks/runs/#get-a-check-run) (:read) -- [`PATCH /repos/:owner/:repo/check-runs/:check_run_id`](/v3/checks/runs/#update-a-check-run) (:write) -- [`GET /repos/:owner/:repo/check-runs/:check_run_id/annotations`](/v3/checks/runs/#list-check-run-annotations) (:read) -- [`POST /repos/:owner/:repo/check-suites`](/v3/checks/suites/#create-a-check-suite) (:write) -- [`GET /repos/:owner/:repo/check-suites/:check_suite_id`](/v3/checks/suites/#get-a-check-suite) (:read) -- [`GET /repos/:owner/:repo/check-suites/:check_suite_id/check-runs`](/v3/checks/runs/#list-check-runs-in-a-check-suite) (:read) -- [`POST /repos/:owner/:repo/check-suites/:check_suite_id/rerequest`](/v3/checks/suites/#rerequest-a-check-suite) (:write) -- [`PATCH /repos/:owner/:repo/check-suites/preferences`](/v3/checks/suites/#update-repository-preferences-for-check-suites) (:write) -- [`GET /repos/:owner/:repo/commits/:sha/check-runs`](/v3/checks/runs/#list-check-runs-for-a-git-reference) (:read) -- [`GET /repos/:owner/:repo/commits/:sha/check-suites`](/v3/checks/suites/#list-check-suites-for-a-git-reference) (:read) - -### Permission on "contents" - -- [`GET /repos/:owner/:repo/:archive_format/:ref`](/v3/repos/contents/#download-a-repository-archive) (:read) -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/artifacts/:artifact_id`](/v3/actions/artifacts/#get-an-artifact) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`DELETE /repos/:owner/:repo/actions/artifacts/:artifact_id`](/v3/actions/artifacts/#delete-an-artifact) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/artifacts/:artifact_id/zip`](/v3/actions/artifacts/#download-an-artifact) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/jobs/:job_id`](/v3/actions/workflow-jobs/#get-a-job-for-a-workflow-run) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/jobs/:job_id/logs`](/v3/actions/workflow-jobs/#download-job-logs-for-a-workflow-run) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/runs`](/v3/actions/workflow-runs/#list-workflow-runs-for-a-repository) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/runs/:run_id`](/v3/actions/workflow-runs/#get-a-workflow-run) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/runs/:run_id/artifacts`](/v3/actions/artifacts/#list-workflow-run-artifacts) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`POST /repos/:owner/:repo/actions/runs/:run_id/cancel`](/v3/actions/workflow-runs/#cancel-a-workflow-run) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/runs/:run_id/jobs`](/v3/actions/workflow-jobs/#list-jobs-for-a-workflow-run) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/runs/:run_id/logs`](/v3/actions/workflow-runs/#download-workflow-run-logs) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`DELETE /repos/:owner/:repo/actions/runs/:run_id/logs`](/v3/actions/workflow-runs/#delete-workflow-run-logs) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`POST /repos/:owner/:repo/actions/runs/:run_id/rerun`](/v3/actions/workflow-runs/#re-run-a-workflow) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/secrets`](/v3/actions/secrets/#list-repository-secrets) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/secrets/:name`](/v3/actions/secrets/#get-a-repository-secret) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`PUT /repos/:owner/:repo/actions/secrets/:name`](/v3/actions/secrets/#create-or-update-a-repository-secret) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`DELETE /repos/:owner/:repo/actions/secrets/:name`](/v3/actions/secrets/#delete-a-repository-secret) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/secrets/public-key`](/v3/actions/secrets/#get-a-repository-public-key) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/workflows`](/v3/actions/workflows/#list-repository-workflows) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/workflows/:workflow_id`](/v3/actions/workflows/#get-a-workflow) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /repos/:owner/:repo/actions/workflows/:workflow_id/runs`](/v3/actions/workflow-runs/#list-workflow-runs) (:read) -{% endif %} -- [`GET /repos/:owner/:repo/check-runs/:check_run_id`](/v3/checks/runs/#get-a-check-run) (:read) -- [`GET /repos/:owner/:repo/check-runs/:check_run_id/annotations`](/v3/checks/runs/#list-check-run-annotations) (:read) -- [`GET /repos/:owner/:repo/check-suites/:check_suite_id`](/v3/checks/suites/#get-a-check-suite) (:read) -- [`GET /repos/:owner/:repo/check-suites/:check_suite_id/check-runs`](/v3/checks/runs/#list-check-runs-in-a-check-suite) (:read) -- [`POST /repos/:owner/:repo/check-suites/:check_suite_id/rerequest`](/v3/checks/suites/#rerequest-a-check-suite) (:write) -- [`GET /repos/:owner/:repo/commits`](/v3/repos/commits/#list-commits) (:read) -- [`GET /repos/:owner/:repo/commits/:sha`](/v3/repos/commits/#get-a-commit) (:read) -- [`GET /repos/:owner/:repo/commits/:sha/check-runs`](/v3/checks/runs/#list-check-runs-for-a-git-reference) (:read) -- [`GET /repos/:owner/:repo/commits/:sha/check-suites`](/v3/checks/suites/#list-check-suites-for-a-git-reference) (:read) -- [`GET /repos/:owner/:repo/community/code_of_conduct`](/v3/codes_of_conduct/#get-the-code-of-conduct-for-a-repository) (:read) -- [`GET /repos/:owner/:repo/compare/:base...:head`](/v3/repos/commits/#compare-two-commits) (:read) -- [`GET /repos/:owner/:repo/contents/:path`](/v3/repos/contents/#get-repository-content) (:read) -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -- [`POST /repos/:owner/:repo/dispatches`](/v3/repos/#create-a-repository-dispatch-event) (:write) -{% endif %} -- [`POST /repos/:owner/:repo/forks`](/v3/repos/forks/#create-a-fork) (:read) -- [`POST /repos/:owner/:repo/merges`](/v3/repos/merging/#merge-a-branch) (:write) -- [`PUT /repos/:owner/:repo/pulls/:pull_number/merge`](/v3/pulls/#merge-a-pull-request) (:write) -- [`GET /repos/:owner/:repo/readme(?:/(.*))?`](/v3/repos/contents/#get-a-repository-readme) (:read) - -_Branches_ -- [`GET /repos/:owner/:repo/branches`](/v3/repos/branches/#list-branches) (:read) -- [`GET /repos/:owner/:repo/branches/:branch`](/v3/repos/branches/#get-a-branch) (:read) -- [`GET /repos/:owner/:repo/branches/:branch/protection/restrictions/apps`](/v3/repos/branches/#list-apps-with-access-to-the-protected-branch) (:write) -- [`POST /repos/:owner/:repo/branches/:branch/protection/restrictions/apps`](/v3/repos/branches/#add-app-access-restrictions) (:write) -- [`PUT /repos/:owner/:repo/branches/:branch/protection/restrictions/apps`](/v3/repos/branches/#set-app-access-restrictions) (:write) -- [`DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions/apps`](/v3/repos/branches/#remove-user-access-restrictions) (:write) - -_Commit comments_ -- [`PATCH /repos/:owner/:repo/comments/:comment_id`](/v3/repos/comments/#update-a-commit-comment) (:write) -- [`DELETE /repos/:owner/:repo/comments/:comment_id`](/v3/repos/comments/#delete-a-commit-comment) (:write) -- [`POST /repos/:owner/:repo/comments/:comment_id/reactions`](/v3/reactions/#create-reaction-for-a-commit-comment) (:read) -- [`POST /repos/:owner/:repo/commits/:sha/comments`](/v3/repos/comments/#create-a-commit-comment) (:read) - -_Git_ -- [`POST /repos/:owner/:repo/git/blobs`](/v3/git/blobs/#create-a-blob) (:write) -- [`GET /repos/:owner/:repo/git/blobs/:sha`](/v3/git/blobs/#get-a-blob) (:read) -- [`POST /repos/:owner/:repo/git/commits`](/v3/git/commits/#create-a-commit) (:write) -- [`GET /repos/:owner/:repo/git/commits/:commit_id`](/v3/git/commits/#get-a-commit) (:read) -- [`POST /repos/:owner/:repo/git/refs`](/v3/git/refs/#create-a-reference) (:write) -- [`GET /repos/:owner/:repo/git/ref/:ref`](/v3/git/refs/#get-a-reference) (:read) -- [`GET /repos/:owner/:repo/git/matching-refs/:ref`](/v3/git/refs/#list-matching-references) (:read) -- [`PATCH /repos/:owner/:repo/git/refs/:ref`](/v3/git/refs/#update-a-reference) (:write) -- [`DELETE /repos/:owner/:repo/git/refs/:ref`](/v3/git/refs/#delete-a-reference) (:write) -- [`POST /repos/:owner/:repo/git/tags`](/v3/git/tags/#create-a-tag-object) (:write) -- [`GET /repos/:owner/:repo/git/tags/:tag_id`](/v3/git/tags/#get-a-tag) (:read) -- [`POST /repos/:owner/:repo/git/trees`](/v3/git/trees/#create-a-tree) (:write) -- [`GET /repos/:owner/:repo/git/trees/:sha`](/v3/git/trees/#get-a-tree) (:read) - -{% if currentVersion == "free-pro-team@latest" %} -_Import_ -- [`GET /repos/:owner/:repo/import`](/v3/migrations/source_imports/#get-an-import-status) (:read) -- [`PUT /repos/:owner/:repo/import`](/v3/migrations/source_imports/#start-an-import) (:write) -- [`PATCH /repos/:owner/:repo/import`](/v3/migrations/source_imports/#update-an-import) (:write) -- [`DELETE /repos/:owner/:repo/import`](/v3/migrations/source_imports/#cancel-an-import) (:write) -- [`GET /repos/:owner/:repo/import/authors`](/v3/migrations/source_imports/#get-commit-authors) (:read) -- [`PATCH /repos/:owner/:repo/import/authors/:author_id`](/v3/migrations/source_imports/#map-a-commit-author) (:write) -- [`GET /repos/:owner/:repo/import/large_files`](/v3/migrations/source_imports/#get-large-files) (:read) -- [`PATCH /repos/:owner/:repo/import/lfs`](/v3/migrations/source_imports/#update-git-lfs-preference) (:write) -{% endif %} - -_Reactions_ - -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -- [`DELETE /reactions/:reaction_id`](/v3/reactions/#delete-a-reaction-legacy) (:write){% else %}- [`DELETE /reactions/:reaction_id`](/v3/reactions/#delete-a-reaction) (:write){% endif %}{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -- [`DELETE /repos/:owner/:repo/comments/:comment_id/reactions/:reaction_id`](/v3/reactions/#delete-a-commit-comment-reaction) (:write) -- [`DELETE /repos/:owner/:repo/issues/:issue_number/reactions/:reaction_id`](/v3/reactions/#delete-an-issue-reaction) (:write) -- [`DELETE /repos/:owner/:repo/issues/comments/:comment_id/reactions/:reaction_id`](/v3/reactions/#delete-an-issue-comment-reaction) (:write) -- [`DELETE /repos/:owner/:repo/pulls/comments/:comment_id/reactions/:reaction_id`](/v3/reactions/#delete-a-pull-request-comment-reaction) (:write) -- [`DELETE /orgs/:org/teams/:team_slug/discussions/:discussion_number/reactions/:reaction_id`](/v3/reactions/#delete-team-discussion-reaction) (:write) -- [`DELETE /orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id`](/v3/reactions/#delete-team-discussion-comment-reaction) (:write){% endif %} - -_Releases_ -- [`GET /repos/:owner/:repo/releases`](/rest/reference/repos/#list-releases) (:read) -- [`POST /repos/:owner/:repo/releases`](/rest/reference/repos/#create-a-release) (:write) -- [`GET /repos/:owner/:repo/releases/:release_id`](/rest/reference/repos/#get-a-release) (:read) -- [`PATCH /repos/:owner/:repo/releases/:release_id`](/rest/reference/repos/#update-a-release) (:write) -- [`DELETE /repos/:owner/:repo/releases/:release_id`](/rest/reference/repos/#delete-a-release) (:write) -- [`GET /repos/:owner/:repo/releases/:release_id/assets`](/rest/reference/repos/#list-release-assets) (:read) -- [`GET /repos/:owner/:repo/releases/assets/:asset_id`](/rest/reference/repos/#get-a-release-asset) (:read) -- [`PATCH /repos/:owner/:repo/releases/assets/:asset_id`](/rest/reference/repos/#update-a-release-asset) (:write) -- [`DELETE /repos/:owner/:repo/releases/assets/:asset_id`](/rest/reference/repos/#delete-a-release-asset) (:write) -- [`GET /repos/:owner/:repo/releases/latest`](/rest/reference/repos/#get-the-latest-release) (:read) -- [`GET /repos/:owner/:repo/releases/tags/:tag`](/rest/reference/repos/#get-a-release-by-tag-name) (:read) - -### Permission on "deployments" - -- [`GET /repos/:owner/:repo/deployments`](/rest/reference/repos#list-deployments) (:read) -- [`POST /repos/:owner/:repo/deployments`](/rest/reference/repos#create-a-deployment) (:write) -- [`GET /repos/:owner/:repo/deployments/:deployment_id`](/rest/reference/repos#get-a-deployment) (:read){% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -- [`DELETE /repos/:owner/:repo/deployments/:deployment_id`](/rest/reference/repos#delete-a-deployment) (:write){% endif %} -- [`GET /repos/:owner/:repo/deployments/:deployment_id/statuses`](/rest/reference/repos#list-deployment-statuses) (:read) -- [`POST /repos/:owner/:repo/deployments/:deployment_id/statuses`](/rest/reference/repos#create-a-deployment-status) (:write) -- [`GET /repos/:owner/:repo/deployments/:deployment_id/statuses/:status_id`](/rest/reference/repos#get-a-deployment-status) (:read) - -### Permission on "emails" - -{% if currentVersion == "free-pro-team@latest" %} -- [`PATCH /user/email/visibility`](/v3/users/emails/#set-primary-email-visibility-for-the-authenticated-user) (:write) -{% endif %} -- [`GET /user/emails`](/v3/users/emails/#list-email-addresses-for-the-authenticated-user) (:read) -- [`POST /user/emails`](/v3/users/emails/#add-an-email-address-for-the-authenticated-user) (:write) -- [`DELETE /user/emails`](/v3/users/emails/#delete-an-email-address-for-the-authenticated-user) (:write) -- [`GET /user/public_emails`](/v3/users/emails/#list-public-email-addresses-for-the-authenticated-user) (:read) - -### Permission on "followers" - -- [`GET /user/followers`](/v3/users/followers/#list-followers-of-a-user) (:read) -- [`GET /user/following`](/v3/users/followers/#list-the-people-a-user-follows) (:read) -- [`GET /user/following/:username`](/v3/users/followers/#check-if-a-person-is-followed-by-the-authenticated-user) (:read) -- [`PUT /user/following/:username`](/v3/users/followers/#follow-a-user) (:write) -- [`DELETE /user/following/:username`](/v3/users/followers/#unfollow-a-user) (:write) - -### Permission on "gpg keys" - -- [`GET /user/gpg_keys`](/v3/users/gpg_keys/#list-gpg-keys-for-the-authenticated-user) (:read) -- [`POST /user/gpg_keys`](/v3/users/gpg_keys/#create-a-gpg-key-for-the-authenticated-user) (:write) -- [`GET /user/gpg_keys/:gpg_key_id`](/v3/users/gpg_keys/#get-a-gpg-key-for-the-authenticated-user) (:read) -- [`DELETE /user/gpg_keys/:gpg_key_id`](/v3/users/gpg_keys/#delete-a-gpg-key-for-the-authenticated-user) (:write) - -### Permission on "issues" - -Issues and pull requests are closely related. For more information, see "[List issues assigned to the authenticated user](/v3/issues/#list-issues-assigned-to-the-authenticated-user)." If your GitHub App has permissions on issues but not on pull requests, these endpoints will be limited to issues. Endpoints that return both issues and pull requests will be filtered. Endpoints that allow operations on both issues and pull requests will be restricted to issues. - -- [`GET /repos/:owner/:repo/issues`](/v3/issues/#list-repository-issues) (:read) -- [`POST /repos/:owner/:repo/issues`](/v3/issues/#create-an-issue) (:write) -- [`GET /repos/:owner/:repo/issues/:issue_number`](/v3/issues/#get-an-issue) (:read) -- [`PATCH /repos/:owner/:repo/issues/:issue_number`](/v3/issues/#update-an-issue) (:write) -- [`GET /repos/:owner/:repo/issues/:issue_number/comments`](/v3/issues/comments/#list-issue-comments) (:read) -- [`POST /repos/:owner/:repo/issues/:issue_number/comments`](/v3/issues/comments/#create-an-issue-comment) (:write) -- [`PUT /repos/:owner/:repo/issues/:issue_number/lock`](/v3/issues/#lock-an-issue) (:write) -- [`DELETE /repos/:owner/:repo/issues/:issue_number/lock`](/v3/issues/#unlock-an-issue) (:write) -- [`GET /repos/:owner/:repo/issues/:issue_number/reactions`](/v3/reactions/#list-reactions-for-an-issue) (:read) -- [`POST /repos/:owner/:repo/issues/:issue_number/reactions`](/v3/reactions/#create-reaction-for-an-issue) (:write) -- [`GET /repos/:owner/:repo/issues/:issue_number/timeline`](/v3/issues/timeline/#list-timeline-events-for-an-issue) (:read) -- [`GET /repos/:owner/:repo/issues/comments`](/v3/issues/comments/#list-issue-comments-for-a-repository) (:read) -- [`GET /repos/:owner/:repo/issues/comments/:comment_id`](/v3/issues/comments/#get-an-issue-comment) (:read) -- [`PATCH /repos/:owner/:repo/issues/comments/:comment_id`](/v3/issues/comments/#update-an-issue-comment) (:write) -- [`DELETE /repos/:owner/:repo/issues/comments/:comment_id`](/v3/issues/comments/#delete-an-issue-comment) (:write) -- [`GET /repos/:owner/:repo/issues/comments/:comment_id/reactions`](/v3/reactions/#list-reactions-for-an-issue-comment) (:read) -- [`POST /repos/:owner/:repo/issues/comments/:comment_id/reactions`](/v3/reactions/#create-reaction-for-an-issue-comment) (:write) - -_Assignees_ -- [`GET /repos/:owner/:repo/assignees`](/v3/issues/assignees/#list-assignees) (:read) -- [`GET /repos/:owner/:repo/assignees/:username`](/v3/issues/assignees/#check-if-a-user-can-be-assigned) (:read) -- [`POST /repos/:owner/:repo/issues/:issue_number/assignees`](/v3/issues/assignees/#add-assignees-to-an-issue) (:write) -- [`DELETE /repos/:owner/:repo/issues/:issue_number/assignees`](/v3/issues/assignees/#remove-assignees-from-an-issue) (:write) - -_Events_ -- [`GET /repos/:owner/:repo/issues/:issue_number/events`](/v3/issues/events/#list-issue-events) (:read) -- [Get an issue event](/v3/issues/events/#get-an-issue-event) (:read) - -_Labels_ -- [`GET /repos/:owner/:repo/issues/:issue_number/labels`](/v3/issues/labels/#list-labels-for-an-issue) (:read) -- [`POST /repos/:owner/:repo/issues/:issue_number/labels`](/v3/issues/labels/#add-labels-to-an-issue) (:write) -- [`PUT /repos/:owner/:repo/issues/:issue_number/labels`](/v3/issues/labels/#set-labels-for-an-issue) (:write) -- [`DELETE /repos/:owner/:repo/issues/:issue_number/labels`](/v3/issues/labels/#remove-all-labels-from-an-issue) (:write) -- [`DELETE /repos/:owner/:repo/issues/:issue_number/labels/:name`](/v3/issues/labels/#remove-a-label-from-an-issue) (:write) -- [`GET /repos/:owner/:repo/labels`](/v3/issues/labels/#list-labels-for-a-repository) (:read) -- [`POST /repos/:owner/:repo/labels`](/v3/issues/labels/#create-a-label) (:write) -- [`GET /repos/:owner/:repo/labels/:name`](/v3/issues/labels/#get-a-label) (:read) -- [`PATCH /repos/:owner/:repo/labels/:name`](/v3/issues/labels/#update-a-label) (:write) -- [`DELETE /repos/:owner/:repo/labels/:name`](/v3/issues/labels/#delete-a-label) (:write) - -_Milestones_ -- [`GET /repos/:owner/:repo/milestones`](/v3/issues/milestones/#list-milestones) (:read) -- [`POST /repos/:owner/:repo/milestones`](/v3/issues/milestones/#create-a-milestone) (:write) -- [`GET /repos/:owner/:repo/milestones/:milestone_number`](/v3/issues/milestones/#get-a-milestone) (:read) -- [`PATCH /repos/:owner/:repo/milestones/:milestone_number`](/v3/issues/milestones/#update-a-milestone) (:write) -- [`DELETE /repos/:owner/:repo/milestones/:milestone_number`](/v3/issues/milestones/#delete-a-milestone) (:write) -- [`GET /repos/:owner/:repo/milestones/:milestone_number/labels`](/v3/issues/labels/#list-labels-for-issues-in-a-milestone) (:read) - -_Reactions_ -- [`GET /repos/:owner/:repo/issues/comments/:comment_id/reactions`](/v3/reactions/#list-reactions-for-an-issue-comment) (:read) -- [`POST /repos/:owner/:repo/issues/comments/:comment_id/reactions`](/v3/reactions/#create-reaction-for-an-issue-comment) (:write) -- [`GET /repos/:owner/:repo/issues/:issue_number/reactions`](/v3/reactions/#list-reactions-for-an-issue) (:read) -- [`POST /repos/:owner/:repo/issues/:issue_number/reactions`](/v3/reactions/#create-reaction-for-an-issue) (:write) -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -- [`DELETE /reactions/:reaction_id`](/v3/reactions/#delete-a-reaction-legacy) (:write) -- [`DELETE /repos/:owner/:repo/comments/:comment_id/reactions/:reaction_id`](/v3/reactions/#delete-a-commit-comment-reaction) (:write) -- [`DELETE /repos/:owner/:repo/issues/:issue_number/reactions/:reaction_id`](/v3/reactions/#delete-an-issue-reaction) (:write) -- [`DELETE /repos/:owner/:repo/issues/comments/:comment_id/reactions/:reaction_id`](/v3/reactions/#delete-an-issue-comment-reaction) (:write) -- [`DELETE /repos/:owner/:repo/pulls/comments/:comment_id/reactions/:reaction_id`](/v3/reactions/#delete-a-pull-request-comment-reaction) (:write) -- [`DELETE /orgs/:org/teams/:team_slug/discussions/:discussion_number/reactions/:reaction_id`](/v3/reactions/#delete-team-discussion-reaction) (:write) -- [`DELETE /orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id`](/v3/reactions/#delete-team-discussion-comment-reaction) (:write){% else %} -- [`DELETE /reactions/:reaction_id`](/v3/reactions/#delete-a-reaction) (:write){% endif %} - -### Permission on "keys" - -_Keys_ -- [`GET /user/keys`](/v3/users/keys/#list-public-ssh-keys-for-the-authenticated-user) (:read) -- [`POST /user/keys`](/v3/users/keys/#create-a-public-ssh-key-for-the-authenticated-user) (:write) -- [`GET /user/keys/:key_id`](/v3/users/keys/#get-a-public-ssh-key-for-the-authenticated-user) (:read) -- [`DELETE /user/keys/:key_id`](/v3/users/keys/#delete-a-public-ssh-key-for-the-authenticated-user) (:write) - -### Permission on "members" - -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /organizations/:org_id/team/:team_id/team-sync/group-mappings`](/v3/teams/team_sync/#list-idp-groups-for-a-team) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`PATCH /organizations/:org_id/team/:team_id/team-sync/group-mappings`](/v3/teams/team_sync/#create-or-update-idp-group-connections) (:write) -{% endif %} -- [`GET /orgs/:org/outside_collaborators`](/v3/orgs/outside_collaborators/#list-outside-collaborators-for-an-organization) (:read) -- [`PUT /orgs/:org/outside_collaborators/:username`](/v3/orgs/outside_collaborators/#convert-an-organization-member-to-outside-collaborator) (:write) -- [`DELETE /orgs/:org/outside_collaborators/:username`](/v3/orgs/outside_collaborators/#remove-outside-collaborator-from-an-organization) (:write) -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /orgs/:org/team-sync/groups`](/v3/teams/team_sync/#list-idp-groups-for-an-organization) (:write) -{% endif %} -- [`GET /orgs/:org/team/:team_id`](/v3/teams/#get-a-team-by-name) (:read) -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /scim/v2/orgs/:org/Users`](/v3/scim/#list-scim-provisioned-identities) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`POST /scim/v2/orgs/:org/Users`](/v3/scim/#provision-and-invite-a-scim-user) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /scim/v2/orgs/:org/Users/:external_identity_guid`](/v3/scim/#get-scim-provisioning-information-for-a-user) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`PUT /scim/v2/orgs/:org/Users/:external_identity_guid`](/v3/scim/#set-scim-information-for-a-provisioned-user) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`PATCH /scim/v2/orgs/:org/Users/:external_identity_guid`](/v3/scim/#update-an-attribute-for-a-scim-user) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`DELETE /scim/v2/orgs/:org/Users/:external_identity_guid`](/v3/scim/#delete-a-scim-user-from-an-organization) (:write) -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -_Invitations_ -- [`GET /orgs/:org/invitations`](/v3/orgs/members/#list-pending-organization-invitations) (:read) -- [`POST /orgs/:org/invitations`](/v3/orgs/members/#create-an-organization-invitation) (:write) -- [`GET /orgs/:org/invitations/:invitation_id/teams`](/v3/orgs/members/#list-organization-invitation-teams) (:read) -- [`GET /teams/:team_id/invitations`](/v3/teams/members/#list-pending-team-invitations) (:read) -{% endif %} - -_Organization members_ -- [`DELETE /orgs/:org/members/:username`](/v3/orgs/members/#remove-an-organization-member) (:write) -- [`GET /orgs/:org/memberships/:username`](/v3/orgs/members/#get-organization-membership-for-a-user) (:read) -- [`PUT /orgs/:org/memberships/:username`](/v3/orgs/members/#set-organization-membership-for-a-user) (:write) -- [`DELETE /orgs/:org/memberships/:username`](/v3/orgs/members/#remove-organization-membership-for-a-user) (:write) -- [`PUT /orgs/:org/public_members/:username`](/v3/orgs/members/#set-public-organization-membership-for-the-authenticated-user) (:write) -- [`DELETE /orgs/:org/public_members/:username`](/v3/orgs/members/#remove-public-organization-membership-for-the-authenticated-user) (:write) -- [`GET /user/memberships/orgs`](/v3/orgs/members/#list-organization-memberships-for-the-authenticated-user) (:read) -- [`GET /user/memberships/orgs/:org`](/v3/orgs/members/#get-an-organization-membership-for-the-authenticated-user) (:read) -- [`PATCH /user/memberships/orgs/:org`](/v3/orgs/members/#update-an-organization-membership-for-the-authenticated-user) (:write) - -_Team members_ -- [`GET /teams/:team_id/members`](/v3/teams/members/#list-team-members) (:read) -- [`GET /teams/:team_id/memberships/:username`](/v3/teams/members/#get-team-membership-for-a-user) (:read) -- [`PUT /teams/:team_id/memberships/:username`](/v3/teams/members/#add-or-update-team-membership-for-a-user) (:write) -- [`DELETE /teams/:team_id/memberships/:username`](/v3/teams/members/#remove-team-membership-for-a-user) (:write) - -_Teams_ -- [`GET /orgs/:org/teams`](/v3/teams/#list-teams) (:read) -- [`POST /orgs/:org/teams`](/v3/teams/#create-a-team) (:write) -- [`GET /orgs/:org/teams/:team_slug`](/v3/teams/#get-a-team-by-name) (:read) -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.21" %} -- [`GET /teams/:team_id`](/v3/teams/#get-a-team) (:read) -{% endif %} -- [`PATCH /teams/:team_id`](/v3/teams/#update-a-team) (:write) -- [`DELETE /teams/:team_id`](/v3/teams/#delete-a-team) (:write) -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -- [`GET /teams/:team_id/projects`](/v3/teams/#list-team-projects) (:read) -- [`GET /teams/:team_id/projects/:project_id`](/v3/teams/#check-team-permissions-for-a-project) (:read) -- [`PUT /teams/:team_id/projects/:project_id`](/v3/teams/#add-or-update-team-project-permissions) (:read) -- [`DELETE /teams/:team_id/projects/:project_id`](/v3/teams/#remove-a-project-from-a-team) (:read) -{% endif %} -- [`GET /teams/:team_id/repos`](/v3/teams/#list-team-repositories) (:read) -- [`GET /teams/:team_id/repos/:owner/:repo`](/v3/teams/#check-team-permissions-for-a-repository) (:read) -- [`PUT /teams/:team_id/repos/:owner/:repo`](/v3/teams/#add-or-update-team-repository-permissions) (:read) -- [`DELETE /teams/:team_id/repos/:owner/:repo`](/v3/teams/#remove-a-repository-from-a-team) (:write) -- [`GET /teams/:team_id/teams`](/v3/teams/#list-child-teams) (:read) - -### Permission on "organization administration" - -- [`PATCH /orgs/:org`](/v3/orgs/#update-an-organization) (:write) -{% if currentVersion == "free-pro-team@latest" %} -- [`GET /orgs/:org/interaction-limits`](/v3/interactions/orgs/#get-interaction-restrictions-for-an-organization) (:read) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`PUT /orgs/:org/interaction-limits`](/v3/interactions/orgs/#set-interaction-restrictions-for-an-organization) (:write) -{% endif %} -{% if currentVersion == "free-pro-team@latest" %} -- [`DELETE /orgs/:org/interaction-limits`](/v3/interactions/orgs/#remove-interaction-restrictions-for-an-organization) (:write) -{% endif %} - -### Permission on "organization hooks" - -- [`GET /orgs/:org/hooks`](/rest/reference/orgs#webhooks/#list-organization-webhooks) (:read) -- [`POST /orgs/:org/hooks`](/rest/reference/orgs#webhooks/#create-an-organization-webhook) (:write) -- [`GET /orgs/:org/hooks/:hook_id`](/rest/reference/orgs#webhooks/#get-an-organization-webhook) (:read) -- [`PATCH /orgs/:org/hooks/:hook_id`](/rest/reference/orgs#webhooks/#update-an-organization-webhook) (:write) -- [`DELETE /orgs/:org/hooks/:hook_id`](/rest/reference/orgs#webhooks/#delete-an-organization-webhook) (:write) -- [`POST /orgs/:org/hooks/:hook_id/pings`](/rest/reference/orgs#webhooks/#ping-an-organization-webhook) (:write) - -_Teams_ -- [`DELETE /teams/:team_id/projects/:project_id`](/v3/teams/#remove-a-project-from-a-team) (:read) - -{% if enterpriseServerVersions contains currentVersion %} -### Permission on "organization pre receive hooks" - -- [`GET /orgs/:org/pre-receive-hooks`](/enterprise/user/rest/reference/enterprise-admin#list-pre-receive-hooks-for-an-organization) (:read) -- [`GET /orgs/:org/pre-receive-hooks/:pre_receive_hook_id`](/enterprise/user/rest/reference/enterprise-admin#get-a-pre-receive-hook-for-an-organization) (:read) -- [`PATCH /orgs/:org/pre-receive-hooks/:pre_receive_hook_id`](/enterprise/user/rest/reference/enterprise-admin#update-pre-receive-hook-enforcement-for-an-organization) (:write) -- [`DELETE /orgs/:org/pre-receive-hooks/:pre_receive_hook_id`](/enterprise/user/rest/reference/enterprise-admin#remove-pre-receive-hook-enforcement-for-an-organization) (:write) -{% endif %} - -### Permission on "organization projects" - -- [`POST /orgs/:org/projects`](/v3/projects/#create-an-organization-project) (:write) -- [`GET /projects/:project_id`](/v3/projects/#get-a-project) (:read) -- [`PATCH /projects/:project_id`](/v3/projects/#update-a-project) (:write) -- [`DELETE /projects/:project_id`](/v3/projects/#delete-a-project) (:write) -- [`POST /projects/:project_id/cards`](/v3/projects/cards/#create-a-project-card) (:write) -- [`GET /projects/:project_id/columns`](/v3/projects/columns/#list-project-columns) (:read) -- [`POST /projects/:project_id/columns`](/v3/projects/columns/#create-a-project-column) (:write) -- [`GET /projects/columns/:column_id`](/v3/projects/columns/#get-a-project-column) (:read) -- [`PATCH /projects/columns/:column_id`](/v3/projects/columns/#update-a-project-column) (:write) -- [`DELETE /projects/columns/:column_id`](/v3/projects/columns/#delete-a-project-column) (:write) -- [`GET /projects/columns/:column_id/cards`](/v3/projects/cards/#list-project-cards) (:read) -- [`POST /projects/columns/:column_id/cards`](/v3/projects/cards/#create-a-project-card) (:write) -- [`POST /projects/columns/:column_id/moves`](/v3/projects/columns/#move-a-project-column) (:write) -- [`GET /projects/columns/cards/:card_id`](/v3/projects/cards/#get-a-project-card) (:read) -- [`PATCH /projects/columns/cards/:card_id`](/v3/projects/cards/#update-a-project-card) (:write) -- [`DELETE /projects/columns/cards/:card_id`](/v3/projects/cards/#delete-a-project-card) (:write) -- [`POST /projects/columns/cards/:card_id/moves`](/v3/projects/cards/#move-a-project-card) (:write) - -{% if currentVersion == "free-pro-team@latest" %} -### Permission on "organization user blocking" - -- [`GET /orgs/:org/blocks`](/v3/orgs/blocking/#list-users-blocked-by-an-organization) (:read) -- [`GET /orgs/:org/blocks/:username`](/v3/orgs/blocking/#check-if-a-user-is-blocked-by-an-organization) (:read) -- [`PUT /orgs/:org/blocks/:username`](/v3/orgs/blocking/#block-a-user-from-an-organization) (:write) -- [`DELETE /orgs/:org/blocks/:username`](/v3/orgs/blocking/#unblock-a-user-from-an-organization) (:write) -{% endif %} - -### Permission on "pages" - -- [`GET /repos/:owner/:repo/pages`](/rest/reference/repos#get-a-github-pages-site) (:read) -- [`POST /repos/:owner/:repo/pages`](/rest/reference/repos#create-a-github-pages-site) (:write) -- [`PUT /repos/:owner/:repo/pages`](/rest/reference/repos#update-information-about-a-github-pages-site) (:write) -- [`DELETE /repos/:owner/:repo/pages`](/rest/reference/repos#delete-a-github-pages-site) (:write) -- [`GET /repos/:owner/:repo/pages/builds`](/rest/reference/repos#list-github-pages-builds) (:read) -- [`POST /repos/:owner/:repo/pages/builds`](/rest/reference/repos#request-a-github-pages-build) (:write) -- [`GET /repos/:owner/:repo/pages/builds/:build_id`](/rest/reference/repos#get-github-pages-build) (:read) -- [`GET /repos/:owner/:repo/pages/builds/latest`](/rest/reference/repos#get-latest-pages-build) (:read) - -### Permission on "pull requests" - -Pull requests and issues are closely related.. If your GitHub App has permissions on pull requests but not on issues, these endpoints will be limited to pull requests. Endpoints that return both pull requests and issues will be filtered. Endpoints that allow operations on both pull requests and issues will be restricted to pull requests. - -- [`PATCH /repos/:owner/:repo/issues/:issue_number`](/v3/issues/#update-an-issue) (:write) -- [`GET /repos/:owner/:repo/issues/:issue_number/comments`](/v3/issues/comments/#list-issue-comments) (:read) -- [`POST /repos/:owner/:repo/issues/:issue_number/comments`](/v3/issues/comments/#create-an-issue-comment) (:write) -- [`PUT /repos/:owner/:repo/issues/:issue_number/lock`](/v3/issues/#lock-an-issue) (:write) -- [`DELETE /repos/:owner/:repo/issues/:issue_number/lock`](/v3/issues/#unlock-an-issue) (:write) -- [`GET /repos/:owner/:repo/issues/:issue_number/timeline`](/v3/issues/timeline/#list-timeline-events-for-an-issue) (:read) -- [`GET /repos/:owner/:repo/issues/comments`](/v3/issues/comments/#list-issue-comments-for-a-repository) (:read) -- [`GET /repos/:owner/:repo/issues/comments/:comment_id`](/v3/issues/comments/#get-an-issue-comment) (:read) -- [`PATCH /repos/:owner/:repo/issues/comments/:comment_id`](/v3/issues/comments/#update-an-issue-comment) (:write) -- [`DELETE /repos/:owner/:repo/issues/comments/:comment_id`](/v3/issues/comments/#delete-an-issue-comment) (:write) -- [`GET /repos/:owner/:repo/pulls`](/v3/pulls/#list-pull-requests) (:read) -- [`POST /repos/:owner/:repo/pulls`](/v3/pulls/#create-a-pull-request) (:write) -- [`GET /repos/:owner/:repo/pulls/:pull_number`](/v3/pulls/#get-a-pull-request) (:read) -- [`PATCH /repos/:owner/:repo/pulls/:pull_number`](/v3/pulls/#update-a-pull-request) (:write) -- [`GET /repos/:owner/:repo/pulls/:pull_number/comments`](/v3/pulls/comments/#list-review-comments-on-a-pull-request) (:read) -- [`POST /repos/:owner/:repo/pulls/:pull_number/comments`](/v3/pulls/comments/#create-a-review-comment-for-a-pull-request) (:write) -- [`GET /repos/:owner/:repo/pulls/:pull_number/commits`](/v3/pulls/#list-commits-on-a-pull-request) (:read) -- [`GET /repos/:owner/:repo/pulls/:pull_number/files`](/v3/pulls/#list-pull-requests-files) (:read) -- [`GET /repos/:owner/:repo/pulls/:pull_number/merge`](/v3/pulls/#check-if-a-pull-request-has-been-merged) (:read) -- [`GET /repos/:owner/:repo/pulls/comments`](/v3/pulls/comments/#list-review-comments-in-a-repository) (:read) -- [`GET /repos/:owner/:repo/pulls/comments/:comment_id`](/v3/pulls/comments/#get-a-review-comment-for-a-pull-request) (:read) -- [`PATCH /repos/:owner/:repo/pulls/comments/:comment_id`](/v3/pulls/comments/#update-a-review-comment-for-a-pull-request) (:write) -- [`DELETE /repos/:owner/:repo/pulls/comments/:comment_id`](/v3/pulls/comments/#delete-a-review-comment-for-a-pull-request) (:write) - -_Assignees_ -- [`GET /repos/:owner/:repo/assignees`](/v3/issues/assignees/#list-assignees) (:read) -- [`GET /repos/:owner/:repo/assignees/:username`](/v3/issues/assignees/#check-if-a-user-can-be-assigned) (:read) -- [`POST /repos/:owner/:repo/issues/:issue_number/assignees`](/v3/issues/assignees/#add-assignees-to-an-issue) (:write) -- [`DELETE /repos/:owner/:repo/issues/:issue_number/assignees`](/v3/issues/assignees/#remove-assignees-from-an-issue) (:write) - -_Events_ -- [`GET /repos/:owner/:repo/issues/:issue_number/events`](/v3/issues/events/#list-issue-events) (:read) -- [`GET /repos/:owner/:repo/issues/events/:event_id`](/v3/issues/events/#get-an-issue-event) (:read) -- [`POST /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/events`](/v3/pulls/reviews/#submit-a-review-for-a-pull-request) (:write) - -_Labels_ -- [`GET /repos/:owner/:repo/issues/:issue_number/labels`](/v3/issues/labels/#list-labels-for-an-issue) (:read) -- [`POST /repos/:owner/:repo/issues/:issue_number/labels`](/v3/issues/labels/#add-labels-to-an-issue) (:write) -- [`PUT /repos/:owner/:repo/issues/:issue_number/labels`](/v3/issues/labels/#set-labels-for-an-issue) (:write) -- [`DELETE /repos/:owner/:repo/issues/:issue_number/labels`](/v3/issues/labels/#remove-all-labels-from-an-issue) (:write) -- [`DELETE /repos/:owner/:repo/issues/:issue_number/labels/:name`](/v3/issues/labels/#remove-a-label-from-an-issue) (:write) -- [`GET /repos/:owner/:repo/labels`](/v3/issues/labels/#list-labels-for-a-repository) (:read) -- [`POST /repos/:owner/:repo/labels`](/v3/issues/labels/#create-a-label) (:write) -- [`GET /repos/:owner/:repo/labels/:name`](/v3/issues/labels/#get-a-label) (:read) -- [`PATCH /repos/:owner/:repo/labels/:name`](/v3/issues/labels/#update-a-label) (:write) -- [`DELETE /repos/:owner/:repo/labels/:name`](/v3/issues/labels/#delete-a-label) (:write) - -_Milestones_ -- [`GET /repos/:owner/:repo/milestones`](/v3/issues/milestones/#list-milestones) (:read) -- [`POST /repos/:owner/:repo/milestones`](/v3/issues/milestones/#create-a-milestone) (:write) -- [`GET /repos/:owner/:repo/milestones/:milestone_number`](/v3/issues/milestones/#get-a-milestone) (:read) -- [`PATCH /repos/:owner/:repo/milestones/:milestone_number`](/v3/issues/milestones/#update-a-milestone) (:write) -- [`DELETE /repos/:owner/:repo/milestones/:milestone_number`](/v3/issues/milestones/#delete-a-milestone) (:write) -- [`GET /repos/:owner/:repo/milestones/:milestone_number/labels`](/v3/issues/labels/#list-labels-for-issues-in-a-milestone) (:read) - -_Reactions_ -- [`POST /repos/:owner/:repo/issues/:issue_number/reactions`](/v3/reactions/#create-reaction-for-an-issue) (:write) -- [`GET /repos/:owner/:repo/issues/comments/:comment_id/reactions`](/v3/reactions/#list-reactions-for-an-issue-comment) (:read) -- [`POST /repos/:owner/:repo/issues/comments/:comment_id/reactions`](/v3/reactions/#create-reaction-for-an-issue-comment) (:write) -- [`GET /repos/:owner/:repo/pulls/comments/:comment_id/reactions`](/v3/reactions/#list-reactions-for-a-pull-request-review-comment) (:read) -- [`POST /repos/:owner/:repo/pulls/comments/:comment_id/reactions`](/v3/reactions/#create-reaction-for-a-pull-request-review-comment) (:write) -{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" %} -- [`DELETE /reactions/:reaction_id`](/v3/reactions/#delete-a-reaction-legacy) (:write) -- [`DELETE /repos/:owner/:repo/comments/:comment_id/reactions/:reaction_id`](/v3/reactions/#delete-a-commit-comment-reaction) (:write) -- [`DELETE /repos/:owner/:repo/issues/:issue_number/reactions/:reaction_id`](/v3/reactions/#delete-an-issue-reaction) (:write) -- [`DELETE /repos/:owner/:repo/issues/comments/:comment_id/reactions/:reaction_id`](/v3/reactions/#delete-an-issue-comment-reaction) (:write) -- [`DELETE /repos/:owner/:repo/pulls/comments/:comment_id/reactions/:reaction_id`](/v3/reactions/#delete-a-pull-request-comment-reaction) (:write) -- [`DELETE /orgs/:org/teams/:team_slug/discussions/:discussion_number/reactions/:reaction_id`](/v3/reactions/#delete-team-discussion-reaction) (:write) -- [`DELETE /orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id`](/v3/reactions/#delete-team-discussion-comment-reaction) (:write){% else %}- [`DELETE /reactions/:reaction_id`](/v3/reactions/#delete-a-reaction) (:write){% endif %} - -_Requested reviewers_ -- [`GET /repos/:owner/:repo/pulls/:pull_number/requested_reviewers`](/v3/pulls/review_requests/#list-requested-reviewers-for-a-pull-request) (:read) -- [`POST /repos/:owner/:repo/pulls/:pull_number/requested_reviewers`](/v3/pulls/review_requests/#request-reviewers-for-a-pull-request) (:write) -- [`DELETE /repos/:owner/:repo/pulls/:pull_number/requested_reviewers`](/v3/pulls/review_requests/#remove-requested-reviewers-from-a-pull-request) (:write) - -_Reviews_ -- [`GET /repos/:owner/:repo/pulls/:pull_number/reviews`](/v3/pulls/reviews/#list-reviews-for-a-pull-request) (:read) -- [`POST /repos/:owner/:repo/pulls/:pull_number/reviews`](/v3/pulls/reviews/#create-a-review-for-a-pull-request) (:write) -- [`GET /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id`](/v3/pulls/reviews/#get-a-review-for-a-pull-request) (:read) -- [`PUT /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id`](/v3/pulls/reviews/#update-a-review-for-a-pull-request) (:write) -- [`DELETE /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id`](/v3/pulls/reviews/#delete-a-pending-review-for-a-pull-request) (:write) -- [`GET /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/comments`](/v3/pulls/reviews/#list-comments-for-a-pull-request-review) (:read) -- [`PUT /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/dismissals`](/v3/pulls/reviews/#dismiss-a-review-for-a-pull-request) (:write) - -### Permission on "repository hooks" - -- [`GET /repos/:owner/:repo/hooks`](/v3/repos/hooks/#list-repository-webhooks) (:read) -- [`POST /repos/:owner/:repo/hooks`](/v3/repos/hooks/#create-a-repository-webhook) (:write) -- [`GET /repos/:owner/:repo/hooks/:hook_id`](/v3/repos/hooks/#get-a-repository-webhook) (:read) -- [`PATCH /repos/:owner/:repo/hooks/:hook_id`](/v3/repos/hooks/#update-a-repository-webhook) (:write) -- [`DELETE /repos/:owner/:repo/hooks/:hook_id`](/v3/repos/hooks/#delete-a-repository-webhook) (:write) -- [`POST /repos/:owner/:repo/hooks/:hook_id/pings`](/v3/repos/hooks/#ping-a-repository-webhook) (:read) -- [`POST /repos/:owner/:repo/hooks/:hook_id/tests`](/v3/repos/hooks/#test-the-push-repository-webhook) (:read) - -{% if enterpriseServerVersions contains currentVersion %} -### Permission on "repository pre receive hooks" - -- [`GET /repos/:owner/:repo/pre-receive-hooks`](/enterprise/user/rest/reference/enterprise-admin#list-pre-receive-hooks-for-a-repository) (:read) -- [`GET /repos/:owner/:repo/pre-receive-hooks/:pre_receive_hook_id`](/enterprise/user/rest/reference/enterprise-admin#get-a-pre-receive-hook-for-a-repository) (:read) -- [`PATCH /repos/:owner/:repo/pre-receive-hooks/:pre_receive_hook_id`](/enterprise/user/rest/reference/enterprise-admin#update-pre-receive-hook-enforcement-for-a-repository) (:write) -- [`DELETE /repos/:owner/:repo/pre-receive-hooks/:pre_receive_hook_id`](/enterprise/user/rest/reference/enterprise-admin#remove-pre-receive-hook-enforcement-for-a-repository) (:write) -{% endif %} - -### Permission on "repository projects" - -- [`GET /projects/:project_id`](/v3/projects/#get-a-project) (:read) -- [`PATCH /projects/:project_id`](/v3/projects/#update-a-project) (:write) -- [`DELETE /projects/:project_id`](/v3/projects/#delete-a-project) (:write) -- [`POST /projects/:project_id/cards`](/v3/projects/cards/#create-a-project-card) (:write) -- [`GET /projects/:project_id/columns`](/v3/projects/columns/#list-project-columns) (:read) -- [`POST /projects/:project_id/columns`](/v3/projects/columns/#create-a-project-column) (:write) -- [`GET /projects/columns/:column_id`](/v3/projects/columns/#get-a-project-column) (:read) -- [`PATCH /projects/columns/:column_id`](/v3/projects/columns/#update-a-project-column) (:write) -- [`DELETE /projects/columns/:column_id`](/v3/projects/columns/#delete-a-project-column) (:write) -- [`GET /projects/columns/:column_id/cards`](/v3/projects/cards/#list-project-cards) (:read) -- [`POST /projects/columns/:column_id/cards`](/v3/projects/cards/#create-a-project-card) (:write) -- [`POST /projects/columns/:column_id/moves`](/v3/projects/columns/#move-a-project-column) (:write) -- [`GET /projects/columns/cards/:card_id`](/v3/projects/cards/#get-a-project-card) (:read) -- [`PATCH /projects/columns/cards/:card_id`](/v3/projects/cards/#update-a-project-card) (:write) -- [`DELETE /projects/columns/cards/:card_id`](/v3/projects/cards/#delete-a-project-card) (:write) -- [`POST /projects/columns/cards/:card_id/moves`](/v3/projects/cards/#move-a-project-card) (:write) -- [`GET /repos/:owner/:repo/projects`](/v3/projects/#list-repository-projects) (:read) -- [`POST /repos/:owner/:repo/projects`](/v3/projects/#create-a-repository-project) (:write) - -_Teams_ -- [`DELETE /teams/:team_id/projects/:project_id`](/v3/teams/#remove-a-project-from-a-team) (:read) - -{% if currentVersion == "free-pro-team@latest" %} -### Permission on "secrets" - -* [`GET /repos/:owner/:repo/actions/secrets/public-key`](/v3/actions/secrets/#get-a-repository-public-key) (:read) -* [`GET /repos/:owner/:repo/actions/secrets`](/v3/actions/secrets/#list-repository-secrets) (:read) -* [`GET /repos/:owner/:repo/actions/secrets/:secret_name`](/v3/actions/secrets/#get-a-repository-secret) (:read) -* [`PUT /repos/:owner/:repo/actions/secrets/:secret_name`](/v3/actions/secrets/#create-or-update-a-repository-secret) (:write) -* [`DELETE /repos/:owner/:repo/actions/secrets/:secret_name`](/v3/actions/secrets/#delete-a-repository-secret) (:write) -* [`GET /orgs/:org/actions/secrets/public-key`](/v3/actions/secrets/#get-an-organization-public-key) (:read) -* [`GET /orgs/:org/actions/secrets`](/v3/actions/secrets/#list-organization-secrets) (:read) -* [`GET /orgs/:org/actions/secrets/:secret_name`](/v3/actions/secrets/#get-an-organization-secret) (:read) -* [`PUT /orgs/:org/actions/secrets/:secret_name`](/v3/actions/secrets/#create-or-update-an-organization-secret) (:write) -* [`GET /orgs/:org/actions/secrets/:secret_name/repositories`](/v3/actions/secrets/#list-selected-repositories-for-an-organization-secret) (:read) -* [`PUT /orgs/:org/actions/secrets/:secret_name/repositories`](/v3/actions/secrets/#set-selected-repositories-for-an-organization-secret) (:write) -* [`PUT /orgs/:org/actions/secrets/:secret_name/repositories/:repository_id`](/v3/actions/secrets/#add-selected-repository-to-an-organization-secret) (:write) -* [`DELETE /orgs/:org/actions/secrets/:secret_name/repositories/:repository_id`](/v3/actions/secrets/#remove-selected-repository-from-an-organization-secret) (:write) -* [`DELETE /orgs/:org/actions/secrets/:secret_name`](/v3/actions/secrets/#delete-an-organization-secret) (:write) - -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -### Permission on "security events" - -- [`GET /repos/:owner/:repo/code-scanning/alerts`](/v3/code-scanning/#list-code-scanning-alerts-for-a-repository) (:read) -- [`GET /repos/:owner/:repo/code-scanning/alerts/:alert_id`](/v3/code-scanning/#get-a-code-scanning-alert) (:read) -{% endif %} - -{% if currentVersion == "free-pro-team@latest" %} -### Permission on "self-hosted runners" -- [`GET /orgs/:org/actions/runners/downloads`](/v3/actions/self-hosted-runners/#list-runner-applications-for-an-organization) (:read) -- [`POST /orgs/:org/actions/runners/registration-token`](/v3/actions/self-hosted-runners/#create-a-registration-token-for-an-organization) (:write) -- [`GET /orgs/:org/actions/runners`](/v3/actions/self-hosted-runners/#list-self-hosted-runners-for-an-organization) (:read) -- [`GET /orgs/:org/actions/runners/:runner_id`](/v3/actions/self-hosted-runners/#get-a-self-hosted-runner-for-an-organization) (:read) -- [`POST /orgs/:org/actions/runners/remove-token`](/v3/actions/self-hosted-runners/#create-a-remove-token-for-an-organization) (:write) -- [`DELETE /orgs/:org/actions/runners/:runner_id`](/v3/actions/self-hosted-runners/#delete-a-self-hosted-runner-from-an-organization) (:write) -{% endif %} - -### Permission on "single file" - -- [`GET /repos/:owner/:repo/contents/:path`](/v3/repos/contents/#get-repository-content) (:read) -- [`PUT /repos/:owner/:repo/contents/:path`](/v3/repos/contents/#create-or-update-file-contents) (:write) -- [`DELETE /repos/:owner/:repo/contents/:path`](/v3/repos/contents/#delete-a-file) (:write) - -### Permission on "starring" - -- [`GET /user/starred/:owner/:repo`](/rest/reference/activity#check-if-a-repository-is-starred-by-the-authenticated-user) (:read) -- [`PUT /user/starred/:owner/:repo`](/rest/reference/activity#star-a-repository-for-the-authenticated-user) (:write) -- [`DELETE /user/starred/:owner/:repo`](/rest/reference/activity#unstar-a-repository-for-the-authenticated-user) (:write) - -### Permission on "statuses" - -- [`GET /repos/:owner/:repo/commits/:ref/status`](/v3/repos/statuses/#get-the-combined-status-for-a-specific-reference) (:read) -- [`GET /repos/:owner/:repo/commits/:ref/statuses`](/v3/repos/statuses/#list-commit-statuses-for-a-reference) (:read) -- [`POST /repos/:owner/:repo/statuses/:sha`](/v3/repos/statuses/#create-a-commit-status) (:write) - -### Permission on "team discussions" - -- [`GET /teams/:team_id/discussions`](/v3/teams/discussions/#list-discussions) (:read) -- [`POST /teams/:team_id/discussions`](/v3/teams/discussions/#create-a-discussion) (:write) -- [`GET /teams/:team_id/discussions/:discussion_number`](/v3/teams/discussions/#get-a-discussion) (:read) -- [`PATCH /teams/:team_id/discussions/:discussion_number`](/v3/teams/discussions/#update-a-discussion) (:write) -- [`DELETE /teams/:team_id/discussions/:discussion_number`](/v3/teams/discussions/#delete-a-discussion) (:write) -- [`GET /teams/:team_id/discussions/:discussion_number/comments`](/v3/teams/discussion_comments/#list-discussion-comments) (:read) -- [`POST /teams/:team_id/discussions/:discussion_number/comments`](/v3/teams/discussion_comments/#create-a-discussion-comment) (:write) -- [`GET /teams/:team_id/discussions/:discussion_number/comments/:comment_number`](/v3/teams/discussion_comments/#get-a-discussion-comment) (:read) -- [`PATCH /teams/:team_id/discussions/:discussion_number/comments/:comment_number`](/v3/teams/discussion_comments/#update-a-discussion-comment) (:write) -- [`DELETE /teams/:team_id/discussions/:discussion_number/comments/:comment_number`](/v3/teams/discussion_comments/#delete-a-discussion-comment) (:write) -- [`GET /teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`](/v3/reactions/#list-reactions-for-a-team-discussion-comment) (:read) -- [`POST /teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions`](/v3/reactions/#create-reaction-for-a-team-discussion-comment) (:write) -- [`GET /teams/:team_id/discussions/:discussion_number/reactions`](/v3/reactions/#list-reactions-for-a-team-discussion) (:read) -- [`POST /teams/:team_id/discussions/:discussion_number/reactions`](/v3/reactions/#create-reaction-for-a-team-discussion) (:write) diff --git a/content/rest/reference/projects.md b/content/rest/reference/projects.md deleted file mode 100644 index 652d9096ead9..000000000000 --- a/content/rest/reference/projects.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Projects -redirect_from: - - /v3/projects -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Cards - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'cards' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Collaborators - -This API allows you to interact with an organization's projects. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'collaborators' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Columns - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'columns' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/content/rest/reference/pulls.md b/content/rest/reference/pulls.md deleted file mode 100644 index 8bd9167b0cd4..000000000000 --- a/content/rest/reference/pulls.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Pulls -redirect_from: - - /v3/pulls -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The Pull Request API allows you to list, view, edit, create, and even merge pull requests. Comments on pull requests can be managed via the [Issue Comments API](/rest/reference/issues#comments). - -Every pull request is an issue, but not every issue is a pull request. For this reason, "shared" actions for both features, like manipulating assignees, labels and milestones, are provided within [the Issues API](/v3/issues). - -### Custom media types for pull requests - -These are the supported media types for pull requests. - - application/vnd.github.VERSION.raw+json - application/vnd.github.VERSION.text+json - application/vnd.github.VERSION.html+json - application/vnd.github.VERSION.full+json - application/vnd.github.VERSION.diff - application/vnd.github.VERSION.patch - -For more information, see "[Custom media types](/rest/overview/media-types)." - - - -If a diff is corrupt, contact {% data variables.contact.contact_support %}. Include the repository name and pull request ID in your message. - -### Link Relations - -Pull Requests have these possible link relations: - -Name | Description ------|-----------| -`self`| The API location of this Pull Request. -`html`| The HTML location of this Pull Request. -`issue`| The API location of this Pull Request's [Issue](/v3/issues/). -`comments`| The API location of this Pull Request's [Issue comments](/v3/issues/comments/). -`review_comments`| The API location of this Pull Request's [Review comments](/v3/pulls/comments/). -`review_comment`| The [URL template](/v3/#hypermedia) to construct the API location for a [Review comment](/v3/pulls/comments/) in this Pull Request's repository. -`commits`|The API location of this Pull Request's [commits](#list-commits-on-a-pull-request). -`statuses`| The API location of this Pull Request's [commit statuses](/v3/repos/statuses/), which are the statuses of its `head` branch. - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Reviews - -Pull Request Reviews are groups of Pull Request Review Comments on the Pull -Request, grouped together with a state and optional body comment. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'reviews' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Review comments - -Pull request review comments are comments on a portion of the unified diff made during a pull request review. Commit comments and issue comments are different from pull request review comments. You apply commit comments directly to a commit and you apply issue comments without referencing a portion of the unified diff. For more information, see "[Create a commit comment](/rest/reference/git#create-a-commit)" and "[Create an issue comment](/rest/reference/issues#create-an-issue-comment)." - -### Custom media types for pull request review comments - -These are the supported media types for pull request review comments. - - application/vnd.github.VERSION.raw+json - application/vnd.github.VERSION.text+json - application/vnd.github.VERSION.html+json - application/vnd.github.VERSION.full+json - -For more information, see "[Custom media types](/rest/overview/media-types)." - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'comments' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Review requests - -Pull request authors and repository owners and collaborators can request a pull request review from anyone with write access to the repository. Each requested reviewer will receive a notification asking them to review the pull request. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'review-requests' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/content/rest/reference/rate-limit.md b/content/rest/reference/rate-limit.md deleted file mode 100644 index 37ac798d29b7..000000000000 --- a/content/rest/reference/rate-limit.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Rate limit -redirect_from: - - /v3/rate_limit - - /v3/rate-limit -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The REST API overview documentation describes the [rate limit rules](/rest/overview/resources-in-the-rest-api#rate-limiting). You can check your current rate limit status at any time using the Rate Limit API described below. - -### Understanding your rate limit status - -The Search API has a [custom rate limit](/v3/search/#rate-limit), separate from the rate limit governing the rest of the REST API. The GraphQL API also has a [custom rate limit](/v4/guides/resource-limitations/#rate-limit) that is separate from and calculated differently than rate limits in the REST API. - -For these reasons, the Rate Limit API response categorizes your rate limit. Under `resources`, you'll see four -objects: - -* The `core` object provides your rate limit status for all non-search-related resources in the REST API. - -* The `search` object provides your rate limit status for the [Search API](/v3/search/). - -* The `graphql` object provides your rate limit status for the [GraphQL API](/v4/). - -* The `integration_manifest` object provides your rate limit status for the [GitHub App Manifest code conversion](/apps/building-github-apps/creating-github-apps-from-a-manifest/#3-you-exchange-the-temporary-code-to-retrieve-the-app-configuration) endpoint. - -For more information on the headers and values in the rate limit response, see "[Rate limiting](/v3/#rate-limiting)." - -{% include rest_operations_at_current_path %} diff --git a/content/rest/reference/reactions.md b/content/rest/reference/reactions.md deleted file mode 100644 index e7c92ebf207b..000000000000 --- a/content/rest/reference/reactions.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Reactions -redirect_from: - - /v3/reactions -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -### Reaction types - -When creating a reaction, the allowed values for the `content` parameter are as follows (with the corresponding emoji for reference): - -{% data reusables.repositories.reaction_list %} - -{% include rest_operations_at_current_path %} diff --git a/content/rest/reference/repos.md b/content/rest/reference/repos.md deleted file mode 100644 index 32b3272fcd97..000000000000 --- a/content/rest/reference/repos.md +++ /dev/null @@ -1,353 +0,0 @@ ---- -title: Repositories -allowTitleToDifferFromFilename: true -redirect_from: - - /v3/repos -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Branches - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'branches' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Collaborators - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'collaborators' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Comments - -### Custom media types for commit comments - -These are the supported media types for commit comments. You can read more -about the use of media types in the API [here](/v3/media/). - - application/vnd.github-commitcomment.raw+json - application/vnd.github-commitcomment.text+json - application/vnd.github-commitcomment.html+json - application/vnd.github-commitcomment.full+json - -For more information, see "[Custom media types](/rest/overview/media-types)." - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'comments' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Commits - -The Repo Commits API supports listing, viewing, and comparing commits in a repository. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'commits' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Community - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'community' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Contents - -These API endpoints let you create, modify, and delete Base64 encoded content in a repository. To request the raw format or rendered HTML (when supported), use custom media types for repository contents. - -### Custom media types for repository contents - -[READMEs](/v3/repos/contents/#get-a-repository-readme), [files](/v3/repos/contents/#get-repository-content), and [symlinks](/v3/repos/contents/#get-repository-content) support the following custom media types: - - application/vnd.github.VERSION.raw - application/vnd.github.VERSION.html - -Use the `.raw` media type to retrieve the contents of the file. - -For markup files such as Markdown or AsciiDoc, you can retrieve the rendered HTML using the `.html` media type. Markup languages are rendered to HTML using our open-source [Markup library](https://github.com/github/markup). - -[All objects](/v3/repos/contents/#get-repository-content) support the following custom media type: - - application/vnd.github.VERSION.object - -Use the `object` media type parameter to retrieve the contents in a consistent object format regardless of the content type. For example, instead of an array of objects -for a directory, the response will be an object with an `entries` attribute containing the array of objects. - -You can read more about the use of media types in the API [here](/v3/media/). - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'contents' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Deploy keys - -{% data reusables.repositories.deploy-keys %} - -Deploy keys can either be setup using the following API endpoints, or by using GitHub. To learn how to set deploy keys up in GitHub, see "[Managing deploy keys](/developers/overview/managing-deploy-keys)." - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'keys' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Deployments - -Deployments are requests to deploy a specific ref (branch, SHA, tag). GitHub dispatches a [`deployment` event](/developers/webhooks-and-events/webhook-events-and-payloads#deployment) that external services can listen for and act on when new deployments are created. Deployments enable developers and organizations to build loosely coupled tooling around deployments, without having to worry about the implementation details of delivering different types of applications (e.g., web, native). - -Deployment statuses allow external services to mark deployments with an `error`, `failure`, `pending`, `in_progress`, `queued`, or `success` state that systems listening to [`deployment_status` events](/developers/webhooks-and-events/webhook-events-and-payloads#deployment_status) can consume. - -Deployment statuses can also include an optional `description` and `log_url`, which are highly recommended because they make deployment statuses more useful. The `log_url` is the full URL to the deployment output, and -the `description` is a high-level summary of what happened with the deployment. - -GitHub dispatches `deployment` and `deployment_status` events when new deployments and deployment statuses are created. These events allows third-party integrations to receive respond to deployment requests and update the status of a deployment as progress is made. - -Below is a simple sequence diagram for how these interactions would work. - -``` -+---------+ +--------+ +-----------+ +-------------+ -| Tooling | | GitHub | | 3rd Party | | Your Server | -+---------+ +--------+ +-----------+ +-------------+ - | | | | - | Create Deployment | | | - |--------------------->| | | - | | | | - | Deployment Created | | | - |<---------------------| | | - | | | | - | | Deployment Event | | - | |---------------------->| | - | | | SSH+Deploys | - | | |-------------------->| - | | | | - | | Deployment Status | | - | |<----------------------| | - | | | | - | | | Deploy Completed | - | | |<--------------------| - | | | | - | | Deployment Status | | - | |<----------------------| | - | | | | -``` - -Keep in mind that GitHub is never actually accessing your servers. It's up to your third-party integration to interact with deployment events. Multiple systems can listen for deployment events, and it's up to each of those systems to decide whether they're responsible for pushing the code out to your servers, building native code, etc. - -Note that the `repo_deployment` [OAuth scope](/developers/apps/scopes-for-oauth-apps) grants targeted access to deployments and deployment statuses **without** granting access to repository code, while the `public_repo` and `repo` scopes grant permission to code as well. - -### Inactive deployments - -When you set the state of a deployment to `success`, then all prior non-transient, non-production environment deployments in the same repository will become `inactive`. To avoid this, you can set `auto_inactive` to `false` when creating the deployment status. - -You can communicate that a transient environment no longer exists by setting its `state` to `inactive`. Setting the `state` to `inactive` shows the deployment as `destroyed` in {% data variables.product.prodname_dotcom %} and removes access to it. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'deployments' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Forks - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'forks' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Invitations - -The Repository Invitations API allows users or external services to invite other users to collaborate on a repo. The invited users (or external services on behalf of invited users) can choose to accept or decline the invitations. - -Note that the `repo:invite` [OAuth scope](/developers/apps/scopes-for-oauth-apps) grants targeted -access to invitations **without** also granting access to repository code, while the -`repo` scope grants permission to code as well as invitations. - -### Invite a user to a repository - -Use the API endpoint for adding a collaborator. For more information, see "[Add a repository collaborator](/rest/reference/repos#add-a-repository-collaborator)." - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'invitations' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Merging - -The Repo Merging API supports merging branches in a repository. This accomplishes -essentially the same thing as merging one branch into another in a local repository -and then pushing to {% data variables.product.product_name %}. The benefit is that the merge is done on the server side and a local repository is not needed. This makes it more appropriate for automation and other tools where maintaining local repositories would be cumbersome and inefficient. - -The authenticated user will be the author of any merges done through this endpoint. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'merging' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Pages - -The {% data variables.product.prodname_pages %} API retrieves information about your {% data variables.product.prodname_pages %} configuration, and the statuses of your builds. Information about the site and the builds can only be accessed by authenticated owners, even though the websites are public. For more information, see "[About {% data variables.product.prodname_pages %}](/github/working-with-github-pages/about-github-pages)." - -In {% data variables.product.prodname_pages %} API endpoints with a `status` key in their response, the value can be one of: -* `null`: The site has yet to be built. -* `queued`: The build has been requested but not yet begun. -* `building`:The build is in progress. -* `built`: The site has been built. -* `errored`: Indicates an error occurred during the build. - -In {% data variables.product.prodname_pages %} API endpoints that return GitHub Pages site information, the JSON responses include these fields: -* `html_url`: The absolute URL (including scheme) of the rendered Pages site. For example, `https://username.github.io`. -* `source`: An object that contains the source branch and directory for the rendered Pages site. This includes: - - `branch`: The repository branch used to publish your [site's source files](/github/working-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site). For example, _main_ or _gh-pages_. - - `path`: The repository directory from which the site publishes. Will be either `/` or `/docs`. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'pages' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Releases - -{% note %} - -**Note:** The Releases API replaces the Downloads API. You can retrieve the download count and browser download URL from the endpoints in this API that return releases and release assets. - -{% endnote %} - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'releases' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Statistics - -The Repository Statistics API allows you to fetch the data that {% data variables.product.product_name %} uses for visualizing different -types of repository activity. - -### A word about caching - -Computing repository statistics is an expensive operation, so we try to return cached -data whenever possible. If the data hasn't been cached when you query a repository's -statistics, you'll receive a `202` response; a background job is also fired to -start compiling these statistics. Give the job a few moments to complete, and -then submit the request again. If the job has completed, that request will receive a -`200` response with the statistics in the response body. - -Repository statistics are cached by the SHA of the repository's default branch; pushing to the default branch resets the statistics cache. - -### Statistics exclude some types of commits - -The statistics exposed by the API match the statistics shown by [different repository graphs](/github/visualizing-repository-data-with-graphs/about-repository-graphs). - -To summarize: -- All statistics exclude merge commits. -- Contributor statistics also exclude empty commits. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'statistics' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Statuses - -The status API allows external services to mark commits with an `error`, -`failure`, `pending`, or `success` state, which is then reflected in pull requests -involving those commits. - -Statuses can also include an optional `description` and `target_url`, and -we highly recommend providing them as they make statuses much more -useful in the GitHub UI. - -As an example, one common use is for continuous integration -services to mark commits as passing or failing builds using status. The -`target_url` would be the full URL to the build output, and the -`description` would be the high level summary of what happened with the -build. - -Statuses can include a `context` to indicate what service is providing that status. -For example, you may have your continuous integration service push statuses with a context of `ci`, and a security audit tool push statuses with a context of `security`. You can -then use the [Get the combined status for a specific reference](/rest/reference/repos#get-the-combined-status-for-a-specific-reference) to retrieve the whole status for a commit. - -Note that the `repo:status` [OAuth scope](/developers/apps/scopes-for-oauth-apps) grants targeted access to statuses **without** also granting access to repository code, while the -`repo` scope grants permission to code as well as statuses. - -If you are developing a GitHub App and want to provide more detailed information about an external service, you may want to use the [Checks API](/rest/reference/checks). - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'statuses' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Traffic - -For repositories that you have push access to, the traffic API provides access -to the information provided in your repository graph. For more information, see "Viewing traffic to a repository." - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'traffic' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Webhooks - -The Repository Webhooks API allows repository admins to manage the post-receive hooks for a repository. Webhooks can be managed using the JSON HTTP API, or the [PubSubHubbub](#PubSubHubbub) API. - -If you would like to set up a single webhook to receive events from all of your organization's repositories, see our API documentation for [Organization Webhooks](/rest/reference/orgs#webhooks). - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'webhooks' %}{% include rest_operation %}{% endif %} -{% endfor %} - -### Receiving Webhooks - -In order for {% data variables.product.product_name %} to send webhook payloads, your server needs to be accessible from the Internet. We also highly suggest using SSL so that we can send encrypted payloads over HTTPS. - -#### Webhook headers - -{% data variables.product.product_name %} will send along several HTTP headers to differentiate between event types and payload identifiers. See [webhook headers](/developers/webhooks-and-events/webhook-events-and-payloads#delivery-headers) for details. - -### PubSubHubbub - -GitHub can also serve as a [PubSubHubbub](https://github.com/pubsubhubbub/PubSubHubbub) hub for all repositories. PSHB is a simple publish/subscribe protocol that lets servers register to receive updates when a topic is updated. The updates are sent with an HTTP POST request to a callback URL. -Topic URLs for a GitHub repository's pushes are in this format: - -`https://github.com/{owner}/{repo}/events/{event}` - -The event can be any available webhook event. For more information, see "[Webhook events and payloads](/developers/webhooks-and-events/webhook-events-and-payloads)." - -#### Response format - -The default format is what [existing post-receive hooks should expect](/post-receive-hooks/): A JSON body sent as the `payload` parameter in a POST. You can also specify to receive the raw JSON body with either an `Accept` header, or a `.json` extension. - - Accept: application/json - https://github.com/{owner}/{repo}/events/push.json - -#### Callback URLs - -Callback URLs can use the `http://` protocol. {% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.20" %}You can also `github://` callbacks to specify a GitHub service. -{% data reusables.apps.deprecating_github_services_ghe %} -{% endif %} - - # Send updates to postbin.org - http://postbin.org/123 - -{% if enterpriseServerVersions contains currentVersion and currentVersion ver_lt "enterprise-server@2.20" %} - # Send updates to Campfire - github://campfire?subdomain=github&room=Commits&token=abc123 -{% endif %} - -#### Subscribing - -The GitHub PubSubHubbub endpoint is: `{% data variables.product.api_url_code %}/hub`. A successful request with curl looks like: - -``` shell -curl -u "user" -i \ - {% data variables.product.api_url_pre %}/hub \ - -F "hub.mode=subscribe" \ - -F "hub.topic=https://github.com/{owner}/{repo}/events/push" \ - -F "hub.callback=http://postbin.org/123" -``` - -PubSubHubbub requests can be sent multiple times. If the hook already exists, it will be modified according to the request. - -##### Parameters - -Name | Type | Description ------|------|-------------- -``hub.mode``|`string` | **Required**. Either `subscribe` or `unsubscribe`. -``hub.topic``|`string` |**Required**. The URI of the GitHub repository to subscribe to. The path must be in the format of `/{owner}/{repo}/events/{event}`. -``hub.callback``|`string` | The URI to receive the updates to the topic. -``hub.secret``|`string` | A shared secret key that generates a SHA1 HMAC of the outgoing body content. You can verify a push came from GitHub by comparing the raw request body with the contents of the `X-Hub-Signature` header. You can see [the PubSubHubbub documentation](https://pubsubhubbub.github.io/PubSubHubbub/pubsubhubbub-core-0.4.html#authednotify) for more details. diff --git a/content/rest/reference/scim.md b/content/rest/reference/scim.md deleted file mode 100644 index c91155f1e04d..000000000000 --- a/content/rest/reference/scim.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: SCIM -redirect_from: - - /v3/scim -versions: - free-pro-team: '*' ---- - -### SCIM Provisioning for Organizations - -The SCIM API is used by SCIM-enabled Identity Providers (IdPs) to automate provisioning of {% data variables.product.product_name %} organization membership. The {% data variables.product.product_name %} API is based on version 2.0 of the [SCIM standard](http://www.simplecloud.info/). The {% data variables.product.product_name %} SCIM endpoint that an IdP should use is: `{% data variables.product.api_url_code %}/scim/v2/organizations/{org}/`. - -{% note %} - -**Note:** The SCIM API is available only to organizations on [{% data variables.product.prodname_ghe_cloud %}](/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-accounts) with [SAML SSO](/v3/auth/#authenticating-for-saml-sso) enabled. For more information about SCIM, see "[About SCIM](/github/setting-up-and-managing-organizations-and-teams/about-scim)." - -{% endnote %} - -### Authenticating calls to the SCIM API - -You must authenticate as an owner of a {% data variables.product.product_name %} organization to use its SCIM API. The API expects an [OAuth 2.0 Bearer](/developers/apps/authenticating-with-github-apps) token to be included in the `Authorization` header. You may also use a personal access token, but you must first [authorize it for use with your SAML SSO organization](/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on). - -### Mapping of SAML and SCIM data - -The SAML IdP and the SCIM client must use matching `NameID` and `userName` values for each user. This allows a user authenticating through SAML to be linked to their provisioned SCIM identity. - -### Supported SCIM User attributes - -Name | Type | Description ------|------|-------------- -`userName`|`string` | The username for the user. -`name.givenName`|`string` | The first name of the user. -`name.lastName`|`string` | The last name of the user. -`emails` | `array` | List of user emails. -`externalId` | `string` | This identifier is generated by the SAML provider, and is used as a unique ID by the SAML provider to match against a GitHub user. You can find the `externalID` for a user either at the SAML provider, or using the [List SCIM provisioned identities](#list-scim-provisioned-identities) endpoint and filtering on other known attributes, such as a user's GitHub username or email address. -`id` | `string` | Identifier generated by the GitHub SCIM endpoint. -`active` | `boolean` | Used to indicate whether the identity is active (true) or should be deprovisioned (false). - -{% note %} - -**Note:** Endpoint URLs for the SCIM API are case sensitive. For example, the first letter in the `Users` endpoint must be capitalized: - -```shell -GET /scim/v2/organizations/{org}/Users/{scim_user_id} -``` - -{% endnote %} - -{% include rest_operations_at_current_path %} diff --git a/content/rest/reference/search.md b/content/rest/reference/search.md deleted file mode 100644 index b3037447cad5..000000000000 --- a/content/rest/reference/search.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Search -redirect_from: - - /v3/search -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -The Search API helps you search for the specific item you want to find. For example, you can find a user or a specific file in a repository. Think of it the way you think of performing a search on Google. It's designed to help you find the one result you're looking for (or maybe the few results you're looking for). Just like searching on Google, you sometimes want to see a few pages of search results so that you can find the item that best meets your needs. To satisfy that need, the {% data variables.product.product_name %} Search API provides **up to 1,000 results for each search**. - -You can narrow your search using queries. To learn more about the search query syntax, see "[Constructing a search query](/v3/search/#constructing-a-search-query)." - -### Ranking search results - -Unless another sort option is provided as a query parameter, results are sorted by best match in descending order. Multiple factors are combined to boost the most relevant item to the top of the result list. - -### Rate limit - -The Search API has a custom rate limit. For requests using [Basic -Authentication](/v3/#authentication), [OAuth](/v3/#authentication), or [client -ID and secret](/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications), you can make up to -30 requests per minute. For unauthenticated requests, the rate limit allows you -to make up to 10 requests per minute. - -{% data reusables.enterprise.rate_limit %} - -See the [rate limit documentation](/rest/reference/rate-limit) for details on -determining your current rate limit status. - -### Constructing a search query - -Each endpoint in the Search API uses [query parameters](https://en.wikipedia.org/wiki/Query_string) to perform searches on {% data variables.product.product_name %}. See the individual endpoint in the Search API for an example that includes the endpoint and query parameters. - -A query can contain any combination of search qualifiers supported on GitHub.com. The format of the search query is: - -``` -q=SEARCH_KEYWORD_1+SEARCH_KEYWORD_N+QUALIFIER_1+QUALIFIER_N -``` - -For example, if you wanted to search for all _repositories_ owned by `defunkt` that -contained the word `GitHub` and `Octocat` in the README file, you would use the -following query with the _search repositories_ endpoint: - -``` -q=GitHub+Octocat+in:readme+user:defunkt -``` - -See "[Searching on GitHub](/articles/searching-on-github/)" -for a complete list of available qualifiers, their format, and an example of -how to use them. For information about how to use operators to match specific -quantities, dates, or to exclude results, see "[Understanding the search syntax](/articles/understanding-the-search-syntax/)." - -### Limitations on query length - -The Search API does not support queries that: -- are longer than 256 characters (not including operators or qualifiers). -- have more than five `AND`, `OR`, or `NOT` operators. - -These search queries will return a "Validation failed" error message. - -### Timeouts and incomplete results - -To keep the Search API fast for everyone, we limit how long any individual query -can run. For queries that [exceed the time limit](https://developer.github.com/changes/2014-04-07-understanding-search-results-and-potential-timeouts/), -the API returns the matches that were already found prior to the timeout, and -the response has the `incomplete_results` property set to `true`. - -Reaching a timeout does not necessarily mean that search results are incomplete. -More results might have been found, but also might not. - -### Access errors or missing search results - -You need to successfully authenticate and have access to the repositories in your search queries, otherwise, you'll see a `422 Unprocessible Entry` error with a "Validation Failed" message. For example, your search will fail if your query includes `repo:`, `user:`, or `org:` qualifiers that request resources that you don't have access to when you sign in on {% data variables.product.prodname_dotcom %}. - -When your search query requests multiple resources, the response will only contain the resources that you have access to and will **not** provide an error message listing the resources that were not returned. - -For example, if your search query searches for the `octocat/test` and `codertocat/test` repositories, but you only have access to `octocat/test`, your response will show search results for `octocat/test` and nothing for `codertocat/test`. This behavior mimics how search works on {% data variables.product.prodname_dotcom %}. - -{% include rest_operations_at_current_path %} - - -### Text match metadata - -On GitHub, you can use the context provided by code snippets and highlights in search results. The Search API offers additional metadata that allows you to highlight the matching search terms when displaying search results. - -![code-snippet-highlighting](/assets/images/text-match-search-api.png) - -Requests can opt to receive those text fragments in the response, and every fragment is accompanied by numeric offsets identifying the exact location of each matching search term. - -To get this metadata in your search results, specify the `text-match` media type in your `Accept` header. - -```shell -application/vnd.github.v3.text-match+json -``` - -When you provide the `text-match` media type, you will receive an extra key in the JSON payload called `text_matches` that provides information about the position of your search terms within the text and the `property` that includes the search term. Inside the `text_matches` array, each object includes -the following attributes: - -Name | Description ------|-----------| -`object_url` | The URL for the resource that contains a string property matching one of the search terms. -`object_type` | The name for the type of resource that exists at the given `object_url`. -`property` | The name of a property of the resource that exists at `object_url`. That property is a string that matches one of the search terms. (In the JSON returned from `object_url`, the full content for the `fragment` will be found in the property with this name.) -`fragment` | A subset of the value of `property`. This is the text fragment that matches one or more of the search terms. -`matches` | An array of one or more search terms that are present in `fragment`. The indices (i.e., "offsets") are relative to the fragment. (They are not relative to the _full_ content of `property`.) - -#### Example - -Using cURL, and the [example issue search](#search-issues-and-pull-requests) above, our API -request would look like this: - -``` shell -curl -H 'Accept: application/vnd.github.v3.text-match+json' \ -'{% data variables.product.api_url_pre %}/search/issues?q=windows+label:bug+language:python+state:open&sort=created&order=asc' -``` - -The response will include a `text_matches` array for each search result. In the JSON below, we have two objects in the `text_matches` array. - -The first text match occurred in the `body` property of the issue. We see a fragment of text from the issue body. The search term (`windows`) appears twice within that fragment, and we have the indices for each occurrence. - -The second text match occurred in the `body` property of one of the issue's comments. We have the URL for the issue comment. And of course, we see a fragment of text from the comment body. The search term (`windows`) appears once within that fragment. - -```json -{ - "text_matches": [ - { - "object_url": "https://api.github.com/repositories/215335/issues/132", - "object_type": "Issue", - "property": "body", - "fragment": "comprehensive windows font I know of).\n\nIf we can find a commonly distributed windows font that supports them then no problem (we can use html font tags) but otherwise the '(21)' style is probably better.\n", - "matches": [ - { - "text": "windows", - "indices": [ - 14, - 21 - ] - }, - { - "text": "windows", - "indices": [ - 78, - 85 - ] - } - ] - }, - { - "object_url": "https://api.github.com/repositories/215335/issues/comments/25688", - "object_type": "IssueComment", - "property": "body", - "fragment": " right after that are a bit broken IMHO :). I suppose we could have some hack that maxes out at whatever the font does...\n\nI'll check what the state of play is on Windows.\n", - "matches": [ - { - "text": "Windows", - "indices": [ - 163, - 170 - ] - } - ] - } - ] -} -``` diff --git a/content/rest/reference/teams.md b/content/rest/reference/teams.md deleted file mode 100644 index 4c197548fd2b..000000000000 --- a/content/rest/reference/teams.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Teams -redirect_from: - - /v3/teams -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -This API is only available to authenticated members of the team's [organization](/v3/orgs). OAuth access tokens require the `read:org` [scope](/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). {% data variables.product.prodname_dotcom %} generates the team's `slug` from the team `name`. - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Discussions - -The team discussions API allows you to get, create, edit, and delete discussion posts on a team's page. You can use team discussions to have conversations that are not specific to a repository or project. Any member of the team's [organization](/v3/orgs) can create and read public discussion posts. For more details, see "[About team discussions](/articles/about-team-discussions/)." To learn more about commenting on a discussion post, see the [team discussion comments API](/v3/teams/discussion_comments). This API is only available to authenticated members of the team's organization. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'discussions' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Discussion comments - -The team discussion comments API allows you to get, create, edit, and delete discussion comments on a [team discussion](/v3/teams/discussions) post. Any member of the team's [organization](/v3/orgs) can create and read comments on a public discussion. For more details, see "[About team discussions](/articles/about-team-discussions/)." This API is only available to authenticated members of the team's organization. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'discussion-comments' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Members - -This API is only available to authenticated members of the team's organization. OAuth access tokens require the `read:org` [scope](/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). - -{% note %} - -**Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "Synchronizing teams between your identity provider and GitHub." - -{% endnote %} - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'members' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Team synchronization - -The Team Synchronization API allows you to manage connections between {% data variables.product.product_name %} teams and external identity provider (IdP) groups. To use this API, the authenticated user must be a team maintainer or an owner of the organization associated with the team. The token you use to authenticate will also need to be authorized for use with your IdP (SSO) provider. For more information, see "Authorizing a personal access token for use with a SAML single sign-on organization." - -You can manage GitHub team members through your IdP with team synchronization. Team synchronization must be enabled to use the Team Synchronization API. For more information, see "Synchronizing teams between your identity provider and GitHub." - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'team-sync' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/content/rest/reference/users.md b/content/rest/reference/users.md deleted file mode 100644 index c2dcc1173b62..000000000000 --- a/content/rest/reference/users.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Users -redirect_from: - - /v3/users -versions: - free-pro-team: '*' - enterprise-server: '*' ---- - -Many of the resources on the users API provide a shortcut for getting information about the currently authenticated user. If a request URL does not include a `{username}` parameter then the response will be for the logged in user (and you must pass [authentication information](/rest/overview/resources-in-the-rest-api#authentication) with your request). Additional private information, such as whether a user has two-factor authentication enabled, is included when authenticated through basic auth or OAuth with the `user` scope. - -{% for operation in currentRestOperations %} - {% unless operation.subcategory %}{% include rest_operation %}{% endunless %} -{% endfor %} - -## Blocking users - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'blocking' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Emails - -Management of email addresses via the API requires that you authenticate through basic auth, or through OAuth with a correct scope for the endpoint. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'emails' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Followers - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'followers' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## Git SSH keys - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'keys' %}{% include rest_operation %}{% endif %} -{% endfor %} - -## GPG keys - -The data returned in the `public_key` response field is not a GPG formatted key. When a user uploads a GPG key, it is parsed and the cryptographic public key is extracted and stored. This cryptographic key is what is returned by the APIs on this page. This key is not suitable to be used directly by programs like GPG. - -{% for operation in currentRestOperations %} - {% if operation.subcategory == 'gpg-keys' %}{% include rest_operation %}{% endif %} -{% endfor %} diff --git a/data/products.yml b/data/products.yml index 96e85ce3733e..2019af553e42 100644 --- a/data/products.yml +++ b/data/products.yml @@ -2,12 +2,6 @@ # the product IDs match keys in lib/all-products.js # note this file should not be translated productsInOrder: - - github - admin - - actions - - packages - developers - - rest - - graphql - - insights - - desktop \ No newline at end of file + - desktop diff --git a/data/reusables/audit_log/octicon_icon.md b/data/reusables/audit_log/octicon_icon.md index a9c8ff6855c3..90af8bb9c71f 100644 --- a/data/reusables/audit_log/octicon_icon.md +++ b/data/reusables/audit_log/octicon_icon.md @@ -1,2 +1,2 @@ 1. In the upper-left corner of any page, click . -![Octocat icon](/assets/images/enterprise/navigation/octocat-icon.png) +![Octocat icon](/assets/images/site/favicon.png) diff --git a/data/ui.yml b/data/ui.yml index 137d1f392d7e..887d91a4ded2 100644 --- a/data/ui.yml +++ b/data/ui.yml @@ -1,5 +1,5 @@ header: - github_docs: GitHub Docs + github_docs: Kubera Docs contact: Contact notices: ghe_release_candidate: diff --git a/includes/footer.html b/includes/footer.html index 062c88a8c22a..ebf930432629 100644 --- a/includes/footer.html +++ b/includes/footer.html @@ -34,7 +34,7 @@

{% data ui.footer.support
  • {% data ui.footer.support.links.community_forum %}
  • {% data ui.footer.support.links.training %}
  • {% data ui.footer.support.links.status %}
  • -
  • {% data ui.footer.support.links.contact_github %}
  • +
  • {% data ui.footer.support.links.contact_github %}
  • diff --git a/includes/sidebar.html b/includes/sidebar.html index f922f2dda0b2..4aea20384677 100644 --- a/includes/sidebar.html +++ b/includes/sidebar.html @@ -3,7 +3,13 @@ diff --git a/lib/all-products.js b/lib/all-products.js index 09e9d2070aae..99728c0d32b2 100644 --- a/lib/all-products.js +++ b/lib/all-products.js @@ -43,18 +43,18 @@ sortedProductIds.forEach(productId => { }) const externalProducts = { - atom: { - id: 'atom', - name: 'Atom', - href: 'https://atom.io/docs', - external: true - }, - electron: { - id: 'electron', - name: 'Electron', - href: 'https://electronjs.org/docs', - external: true - } +// atom: { +// id: 'atom', +// name: 'Atom', +// href: 'https://atom.io/docs', +// external: true +// }, +// electron: { +// id: 'electron', +// name: 'Electron', +// href: 'https://electronjs.org/docs', +// external: true +// } } const allProducts = Object.assign({}, internalProducts, externalProducts) diff --git a/stylesheets/overrides.scss b/stylesheets/overrides.scss index ec003fd7212e..7035632f3d71 100644 --- a/stylesheets/overrides.scss +++ b/stylesheets/overrides.scss @@ -146,6 +146,8 @@ pre .bluebox { /* Accessibility color contrast */ .btn-mktg { background-color: $blue-500; + align-items: center; + justify-content: center; } /* Accessibility color contrast */