1
0
mirror of synced 2026-01-05 12:07:35 -05:00

Merge pull request #12416 from github/repo-sync

repo sync
This commit is contained in:
Robert Sese
2021-11-29 20:08:54 -06:00
committed by GitHub
113 changed files with 506 additions and 479 deletions

74
.github/actions-scripts/staging-deploy.js vendored Executable file
View File

@@ -0,0 +1,74 @@
#!/usr/bin/env node
import parsePrUrl from '../../script/deployment/parse-pr-url.js'
import getOctokit from '../../script/helpers/github.js'
import deployToStaging from '../../script/deployment/deploy-to-staging.js'
const { GITHUB_TOKEN, HEROKU_API_TOKEN } = process.env
// Exit if GitHub Actions PAT is not found
if (!GITHUB_TOKEN) {
throw new Error('You must supply a GITHUB_TOKEN environment variable!')
}
// Exit if Heroku API token is not found
if (!HEROKU_API_TOKEN) {
throw new Error('You must supply a HEROKU_API_TOKEN environment variable!')
}
// This helper uses the `GITHUB_TOKEN` implicitly!
// We're using our usual version of Octokit vs. the provided `github`
// instance to avoid versioning discrepancies.
const octokit = getOctokit()
const { RUN_ID, PR_URL, SOURCE_BLOB_URL, CONTEXT_NAME, ACTIONS_RUN_LOG, HEAD_SHA } = process.env
if (!RUN_ID) {
throw new Error('$RUN_ID not set')
}
if (!PR_URL) {
throw new Error('$PR_URL not set')
}
if (!SOURCE_BLOB_URL) {
throw new Error('$SOURCE_BLOB_URL not set')
}
if (!CONTEXT_NAME) {
throw new Error('$CONTEXT_NAME not set')
}
if (!ACTIONS_RUN_LOG) {
throw new Error('$ACTIONS_RUN_LOG not set')
}
if (!HEAD_SHA) {
throw new Error('$HEAD_SHA not set')
}
const { owner, repo, pullNumber } = parsePrUrl(PR_URL)
if (!owner || !repo || !pullNumber) {
throw new Error(
`'pullRequestUrl' input must match URL format 'https://github.com/github/(docs|docs-internal)/pull/123' but was '${PR_URL}'`
)
}
const { data: pullRequest } = await octokit.pulls.get({
owner,
repo,
pull_number: pullNumber,
})
await deployToStaging({
octokit,
pullRequest,
forceRebuild: false,
// These parameters will ONLY be set by Actions
sourceBlobUrl: SOURCE_BLOB_URL,
runId: RUN_ID,
})
await octokit.repos.createCommitStatus({
owner,
repo,
sha: HEAD_SHA,
context: CONTEXT_NAME,
state: 'success',
description: 'Successfully deployed! See logs.',
target_url: ACTIONS_RUN_LOG,
})

50
.github/actions-scripts/staging-undeploy.js vendored Executable file
View File

@@ -0,0 +1,50 @@
#!/usr/bin/env node
import parsePrUrl from '../../script/deployment/parse-pr-url.js'
import getOctokit from '../../script/helpers/github.js'
import undeployFromStaging from '../../script/deployment/undeploy-from-staging.js'
const { GITHUB_TOKEN, HEROKU_API_TOKEN } = process.env
// Exit if GitHub Actions PAT is not found
if (!GITHUB_TOKEN) {
throw new Error('You must supply a GITHUB_TOKEN environment variable!')
}
// Exit if Heroku API token is not found
if (!HEROKU_API_TOKEN) {
throw new Error('You must supply a HEROKU_API_TOKEN environment variable!')
}
// This helper uses the `GITHUB_TOKEN` implicitly!
// We're using our usual version of Octokit vs. the provided `github`
// instance to avoid versioning discrepancies.
const octokit = getOctokit()
const { RUN_ID, PR_URL } = process.env
if (!RUN_ID) {
throw new Error('$RUN_ID not set')
}
if (!PR_URL) {
throw new Error('$PR_URL not set')
}
const { owner, repo, pullNumber } = parsePrUrl(PR_URL)
if (!owner || !repo || !pullNumber) {
throw new Error(
`'pullRequestUrl' input must match URL format 'https://github.com/github/(docs|docs-internal)/pull/123' but was '${PR_URL}'`
)
}
const { data: pullRequest } = await octokit.pulls.get({
owner,
repo,
pull_number: pullNumber,
})
await undeployFromStaging({
octokit,
pullRequest: pullRequest,
runId: RUN_ID,
})

View File

@@ -21,7 +21,7 @@ concurrency:
jobs:
build-and-deploy:
if: ${{ github.repository == 'github/docs-internal'}}
runs-on: ubuntu-latest
runs-on: ${{ fromJSON('["ubuntu-latest", "self-hosted"]')[github.repository == 'github/docs-internal'] }}
timeout-minutes: 15
steps:
- name: Check out repo

View File

@@ -67,6 +67,10 @@ jobs:
BUILD_ACTIONS_RUN_ID: ${{ env.BUILD_ACTIONS_RUN_ID }}
with:
script: |
// Curious about what version of node you get
console.log('Node version:', process.version)
// In order to find out the PR info for a forked repo, we must query
// the API for more info based on the originating workflow run
const { BUILD_ACTIONS_RUN_ID } = process.env
@@ -482,12 +486,8 @@ jobs:
- name: Install dependencies
run: npm ci
- name: Install one-off development-only dependencies
run: npm install --no-save --include=optional esm
- name: Deploy
id: deploy
uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }}
@@ -499,69 +499,8 @@ jobs:
ACTIONS_RUN_LOG: ${{ env.ACTIONS_RUN_LOG }}
HEAD_SHA: ${{ needs.pr-metadata.outputs.head_sha }}
ALLOWED_POLLING_FAILURES_PER_PHASE: '15'
with:
script: |
const { GITHUB_TOKEN, HEROKU_API_TOKEN } = process.env
// Exit if GitHub Actions PAT is not found
if (!GITHUB_TOKEN) {
throw new Error('You must supply a GITHUB_TOKEN environment variable!')
}
// Exit if Heroku API token is not found
if (!HEROKU_API_TOKEN) {
throw new Error('You must supply a HEROKU_API_TOKEN environment variable!')
}
// Workaround to allow us to load ESM files with `require(...)`
const esm = require('esm')
require = esm({})
const { default: parsePrUrl } = require('./script/deployment/parse-pr-url')
const { default: getOctokit } = require('./script/helpers/github')
const { default: deployToStaging } = require('./script/deployment/deploy-to-staging')
// This helper uses the `GITHUB_TOKEN` implicitly!
// We're using our usual version of Octokit vs. the provided `github`
// instance to avoid versioning discrepancies.
const octokit = getOctokit()
try {
const { PR_URL, SOURCE_BLOB_URL, CONTEXT_NAME, ACTIONS_RUN_LOG, HEAD_SHA } = process.env
const { owner, repo, pullNumber } = parsePrUrl(PR_URL)
if (!owner || !repo || !pullNumber) {
throw new Error(`'pullRequestUrl' input must match URL format 'https://github.com/github/(docs|docs-internal)/pull/123' but was '${PR_URL}'`)
}
const { data: pullRequest } = await octokit.pulls.get({
owner,
repo,
pull_number: pullNumber
})
await deployToStaging({
octokit,
pullRequest,
forceRebuild: false,
// These parameters will ONLY be set by Actions
sourceBlobUrl: SOURCE_BLOB_URL,
runId: context.runId
})
await github.repos.createCommitStatus({
owner,
repo,
sha: HEAD_SHA,
context: CONTEXT_NAME,
state: 'success',
description: 'Successfully deployed! See logs.',
target_url: ACTIONS_RUN_LOG
})
} catch (error) {
console.error(`Failed to deploy to staging: ${error.message}`)
console.error(error)
throw error
}
RUN_ID: ${{ github.run_id }}
run: .github/actions-scripts/staging-deploy.js
- name: Mark the deployment as inactive if timed out
uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d

View File

@@ -69,51 +69,13 @@ jobs:
- name: Install dependencies
run: npm ci
- name: Install one-off development-only dependencies
run: npm install --no-save --include=optional esm
- name: Undeploy
uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }}
with:
script: |
const { GITHUB_TOKEN, HEROKU_API_TOKEN } = process.env
// Exit if GitHub Actions PAT is not found
if (!GITHUB_TOKEN) {
throw new Error('You must supply a GITHUB_TOKEN environment variable!')
}
// Exit if Heroku API token is not found
if (!HEROKU_API_TOKEN) {
throw new Error('You must supply a HEROKU_API_TOKEN environment variable!')
}
// Workaround to allow us to load ESM files with `require(...)`
const esm = require('esm')
require = esm({})
const { default: getOctokit } = require('./script/helpers/github')
const { default: undeployFromStaging } = require('./script/deployment/undeploy-from-staging')
// This helper uses the `GITHUB_TOKEN` implicitly!
// We're using our usual version of Octokit vs. the provided `github`
// instance to avoid versioning discrepancies.
const octokit = getOctokit()
try {
await undeployFromStaging({
octokit,
pullRequest: context.payload.pull_request,
runId: context.runId
})
} catch (error) {
console.error(`Failed to undeploy from staging: ${error.message}`)
console.error(error)
throw error
}
RUN_ID: ${{ github.run_id }}
PR_URL: ${{ github.event.pull_request.html_url }}
run: .github/actions-scripts/staging-undeploy.js
- if: ${{ always() }}
name: Remove the label from the PR to unblock deployment

View File

@@ -1,4 +1,4 @@
# GitHub Docs <!-- omit in toc -->
# GitHub Docs <!-- omit in toc -->
This repository contains the documentation website code and Markdown source files for [docs.github.com](https://docs.github.com).

View File

@@ -15,6 +15,7 @@ import { MarkdownContent } from 'components/ui/MarkdownContent'
import { Lead } from 'components/ui/Lead'
import { ArticleGridLayout } from './ArticleGridLayout'
import { PlatformPicker } from 'components/article/PlatformPicker'
import { ToolPicker } from 'components/article/ToolPicker'
// Mapping of a "normal" article to it's interactive counterpart
const interactiveAlternatives: Record<string, { href: string }> = {
@@ -52,6 +53,7 @@ export const ArticlePage = () => {
contributor,
permissions,
includesPlatformSpecificContent,
includesToolSpecificContent,
product,
miniTocItems,
currentLearningTrack,
@@ -111,6 +113,7 @@ export const ArticlePage = () => {
)}
{includesPlatformSpecificContent && <PlatformPicker variant="underlinenav" />}
{includesToolSpecificContent && <ToolPicker variant="underlinenav" />}
{product && (
<Callout

View File

@@ -12,9 +12,11 @@ const platforms = [
{ id: 'linux', label: 'Linux' },
]
// Nota bene: platform === os
// Imperatively modify article content to show only the selected platform
// find all platform-specific *block* elements and hide or show as appropriate
// example: {% mac } block content {% mac %}
// example: {% mac %} block content {% endmac %}
function showPlatformSpecificContent(platform: string) {
const markdowns = Array.from(document.querySelectorAll<HTMLElement>('.extended-markdown'))
markdowns

View File

@@ -0,0 +1,117 @@
import { useEffect, useState } from 'react'
import Cookies from 'js-cookie'
import { UnderlineNav } from '@primer/components'
import { sendEvent, EventType } from 'components/lib/events'
import { preserveAnchorNodePosition } from 'scroll-anchoring'
import { useArticleContext } from 'components/context/ArticleContext'
// example: http://localhost:4000/en/codespaces/developing-in-codespaces/creating-a-codespace
// Nota bene: tool === application
// Nota bene: picker === switcher
const supportedTools = ['cli', 'desktop', 'webui', 'curl', 'codespaces', 'vscode']
const toolTitles = {
webui: 'Web browser',
cli: 'GitHub CLI',
curl: 'cURL',
desktop: 'Desktop',
codespaces: 'Codespaces',
vscode: 'Visual Studio Code',
} as Record<string, string>
// Imperatively modify article content to show only the selected tool
// find all platform-specific *block* elements and hide or show as appropriate
// example: {% webui %} block content {% endwebui %}
function showToolSpecificContent(tool: string) {
const markdowns = Array.from(document.querySelectorAll<HTMLElement>('.extended-markdown'))
markdowns
.filter((el) => supportedTools.some((tool) => el.classList.contains(tool)))
.forEach((el) => {
el.style.display = el.classList.contains(tool) ? '' : 'none'
})
// find all tool-specific *inline* elements and hide or show as appropriate
// example: <span class="tool-webui">inline content</span>
const toolEls = Array.from(
document.querySelectorAll<HTMLElement>(supportedTools.map((tool) => `.tool-${tool}`).join(', '))
)
toolEls.forEach((el) => {
el.style.display = el.classList.contains(`tool-${tool}`) ? '' : 'none'
})
}
function getDefaultTool(defaultTool: string | undefined, detectedTools: Array<string>): string {
// If there is a default tool and the tool is present on this page
if (defaultTool && detectedTools.includes(defaultTool)) return defaultTool
// Default to webui if present (this is generally the case where we show UI/CLI/Desktop info)
if (detectedTools.includes('webui')) return 'webui'
// Default to cli if present (this is generally the case where we show curl/CLI info)
if (detectedTools.includes('cli')) return 'cli'
// Otherwise, just choose the first detected tool
return detectedTools[0]
}
type Props = {
variant?: 'subnav' | 'tabnav' | 'underlinenav'
}
export const ToolPicker = ({ variant = 'subnav' }: Props) => {
const { defaultTool, detectedTools } = useArticleContext()
const [currentTool, setCurrentTool] = useState(getDefaultTool(defaultTool, detectedTools))
const sharedContainerProps = {
'data-testid': 'tool-picker',
'aria-label': 'Tool picker',
'data-default-tool': defaultTool,
className: 'mb-4',
}
// Run on mount for client-side only features
useEffect(() => {
// If the user selected a tool preference and the tool is present on this page
// Has to be client-side only for cookie reading
const cookieValue = Cookies.get('toolPreferred')
if (cookieValue && detectedTools.includes(cookieValue)) {
setCurrentTool(cookieValue)
}
}, [])
function onClickTool(tool: string) {
setCurrentTool(tool)
preserveAnchorNodePosition(document, () => {
showToolSpecificContent(tool)
})
sendEvent({
type: EventType.preference,
preference_name: 'application',
preference_value: tool,
})
Cookies.set('toolPreferred', tool, { sameSite: 'strict', secure: true })
}
if (variant === 'underlinenav') {
return (
<UnderlineNav {...sharedContainerProps}>
{detectedTools.map((tool) => (
<UnderlineNav.Link
key={tool}
data-tool={tool}
as="button"
selected={tool === currentTool}
onClick={() => {
onClickTool(tool)
}}
>
{toolTitles[tool]}
</UnderlineNav.Link>
))}
</UnderlineNav>
)
}
return null
}

View File

@@ -22,10 +22,13 @@ export type ArticleContextT = {
contributor: { name: string; URL: string } | null
permissions?: string
includesPlatformSpecificContent: boolean
includesToolSpecificContent: boolean
defaultPlatform?: string
defaultTool?: string
product?: string
currentLearningTrack?: LearningTrack
detectedPlatforms: Array<string>
detectedTools: Array<string>
}
export const ArticleContext = createContext<ArticleContextT | null>(null)
@@ -60,9 +63,12 @@ export const getArticleContextFromRequest = (req: any): ArticleContextT => {
contributor: page.contributor || null,
permissions: page.permissions || '',
includesPlatformSpecificContent: page.includesPlatformSpecificContent || false,
includesToolSpecificContent: page.includesToolSpecificContent || false,
defaultPlatform: page.defaultPlatform || '',
defaultTool: page.defaultTool || '',
product: page.product || '',
currentLearningTrack: req.context.currentLearningTrack,
detectedPlatforms: page.detectedPlatforms || [],
detectedTools: page.detectedTools || [],
}
}

View File

@@ -1,100 +0,0 @@
import Cookies from 'js-cookie'
import { preserveAnchorNodePosition } from 'scroll-anchoring'
import { sendEvent, EventType } from './events'
const supportedTools = ['cli', 'desktop', 'webui', 'curl', 'codespaces', 'vscode']
export default function displayToolSpecificContent() {
const toolElements = Array.from(document.querySelectorAll('.extended-markdown')).filter((el) =>
supportedTools.some((tool) => el.classList.contains(tool))
) as Array<HTMLElement>
if (!toolElements.length) return
const detectedTools = toolElements.flatMap((el) =>
Array.from(el.classList).filter((className) => supportedTools.includes(className))
) as Array<string>
const tool = getDefaultTool(detectedTools)
showToolSpecificContent(tool, toolElements)
hideSwitcherLinks(detectedTools)
highlightTabForTool(tool)
// configure links for switching tool content
switcherLinks().forEach((link) => {
link.addEventListener('click', (event) => {
event.preventDefault()
const target = event.target as HTMLElement
highlightTabForTool(target.dataset.tool || '')
preserveAnchorNodePosition(document, () => {
showToolSpecificContent(target.dataset.tool || '', toolElements)
})
// Save this preference as a cookie.
Cookies.set('toolPreferred', target.dataset.tool || '', { sameSite: 'strict', secure: true })
// Send event data
sendEvent({
type: EventType.preference,
preference_name: 'application',
preference_value: target.dataset.tool,
})
})
})
}
function highlightTabForTool(tool: string) {
// (de)activate switcher link appearances
switcherLinks().forEach((link) => {
link.dataset.tool === tool ? link.classList.add('selected') : link.classList.remove('selected')
})
}
function showToolSpecificContent(tool: string, toolElements: Array<HTMLElement>) {
// show the content only for the highlighted tool
toolElements
.filter((el) => supportedTools.some((tool) => el.classList.contains(tool)))
.forEach((el) => {
el.style.display = el.classList.contains(tool) ? '' : 'none'
})
}
// hide links for any tool-specific sections that are not present
function hideSwitcherLinks(detectedTools: Array<string>) {
const links = Array.from(document.querySelectorAll('a.tool-switcher')) as Array<HTMLAnchorElement>
links.forEach((link) => {
if (detectedTools.includes(link.dataset.tool || '')) return
link.style.display = 'none'
})
}
function getDefaultTool(detectedTools: Array<string>): string {
// If the user selected a tool preference and the tool is present on this page
const cookieValue = Cookies.get('toolPreferred')
if (cookieValue && detectedTools.includes(cookieValue)) return cookieValue
// If there is a default tool and the tool is present on this page
const defaultToolEl = document.querySelector('[data-default-tool]') as HTMLElement
const defaultToolValue = defaultToolEl ? defaultToolEl.dataset.defaultTool : ''
if (defaultToolValue && detectedTools.includes(defaultToolValue)) {
return defaultToolValue
}
// Default to webui if present (this is generally the case where we show UI/CLI/Desktop info)
if (detectedTools.includes('webui')) return 'webui'
// Default to cli if present (this is generally the case where we show curl/CLI info)
if (detectedTools.includes('cli')) return 'cli'
// Otherwise, just choose the first detected tool
return detectedTools[0]
}
function switcherLinks() {
return Array.from(document.querySelectorAll('a.tool-switcher')) as Array<HTMLAnchorElement>
}

View File

@@ -27,6 +27,10 @@ You can configure {% data variables.product.prodname_code_scanning %} to run {%
{% data reusables.code-scanning.enabling-options %}
## Checking whether your license includes {% data variables.product.prodname_GH_advanced_security %}
{% data reusables.advanced-security.check-for-ghas-license %}
## Prerequisites for {% data variables.product.prodname_code_scanning %}
- A license for {% data variables.product.prodname_GH_advanced_security %}{% ifversion ghes > 3.0 %} (see "[About billing for {% data variables.product.prodname_GH_advanced_security %}](/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security)"){% endif %}

View File

@@ -22,6 +22,10 @@ topics:
{% data reusables.secret-scanning.about-secret-scanning %} For more information, see "[About {% data variables.product.prodname_secret_scanning %}](/github/administering-a-repository/about-secret-scanning)."
## Checking whether your license includes {% data variables.product.prodname_GH_advanced_security %}
{% data reusables.advanced-security.check-for-ghas-license %}
## Prerequisites for {% data variables.product.prodname_secret_scanning %}
@@ -31,33 +35,20 @@ topics:
- {% data variables.product.prodname_secret_scanning_caps %} enabled in the management console (see "[Enabling {% data variables.product.prodname_GH_advanced_security %} for your enterprise](/admin/advanced-security/enabling-github-advanced-security-for-your-enterprise)")
## Checking support for the SSSE3 flag on your vCPUs
### Checking support for the SSSE3 flag on your vCPUs
The SSSE3 set of instructions is required because {% data variables.product.prodname_secret_scanning %} leverages hardware accelerated pattern matching to find potential credentials committed to your {% data variables.product.prodname_dotcom %} repositories. SSSE3 is enabled for most modern CPUs. You can check whether SSSE3 is enabled for the vCPUs available to your {% data variables.product.prodname_ghe_server %} instance.
1. Connect to the administrative shell for your {% data variables.product.prodname_ghe_server %} instance. For more information, see "[Accessing the administrative shell (SSH)](/admin/configuration/accessing-the-administrative-shell-ssh)."
2. Enter the following command:
```shell
grep -iE '^flags.*ssse3' /proc/cpuinfo >/dev/null | echo $?
```
```shell
grep -iE '^flags.*ssse3' /proc/cpuinfo >/dev/null | echo $?
```
If this returns the value `0`, it means that the SSSE3 flag is available and enabled. You can now enable {% data variables.product.prodname_secret_scanning %} for {% data variables.product.product_location %}. For more information, see "[Enabling {% data variables.product.prodname_secret_scanning %}](#enabling-secret-scanning)" below.
If this returns the value `0`, it means that the SSSE3 flag is available and enabled. You can now enable {% data variables.product.prodname_secret_scanning %} for {% data variables.product.product_location %}. For more information, see "[Enabling {% data variables.product.prodname_secret_scanning %}](#enabling-secret-scanning)" below.
If this doesn't return `0`, SSSE3 is not enabled on your VM/KVM. You need to refer to the documentation of the hardware/hypervisor on how to enable the flag, or make it available to guest VMs.
### Checking whether you have an {% data variables.product.prodname_advanced_security %} license
{% data reusables.enterprise_site_admin_settings.access-settings %}
{% data reusables.enterprise_site_admin_settings.management-console %}
1. Check if there is {% ifversion ghes < 3.2 %}an **{% data variables.product.prodname_advanced_security %}**{% else %}a **Security**{% endif %} entry in the left sidebar.
{% ifversion ghes < 3.2 %}
![Advanced Security sidebar](/assets/images/enterprise/management-console/sidebar-advanced-security.png)
{% else %}
![Security sidebar](/assets/images/enterprise/3.2/management-console/sidebar-security.png)
{% endif %}
{% data reusables.enterprise_management_console.advanced-security-license %}
If this doesn't return `0`, SSSE3 is not enabled on your VM/KVM. You need to refer to the documentation of the hardware/hypervisor on how to enable the flag, or make it available to guest VMs.
## Enabling {% data variables.product.prodname_secret_scanning %}

View File

@@ -28,17 +28,6 @@ When you enable {% data variables.product.prodname_GH_advanced_security %} for y
For guidance on a phased deployment of GitHub Advanced Security, see "[Deploying GitHub Advanced Security in your enterprise](/admin/advanced-security/deploying-github-advanced-security-in-your-enterprise)."
{% endif %}
## Prerequisites for enabling {% data variables.product.prodname_GH_advanced_security %}
1. Upgrade your license for {% data variables.product.product_name %} to include {% data variables.product.prodname_GH_advanced_security %}.{% ifversion ghes > 3.0 %} For information about licensing, see "[About billing for {% data variables.product.prodname_GH_advanced_security %}](/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security)."{% endif %}
2. Download the new license file. For more information, see "[Downloading your license for {% data variables.product.prodname_enterprise %}](/billing/managing-your-license-for-github-enterprise/downloading-your-license-for-github-enterprise)."
3. Upload the new license file to {% data variables.product.product_location %}. For more information, see "[Uploading a new license to {% data variables.product.prodname_ghe_server %}](/billing/managing-your-license-for-github-enterprise/uploading-a-new-license-to-github-enterprise-server)."{% ifversion ghes %}
4. Review the prerequisites for the features you plan to enable.
- {% data variables.product.prodname_code_scanning_capc %}, see "[Configuring {% data variables.product.prodname_code_scanning %} for your appliance](/admin/advanced-security/configuring-code-scanning-for-your-appliance#prerequisites-for-code-scanning)."
- {% data variables.product.prodname_secret_scanning_caps %}, see "[Configuring {% data variables.product.prodname_secret_scanning %} for your appliance](/admin/advanced-security/configuring-secret-scanning-for-your-appliance#prerequisites-for-secret-scanning)."{% endif %}
- {% data variables.product.prodname_dependabot %}, see "[Enabling the dependency graph and {% data variables.product.prodname_dependabot_alerts %} on your enterprise account](/admin/configuration/managing-connections-between-your-enterprise-accounts/enabling-the-dependency-graph-and-dependabot-alerts-on-your-enterprise-account)."
## Checking whether your license includes {% data variables.product.prodname_GH_advanced_security %}
{% ifversion ghes > 3.0 %}
@@ -58,6 +47,17 @@ For guidance on a phased deployment of GitHub Advanced Security, see "[Deploying
{% data reusables.enterprise_management_console.advanced-security-license %}
{% endif %}
## Prerequisites for enabling {% data variables.product.prodname_GH_advanced_security %}
1. Upgrade your license for {% data variables.product.product_name %} to include {% data variables.product.prodname_GH_advanced_security %}.{% ifversion ghes > 3.0 %} For information about licensing, see "[About billing for {% data variables.product.prodname_GH_advanced_security %}](/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security)."{% endif %}
2. Download the new license file. For more information, see "[Downloading your license for {% data variables.product.prodname_enterprise %}](/billing/managing-your-license-for-github-enterprise/downloading-your-license-for-github-enterprise)."
3. Upload the new license file to {% data variables.product.product_location %}. For more information, see "[Uploading a new license to {% data variables.product.prodname_ghe_server %}](/billing/managing-your-license-for-github-enterprise/uploading-a-new-license-to-github-enterprise-server)."{% ifversion ghes %}
4. Review the prerequisites for the features you plan to enable.
- {% data variables.product.prodname_code_scanning_capc %}, see "[Configuring {% data variables.product.prodname_code_scanning %} for your appliance](/admin/advanced-security/configuring-code-scanning-for-your-appliance#prerequisites-for-code-scanning)."
- {% data variables.product.prodname_secret_scanning_caps %}, see "[Configuring {% data variables.product.prodname_secret_scanning %} for your appliance](/admin/advanced-security/configuring-secret-scanning-for-your-appliance#prerequisites-for-secret-scanning)."{% endif %}
- {% data variables.product.prodname_dependabot %}, see "[Enabling the dependency graph and {% data variables.product.prodname_dependabot_alerts %} on your enterprise account](/admin/configuration/managing-connections-between-your-enterprise-accounts/enabling-the-dependency-graph-and-dependabot-alerts-on-your-enterprise-account)."
## Enabling and disabling {% data variables.product.prodname_GH_advanced_security %} features
{% data reusables.enterprise_management_console.enable-disable-security-features %}

View File

@@ -26,8 +26,8 @@ Some administrative ports are required to configure {% data variables.product.pr
|---|---|---|
| 8443 | HTTPS | Secure web-based {% data variables.enterprise.management_console %}. Required for basic installation and configuration. |
| 8080 | HTTP | Plain-text web-based {% data variables.enterprise.management_console %}. Not required unless SSL is disabled manually. |
| 122 | SSH | Shell access for {% data variables.product.product_location %}. Required to be open to incoming connections from all other nodes in a High Availability configuration. The default SSH port (22) is dedicated to Git and SSH application network traffic. |
| 1194/UDP | VPN | Secure replication network tunnel in High Availability configuration. Required to be open to all other nodes in the configuration.|
| 122 | SSH | Shell access for {% data variables.product.product_location %}. Required to be open to incoming connections between all nodes in a high availability configuration. The default SSH port (22) is dedicated to Git and SSH application network traffic. |
| 1194/UDP | VPN | Secure replication network tunnel in high availability configuration. Required to be open for communication between all nodes in the configuration.|
| 123/UDP| NTP | Required for time protocol operation. |
| 161/UDP | SNMP | Required for network monitoring protocol operation. |

View File

@@ -186,3 +186,4 @@ The `ghe-repl-teardown` command disables replication mode completely, removing t
## Further reading
- "[Creating a high availability replica](/enterprise/{{ currentVersion }}/admin/guides/installation/creating-a-high-availability-replica)"
- "[Network ports](/admin/configuration/configuring-network-settings/network-ports)"

View File

@@ -19,15 +19,16 @@ shortTitle: Create HA replica
## Creating a high availability replica
1. Set up a new {% data variables.product.prodname_ghe_server %} appliance on your desired platform. The replica appliance should mirror the primary appliance's CPU, RAM, and storage settings. We recommend that you install the replica appliance in an independent environment. The underlying hardware, software, and network components should be isolated from those of the primary appliance. If you are a using a cloud provider, use a separate region or zone. For more information, see ["Setting up a {% data variables.product.prodname_ghe_server %} instance"](/enterprise/{{ currentVersion }}/admin/guides/installation/setting-up-a-github-enterprise-server-instance).
2. In a browser, navigate to the new replica appliance's IP address and upload your {% data variables.product.prodname_enterprise %} license.
1. Ensure that both the primary appliance and the new replica appliance can communicate with each other over ports 122/TCP and 1194/UDP. For more information, see "[Network ports](/admin/configuration/configuring-network-settings/network-ports#administrative-ports)."
1. In a browser, navigate to the new replica appliance's IP address and upload your {% data variables.product.prodname_enterprise %} license.
{% data reusables.enterprise_installation.replica-steps %}
6. Connect to the replica appliance's IP address using SSH.
1. Connect to the replica appliance's IP address using SSH.
```shell
$ ssh -p 122 admin@<em>REPLICA IP</em>
```
{% data reusables.enterprise_installation.generate-replication-key-pair %}
{% data reusables.enterprise_installation.add-ssh-key-to-primary %}
9. To verify the connection to the primary and enable replica mode for the new replica, run `ghe-repl-setup` again.
1. To verify the connection to the primary and enable replica mode for the new replica, run `ghe-repl-setup` again.
```shell
$ ghe-repl-setup <em>PRIMARY IP</em>
```

View File

@@ -69,8 +69,7 @@ You can choose to disable {% data variables.product.prodname_actions %} for all
{% data reusables.actions.about-artifact-log-retention %}
{% data reusables.enterprise_site_admin_settings.access-settings %}
{% data reusables.enterprise_site_admin_settings.business %}
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.policies-tab %}
{% data reusables.enterprise-accounts.actions-tab %}
{% data reusables.github-actions.change-retention-period-for-artifacts-logs %}

View File

@@ -79,7 +79,7 @@ Any team members that have set their status to "Busy" will not be selected for r
![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)
{% ifversion fpt or ghec or ghae-next or ghes > 3.2 %}
{% ifversion fpt or ghec or ghae-issue-5108 or ghes > 3.2 %}
11. Optionally, to include members of child teams as potential reviewers when assigning requests, select **Child team members**.
12. Optionally, to count any members whose review has already been requested against the total number of members to assign, select **Count existing requests**.
13. Optionally, to remove the review request from the team when assigning team members, select **Team review request**.

View File

@@ -120,6 +120,12 @@ A MIME type is a header that a server sends to a browser, providing information
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).
{% ifversion fpt %}
## Data collection
When a {% data variables.product.prodname_pages %} site is visited, the visitor's IP address is logged and stored for security purposes, regardless of whether the visitor has signed into {% data variables.product.prodname_dotcom %} or not. For more information about {% data variables.product.prodname_dotcom %}'s security practices, see <a href="/articles/github-privacy-statement/" class="dotcom-only">{% data variables.product.prodname_dotcom %} Privacy Statement</a>.
{% endif %}
## Further reading
- [{% data variables.product.prodname_pages %}](https://lab.github.com/githubtraining/github-pages) on {% data variables.product.prodname_learning %}

View File

@@ -42,7 +42,7 @@ By default, the restrictions of a branch protection rule don't apply to people w
For each branch protection rule, you can choose to enable or disable the following settings.
- [Require pull request reviews before merging](#require-pull-request-reviews-before-merging)
- [Require status checks before merging](#require-status-checks-before-merging)
{% ifversion fpt or ghes > 3.1 or ghae-issue-4382 or ghec %}
{% ifversion fpt or ghes > 3.1 or ghae-next or ghec %}
- [Require conversation resolution before merging](#require-conversation-resolution-before-merging){% endif %}
- [Require signed commits](#require-signed-commits)
- [Require linear history](#require-linear-history)
@@ -99,7 +99,7 @@ You can set up required status checks to either be "loose" or "strict." The type
For troubleshooting information, see "[Troubleshooting required status checks](/github/administering-a-repository/troubleshooting-required-status-checks)."
{% ifversion fpt or ghes > 3.1 or ghae-issue-4382 or ghec %}
{% ifversion fpt or ghes > 3.1 or ghae-next or ghec %}
### Require conversation resolution before merging
Requires all comments on the pull request to be resolved before it can be merged to a protected branch. This ensures that all comments are addressed or acknowledged before merge.

View File

@@ -80,7 +80,7 @@ When you create a branch rule, the branch you specify doesn't have to exist yet
![Loose or strict required status checkbox](/assets/images/help/repository/protecting-branch-loose-status.png)
- Search for status checks, selecting the checks you want to require.
![Search interface for available status checks, with list of required checks](/assets/images/help/repository/required-statuses-list.png)
{%- ifversion fpt or ghes > 3.1 or ghae-issue-4382 %}
{%- ifversion fpt or ghes > 3.1 or ghae-next %}
1. Optionally, select **Require conversation resolution before merging**.
![Require conversation resolution before merging option](/assets/images/help/repository/require-conversation-resolution.png)
{%- endif %}

View File

@@ -37,7 +37,7 @@ Each CODEOWNERS file assigns the code owners for a single branch in the reposito
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`.
{% ifversion fpt or ghae or ghes > 3.2 or ghec %}
{% ifversion fpt or ghec or ghes > 3.2 or ghae-issue-9273 %}
## CODEOWNERS file size
CODEOWNERS files must be under 3 MB in size. A CODEOWNERS file over this limit will not be loaded, which means that code owner information is not shown and the appropriate code owners will not be requested to review changes in a pull request.

View File

@@ -21,12 +21,6 @@ miniTocMaxHeadingLevel: 3
{% ifversion fpt or ghec or ghes > 3.2 or ghae-issue-4742 %}
## Autolinks
{% tip %}
**Note:** The Autolinks API is in beta and may change.
{% endtip %}
To help streamline your workflow, you can use the API to add autolinks to external resources like JIRA issues and Zendesk tickets. For more information, see "[Configuring autolinks to reference external resources](/github/administering-a-repository/configuring-autolinks-to-reference-external-resources)."
{% data variables.product.prodname_github_apps %} require repository administration permissions with read or write access to use the Autolinks API.

View File

@@ -0,0 +1 @@
You can identify if your enterprise has a {% data variables.product.prodname_GH_advanced_security %} license by reviewing {% ifversion ghes = 3.0 %}the {% data variables.enterprise.management_console %}{% elsif ghes > 3.0 %}your enterprise settings{% endif %}. For more information, see "[Enabling GitHub Advanced Security for your enterprise](/admin/advanced-security/enabling-github-advanced-security-for-your-enterprise#checking-whether-your-license-includes-github-advanced-security)."

View File

@@ -1 +1 @@
If you can't see {% ifversion ghes < 3.2 %}**{% data variables.product.prodname_advanced_security %}**{% else %}**Security**{% endif %} in the sidebar, it means that your license doesn't include support for {% data variables.product.prodname_advanced_security %} features, including {% data variables.product.prodname_code_scanning %} and {% data variables.product.prodname_secret_scanning %}. The {% data variables.product.prodname_advanced_security %} license gives you and your users access to features that help you make your repositories and code more secure. {% ifversion ghes %}For more information, see "[About GitHub Advanced Security](/github/getting-started-with-github/about-github-advanced-security)" or contact {% data variables.contact.contact_enterprise_sales %}.{% endif %}
If you can't see **{% data variables.product.prodname_advanced_security %}** in the sidebar, it means that your license doesn't include support for {% data variables.product.prodname_advanced_security %} features, including {% data variables.product.prodname_code_scanning %} and {% data variables.product.prodname_secret_scanning %}. The {% data variables.product.prodname_advanced_security %} license gives you and your users access to features that help you make your repositories and code more secure. For more information, see "[About GitHub Advanced Security](/github/getting-started-with-github/about-github-advanced-security)" or contact {% data variables.contact.contact_enterprise_sales %}.

View File

@@ -100,6 +100,8 @@ Google | Google Cloud Storage Service Account Access Key ID | google_cloud_stora
{%- ifversion fpt or ghec or ghes > 3.2 %}
Google | Google Cloud Storage User Access Key ID | google_cloud_storage_user_access_key_id{% endif %}
{%- ifversion fpt or ghec or ghes > 3.3 %}
Google | Google OAuth Access Token | google_oauth_access_token{% endif %}
{%- ifversion fpt or ghec or ghes > 3.3 %}
Google | Google OAuth Client ID | google_oauth_client_id{% endif %}
{%- ifversion fpt or ghec or ghes > 3.3 %}
Google | Google OAuth Client Secret | google_oauth_client_secret{% endif %}

View File

@@ -15,7 +15,7 @@ contact_dmca: >-
contact_privacy: >-
{% ifversion fpt or ghec %}[Privacy contact form](https://github.com/contact/privacy){% endif %}
contact_enterprise_sales: "[GitHub's Sales team](https://enterprise.github.com/contact)"
contact_enterprise_sales: "[GitHub's Sales team](https://github.com/enterprise/contact)"
contact_feedback_actions: '[Feedback form for GitHub Actions](https://support.github.com/contact/feedback?contact[category]=actions)'

View File

@@ -1,11 +1 @@
<nav class="UnderlineNav my-3" id="tool-switcher"
{%- if page.defaultTool %} data-default-tool="{{ page.defaultTool }}"{% endif %}>
<div class="UnderlineNav-body">
<a href="#" class="UnderlineNav-item tool-switcher" data-tool="webui">Web browser</a>
<a href="#" class="UnderlineNav-item tool-switcher" data-tool="cli">GitHub CLI</a>
<a href="#" class="UnderlineNav-item tool-switcher" data-tool="curl">cURL</a>
<a href="#" class="UnderlineNav-item tool-switcher" data-tool="desktop">Desktop</a>
<a href="#" class="UnderlineNav-item tool-switcher" data-tool="codespaces">Codespaces</a>
<a href="#" class="UnderlineNav-item tool-switcher" data-tool="vscode">Visual Studio Code</a>
</div>
</nav>
<span class="tool-switcher"></span>

View File

@@ -250,16 +250,19 @@ class Page {
})
}
this.detectedPlatforms = [
(html.includes('extended-markdown mac') || html.includes('platform-mac')) && 'mac',
(html.includes('extended-markdown windows') || html.includes('platform-windows')) &&
'windows',
(html.includes('extended-markdown linux') || html.includes('platform-linux')) && 'linux',
].filter(Boolean)
// set a flag so layout knows whether to render a mac/windows/linux switcher element
this.detectedPlatforms = ['mac', 'windows', 'linux'].filter(
(platform) =>
html.includes(`extended-markdown ${platform}`) || html.includes(`platform-${platform}`)
)
this.includesPlatformSpecificContent = this.detectedPlatforms.length > 0
// set flags for webui, cli, etc switcher element
this.detectedTools = ['cli', 'desktop', 'webui', 'curl', 'codespaces', 'vscode'].filter(
(tool) => html.includes(`extended-markdown ${tool}`) || html.includes(`tool-${tool}`)
)
this.includesToolSpecificContent = this.detectedTools.length > 0
return html
}

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4049476895fb239bc51e71ebd336338d41529afc67d2098dce429533dc003237
size 641041
oid sha256:02c3be78802a671eff62246867201005f2f32b4ba378ca9a23f66b110bb2c90e
size 641026

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b0b2a1a218d1543eb344ae20b572c55b3e95859c5f6418dca4f7738ea730489c
size 1111649
oid sha256:abfce0aa6237573b2d15bdf2941e313989eb32da3777cd1ab8ca60657064ee1b
size 1111794

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7166c39064400d935ff68fd4194d024349115b4015d7584f63a14e571b80f113
size 944974
oid sha256:4a7f59af0d3fbee3c53ef01010bc5059573f584ccbfd912507f5123f5fb35aab
size 945496

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2ab881358f1b65eafb4780c410dc4cd0252cd02171e3faf47c0d8938e930bbfa
size 3858188
oid sha256:860cc4ca7ff227dbffb82fb5525c8700bec3d193ac1539ced3b9147462555ea4
size 3859340

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2f88d199c16319f387dc7befa2247fdf161a1ff43c149ecb1474f68da324a301
size 584420
oid sha256:3423d63b344891401efff747430cc01519476a492bfd0bbab55244c08448fdcd
size 584470

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2034c5b57c8f2fa0e1c49c827a213b0472109bff6cdf11067bf58912b0698e6a
size 2455540
oid sha256:64ca706f3feb4fca88f9e45898867dd15ec8f82d8db1a6c95271743ad92d212b
size 2455391

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:995025c3a0e1fdda18833647304d9eae5b457f3858a8dffa41b47424105b94e1
size 666491
oid sha256:52d6a3098b658b332e9f4dd9a8d619a80425bf62ffb342feb8a2ee6735be5467
size 666559

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a0a5ee449971aad8ba85fb09e59062fee537eaea68340681c2966fb4f41752df
size 3450524
oid sha256:cb4b451212a3cf883e153033eafcb2dbc5fc2eaecd82a7a322f8ff704fa8c480
size 3451262

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ea29db113ce85355e408b98557371bd7a31d53f4762a12a5c21e39fc9f305aca
size 544965
oid sha256:489455dfad2f6a267a997ca518fd02740340222a804e36c54519542f5e98baaf
size 544853

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:84c39d3b1c41752c800066cb8a5edcb17958c47a285c55e4ce04640babb70294
size 2233851
oid sha256:4a03d9a2ade87a3bc1c28cba5aef90120264ee468efd5c2e26145a821ee25ecb
size 2234137

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4cb5ad2c1880cfa82c66379bd78ecb662809dd42df225f42c2ef5fa1a56a3932
size 655625
oid sha256:4b7474ce5591f7903eb808da630adecb47737693ea70e1a8c21f954b64cac6ae
size 655479

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:aaaaa5076b294583fae46c0e057558041cb0d804800dc9f18c604f8cabbc02c6
size 1144090
oid sha256:c9225a66d8cb707e460f02a601f7b580ec4c9002f7527c006b22e5e7615335a2
size 1144121

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2a8af3d531106d3f834ec517068786b91dd52cb9caf1c2fb8d06acf50c1d4643
size 970024
oid sha256:339b28f50c2d5db04e2a6636e82a33df02cc0f2d61fc581caf9cf8d0b235a8ba
size 969801

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a52ee2080910250bde000300baf084993d065171a5591f2b369bf867f31f7bae
size 3951668
oid sha256:12b2a6782483ec1b53b9152351178732bda03f46ae97bdb30448b6338525eafc
size 3950447

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:241912f2b98df27791f1aae857b74571e7ef08fb9b745b10ec8ea61f61dc20dd
size 597228
oid sha256:cad54cfc5eeadbe70b88be68966515be532b933fc9e3d5f1d549d9fa23fdc61a
size 597186

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:23d4b5c4f3ed1c7ec69d038c5ca55fd5886d9baf932c00699ccfa995d4595e90
size 2514879
oid sha256:e0300ece82e027b0b0c7e871c5473a2bb2b3bd6c4bbb1a89a671a81bc5fed0ac
size 2513922

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e520026797499331e24221d53fd73c24fcf935225aeb4c548613b366748adfc4
size 681223
oid sha256:297b3700b84e17f8b26e41e3987021eec9bfc07923f81faf5d92f96caeddbeb0
size 681262

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:77a9b49b1b495ffd78c382b9325ad5d58d819577c4ab14533861826f476de0f6
size 3533386
oid sha256:48683320e1c9c829ea8ecc16bfba5f946403c7b3ed878d24b5aae87860b4af14
size 3533506

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:264928ca75f4ac57c795299d25af5ca67d9240baa9918377831f552c33e3eda7
size 557069
oid sha256:506a753f2870e3d7ada7962747925b66930b74ca9feb6fe078fc3de2b66ca23a
size 557092

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:67aad2a80ed7724c9f58a7daf685a33abbefd97f9f0c2ec21529db1eb1d5a649
size 2289490
oid sha256:cebeb0f6aedd93c789b1b8c3570532702a0dcfb02f6b0a2498a9c5d40caf224c
size 2288779

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4f2aa508681440af8d93fc5b4f10ef5753627be6f80c1c2c08b89c35c40e11b0
size 668718
oid sha256:5427a56d953176defbf12f79e9b9cb487f17e609767044bc164f9c88ebbfe5a2
size 668659

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4d832c1719ed684a7f5b35953d50d7250a5938c021c7829989e5e0393160b908
size 1169094
oid sha256:9ed8d110afb28d07b8795aa95746635c50f6a06e914fbd873589f2a6065686ab
size 1168626

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c60fd8d5dce9adf6c582b098427b9509ee3dbf5241d4310ca7fc94ae7fc88483
size 1000821
oid sha256:d758d337e3e1b15fe5b019eb4b77575b02da10b6a1bc710bfbe1e1a02f52928f
size 1000495

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ac61b65215de8922fe562b8bd49306d518d11e52c5807b166386716194a67295
size 4070323
oid sha256:6cfc6671eb9eb7b94c2829c63502dd254cf75a39721889a8435cf6d3ed5be680
size 4070638

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f62f8658e0c0c2b0495a1a39bfd342e9159a5653d3e384942b7af8b9971b7ab5
size 608258
oid sha256:be88ed4dcba4f9a729d38b77bac9c682518402874d537aa6dde19c38d1e5884b
size 607985

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0871545c7f18518daa953bcba6292e5637272ffce62b9bcd681f21688d87fde6
size 2565982
oid sha256:3bbc0a92643a1ec81d187bf2d3d9deb97d52e9c28c5db7e2916e137afc293931
size 2565445

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:522045dfc163bf0c1c07650b75fec174dc9e51f0171e46a07d4b9a06d91192db
size 693703
oid sha256:002dd0691c18413d96a0a4b3b33a40ac81359b14e1891e1453a5a437bb5f29f2
size 693734

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fd516842b0faff9a784672ae5e3a6b73401d0322260275f0ccb235065bc17b34
size 3605119
oid sha256:314aec3ca0e34fd19ab0861336596ea10e9fd1d87e1d985dcb5fc3ad6e329da8
size 3604684

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e59ad385a800b9a365266e860ccdeae0821ee015aa70c556cbbb7d14119b47c1
size 567333
oid sha256:00699716566e801796126e7558b529b17f94c7cb2ff8dbc2f5825d0de84a3e2e
size 567467

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0ef9cf8810cb83d8c70bd329adf8dd6ba7c9524de2a90a1e3390b958b5fa4a37
size 2331617
oid sha256:f6575a86cddfbb9f8718a6d78d2bd372c2708627fae77c83d8f03d0b0ed42f6f
size 2331721

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:83d0f55f34c14378cfc55869db81d610e4e82ec44c6e3654a39735f0c69fcef6
size 691539
oid sha256:7f1ea773f839b3b61daaa9f69ca3415e4c0130a30eca0b7f960cfea2905bf8f4
size 691373

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:55918d08e38df87aab5502ae5389233815f720405e90f3d876f7d27fdd47722e
size 1226449
oid sha256:76ab10ab4bf43ec717cf80e9241384ab14b7a62edfd6372a83f650e89c88df59
size 1226577

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:14f9c12a3c7ad88c0bf99ac93153af53cb0464b863c78a624064e3c580c4efb2
size 1034557
oid sha256:71a85824e91fd1693ae349749c193f53fbfd9fee10a998540683267970a5dd1e
size 1034322

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fa363ef21cf719ecef4ba4b13ecf2f6c642fbc4aebdc086640f766c89c5ec171
size 4166266
oid sha256:11a19c08b2512d0644ac7725bca2070fce4c19ccf40374964710eb28a56b433e
size 4167514

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e20a7f3795818920308100b30595796c4c170eba4c62680f4b70d577a3be3765
size 626610
oid sha256:439f3d96b062c9aaa65aa3c7485036f49fb7d2e0fe254fcb34f8bbbf24319a7e
size 626746

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1f9a60b978506e84f321d83607e682bfb86fcbeaea57d74325fb8b16efa0bb8c
size 2665818
oid sha256:3bb69092c364b0676d32fca3636965a672961385d97ce3278e93387c35e24e6f
size 2666511

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d307f62694f67f388457f9cd9c9c8b81256dfe1d22c0b7eed1a6a3d5f25030d9
size 716392
oid sha256:13fdeb841ef34e183086e61258b548c7192a0a2158f8d4ae6c799e1ff3964b81
size 716476

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b5bd3ae3940aac2a77a39e70e80c63d32c6a014466ac15a0df3be62a0cc152e8
size 3733744
oid sha256:46074ff9fb253c5d0cbaae64383d08b6dfd114ae0a522bd6464bfcd484c9b9ac
size 3733335

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6a96cdb2a0f76e6e2d02006795d695e6fa54b98d883bfc0926fafbd18fd7fba3
size 585848
oid sha256:7e3e12531e152929be6dc90e64345b4930814111e8a5e43d0ec6f91283f921a3
size 585857

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:34f9a77a145aded15cfbf0f4bd7ea996e170f89f8111f7524abca045b63ed390
size 2415923
oid sha256:fbf9ed32498bc544a062e737f45cf1387ca770c7bb7b0e642dcc3b1e4773f135
size 2415645

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fd0f19fbb1a0fe94594749382b08227d0720c7fd26f90c1451f567a2b5864968
size 903714
oid sha256:f5dceb291cc2ff5c59f53ec7977f060cb33c430e9537d4332f066ff2084a1af0
size 903811

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:70d146912a0976fadf6880d4839bcd4a0801703a8584f8599eada139b41911cd
size 1446676
oid sha256:31b4a56ad4608cd3b512152f1e9ab858f1c84019b5da14f58e3d2eaeb591dc48
size 1446506

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ee29a9792b9205015d2e476f547546ddb99228bef87ff7e2c2a7cfccac455fcf
size 1328029
oid sha256:eb241b3ce4a2aaa0a9a04c0947e54df2d0b4f38ad5838e99f9548a9288d66ca9
size 1320807

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:251d45bfc7553c51b6b065b102d41a6122bd6590d3ce39d858953658354d2d46
size 5057097
oid sha256:e203dee96492179092f625fffea1ad454d7671f4fd0ea171051f283ade981c3e
size 5057795

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1a51cbbeb667b81bcbf3df02c1de62690586cd66d9bda264634b679f1542bc8c
size 804554
oid sha256:4ea7c1c8d6fe77d1bd6d9b33ffe834935b8cf2bec37dfea468b16b8eb86aa70a
size 804358

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ef1843d8e80f292d84b8944d605965a12ce952701213691ab188cc8ac486e83c
size 3257274
oid sha256:fe624647cc71f0a823ee2d9207efa6f2afd5fbd424b3602e96337a08d472c7cd
size 3257618

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fc3d32dca890327d675fd37e55f5cfbffd0733ed654815dd2f45bc9edbd81584
size 929964
oid sha256:c0c4465da82fc8ef6f98f5cd38f0a37e0027d1d88b9aebdc6ff2fcf3cc3286a1
size 930176

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c1ffbb4c18a7620c87b401b25ef7ed0327b4238c9ab3e8456400a25ba29972d9
size 4684151
oid sha256:93917d3818cab17fe7c948a086f43b4a1e073c4ff216d588eb0a0c9987184a9c
size 4682871

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b7c54cb25b72eae9f4ee1f47191ed603eb8e9f349f2faae85fb9fce5092f58bd
size 767565
oid sha256:4bc16329d51ce76fb4f3bd5b5393ad960afdf8e5429e68454c3db9a5ef7e9c2b
size 767593

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cc01b486d49a5b787a57371687c20ba33885ec7c721bf12442357e112fb38eef
size 3040552
oid sha256:6cafd3ec08d6ab40be5b06b9f4efb7802eb6a82c29d21d4e15bd99a839577120
size 3040789

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c0ccfacb0470c2d3bada0d1780e49b508ab0b4b80f11f15e6b043ab10b427bff
size 518860
oid sha256:6333fe71df532bda0dedb37120f9634cbbfa8462d21c07859444e1cf25359634
size 518857

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ef23b630e10b8714b0efa9af50c8084dbc4c338111ab377e7878dbd5ecab5028
size 880326
oid sha256:89c48a904fa53661be399e141da337a3490c38c5951b73e803014ee9c8b95fa0
size 879729

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8958acc20c35b5347bd5aaefd6423fb7bde1991e1e7daaab1b0dab4e5f132795
size 801401
oid sha256:423226ab6e8767968465ab6a79b4fb3f453088a1c83c1ffbac40bbf61ebdc853
size 801059

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:209be38a3e7f71bbca95b88cfbc018f57d6ee6d4eda3cc1a050e73f86a5061de
size 3214584
oid sha256:7845996320dea0c5007e3965955ec878ebf50544b3812715b594c9f5d6eee63f
size 3214634

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ce52fdbe18a6f0ad892c34ac05c1c53462c4a6f377c4141fba4b59145aa7f22c
size 473569
oid sha256:72ff4efe2af24699fb99978f5bc53c4847a35a4c79ca8a516fc392f804a6fe3e
size 473549

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0148640cccc9c0a279c753009b9dcfe99b0a04684b0ff0c22617367d3975c8c5
size 1924896
oid sha256:e90d208aacf5c4cc470355879f8e4bd08740b9328a55368f21a3c7854f053e73
size 1924411

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2f99cd290b8b9015551e095e883cdb8375a258a4ae7e6d1309f3b589e43b3d63
size 539340
oid sha256:3776eea6509ceec824251493e55aaffe151af016683f2ed96a7ac64e22fc83fb
size 539152

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bd4877cc043e5a4317063118d2ac4c5ef6f1cff4ac4360d197d4be7926e9034e
size 2696219
oid sha256:f4896e5f65979865696d8768f745ee344f2ac3b4a434fe63ad1f0a3b90354c53
size 2694992

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:729daf37f30f609328ed5062ae84a20303fb36679d54a7342ca05e8afd10d3e7
size 441730
oid sha256:2357a5bd42d601b17cf75b690bbd2455b53ac59c0204b2f01f26f5e0d4059ae2
size 441898

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2822461d4e9f0bd3a7e6091c4236e29dd44bff3c1811af1c4897e205ea0bb2da
size 1753555
oid sha256:7eb3748be348e01e4286342da967d5bfcb19a4877f195ded0666127bbfaa76d4
size 1753075

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6ad550fccae88cd6439678ccbe7493b8b7b25b928bf65fbc41f170cff7e220fd
size 801555
oid sha256:71be4fdff8bb7944d518360465646a34588979dbd5fce84620e3e48aaf002a91
size 801617

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4da3dd920cca01a205f80fcd173caeae7a3bb73f707a44a688e22381350710ed
size 1447663
oid sha256:a83dcb561b524df42c6a13b66ffaae1cad26806ef31dd0704d99b9d4b35a0cc2
size 1447099

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d6fb971d6435dd6ea697a30c977a641794f583d3f9f77824f80c2cf08667c7bb
size 1175104
oid sha256:e989e9583754725b3e7dcb56abd29a7eea026cdf5760020d6c7a3aede37ff4fd
size 1175692

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:964a4e2594a2f525069a529c8ba2915a3fcc51fb91b742a3d3216c70f3f4844d
size 4727788
oid sha256:53f7589a100bd260cc36ada335e86c5ff2b85b848737d9874590da0a63e44be8
size 4729554

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:929ae4b019083381064094638d0458e7ed101319829f9951ae72f7b2f8509e48
size 736375
oid sha256:3c926f7f0ca604c79c965fb7f6018add00456b5b15381e667c4534ae62febcd6
size 736390

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a0ce99de2b32d50d67ad42474530816cd0c9f87a8e4ad1fd4bd0964d4e6b9ae3
size 3133761
oid sha256:1bd35ef02d185e40ecbd09c10df16acc34514c039e9f33e172d7679980b73098
size 3134004

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4c6b06174df3b0eefe24f5254333a7370d3b724b4ffbee108ee4477cfd3a3606
size 831633
oid sha256:12ae1eb68ad142af3cfe9c3b64c7edd92ec131642bedcc8c8d7ba119c67fb78d
size 831415

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:84ac8f110a88e55f4f4f6b0c2964c34d2766a446d0eeed7156caa9727cbe6d62
size 4394083
oid sha256:a4baf9353f396addef46b2520c5bb2884b0f3d8a5bff17cdf05859cafacd34f8
size 4393755

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f9e2c76af3bf9296b6ab7230ef2205a1598edde4984e836a2b0ec299c32afe44
size 706733
oid sha256:59b896ccf232cc7e1ec9c522b65ee8d4eb993d2eacce9ecbaab23eb0516a06a1
size 706894

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d8b89cc136a3e40a481cd893478401ab7d744e6cac46652e82bce6d6254c2404
size 2943592
oid sha256:5941aeb01bafc85393a0b0e19b46e4a8fc7676bb5c29a945a1ae94136c08365a
size 2944565

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