Merge branch 'main' into patch-2
This commit is contained in:
@@ -163,8 +163,8 @@ jobs:
|
||||
rsync -rptovR ./user-code/assets/./**/*.png ./assets
|
||||
rsync -rptovR ./user-code/data/./**/*.{yml,md} ./data
|
||||
rsync -rptovR ./user-code/components/./**/*.{ts,tsx} ./components
|
||||
rsync -rptovR ./user-code/lib/./**/*.{js,ts,json} ./lib
|
||||
rsync -rptovR ./user-code/middleware/./**/*.{js,ts} ./middleware
|
||||
rsync -rptovR --ignore-missing-args ./user-code/lib/./**/*.{js,ts} ./lib
|
||||
rsync -rptovR --ignore-missing-args ./user-code/middleware/./**/*.{js,ts} ./middleware
|
||||
rsync -rptovR ./user-code/pages/./**/*.{tsx} ./pages
|
||||
rsync -rptovR ./user-code/stylesheets/./**/*.{scss} ./stylesheets
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
import { useState, useEffect, ReactNode } from 'react'
|
||||
import { useState, useEffect } from 'react'
|
||||
import { useRouter } from 'next/router'
|
||||
import dynamic from 'next/dynamic'
|
||||
import cx from 'classnames'
|
||||
import { ActionList, Heading } from '@primer/react'
|
||||
|
||||
import { ZapIcon, InfoIcon, ShieldLockIcon } from '@primer/octicons-react'
|
||||
import { Callout } from 'components/ui/Callout'
|
||||
@@ -10,7 +8,7 @@ import { Callout } from 'components/ui/Callout'
|
||||
import { Link } from 'components/Link'
|
||||
import { DefaultLayout } from 'components/DefaultLayout'
|
||||
import { ArticleTitle } from 'components/article/ArticleTitle'
|
||||
import { MiniTocItem, useArticleContext } from 'components/context/ArticleContext'
|
||||
import { useArticleContext } from 'components/context/ArticleContext'
|
||||
import { useTranslation } from 'components/hooks/useTranslation'
|
||||
import { LearningTrackNav } from './LearningTrackNav'
|
||||
import { MarkdownContent } from 'components/ui/MarkdownContent'
|
||||
@@ -18,10 +16,8 @@ import { Lead } from 'components/ui/Lead'
|
||||
import { ArticleGridLayout } from './ArticleGridLayout'
|
||||
import { PlatformPicker } from 'components/article/PlatformPicker'
|
||||
import { ToolPicker } from 'components/article/ToolPicker'
|
||||
import { MiniTocs } from 'components/ui/MiniTocs'
|
||||
|
||||
const ClientSideRedirectExceptions = dynamic(() => import('./ClientsideRedirectExceptions'), {
|
||||
ssr: false,
|
||||
})
|
||||
const ClientSideHighlightJS = dynamic(() => import('./ClientSideHighlightJS'), { ssr: false })
|
||||
|
||||
// Mapping of a "normal" article to it's interactive counterpart
|
||||
@@ -49,12 +45,11 @@ const interactiveAlternatives: Record<string, { href: string }> = {
|
||||
href: '/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces?langId=py',
|
||||
},
|
||||
}
|
||||
|
||||
export type StructuredContentT = {
|
||||
structuredContent?: ReactNode
|
||||
type Props = {
|
||||
children?: React.ReactNode
|
||||
}
|
||||
|
||||
export const ArticlePage = ({ structuredContent }: StructuredContentT) => {
|
||||
export const ArticlePage = ({ children }: Props) => {
|
||||
const { asPath } = useRouter()
|
||||
const {
|
||||
title,
|
||||
@@ -69,58 +64,9 @@ export const ArticlePage = ({ structuredContent }: StructuredContentT) => {
|
||||
miniTocItems,
|
||||
currentLearningTrack,
|
||||
} = useArticleContext()
|
||||
const renderedContent = structuredContent || renderedPage
|
||||
const { t } = useTranslation('pages')
|
||||
const currentPath = asPath.split('?')[0]
|
||||
|
||||
const renderTocItem = (item: MiniTocItem) => {
|
||||
return (
|
||||
<ActionList.Item
|
||||
as="li"
|
||||
key={item.contents}
|
||||
className={item.platform}
|
||||
sx={{ listStyle: 'none', padding: '2px' }}
|
||||
>
|
||||
<div className={cx('lh-condensed d-block width-full')}>
|
||||
<div dangerouslySetInnerHTML={{ __html: item.contents }} />
|
||||
{item.items && item.items.length > 0 ? (
|
||||
<ul className="ml-3">{item.items.map(renderTocItem)}</ul>
|
||||
) : null}
|
||||
</div>
|
||||
</ActionList.Item>
|
||||
)
|
||||
}
|
||||
|
||||
// We have some one-off redirects for rest api docs
|
||||
// currently those are limited to the repos page, but
|
||||
// that will grow soon as we restructure the rest api docs.
|
||||
// This is a workaround to updating the hardcoded links
|
||||
// directly in the REST API code in a separate repo, which
|
||||
// requires many file changes and teams to sign off.
|
||||
// While the organization is turbulent, we can do this.
|
||||
// Once it's more settled, we can refactor the rest api code
|
||||
// to leverage the OpenAPI urls rather than hardcoded urls.
|
||||
// The code below determines if we should bother loading this redirecting
|
||||
// component at all.
|
||||
// The reason this isn't done at the server-level is because there you
|
||||
// can't possibly access the URL hash. That's only known in client-side
|
||||
// code.
|
||||
const [loadClientsideRedirectExceptions, setLoadClientsideRedirectExceptions] = useState(false)
|
||||
useEffect(() => {
|
||||
const { hash, pathname } = window.location
|
||||
// Today, Jan 2022, it's known explicitly what the pathname.
|
||||
// In the future there might be more.
|
||||
// Hopefully, we can some day delete all of this and no longer
|
||||
// be dependent on the URL hash to do the redirect.
|
||||
if (
|
||||
hash &&
|
||||
(pathname.endsWith('/rest/reference/repos') ||
|
||||
pathname.endsWith('/rest/reference/enterprise-admin'))
|
||||
) {
|
||||
setLoadClientsideRedirectExceptions(true)
|
||||
}
|
||||
}, [])
|
||||
|
||||
// If the page contains `[data-highlight]` blocks, these pages need
|
||||
// syntax highlighting. But not every page needs it, so it's conditionally
|
||||
// lazy-loaded on the client.
|
||||
@@ -139,29 +85,8 @@ export const ArticlePage = ({ structuredContent }: StructuredContentT) => {
|
||||
// consecutive one does.
|
||||
}, [asPath])
|
||||
|
||||
// Scrollable code blocks in our REST API docs and elsewhere aren't accessible
|
||||
// via keyboard navigation without setting tabindex="0". But we don't want to set
|
||||
// this attribute on every `<pre>` code block, only the ones where there are scroll
|
||||
// bars because the content isn't all visible.
|
||||
useEffect(() => {
|
||||
const codeBlocks = document.querySelectorAll<HTMLPreElement>('pre')
|
||||
|
||||
codeBlocks.forEach((codeBlock) => {
|
||||
if (
|
||||
codeBlock.scrollWidth > codeBlock.clientWidth ||
|
||||
codeBlock.scrollHeight > codeBlock.clientHeight
|
||||
) {
|
||||
codeBlock.setAttribute('tabindex', '0')
|
||||
}
|
||||
})
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<DefaultLayout>
|
||||
{/* Doesn't matter *where* this is included because it will
|
||||
never render anything. It always just return null. */}
|
||||
{loadClientsideRedirectExceptions && <ClientSideRedirectExceptions />}
|
||||
|
||||
{/* Doesn't matter *where* this is included because it will
|
||||
never render anything. It always just return null. */}
|
||||
{lazyLoadHighlightJS && <ClientSideHighlightJS />}
|
||||
@@ -220,28 +145,13 @@ export const ArticlePage = ({ structuredContent }: StructuredContentT) => {
|
||||
</div>
|
||||
)}
|
||||
{miniTocItems.length > 1 && (
|
||||
<>
|
||||
<Heading as="h2" id="in-this-article" className="mb-1" sx={{ fontSize: 1 }}>
|
||||
<Link href="#in-this-article">{t('miniToc')}</Link>
|
||||
</Heading>
|
||||
|
||||
<ActionList
|
||||
key={title}
|
||||
items={miniTocItems.map((items, i) => {
|
||||
return {
|
||||
key: title + i,
|
||||
text: title,
|
||||
renderItem: () => <ul>{renderTocItem(items)}</ul>,
|
||||
}
|
||||
})}
|
||||
/>
|
||||
</>
|
||||
<MiniTocs pageTitle={title} miniTocItems={miniTocItems} />
|
||||
)}
|
||||
</>
|
||||
}
|
||||
>
|
||||
<div id="article-contents">
|
||||
<MarkdownContent>{renderedContent}</MarkdownContent>
|
||||
<MarkdownContent>{children || renderedPage}</MarkdownContent>
|
||||
{effectiveDate && (
|
||||
<div className="mt-4" id="effectiveDate">
|
||||
Effective as of:{' '}
|
||||
|
||||
@@ -6,7 +6,6 @@ import styles from './Breadcrumbs.module.scss'
|
||||
|
||||
export type BreadcrumbT = {
|
||||
title: string
|
||||
documentType?: string
|
||||
href?: string
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,10 @@
|
||||
}
|
||||
|
||||
tbody {
|
||||
tr td {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
tr td:first-child {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
159
components/rest/RestReferencePage.tsx
Normal file
159
components/rest/RestReferencePage.tsx
Normal file
@@ -0,0 +1,159 @@
|
||||
import { useState, useEffect } from 'react'
|
||||
import { useRouter } from 'next/router'
|
||||
import dynamic from 'next/dynamic'
|
||||
|
||||
import { DefaultLayout } from 'components/DefaultLayout'
|
||||
import { ArticleTitle } from 'components/article/ArticleTitle'
|
||||
import { useMainContext } from 'components/context/MainContext'
|
||||
import { MarkdownContent } from 'components/ui/MarkdownContent'
|
||||
import { Lead } from 'components/ui/Lead'
|
||||
import { ArticleGridLayout } from 'components/article/ArticleGridLayout'
|
||||
import { MiniTocItem } from 'components/context/ArticleContext'
|
||||
import { RestCategoryOperationsT } from './types'
|
||||
import { RestOperation } from './RestOperation'
|
||||
import { MiniTocs } from 'components/ui/MiniTocs'
|
||||
|
||||
const ClientSideHighlightJS = dynamic(() => import('components/article/ClientSideHighlightJS'), {
|
||||
ssr: false,
|
||||
})
|
||||
|
||||
const ClientSideRedirectExceptions = dynamic(
|
||||
() => import('components/article/ClientsideRedirectExceptions'),
|
||||
{
|
||||
ssr: false,
|
||||
}
|
||||
)
|
||||
|
||||
export type StructuredContentT = {
|
||||
descriptions: any
|
||||
introContent: string
|
||||
restOperations: RestCategoryOperationsT
|
||||
miniTocItems?: MiniTocItem[]
|
||||
}
|
||||
|
||||
export const RestReferencePage = ({
|
||||
descriptions,
|
||||
introContent,
|
||||
restOperations,
|
||||
miniTocItems,
|
||||
}: StructuredContentT) => {
|
||||
const { asPath } = useRouter()
|
||||
const { page } = useMainContext()
|
||||
const subcategories = Object.keys(restOperations)
|
||||
|
||||
// We have some one-off redirects for rest api docs
|
||||
// currently those are limited to the repos page, but
|
||||
// that will grow soon as we restructure the rest api docs.
|
||||
// This is a workaround to updating the hardcoded links
|
||||
// directly in the REST API code in a separate repo, which
|
||||
// requires many file changes and teams to sign off.
|
||||
// While the organization is turbulent, we can do this.
|
||||
// Once it's more settled, we can refactor the rest api code
|
||||
// to leverage the OpenAPI urls rather than hardcoded urls.
|
||||
// The code below determines if we should bother loading this redirecting
|
||||
// component at all.
|
||||
// The reason this isn't done at the server-level is because there you
|
||||
// can't possibly access the URL hash. That's only known in client-side
|
||||
// code.
|
||||
const [loadClientsideRedirectExceptions, setLoadClientsideRedirectExceptions] = useState(false)
|
||||
useEffect(() => {
|
||||
const { hash, pathname } = window.location
|
||||
// Today, Jan 2022, it's known explicitly what the pathname.
|
||||
// In the future there might be more.
|
||||
// Hopefully, we can some day delete all of this and no longer
|
||||
// be dependent on the URL hash to do the redirect.
|
||||
if (
|
||||
hash &&
|
||||
(pathname.endsWith('/rest/reference/repos') ||
|
||||
pathname.endsWith('/rest/reference/enterprise-admin'))
|
||||
) {
|
||||
setLoadClientsideRedirectExceptions(true)
|
||||
}
|
||||
}, [])
|
||||
|
||||
// Scrollable code blocks in our REST API docs and elsewhere aren't accessible
|
||||
// via keyboard navigation without setting tabindex="0". But we don't want to set
|
||||
// this attribute on every `<pre>` code block, only the ones where there are scroll
|
||||
// bars because the content isn't all visible.
|
||||
useEffect(() => {
|
||||
const codeBlocks = document.querySelectorAll<HTMLPreElement>('pre')
|
||||
|
||||
codeBlocks.forEach((codeBlock) => {
|
||||
if (
|
||||
codeBlock.scrollWidth > codeBlock.clientWidth ||
|
||||
codeBlock.scrollHeight > codeBlock.clientHeight
|
||||
) {
|
||||
codeBlock.setAttribute('tabindex', '0')
|
||||
}
|
||||
})
|
||||
}, [])
|
||||
|
||||
// If the page contains `[data-highlight]` blocks, these pages need
|
||||
// syntax highlighting. But not every page needs it, so it's conditionally
|
||||
// lazy-loaded on the client.
|
||||
const [lazyLoadHighlightJS, setLazyLoadHighlightJS] = useState(false)
|
||||
useEffect(() => {
|
||||
// It doesn't need to use querySelector because all we care about is if
|
||||
// there is greater than zero of these in the DOM.
|
||||
// Note! This "core selector", which determines whether to bother
|
||||
// or not, needs to match what's used inside ClientSideHighlightJS.tsx
|
||||
if (document.querySelector('[data-highlight]')) {
|
||||
setLazyLoadHighlightJS(true)
|
||||
}
|
||||
|
||||
// Important to depend on the current path because the first page you
|
||||
// load, before any client-side navigation, might not need it, but the
|
||||
// consecutive one does.
|
||||
}, [asPath])
|
||||
|
||||
return (
|
||||
<DefaultLayout>
|
||||
{/* Doesn't matter *where* this is included because it will
|
||||
never render anything. It always just return null. */}
|
||||
{loadClientsideRedirectExceptions && <ClientSideRedirectExceptions />}
|
||||
{lazyLoadHighlightJS && <ClientSideHighlightJS />}
|
||||
|
||||
<div className="container-xl px-3 px-md-6 my-4">
|
||||
<ArticleGridLayout
|
||||
topper={<ArticleTitle>{page.title}</ArticleTitle>}
|
||||
intro={
|
||||
<>
|
||||
{page.introPlainText && (
|
||||
<Lead data-testid="lead" data-search="lead">
|
||||
{page.introPlainText}
|
||||
</Lead>
|
||||
)}
|
||||
</>
|
||||
}
|
||||
toc={
|
||||
<>
|
||||
{miniTocItems && miniTocItems.length > 1 && (
|
||||
<MiniTocs pageTitle={page.title} miniTocItems={miniTocItems} />
|
||||
)}
|
||||
</>
|
||||
}
|
||||
>
|
||||
<div key={`restCategory-introContent`}>
|
||||
<div dangerouslySetInnerHTML={{ __html: introContent }} />
|
||||
</div>
|
||||
<div id="article-contents">
|
||||
<MarkdownContent>
|
||||
{subcategories.map((subcategory, index) => (
|
||||
<div key={`restCategory-${index}`}>
|
||||
<div dangerouslySetInnerHTML={{ __html: descriptions[subcategory] }} />
|
||||
{restOperations[subcategory].map((operation, index) => (
|
||||
<RestOperation
|
||||
key={`restOperation-${index}`}
|
||||
operation={operation}
|
||||
index={index}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
))}
|
||||
</MarkdownContent>
|
||||
</div>
|
||||
</ArticleGridLayout>
|
||||
</div>
|
||||
</DefaultLayout>
|
||||
)
|
||||
}
|
||||
@@ -69,3 +69,7 @@ export interface ChildParameter {
|
||||
description: string
|
||||
type: string
|
||||
}
|
||||
|
||||
export interface RestCategoryOperationsT {
|
||||
[subcategory: string]: Operation[]
|
||||
}
|
||||
|
||||
52
components/ui/MiniTocs/MiniTocs.tsx
Normal file
52
components/ui/MiniTocs/MiniTocs.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
import cx from 'classnames'
|
||||
import { ActionList, Heading } from '@primer/react'
|
||||
|
||||
import { MiniTocItem } from 'components/context/ArticleContext'
|
||||
import { Link } from 'components/Link'
|
||||
import { useTranslation } from 'components/hooks/useTranslation'
|
||||
|
||||
export type MiniTocsPropsT = {
|
||||
pageTitle: string
|
||||
miniTocItems: MiniTocItem[]
|
||||
}
|
||||
|
||||
const renderTocItem = (item: MiniTocItem) => {
|
||||
return (
|
||||
<ActionList.Item
|
||||
as="li"
|
||||
key={item.contents}
|
||||
className={item.platform}
|
||||
sx={{ listStyle: 'none', padding: '2px' }}
|
||||
>
|
||||
<div className={cx('lh-condensed d-block width-full')}>
|
||||
<div dangerouslySetInnerHTML={{ __html: item.contents }} />
|
||||
{item.items && item.items.length > 0 ? (
|
||||
<ul className="ml-3">{item.items.map(renderTocItem)}</ul>
|
||||
) : null}
|
||||
</div>
|
||||
</ActionList.Item>
|
||||
)
|
||||
}
|
||||
|
||||
export function MiniTocs({ pageTitle, miniTocItems }: MiniTocsPropsT) {
|
||||
const { t } = useTranslation('pages')
|
||||
|
||||
return (
|
||||
<>
|
||||
<Heading as="h2" id="in-this-article" className="mb-1" sx={{ fontSize: 1 }}>
|
||||
<Link href="#in-this-article">{t('miniToc')}</Link>
|
||||
</Heading>
|
||||
|
||||
<ActionList
|
||||
key={pageTitle}
|
||||
items={miniTocItems.map((items, i) => {
|
||||
return {
|
||||
key: pageTitle + i,
|
||||
text: pageTitle,
|
||||
renderItem: () => <ul>{renderTocItem(items)}</ul>,
|
||||
}
|
||||
})}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
1
components/ui/MiniTocs/index.ts
Normal file
1
components/ui/MiniTocs/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export { MiniTocs } from './MiniTocs'
|
||||
@@ -45,7 +45,6 @@ topics:
|
||||
|
||||
{% data reusables.enterprise-accounts.access-enterprise %}
|
||||
{% data reusables.enterprise-accounts.policies-tab %}
|
||||
{% data reusables.enterprise-accounts.settings-tab %}
|
||||
{% data reusables.enterprise-accounts.options-tab %}
|
||||
4. Under "Dormancy threshold", use the drop-down menu, and click the desired dormancy threshold.
|
||||

|
||||
|
||||
@@ -24,7 +24,7 @@ Organization owners can control which users in your organization can create and
|
||||
To use codespaces in your organization, you must do the following:
|
||||
|
||||
- Ensure that users have [at least write access](/organizations/managing-access-to-your-organizations-repositories/repository-permission-levels-for-an-organization) to the repositories where they want to use a codespace.
|
||||
- [Enable {% data variables.product.prodname_codespaces %} for users in your organization](#enable-codespaces-for-users-in-your-organization). You can choose allow {% data variables.product.prodname_codespaces %} for selected users or only for specific users.
|
||||
- [Enable {% data variables.product.prodname_codespaces %} for users in your organization](#enable-codespaces-for-users-in-your-organization). You can choose to allow {% data variables.product.prodname_codespaces %} for selected users or only for specific users.
|
||||
- [Set a spending limit](/billing/managing-billing-for-github-codespaces/managing-spending-limits-for-codespaces)
|
||||
- Ensure that your organization does not have an IP address allow list enabled. For more information, see "[Managing allowed IP addresses for your organization](/organizations/keeping-your-organization-secure/managing-allowed-ip-addresses-for-your-organization)."
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
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.'
|
||||
intro: 'You can view{% ifversion ghec or ghes or ghae %} and export{% endif %} a list of people with access to a repository within an organization.'
|
||||
redirect_from:
|
||||
- /articles/viewing-people-with-access-to-your-repository
|
||||
- /github/setting-up-and-managing-organizations-and-teams/viewing-people-with-access-to-your-repository
|
||||
@@ -13,9 +13,19 @@ topics:
|
||||
- Organizations
|
||||
- Teams
|
||||
shortTitle: View people with access
|
||||
permissions: Organization owners can view people with access to a repository.
|
||||
---
|
||||
|
||||
Administrators can use this information to help off-board people, gather data for compliance, and other general security checkups.
|
||||
## About the list of people with access to your repository
|
||||
|
||||
You can use this information to help off-board people, gather data for compliance, and other general security checkups.
|
||||
|
||||
{% ifversion fpt %}
|
||||
Organizations that use {% data variables.product.prodname_ghe_cloud %} can also export a CSV list of people who have access to a repository. For more information, see [the {% data variables.product.prodname_ghe_cloud %} documentation](/enterprise-cloud@latest/organizations/managing-access-to-your-organizations-repositories/viewing-people-with-access-to-your-repository).
|
||||
|
||||
{% data reusables.enterprise.link-to-ghec-trial %}
|
||||
{% endif %}
|
||||
|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5974 %}
|
||||

|
||||
{% else %}
|
||||
@@ -30,12 +40,13 @@ You can see a combined overview of teams and people with access to your reposito
|
||||
{% data reusables.repositories.accessing-repository-graphs %}
|
||||
{% data reusables.repositories.accessing-repository-people %}
|
||||
{% endif %}
|
||||
## 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.
|
||||
{% ifversion ghec or ghes or ghae %}
|
||||
## Exporting a list of people with access to your repository
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.accessing-repository-graphs %}
|
||||
{% data reusables.repositories.accessing-repository-people %}
|
||||
4. Click **Export CSV**.
|
||||

|
||||
{% endif %}
|
||||
@@ -126,8 +126,8 @@ Some of the features listed below are limited to organizations using {% data var
|
||||
| Pull (read) *all repositories* in the organization | **X** | | | **X** |
|
||||
| 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** | | | |
|
||||
| [View people with access to an organization repository](/articles/viewing-people-with-access-to-your-repository) | **X** | | | |{% ifversion ghec or ghes or ghae %}
|
||||
| [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** | | | |{% endif %}
|
||||
| Manage the default branch name (see "[Managing the default branch name for repositories in your organization](/organizations/managing-organization-settings/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** | | | |{% ifversion ghec %}
|
||||
| Enable team synchronization (see "[Managing team synchronization for your organization](/organizations/managing-saml-single-sign-on-for-your-organization/managing-team-synchronization-for-your-organization)" for details) | **X** | | | |{% endif %}
|
||||
|
||||
@@ -30,3 +30,34 @@ export function readCompressedJsonFileFallback(xpath) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Wrapper on readCompressedJsonFileFallback that initially only checks
|
||||
// if the file exists but doesn't read the content till you call it.
|
||||
export function readCompressedJsonFileFallbackLazily(xpath) {
|
||||
const cache = new Map()
|
||||
// This will throw if the file isn't accessible at all, e.g. ENOENT
|
||||
// But, the file might have been replaced by one called `SAMENAME.json.br`
|
||||
// because in staging, we ship these files compressed to make the
|
||||
// deployment faster. So, in our file-presence check, we need to
|
||||
// account for that.
|
||||
try {
|
||||
fs.accessSync(xpath)
|
||||
} catch (err) {
|
||||
if (err.code === 'ENOENT') {
|
||||
try {
|
||||
fs.accessSync(xpath + '.br')
|
||||
} catch (err) {
|
||||
if (err.code === 'ENOENT') {
|
||||
throw new Error(`Neither ${xpath} nor ${xpath}.br is accessible`)
|
||||
}
|
||||
throw err
|
||||
}
|
||||
} else {
|
||||
throw err
|
||||
}
|
||||
}
|
||||
return () => {
|
||||
if (!cache.has(xpath)) cache.set(xpath, readCompressedJsonFileFallback(xpath))
|
||||
return cache.get(xpath)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
import slash from 'slash'
|
||||
import statsd from '../lib/statsd.js'
|
||||
@@ -11,7 +10,7 @@ import versionSatisfiesRange from '../lib/version-satisfies-range.js'
|
||||
import isArchivedVersion from '../lib/is-archived-version.js'
|
||||
import { setFastlySurrogateKey, SURROGATE_ENUMS } from './set-fastly-surrogate-key.js'
|
||||
import got from 'got'
|
||||
import { readCompressedJsonFileFallback } from '../lib/read-json-file.js'
|
||||
import { readCompressedJsonFileFallbackLazily } from '../lib/read-json-file.js'
|
||||
import { cacheControlFactory } from './cache-control.js'
|
||||
import { pathLanguagePrefixed, languagePrefixPathRegex } from '../lib/languages.js'
|
||||
|
||||
@@ -25,42 +24,13 @@ function splitByLanguage(uri) {
|
||||
return [language, withoutLanguage]
|
||||
}
|
||||
|
||||
function readJsonFileLazily(xpath) {
|
||||
const cache = new Map()
|
||||
// This will throw if the file isn't accessible at all, e.g. ENOENT
|
||||
// But, the file might have been replaced by one called `SAMENAME.json.br`
|
||||
// because in staging, we ship these files compressed to make the
|
||||
// deployment faster. So, in our file-presence check, we need to
|
||||
// account for that.
|
||||
try {
|
||||
fs.accessSync(xpath)
|
||||
} catch (err) {
|
||||
if (err.code === 'ENOENT') {
|
||||
try {
|
||||
fs.accessSync(xpath + '.br')
|
||||
} catch (err) {
|
||||
if (err.code === 'ENOENT') {
|
||||
throw new Error(`Neither ${xpath} nor ${xpath}.br is accessible`)
|
||||
}
|
||||
throw err
|
||||
}
|
||||
} else {
|
||||
throw err
|
||||
}
|
||||
}
|
||||
return () => {
|
||||
if (!cache.has(xpath)) cache.set(xpath, readCompressedJsonFileFallback(xpath))
|
||||
return cache.get(xpath)
|
||||
}
|
||||
}
|
||||
|
||||
// These files are huge so lazy-load them. But note that the
|
||||
// `readJsonFileLazily()` function will, at import-time, check that
|
||||
// the path does exist.
|
||||
const archivedRedirects = readJsonFileLazily(
|
||||
const archivedRedirects = readCompressedJsonFileFallbackLazily(
|
||||
'./lib/redirects/static/archived-redirects-from-213-to-217.json'
|
||||
)
|
||||
const archivedFrontmatterFallbacks = readJsonFileLazily(
|
||||
const archivedFrontmatterFallbacks = readCompressedJsonFileFallbackLazily(
|
||||
'./lib/redirects/static/archived-frontmatter-fallbacks.json'
|
||||
)
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import liquid from '../../lib/render-content/liquid.js'
|
||||
|
||||
export default async function breadcrumbs(req, res, next) {
|
||||
if (!req.context.page) return next()
|
||||
if (req.context.page.hidden) return next()
|
||||
@@ -9,95 +11,42 @@ export default async function breadcrumbs(req, res, next) {
|
||||
return next()
|
||||
}
|
||||
|
||||
const currentSiteTree =
|
||||
req.context.siteTree[req.context.currentLanguage][req.context.currentVersion]
|
||||
const fallbackSiteTree = req.context.siteTree.en[req.context.currentVersion]
|
||||
|
||||
req.context.breadcrumbs = await getBreadcrumbs(
|
||||
// Array of child pages on the root, i.e., the product level.
|
||||
currentSiteTree.childPages,
|
||||
fallbackSiteTree.childPages,
|
||||
req.context.currentPath.slice(3),
|
||||
req.context.currentLanguage
|
||||
)
|
||||
req.context.breadcrumbs = await getBreadcrumbs(req)
|
||||
|
||||
return next()
|
||||
}
|
||||
|
||||
async function getBreadcrumbs(
|
||||
pageArray,
|
||||
fallbackPageArray,
|
||||
currentPathWithoutLanguage,
|
||||
intendedLanguage
|
||||
) {
|
||||
// Find the page that starts with the requested path
|
||||
let childPage = findPageWithPath(currentPathWithoutLanguage, pageArray)
|
||||
|
||||
// Find the page in the fallback page array (likely the English sub-tree)
|
||||
const fallbackChildPage =
|
||||
findPageWithPath(currentPathWithoutLanguage, fallbackPageArray || []) || childPage
|
||||
|
||||
// No matches, we bail
|
||||
if (!childPage && !fallbackChildPage) {
|
||||
return []
|
||||
async function getBreadcrumbs(req) {
|
||||
const crumbs = []
|
||||
const { currentPath, currentVersion } = req.context
|
||||
const split = currentPath.split('/')
|
||||
while (split.length > 2 && split[split.length - 1] !== currentVersion) {
|
||||
const href = split.join('/')
|
||||
const page = req.context.pages[href]
|
||||
crumbs.push({
|
||||
href,
|
||||
title: await getShortTitle(page, req.context),
|
||||
})
|
||||
split.pop()
|
||||
}
|
||||
crumbs.reverse()
|
||||
|
||||
// Didn't find the intended page, but found the fallback
|
||||
if (!childPage) {
|
||||
childPage = fallbackChildPage
|
||||
}
|
||||
|
||||
const breadcrumb = {
|
||||
documentType: childPage.page.documentType,
|
||||
// give the breadcrumb the intendedLanguage, so nav through breadcrumbs doesn't inadvertantly change the user's selected language
|
||||
href: `/${intendedLanguage}/${childPage.href.slice(4)}`,
|
||||
title: childPage.renderedShortTitle || childPage.renderedFullTitle,
|
||||
}
|
||||
|
||||
// Recursively loop through the childPages and create each breadcrumb, until we reach the
|
||||
// point where the current siteTree page is the same as the requested page. Then stop.
|
||||
if (childPage.childPages && currentPathWithoutLanguage !== childPage.href.slice(3)) {
|
||||
return [
|
||||
breadcrumb,
|
||||
...(await getBreadcrumbs(
|
||||
childPage.childPages,
|
||||
fallbackChildPage.childPages,
|
||||
currentPathWithoutLanguage,
|
||||
intendedLanguage
|
||||
)),
|
||||
]
|
||||
} else {
|
||||
return [breadcrumb]
|
||||
}
|
||||
return crumbs
|
||||
}
|
||||
|
||||
// Finds the page that starts with or equals the requested path in the array of
|
||||
// pages e.g. if the current page is /actions/learn-github-actions/understanding-github-actions,
|
||||
// depending on the pages in the pageArray agrument, would find:
|
||||
//
|
||||
// * /actions
|
||||
// * /actions/learn-github-actions
|
||||
// * /actions/learn-github-actions/understanding-github-actions
|
||||
function findPageWithPath(pageToFind, pageArray) {
|
||||
return pageArray.find((page) => {
|
||||
const pageWithoutLanguage = page.href.slice(3)
|
||||
const numPathSegments = pageWithoutLanguage.split('/').length
|
||||
const pageToFindNumPathSegments = pageToFind.split('/').length
|
||||
|
||||
if (pageToFindNumPathSegments > numPathSegments) {
|
||||
// if the current page to find has more path segments, add a trailing
|
||||
// slash to the page comparison to avoid an overlap like:
|
||||
//
|
||||
// * /github-cli/github-cli/about-github-cli with /github
|
||||
return pageToFind.startsWith(`${pageWithoutLanguage}/`)
|
||||
} else if (pageToFindNumPathSegments === numPathSegments) {
|
||||
// if the current page has the same number of path segments, only match
|
||||
// if the paths are the same to avoid an overlap like:
|
||||
//
|
||||
// * /get-started/using-github with /get-started/using-git
|
||||
return pageToFind === pageWithoutLanguage
|
||||
} else {
|
||||
return false
|
||||
async function getShortTitle(page, context) {
|
||||
if (page.rawShortTitle) {
|
||||
if (page.rawShortTitle.includes('{')) {
|
||||
// Can't easily cache this because the `page` is reused for multiple
|
||||
// permalinks. We could do what the `Page.render()` method does which
|
||||
// specifically caches based on the `context.currentPath` but at
|
||||
// this point it's probably not worth it.
|
||||
return await liquid.parseAndRender(page.rawShortTitle, context)
|
||||
}
|
||||
})
|
||||
return page.shortTitle
|
||||
}
|
||||
if (page.rawTitle.includes('{')) {
|
||||
return await liquid.parseAndRender(page.rawTitle, context)
|
||||
}
|
||||
return page.title
|
||||
}
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
import { readCompressedJsonFileFallback } from '../../lib/read-json-file.js'
|
||||
import { readCompressedJsonFileFallbackLazily } from '../../lib/read-json-file.js'
|
||||
import { allVersions } from '../../lib/all-versions.js'
|
||||
const previews = readCompressedJsonFileFallback('./lib/graphql/static/previews.json')
|
||||
const upcomingChanges = readCompressedJsonFileFallback('./lib/graphql/static/upcoming-changes.json')
|
||||
const changelog = readCompressedJsonFileFallback('./lib/graphql/static/changelog.json')
|
||||
const prerenderedObjects = readCompressedJsonFileFallback(
|
||||
const previews = readCompressedJsonFileFallbackLazily('./lib/graphql/static/previews.json')
|
||||
const upcomingChanges = readCompressedJsonFileFallbackLazily(
|
||||
'./lib/graphql/static/upcoming-changes.json'
|
||||
)
|
||||
const changelog = readCompressedJsonFileFallbackLazily('./lib/graphql/static/changelog.json')
|
||||
const prerenderedObjects = readCompressedJsonFileFallbackLazily(
|
||||
'./lib/graphql/static/prerendered-objects.json'
|
||||
)
|
||||
const prerenderedInputObjects = readCompressedJsonFileFallback(
|
||||
const prerenderedInputObjects = readCompressedJsonFileFallbackLazily(
|
||||
'./lib/graphql/static/prerendered-input-objects.json'
|
||||
)
|
||||
const prerenderedMutations = readCompressedJsonFileFallback(
|
||||
const prerenderedMutations = readCompressedJsonFileFallbackLazily(
|
||||
'./lib/graphql/static/prerendered-mutations.json'
|
||||
)
|
||||
|
||||
@@ -32,16 +34,16 @@ export default function graphqlContext(req, res, next) {
|
||||
const graphqlVersion = currentVersionObj.miscVersionName
|
||||
|
||||
req.context.graphql = {
|
||||
schemaForCurrentVersion: readCompressedJsonFileFallback(
|
||||
schemaForCurrentVersion: readCompressedJsonFileFallbackLazily(
|
||||
`lib/graphql/static/schema-${graphqlVersion}.json`
|
||||
),
|
||||
previewsForCurrentVersion: previews[graphqlVersion],
|
||||
upcomingChangesForCurrentVersion: upcomingChanges[graphqlVersion],
|
||||
prerenderedObjectsForCurrentVersion: prerenderedObjects[graphqlVersion],
|
||||
prerenderedInputObjectsForCurrentVersion: prerenderedInputObjects[graphqlVersion],
|
||||
prerenderedMutationsForCurrentVersion: prerenderedMutations[graphqlVersion],
|
||||
)(),
|
||||
previewsForCurrentVersion: previews()[graphqlVersion],
|
||||
upcomingChangesForCurrentVersion: upcomingChanges()[graphqlVersion],
|
||||
prerenderedObjectsForCurrentVersion: prerenderedObjects()[graphqlVersion],
|
||||
prerenderedInputObjectsForCurrentVersion: prerenderedInputObjects()[graphqlVersion],
|
||||
prerenderedMutationsForCurrentVersion: prerenderedMutations()[graphqlVersion],
|
||||
explorerUrl,
|
||||
changelog,
|
||||
changelog: changelog(),
|
||||
}
|
||||
|
||||
return next()
|
||||
|
||||
274
package-lock.json
generated
274
package-lock.json
generated
@@ -147,7 +147,6 @@
|
||||
"make-promises-safe": "^5.1.0",
|
||||
"minimatch": "^5.0.0",
|
||||
"mkdirp": "^1.0.4",
|
||||
"mock-express-response": "^0.3.0",
|
||||
"mockdate": "^3.0.5",
|
||||
"nock": "^13.2.2",
|
||||
"nodemon": "^2.0.15",
|
||||
@@ -14894,149 +14893,6 @@
|
||||
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/mock-express-request": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/mock-express-request/-/mock-express-request-0.2.2.tgz",
|
||||
"integrity": "sha512-EymHjY1k1jWIsaVaCsPdFterWO18gcNwQMb99OryhSBtIA33SZJujOLeOe03Rf2DTV997xLPyl2I098WCFm/mA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"accepts": "^1.3.4",
|
||||
"fresh": "^0.5.2",
|
||||
"lodash": "^4.17.4",
|
||||
"mock-req": "^0.2.0",
|
||||
"parseurl": "^1.3.2",
|
||||
"range-parser": "^1.2.0",
|
||||
"type-is": "^1.6.15"
|
||||
}
|
||||
},
|
||||
"node_modules/mock-express-response": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/mock-express-response/-/mock-express-response-0.3.0.tgz",
|
||||
"integrity": "sha512-1rw9Ccd4+7eI8uaM5AX3NCP63o5g5DFLtpusJziPO1b42WTZxgVaN95LsWBJSrpslp6Eg2Qc2xM27wxC7GMeVg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"content-disposition": "^0.5.2",
|
||||
"content-type": "^1.0.4",
|
||||
"cookie": "^0.3.1",
|
||||
"cookie-signature": "^1.0.6",
|
||||
"depd": "^1.1.1",
|
||||
"escape-html": "^1.0.3",
|
||||
"etag": "^1.8.1",
|
||||
"mock-express-request": "^0.2.2",
|
||||
"mock-res": "^0.5.0",
|
||||
"on-finished": "^2.3.0",
|
||||
"proxy-addr": "^2.0.2",
|
||||
"qs": "^6.5.1",
|
||||
"send": "^0.16.1",
|
||||
"utils-merge": "^1.0.1",
|
||||
"vary": "^1.1.2"
|
||||
}
|
||||
},
|
||||
"node_modules/mock-express-response/node_modules/cookie": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
|
||||
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mock-express-response/node_modules/debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/mock-express-response/node_modules/http-errors": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
|
||||
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"depd": "~1.1.2",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.1.0",
|
||||
"statuses": ">= 1.4.0 < 2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mock-express-response/node_modules/inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/mock-express-response/node_modules/mime": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
|
||||
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"mime": "cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/mock-express-response/node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/mock-express-response/node_modules/send": {
|
||||
"version": "0.16.2",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
|
||||
"integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"destroy": "~1.0.4",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "~1.6.2",
|
||||
"mime": "1.4.1",
|
||||
"ms": "2.0.0",
|
||||
"on-finished": "~2.3.0",
|
||||
"range-parser": "~1.2.0",
|
||||
"statuses": "~1.4.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/mock-express-response/node_modules/setprototypeof": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
|
||||
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/mock-express-response/node_modules/statuses": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
|
||||
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mock-req": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/mock-req/-/mock-req-0.2.0.tgz",
|
||||
"integrity": "sha1-dJRGgE0sAGFpNC7nvmu6HP/VNMI=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/mock-res": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/mock-res/-/mock-res-0.5.0.tgz",
|
||||
"integrity": "sha1-mDaL6wnfdT9k9m2U5VNql7NqJDA=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/mockdate": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/mockdate/-/mockdate-3.0.5.tgz",
|
||||
@@ -34004,136 +33860,6 @@
|
||||
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
|
||||
"optional": true
|
||||
},
|
||||
"mock-express-request": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/mock-express-request/-/mock-express-request-0.2.2.tgz",
|
||||
"integrity": "sha512-EymHjY1k1jWIsaVaCsPdFterWO18gcNwQMb99OryhSBtIA33SZJujOLeOe03Rf2DTV997xLPyl2I098WCFm/mA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"accepts": "^1.3.4",
|
||||
"fresh": "^0.5.2",
|
||||
"lodash": "^4.17.4",
|
||||
"mock-req": "^0.2.0",
|
||||
"parseurl": "^1.3.2",
|
||||
"range-parser": "^1.2.0",
|
||||
"type-is": "^1.6.15"
|
||||
}
|
||||
},
|
||||
"mock-express-response": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/mock-express-response/-/mock-express-response-0.3.0.tgz",
|
||||
"integrity": "sha512-1rw9Ccd4+7eI8uaM5AX3NCP63o5g5DFLtpusJziPO1b42WTZxgVaN95LsWBJSrpslp6Eg2Qc2xM27wxC7GMeVg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"content-disposition": "^0.5.2",
|
||||
"content-type": "^1.0.4",
|
||||
"cookie": "^0.3.1",
|
||||
"cookie-signature": "^1.0.6",
|
||||
"depd": "^1.1.1",
|
||||
"escape-html": "^1.0.3",
|
||||
"etag": "^1.8.1",
|
||||
"mock-express-request": "^0.2.2",
|
||||
"mock-res": "^0.5.0",
|
||||
"on-finished": "^2.3.0",
|
||||
"proxy-addr": "^2.0.2",
|
||||
"qs": "^6.5.1",
|
||||
"send": "^0.16.1",
|
||||
"utils-merge": "^1.0.1",
|
||||
"vary": "^1.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"cookie": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
|
||||
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
|
||||
"dev": true
|
||||
},
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
|
||||
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"depd": "~1.1.2",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.1.0",
|
||||
"statuses": ">= 1.4.0 < 2"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
||||
"dev": true
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
|
||||
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
|
||||
"dev": true
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
|
||||
"dev": true
|
||||
},
|
||||
"send": {
|
||||
"version": "0.16.2",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
|
||||
"integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"destroy": "~1.0.4",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "~1.6.2",
|
||||
"mime": "1.4.1",
|
||||
"ms": "2.0.0",
|
||||
"on-finished": "~2.3.0",
|
||||
"range-parser": "~1.2.0",
|
||||
"statuses": "~1.4.0"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
|
||||
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
|
||||
"dev": true
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
|
||||
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"mock-req": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/mock-req/-/mock-req-0.2.0.tgz",
|
||||
"integrity": "sha1-dJRGgE0sAGFpNC7nvmu6HP/VNMI=",
|
||||
"dev": true
|
||||
},
|
||||
"mock-res": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/mock-res/-/mock-res-0.5.0.tgz",
|
||||
"integrity": "sha1-mDaL6wnfdT9k9m2U5VNql7NqJDA=",
|
||||
"dev": true
|
||||
},
|
||||
"mockdate": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/mockdate/-/mockdate-3.0.5.tgz",
|
||||
|
||||
@@ -149,7 +149,6 @@
|
||||
"make-promises-safe": "^5.1.0",
|
||||
"minimatch": "^5.0.0",
|
||||
"mkdirp": "^1.0.4",
|
||||
"mock-express-response": "^0.3.0",
|
||||
"mockdate": "^3.0.5",
|
||||
"nock": "^13.2.2",
|
||||
"nodemon": "^2.0.15",
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import { GetServerSideProps } from 'next'
|
||||
import { Fragment } from 'react'
|
||||
import { useRouter } from 'next/router'
|
||||
import { MainContextT, MainContext, getMainContext } from 'components/context/MainContext'
|
||||
import {
|
||||
getArticleContextFromRequest,
|
||||
ArticleContextT,
|
||||
ArticleContext,
|
||||
} from 'components/context/ArticleContext'
|
||||
import { ArticlePage } from 'components/article/ArticlePage'
|
||||
import { Link } from 'components/Link'
|
||||
import { getEnabledForApps } from 'lib/rest/index.js'
|
||||
import { ArticlePage } from 'components/article/ArticlePage'
|
||||
import {
|
||||
ArticleContext,
|
||||
ArticleContextT,
|
||||
getArticleContextFromRequest,
|
||||
} from 'components/context/ArticleContext'
|
||||
|
||||
type OperationT = {
|
||||
slug: string
|
||||
@@ -36,7 +37,7 @@ export default function Category({ mainContext, enabledForApps, articleContext }
|
||||
const { locale } = useRouter()
|
||||
|
||||
const content = Object.entries(enabledForApps).map(([category, operations]) => (
|
||||
<div key={`enabledAppCategory-${category}`}>
|
||||
<Fragment key={category}>
|
||||
{operations.length > 0 && (
|
||||
<h3 id={category}>
|
||||
<Link href={`/${locale}/rest/reference/${category}`}>{category}</Link>
|
||||
@@ -53,13 +54,13 @@ export default function Category({ mainContext, enabledForApps, articleContext }
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
</Fragment>
|
||||
))
|
||||
|
||||
return (
|
||||
<MainContext.Provider value={mainContext}>
|
||||
<ArticleContext.Provider value={articleContext}>
|
||||
<ArticlePage structuredContent={content} />
|
||||
<ArticlePage>{content}</ArticlePage>
|
||||
</ArticleContext.Provider>
|
||||
</MainContext.Provider>
|
||||
)
|
||||
|
||||
@@ -1,19 +1,9 @@
|
||||
import { GetServerSideProps } from 'next'
|
||||
import { MainContextT, MainContext, getMainContext } from 'components/context/MainContext'
|
||||
import getRest, { getRestOperationData } from 'lib/rest/index.js'
|
||||
import { RestOperation } from 'components/rest/RestOperation'
|
||||
import { Operation } from 'components/rest/types'
|
||||
import {
|
||||
getArticleContextFromRequest,
|
||||
ArticleContextT,
|
||||
ArticleContext,
|
||||
MiniTocItem,
|
||||
} from 'components/context/ArticleContext'
|
||||
import { ArticlePage } from 'components/article/ArticlePage'
|
||||
|
||||
type RestCategoryOperationsT = {
|
||||
[subcategory: string]: Operation[]
|
||||
}
|
||||
import { RestCategoryOperationsT } from 'components/rest/types'
|
||||
import { MiniTocItem } from 'components/context/ArticleContext'
|
||||
import { RestReferencePage } from 'components/rest/RestReferencePage'
|
||||
|
||||
type RestOperationsT = {
|
||||
[version: string]: {
|
||||
@@ -41,7 +31,7 @@ type Props = {
|
||||
mainContext: MainContextT
|
||||
restOperations: RestCategoryOperationsT
|
||||
descriptions: { [subcategory: string]: string }
|
||||
articleContext: ArticleContextT
|
||||
miniTocItems: MiniTocItem[]
|
||||
introContent: string
|
||||
}
|
||||
|
||||
@@ -50,39 +40,19 @@ let restOperationData: RestDataT | null = null
|
||||
|
||||
export default function Category({
|
||||
mainContext,
|
||||
articleContext,
|
||||
restOperations,
|
||||
descriptions,
|
||||
miniTocItems,
|
||||
introContent,
|
||||
}: Props) {
|
||||
const subcategories = Object.keys(restOperations)
|
||||
|
||||
const operations = subcategories.map((subcategory, index: number) => {
|
||||
const operations = restOperations[subcategory].map((operation: Operation, index: number) => (
|
||||
<RestOperation key={`restOperation-${index}`} operation={operation} index={index} />
|
||||
))
|
||||
return (
|
||||
<div key={`restCategory-${index}`}>
|
||||
<div dangerouslySetInnerHTML={{ __html: descriptions[subcategory] }} />
|
||||
{operations}
|
||||
</div>
|
||||
)
|
||||
})
|
||||
|
||||
// This is Markdown content at the path
|
||||
// data/reusables/rest-reference/<category>/<subcategory>
|
||||
// that doesn't map directory to a group of operations.
|
||||
operations.unshift(
|
||||
<div key={`restCategory-introContent`}>
|
||||
<div dangerouslySetInnerHTML={{ __html: introContent }} />
|
||||
</div>
|
||||
)
|
||||
|
||||
return (
|
||||
<MainContext.Provider value={mainContext}>
|
||||
<ArticleContext.Provider value={articleContext}>
|
||||
<ArticlePage structuredContent={operations} />
|
||||
</ArticleContext.Provider>
|
||||
<RestReferencePage
|
||||
descriptions={descriptions}
|
||||
introContent={introContent}
|
||||
restOperations={restOperations}
|
||||
miniTocItems={miniTocItems}
|
||||
/>
|
||||
</MainContext.Provider>
|
||||
)
|
||||
}
|
||||
@@ -130,20 +100,12 @@ export const getServerSideProps: GetServerSideProps<Props> = async (context) =>
|
||||
)) as CategoryDataT
|
||||
}
|
||||
|
||||
// Because the Markdown page in the content/rest/reference directory
|
||||
// is only metadata, the miniTocItems and renderedPage properties
|
||||
// are undefined. We need to populate those properties with the static
|
||||
// data read from the decorated schema files.
|
||||
const articleContext = getArticleContextFromRequest(req)
|
||||
articleContext.miniTocItems =
|
||||
restOperationData[currentLanguage][currentVersion][category].miniTocItems
|
||||
|
||||
return {
|
||||
props: {
|
||||
restOperations,
|
||||
mainContext: getMainContext(req, res),
|
||||
descriptions: restOperationData[currentLanguage][currentVersion][category].descriptions,
|
||||
articleContext: articleContext,
|
||||
miniTocItems: restOperationData[currentLanguage][currentVersion][category].miniTocItems,
|
||||
introContent: restOperationData[currentLanguage][currentVersion][category].introContent,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -120,7 +120,6 @@ describe('breadcrumbs', () => {
|
||||
const breadcrumbs = await getJSON('/en/github?json=breadcrumbs')
|
||||
const expected = [
|
||||
{
|
||||
documentType: 'product',
|
||||
href: '/en/github',
|
||||
title: 'GitHub',
|
||||
},
|
||||
@@ -134,17 +133,14 @@ describe('breadcrumbs', () => {
|
||||
)
|
||||
const expected = [
|
||||
{
|
||||
documentType: 'product',
|
||||
href: '/en/issues',
|
||||
title: 'GitHub Issues',
|
||||
},
|
||||
{
|
||||
documentType: 'category',
|
||||
href: '/en/issues/tracking-your-work-with-issues',
|
||||
title: 'Issues',
|
||||
},
|
||||
{
|
||||
documentType: 'article',
|
||||
href: '/en/issues/tracking-your-work-with-issues/quickstart',
|
||||
title: 'Quickstart for GitHub Issues',
|
||||
},
|
||||
@@ -158,17 +154,14 @@ describe('breadcrumbs', () => {
|
||||
)
|
||||
const expected = [
|
||||
{
|
||||
documentType: 'product',
|
||||
href: '/en/account-and-profile',
|
||||
title: 'Account and profile',
|
||||
},
|
||||
{
|
||||
documentType: 'category',
|
||||
href: '/en/account-and-profile/setting-up-and-managing-your-github-user-account',
|
||||
title: 'User accounts',
|
||||
},
|
||||
{
|
||||
documentType: 'mapTopic',
|
||||
href: '/en/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings',
|
||||
title: 'User account settings',
|
||||
},
|
||||
@@ -182,22 +175,18 @@ describe('breadcrumbs', () => {
|
||||
)
|
||||
const expected = [
|
||||
{
|
||||
documentType: 'product',
|
||||
href: '/en/account-and-profile',
|
||||
title: 'Account and profile',
|
||||
},
|
||||
{
|
||||
documentType: 'category',
|
||||
href: '/en/account-and-profile/setting-up-and-managing-your-github-user-account',
|
||||
title: 'User accounts',
|
||||
},
|
||||
{
|
||||
documentType: 'mapTopic',
|
||||
href: '/en/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings',
|
||||
title: 'User account settings',
|
||||
},
|
||||
{
|
||||
documentType: 'article',
|
||||
href: '/en/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/about-your-personal-dashboard',
|
||||
title: 'Your personal dashboard',
|
||||
},
|
||||
@@ -211,17 +200,14 @@ describe('breadcrumbs', () => {
|
||||
)
|
||||
const expected = [
|
||||
{
|
||||
documentType: 'product',
|
||||
href: '/en/github',
|
||||
title: 'GitHub',
|
||||
},
|
||||
{
|
||||
documentType: 'category',
|
||||
href: '/en/github/site-policy',
|
||||
title: 'Site policy',
|
||||
},
|
||||
{
|
||||
documentType: 'article',
|
||||
href: '/en/github/site-policy/github-privacy-statement',
|
||||
title: 'GitHub Privacy Statement',
|
||||
},
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
import languages from '../../lib/languages.js'
|
||||
import robotsParser from 'robots-parser'
|
||||
import robotsMiddleware from '../../middleware/robots.js'
|
||||
import { get } from '../helpers/supertest.js'
|
||||
import MockExpressResponse from 'mock-express-response'
|
||||
import { jest } from '@jest/globals'
|
||||
|
||||
describe('robots.txt', () => {
|
||||
@@ -36,17 +34,12 @@ describe('robots.txt', () => {
|
||||
})
|
||||
|
||||
it('disallows indexing of azurecontainer.io domains', async () => {
|
||||
const req = {
|
||||
hostname: 'docs-internal-preview-12345-asdfz.azurecontainer.io',
|
||||
path: '/robots.txt',
|
||||
}
|
||||
const res = new MockExpressResponse()
|
||||
const next = () => {
|
||||
/* no op */
|
||||
}
|
||||
|
||||
await robotsMiddleware(req, res, next)
|
||||
expect(res._getString()).toEqual('User-agent: *\nDisallow: /')
|
||||
const res = await get('/robots.txt', {
|
||||
headers: {
|
||||
host: 'docs-internal-preview-12345-asdfz.azurecontainer.io',
|
||||
},
|
||||
})
|
||||
expect(res.text).toEqual('User-agent: *\nDisallow: /')
|
||||
})
|
||||
|
||||
it('does not have duplicate lines', () => {
|
||||
|
||||
@@ -19,6 +19,8 @@ shortTitle: Contribuciones faltantes
|
||||
|
||||
La gráfica de contribuciones en tu perfil es un registro de las contribuciones que has hecho en los repositorios {% ifversion ghae %}que le pertenecen{% else %}de{% endif %} {% data variables.product.product_location %}. Las contribuciones son registros horarios de acuerdo a la zona horaria universal coordinada (UTC) en lugar de tu zona horaria local. Las contribuciones solo se cuentan si cumplen con determinados criterios. En algunos casos, necesitamos reconstruir tu gráfico para que aparezcan las contribuciones.
|
||||
|
||||
If you are part of an organization that uses SAML single sign-on (SSO), you won’t be able to see contribution activity from the organization on your profile if you do not have an active SSO session. People viewing your profile from outside your organization will see anonymized contribution activity of your contribution activity for your organization.
|
||||
|
||||
## Contribuciones que se cuentan
|
||||
|
||||
### Propuestas, solicitudes de cambios y debates
|
||||
|
||||
@@ -78,6 +78,12 @@ Puedes administrar el servicio de ejecutor en la aplicación de **Servicios** de
|
||||
```
|
||||
{% endmac %}
|
||||
|
||||
The command takes an optional `user` argument to install the service as a different user.
|
||||
|
||||
```shell
|
||||
./svc.sh install --user <em>USERNAME</em>
|
||||
```
|
||||
|
||||
## Iniciar el servicio
|
||||
|
||||
Inicia el servicio con el siguiente comando:
|
||||
|
||||
@@ -41,7 +41,9 @@ Cuando habilitas {% data variables.product.prodname_github_connect %}, configura
|
||||
To use {% data variables.product.prodname_github_connect %}, you must have an organization or enterprise account on {% data variables.product.prodname_dotcom_the_website %} that uses {% data variables.product.prodname_ghe_cloud %}. You may already have {% data variables.product.prodname_ghe_cloud %} included in your plan. {% data reusables.enterprise.link-to-ghec-trial %}
|
||||
|
||||
{% ifversion ghes %}
|
||||
To configure a connection, your proxy configuration must allow connectivity to `github.com`, `api.github.com`, and `uploads.github.com`. Para obtener más información, consulta "[Configuring an outbound web proxy server](/enterprise/{{ currentVersion }}/admin/guides/installation/configuring-an-outbound-web-proxy-server)."
|
||||
If your organization or enterprise account on {% data variables.product.prodname_dotcom_the_website %} uses IP allow lists, you must add the IP address or network for {% data variables.product.product_location %} to your IP allow list on {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[Managing allowed IP addresses for your organization](/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization)" and "[Enforcing policies for security settings in your enterprise](/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-allowed-ip-addresses-for-organizations-in-your-enterprise)" in the {% data variables.product.prodname_ghe_cloud %} documentation.
|
||||
|
||||
To configure a connection, your proxy configuration must allow connectivity to `github.com`, `api.github.com`, and `uploads.github.com`. For more information, see "[Configuring an outbound web proxy server](/enterprise/{{ currentVersion }}/admin/guides/installation/configuring-an-outbound-web-proxy-server)."
|
||||
{% endif %}
|
||||
|
||||
## Habilitar {% data variables.product.prodname_github_connect %}
|
||||
@@ -69,7 +71,7 @@ Si estás conectando {% data variables.product.product_location %} a una organiz
|
||||
|
||||
Los propietarios de empresas pueden inhabilitar {% data variables.product.prodname_github_connect %}.
|
||||
|
||||
Cuando te desconectas de {% data variables.product.prodname_ghe_cloud %}, se elimina la {% data variables.product.prodname_github_connect %} {% data variables.product.prodname_github_app %} de tu cuenta de empresa u organización, y las credenciales almacenadas en {% data variables.product.product_location %} se eliminan.
|
||||
When you disconnect from {% data variables.product.prodname_ghe_cloud %}, the {% data variables.product.prodname_github_connect %} {% data variables.product.prodname_github_app %} is deleted from your enterprise account or organization and credentials stored on {% data variables.product.product_location %} are deleted.
|
||||
|
||||
{% data reusables.enterprise-accounts.access-enterprise %}
|
||||
{% data reusables.enterprise-accounts.github-connect-tab %}
|
||||
|
||||
@@ -33,8 +33,6 @@ redirect_from:
|
||||
|
||||
{% data reusables.saml.about-saml-access-enterprise-account %}Para obtener más información, consulta la sección "[Visualizar y administrar el acceso de SAML de un usuario a tu cuenta empresarial](/admin/user-management/managing-users-in-your-enterprise/viewing-and-managing-a-users-saml-access-to-your-enterprise)".
|
||||
|
||||
{% data reusables.saml.cannot-update-existing-saml-settings %}
|
||||
|
||||
{% data reusables.saml.saml-disabled-linked-identities-removed %}
|
||||
|
||||
{% data reusables.scim.enterprise-account-scim %}
|
||||
|
||||
@@ -25,7 +25,11 @@ Con {% data variables.product.prodname_emus %}, tu empresa utiliza el SSO de SAM
|
||||
|
||||
Después de que configures el SSO de SAML, te recomendamos que almacenes tus códigos de recuperación para que puedas recuperar el acceso a tu empresa en caso de que no esté disponible tu proveedor de identidad.
|
||||
|
||||
{% data reusables.saml.cannot-update-existing-saml-settings %}
|
||||
{% note %}
|
||||
|
||||
**Note:** When SAML SSO is enabled, the only setting you can update on {% data variables.product.prodname_dotcom %} for your existing SAML configuration is the SAML certificate. If you need to update the Sign on URL or Issuer, you must first disable SAML SSO and then reconfigure SAML SSO with the new settings.
|
||||
|
||||
{% endnote %}
|
||||
|
||||
## Configurar el inicio de sesión único de SAML para {% data variables.product.prodname_emus %}
|
||||
|
||||
|
||||
@@ -76,6 +76,8 @@ Para configurar el aprovisionamiento, el usuario de configuración con el nombre
|
||||
|
||||
Después de haber configurado el SSO de SAML y el aprovisionamiento, podrás aprovisionar usuarios nuevos en {% data variables.product.prodname_dotcom_the_website %} asignando a los usuarios a la aplicación de {% data variables.product.prodname_emu_idp_application %}.
|
||||
|
||||
{% data reusables.scim.emu-scim-rate-limit %}
|
||||
|
||||
You can also automatically manage organization membership by assigning groups to the application and adding them to the "Push Groups" tab in Okta. When the group is provisioned successfully, it will be available to connect to teams in the enterprise's organizations. Para obtener más información sobre cómo administrar los equipos, consulta la sección "[Administrar las membrecías de los quipos con grupos de proveedor de identidad](/github/setting-up-and-managing-your-enterprise/managing-your-enterprise-users-with-your-identity-provider/managing-team-memberships-with-identity-provider-groups)".
|
||||
|
||||
Cuando asignas usuarios, puedes utilizar el atributo de "Roles" en la aplicación de {% data variables.product.prodname_emu_idp_application %} para configurar el rol de un usuario en tu empresa en {% data variables.product.product_name %}. Para obtener más información sobre los roles, consulta la sección "[Roles en una empresa](/github/setting-up-and-managing-your-enterprise/managing-users-in-your-enterprise/roles-in-an-enterprise)".
|
||||
|
||||
@@ -51,6 +51,8 @@ Para configurar el aprovisionamiento de tu {% data variables.product.prodname_em
|
||||
|
||||
Después de crear tu token de acceso personal y almacenarlo de forma segura, puedes configurar el aprovisionamiento en tu proveedor de identidad.
|
||||
|
||||
{% data reusables.scim.emu-scim-rate-limit %}
|
||||
|
||||
Para configurar a Azure Active Directory para que aprovisione usuarios para tu {% data variables.product.prodname_emu_enterprise %}, consulta el [Tutorial: Configurar a los Usuarios Administrados Empresariales de Github para un aprovisionamiento de usuarios automático](https://docs.microsoft.com/en-us/azure/active-directory/saas-apps/github-enterprise-managed-user-provisioning-tutorial) en la documentación de Azure AD.
|
||||
|
||||
Para configurar Okta para que aprovisione usuarios para tu {% data variables.product.prodname_emu_enterprise %}, consulta la sección "[Configurar el aprovisionamiento de SCIM para los Usuarios Administrados Empresariales con Okta](/github/setting-up-and-managing-your-enterprise/managing-your-enterprise-users-with-your-identity-provider/configuring-scim-provisioning-for-enterprise-managed-users-with-okta)".
|
||||
|
||||
@@ -69,7 +69,7 @@ You can restrict network traffic to your enterprise on {% data variables.product
|
||||
|
||||
{% elsif ghec %}
|
||||
|
||||
Enterprise owners can restrict access to assets owned by organizations in an enterprise by configuring an allow list for specific IP addresses. {% data reusables.identity-and-permissions.ip-allow-lists-example-and-restrictions %}
|
||||
Enterprise owners can restrict access to private assets owned by organizations in an enterprise 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 %}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ Si tu empresa utiliza {% data variables.product.prodname_emus %}, solo se pueden
|
||||
|
||||
{% data reusables.enterprise-accounts.access-enterprise %}
|
||||
{% data reusables.enterprise-accounts.people-tab %}
|
||||
1. En la barra lateral izquierda, haz clic en **Administrators** (Administradores). 
|
||||
{% data reusables.enterprise-accounts.administrators-tab %}
|
||||
1. Sobre la lista de administradores, haz clic en {% ifversion ghec %}**Invitar administrador**{% elsif ghes %}**Agregar propietario**{% endif %}.
|
||||
{% ifversion ghec %}
|
||||

|
||||
@@ -65,10 +65,11 @@ Solo los propietarios de empresa pueden eliminar a otros administradores de empr
|
||||
|
||||
{% data reusables.enterprise-accounts.access-enterprise %}
|
||||
{% data reusables.enterprise-accounts.people-tab %}
|
||||
1. Junto al nombre de usuario de la persona que te gustaría eliminar, haz clic en {% octicon "gear" aria-label="The Settings gear" %}, luego en **Eliminar propietario**{% ifversion ghec %} o **Eliminar gerente de facturación**{% endif %}.
|
||||
{% data reusables.enterprise-accounts.administrators-tab %}
|
||||
1. Next to the username of the person you'd like to remove, click {% octicon "gear" aria-label="The Settings gear" %}, then click {% ifversion ghes %}**Remove owner**{% elsif ghec %}**Convert to member**{% endif %}.
|
||||
{% ifversion ghec %}
|
||||

|
||||
{% elsif ghes %}
|
||||

|
||||
{% endif %}
|
||||
1. Lee la confirmación y luego haz clic en **Eliminar propietario**{% ifversion ghec %} o **Eliminar gerente de facturación**{% endif %}.
|
||||
1. Read the confirmation, then click {% ifversion ghes %}**Remove owner**{% elsif ghec %}**Yes, convert USERNAME to member**{% endif %}.
|
||||
|
||||
@@ -52,6 +52,13 @@ Si bajas tu organización de nivel desde {% data variables.product.prodname_team
|
||||
|
||||
Si bajas a tu organización de nivel desde {% data variables.product.prodname_ghe_cloud %} a {% data variables.product.prodname_team %} o {% data variables.product.prodname_free_team %}, la cuenta perderá acceso a los controles avanzados de seguridad, cumplimiento y despliegue. {% data reusables.gated-features.more-info %}
|
||||
|
||||
|
||||
{% note %}
|
||||
|
||||
**Note:** If you're currently trialing {% data variables.product.prodname_ghe_cloud %}, and you don't purchase {% data variables.product.prodname_enterprise %} before the trial ends, your organization will be automatically downgraded to {% data variables.product.prodname_free_team %} or {% data variables.product.prodname_team %}. Para obtener más información, consulta "[Configurar una prueba de {% data variables.product.prodname_ghe_cloud %}](/get-started/signing-up-for-github/setting-up-a-trial-of-github-enterprise-cloud#finishing-your-trial)".
|
||||
|
||||
{% endnote %}
|
||||
|
||||
{% data reusables.organizations.billing-settings %}
|
||||
1. Debajo de "Plan actual", utiliza el menú desplegable **Editar** y haz clic en la opción a la que quieras bajar. 
|
||||
{% data reusables.dotcom_billing.confirm_cancel_org_plan %}
|
||||
|
||||
@@ -16,6 +16,8 @@ shortTitle: Configuración
|
||||
|
||||
Esta guía te muestra cómo tu equipo puede obtener suscriptores de {% data variables.product.prodname_vs %} con licencia y comenzar a utilizar {% data variables.product.prodname_enterprise %}.
|
||||
|
||||
If you prefer video, you can watch [Setting up your {% data variables.product.prodname_enterprise %} licenses with {% data variables.product.prodname_vs %} subscriptions](https://www.youtube.com/watch?v=P_zBgp_BE_I) on Microsoft Visual Studio's YouTube channel.
|
||||
|
||||
## Roles para {% data variables.product.prodname_vss_ghe %}
|
||||
|
||||
Antes de configurar {% data variables.product.prodname_vss_ghe %}, es importante entender los roles para esta oferta combinada.
|
||||
|
||||
@@ -105,7 +105,7 @@ Any valid SARIF 2.1.0 output file can be uploaded, however, {% data variables.pr
|
||||
| `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`. {% ifversion fpt or ghes > 3.1 or ghae or ghec %}
|
||||
| `properties.problem.severity` | **Recommended.** A string that indicates the level of severity of any alerts generated by a non-security query. This, with the `properties.precision` property, determines whether the results are displayed by default on {% data variables.product.prodname_dotcom %} so that the results with the highest `problem.severity`, and highest `precision` are shown first. Can be one of: `error`, `warning`, or `recommendation`.
|
||||
| `properties.security-severity` | **Recommended.** A score that indicates the level of severity, between 0.0 and 10.0, for security queries (`@tags` includes `security`). This, with the `properties.precision` property, determines whether the results are displayed by default on {% data variables.product.prodname_dotcom %} so that the results with the highest `security-severity`, and highest `precision` are shown first. {% data variables.product.prodname_code_scanning_capc %} translates numerical scores as follows: over 9.0 is `critical`, 7.0 to 8.9 is `high`, 4.0 to 6.9 is `medium` and 3.9 or less is `low`. {% endif %}
|
||||
| `properties.security-severity` | **Recommended.** A string representing a score that indicates the level of severity, between 0.0 and 10.0, for security queries (`@tags` includes `security`). This, with the `properties.precision` property, determines whether the results are displayed by default on {% data variables.product.prodname_dotcom %} so that the results with the highest `security-severity`, and highest `precision` are shown first. {% data variables.product.prodname_code_scanning_capc %} translates numerical scores as follows: over 9.0 is `critical`, 7.0 to 8.9 is `high`, 4.0 to 6.9 is `medium` and 3.9 or less is `low`. {% endif %}
|
||||
|
||||
### `result` object
|
||||
|
||||
@@ -114,7 +114,7 @@ Any valid SARIF 2.1.0 output file can be uploaded, however, {% data variables.pr
|
||||
| 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).
|
||||
| `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). The allowed range for this property 0 to 2^63 - 1.
|
||||
| `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.
|
||||
@@ -129,7 +129,7 @@ A location within a programming artifact, such as a file in the repository or a
|
||||
|
||||
| Name | Description |
|
||||
|----|----|
|
||||
| `location.id` | **Optional.** A unique identifier that distinguishes this location from all other locations within a single result object.
|
||||
| `location.id` | **Optional.** A unique identifier that distinguishes this location from all other locations within a single result object. The allowed range for this property 0 to 2^63 - 1.
|
||||
| `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.
|
||||
|
||||
|
||||
@@ -67,7 +67,6 @@ includeGuides:
|
||||
- /code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/listing-dependencies-configured-for-version-updates
|
||||
- /code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-encrypted-secrets-for-dependabot
|
||||
- /code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-pull-requests-for-dependency-updates
|
||||
- /code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/upgrading-from-dependabotcom-to-github-native-dependabot
|
||||
- /code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-alerts-for-vulnerable-dependencies
|
||||
- /code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-dependabot-security-updates
|
||||
- /code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-managing-vulnerable-dependencies
|
||||
|
||||
@@ -7,6 +7,7 @@ redirect_from:
|
||||
- /github/administering-a-repository/about-github-dependabot-version-updates
|
||||
- /github/administering-a-repository/about-dependabot-version-updates
|
||||
- /code-security/supply-chain-security/about-dependabot-version-updates
|
||||
- /code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/upgrading-from-dependabotcom-to-github-native-dependabot
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghec: '*'
|
||||
|
||||
@@ -15,7 +15,6 @@ topics:
|
||||
- Pull requests
|
||||
children:
|
||||
- /about-dependabot-version-updates
|
||||
- /upgrading-from-dependabotcom-to-github-native-dependabot
|
||||
- /enabling-and-disabling-dependabot-version-updates
|
||||
- /listing-dependencies-configured-for-version-updates
|
||||
- /managing-pull-requests-for-dependency-updates
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
---
|
||||
title: Upgrading from Dependabot.com to GitHub-native Dependabot
|
||||
intro: You can upgrade to GitHub-native Dependabot by merging a pull request that will allow your dependencies to continue being updated.
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghec: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Repositories
|
||||
- Dependabot
|
||||
- Version updates
|
||||
- Dependencies
|
||||
redirect_from:
|
||||
- /code-security/supply-chain-security/upgrading-from-dependabotcom-to-github-native-dependabot
|
||||
shortTitle: Dependabot.com upgrades
|
||||
---
|
||||
{% warning %}
|
||||
|
||||
Dependabot Preview has been shut down as of August 3rd, 2021. In order to keep getting Dependabot updates, please migrate to GitHub-native Dependabot.
|
||||
|
||||
Open pull requests from Dependabot Preview will remain open, including the pull request to upgrade to GitHub-native Dependabot, but the bot itself will no longer work on your {% data variables.product.prodname_dotcom %} accounts and organizations.
|
||||
|
||||
{% endwarning %}
|
||||
|
||||
## About upgrading from Dependabot Preview to {% data variables.product.prodname_dotcom %}-native {% data variables.product.prodname_dependabot %}
|
||||
|
||||
Dependabot Preview has been built directly into {% data variables.product.prodname_dotcom %}, so you can use {% data variables.product.prodname_dependabot %} alongside all the other functionality in {% data variables.product.prodname_dotcom %} without having to install and use a separate application. By migrating to {% data variables.product.prodname_dotcom %}-native {% data variables.product.prodname_dependabot %}, we can also focus on bringing lots of exciting new features to {% data variables.product.prodname_dependabot %}, including more [ecosystem updates](https://github.com/github/roadmap/issues/150), [improved notifications](https://github.com/github/roadmap/issues/133), and {% data variables.product.prodname_dependabot %} support for [{% data variables.product.prodname_ghe_server %}](https://github.com/github/roadmap/issues/86) and [{% data variables.product.prodname_ghe_managed %}](https://github.com/github/roadmap/issues/135).
|
||||
|
||||
## Differences between Dependabot Preview and {% data variables.product.prodname_dotcom %}-native {% data variables.product.prodname_dependabot %}
|
||||
|
||||
While most of the Dependabot Preview features exist in {% data variables.product.prodname_dotcom %}-native {% data variables.product.prodname_dependabot %}, a few remain unavailable:
|
||||
- **Live updates:** We hope to bring these back in the future. For now, you can run {% data variables.product.prodname_dotcom %} {% data variables.product.prodname_dependabot %} daily to catch new packages within one day of release.
|
||||
- **PHP environment variable registries:** For projects that rely on the `ACF_PRO_KEY` environment variable, you may be able to vendor your licensed copy of the Advanced Custom Fields plugin. For an example, see [dependabot/acf-php-example](https://github.com/dependabot/acf-php-example#readme). For other environment variables, you can use {% data variables.product.prodname_actions %} to fetch dependencies from these registries.
|
||||
- **Auto-merge:** We always recommend verifying your dependencies before merging them; therefore, auto-merge will not be supported for the foreseeable future. For those of you who have vetted your dependencies, or are only using internal dependencies, we recommend adding third-party auto-merge apps, or setting up GitHub Actions to merge. We have provided the [`dependabot/fetch-metadata`](https://github.com/marketplace/actions/fetch-metadata-from-dependabot-prs) action to help developers [enable GitHub's automerge](https://github.com/dependabot/fetch-metadata/#enabling-auto-merge).
|
||||
|
||||
In {% data variables.product.prodname_dotcom %}-native {% data variables.product.prodname_dependabot %}, you can configure all version updates using the configuration file. This file is similar to the Dependabot Preview configuration file with a few changes and improvements that will be automatically included in your upgrade pull request. For more information about the upgrade pull request, see "[Upgrading to GitHub-native Dependabot](/code-security/supply-chain-security/upgrading-from-dependabotcom-to-github-native-dependabot#upgrading-to-github-native-dependabot)".
|
||||
|
||||
To see update logs for {% data variables.product.prodname_dotcom %}-native {% data variables.product.prodname_dependabot %} that were previously on the Dependabot.com dashboard:
|
||||
|
||||
1. Navigate to your repository’s **Insights** page.
|
||||
2. Click **Dependency graph** to the left.
|
||||
3. Click **{% data variables.product.prodname_dependabot %}**.
|
||||
|
||||
For more information about version updates with {% data variables.product.prodname_dotcom %}-native {% data variables.product.prodname_dependabot %}, see "[About Dependabot version updates](/code-security/supply-chain-security/about-dependabot-version-updates)."
|
||||
|
||||
## Upgrading to {% data variables.product.prodname_dotcom %}-native {% data variables.product.prodname_dependabot %}
|
||||
|
||||
Upgrading from Dependabot Preview to {% data variables.product.prodname_dotcom %}-native {% data variables.product.prodname_dependabot %} requires you to merge the *Upgrade to GitHub-native Dependabot* pull request in your repository. This pull request includes the updated configuration file needed for {% data variables.product.prodname_dotcom %}-native {% data variables.product.prodname_dependabot %}.
|
||||
|
||||
If you are using private repositories, you will have to grant Dependabot access to these repositories in your organization's security and analysis settings. For more information, see "[Allowing Dependabot to access private dependencies](/organizations/keeping-your-organization-secure/managing-security-and-analysis-settings-for-your-organization#allowing-dependabot-to-access-private-dependencies)". Previously, Dependabot had access to all repositories within an organization, but we implemented this change because it is much safer to use the principle of least privilege for Dependabot.
|
||||
|
||||
If you are using private registries, you will have to add your existing Dependabot Preview secrets to your repository's or organization's "Dependabot secrets". For more information, see "[Managing encrypted secrets for Dependabot](/code-security/supply-chain-security/managing-encrypted-secrets-for-dependabot)".
|
||||
|
||||
If you have any questions or need help migrating, you can view or open issues in the [`dependabot/dependabot-core`](https://github.com/dependabot/dependabot-core/issues/new?assignees=%40dependabot%2Fpreview-migration-reviewers&labels=E%3A+preview-migration&template=migration-issue.md&title=) repository.
|
||||
@@ -57,7 +57,7 @@ Each {% data variables.product.prodname_dependabot %} alert has a unique numeric
|
||||
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 %} security update**.
|
||||

|
||||
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 %} includes information on commands you can use to control {% data variables.product.prodname_dependabot %}. For more information, see "[Managing pull requests for dependency updates](/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-pull-requests-for-dependency-updates#managing-dependabot-pull-requests-with-comment-commands)."
|
||||
1. Optionally, if the alert is being fixed, if it's incorrect, or located in unused code, select the "Dismiss" drop-down, and click a reason for dismissing the alert.
|
||||
1. Optionally, if the alert is being fixed, if it's incorrect, or located in unused code, select the "Dismiss" dropdown, and click a reason for dismissing the alert.{% if reopen-dependabot-alerts %} Unfixed dismissed alerts can be reopened later.{% endif %}
|
||||

|
||||
|
||||
{% elsif ghes = 3.3 %}
|
||||
@@ -94,6 +94,22 @@ Each {% data variables.product.prodname_dependabot %} alert has a unique numeric
|
||||

|
||||
{% endif %}
|
||||
|
||||
{% if reopen-dependabot-alerts %}
|
||||
|
||||
## Viewing and updating closed alerts
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-security %}
|
||||
{% data reusables.repositories.sidebar-dependabot-alerts %}
|
||||
1. To just view closed alerts, click **Closed**.
|
||||

|
||||
1. Click the alert that you would like to view or update.
|
||||

|
||||
2. Optionally, if the alert was dismissed and you wish to reopen it, click **Reopen**.
|
||||

|
||||
|
||||
{% endif %}
|
||||
|
||||
## Further reading
|
||||
|
||||
- "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)"{% ifversion fpt or ghec or ghes > 3.2 %}
|
||||
|
||||
@@ -320,6 +320,16 @@ The pull request's `HEAD` branch was restored to the last known commit.
|
||||
|:----------|:----------------:|:-----------------:|
|
||||
| <ul><li>Pull requests</li></ul> | **X** | **X** |
|
||||
|
||||
## head_ref_force_pushed
|
||||
|
||||
The pull request's HEAD branch was force pushed.
|
||||
|
||||
### Availability
|
||||
|
||||
|Issue type | Issue events API | Timeline events API|
|
||||
|:----------|:----------------:|:-----------------:|
|
||||
| <ul><li>Pull requests</li></ul> | **X** | **X** |
|
||||
|
||||
### Event object properties
|
||||
|
||||
{% data reusables.issue-events.issue-event-common-properties %}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Administrar las direcciones IP permitidas en tu organización
|
||||
intro: Puedes restringir el acceso a los activos de tu organización si configuras una lista de direcciones IP que se pueden conectar a ella.
|
||||
intro: You can restrict access to your organization's private assets by configuring a list of IP addresses that are allowed to connect.
|
||||
product: '{% data reusables.gated-features.allowed-ip-addresses %}'
|
||||
redirect_from:
|
||||
- /github/setting-up-and-managing-organizations-and-teams/managing-allowed-ip-addresses-for-your-organization
|
||||
@@ -19,7 +19,7 @@ Los propietarios de las organizaciones pueden administrar las direcciones IP per
|
||||
|
||||
## Acerca de las direcciones IP permitidas
|
||||
|
||||
Puedes restringir el acceso a los activos de la organización configurando un listado de direcciones IP específicas permitidas. {% data reusables.identity-and-permissions.ip-allow-lists-example-and-restrictions %}
|
||||
You can restrict access to private 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 %}
|
||||
|
||||
@@ -27,7 +27,7 @@ Puedes restringir el acceso a los activos de la organización configurando un li
|
||||
|
||||
Si configuras una lista de direcciones permitidas, también puedes elegir agregar automáticamente a ella cualquier dirección IP que hayas configurado para las {% data variables.product.prodname_github_apps %} que instales en tu organización. El creador de una {% data variables.product.prodname_github_app %} puede configurar una lista de direcciones permitidas para su aplicación, las cuales especifiquen las direcciones IP en las cuales se ejecuta esta. Al heredar la lista de direcciones permitidas en la tuya, estás evitando las solicitudes de conexión de la aplicación que se está rehusando. Para obtener más información, consulta la sección "[Permitir el acceso mediante {% data variables.product.prodname_github_apps %}](#allowing-access-by-github-apps)".
|
||||
|
||||
También puedes configurar las direcciones IP permitidas para las organizaciones en una cuenta empresarial. Para obtener más información, consulta la sección "[Requerir políticas para la configuración de seguridad en tu empresa](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise)".
|
||||
También puedes configurar las direcciones IP permitidas para las organizaciones en una cuenta empresarial. Para obtener más información, consulta la sección "[Requerir políticas para la configuración de seguridad en tu empresa](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-allowed-ip-addresses-for-organizations-in-your-enterprise)".
|
||||
|
||||
## Agregar una dirección IP permitida
|
||||
|
||||
|
||||
@@ -109,11 +109,14 @@ Some of the features listed below are limited to organizations using {% data var
|
||||
| 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** |
|
||||
| [Manage branch protection rules](/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/managing-a-branch-protection-rule) | | | | | **X** |
|
||||
| [Push to protected branches](/articles/about-protected-branches) | | | | **X** | **X** |
|
||||
| Merge pull requests on protected branches, even if there are no approving reviews | | | | | **X** |{% ifversion fpt or ghes > 3.4 or ghae-issue-6337 or ghec %}
|
||||
| Create tags that match a [tag protection rule](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-tag-protection-rules) | | | | **X** | **X** |
|
||||
| Delete tags that match a [tag protection rule](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-tag-protection-rules) | | | | | **X** |{% endif %}
|
||||
| [Create and edit repository social cards](/articles/customizing-your-repositorys-social-media-preview) | | | | **X** | **X** |{% ifversion fpt or ghec %}
|
||||
| Limit [interactions in a repository](/communities/moderating-comments-and-conversations/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](/organizations/managing-access-to-your-organizations-repositories/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** |
|
||||
|
||||
@@ -84,6 +84,8 @@ You can only choose an additional permission if it's not already included in the
|
||||
- **Set interaction limits**: Temporarily restrict certain users from commenting, opening issues, or creating pull requests in your public repository to enforce a period of limited activity. For more information, see "[Limiting interactions in your repository](/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository)."
|
||||
- **Set the social preview**: Add an identifying image to your repository that appears on social media platforms when your repository is linked. For more information, see "[Customizing your repository's social media preview](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/customizing-your-repositorys-social-media-preview)."
|
||||
- **Push commits to protected branches**: Push to a branch that is marked as a protected branch.
|
||||
- **Create protected tags**: Create tags that match a tag protection rule. For more information, see "[Configuring tag protection rules](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-tag-protection-rules)."
|
||||
- **Delete protected tags**: Delete tags that match a tag protection rule. For more information, see "[Configuring tag protection rules](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-tag-protection-rules)."
|
||||
|
||||
### Security
|
||||
|
||||
|
||||
@@ -22,8 +22,6 @@ Si habilitas pero no exiges SAML SSO, los miembros de la organización que elija
|
||||
|
||||
{% data reusables.saml.saml-disabled-linked-identities-removed %}
|
||||
|
||||
{% data reusables.saml.cannot-update-existing-saml-settings %}
|
||||
|
||||
## Habilitar y probar el inicio de sesión único SAML para tu organización
|
||||
|
||||
Antes de requerir el SSO de SAML en tu organización, asegúrate de que la hayas preparado. Para obtener más información, consulta "[Preparación para exigir inicio de sesión único SAML en tu organización](/articles/preparing-to-enforce-saml-single-sign-on-in-your-organization)".
|
||||
|
||||
@@ -36,10 +36,6 @@ When you enable auto assignment, any time your team has been requested to review
|
||||
|
||||
When code owners are automatically requested for review, the team is still removed and replaced with individuals unless a branch protection rule is configured to require review from code owners. If such a branch protection rule is in place, the team request cannot be removed and so the individual request will appear in addition.
|
||||
|
||||
{% ifversion fpt %}
|
||||
To further enhance your team's collaboration abilities, you can upgrade to {% data variables.product.prodname_ghe_cloud %}, which includes features like protected branches and code owners on private repositories. {% data reusables.enterprise.link-to-ghec-trial %}
|
||||
{% endif %}
|
||||
|
||||
### Routing algorithms
|
||||
|
||||
Code review assignments automatically choose and assign reviewers based on one of two possible algorithms.
|
||||
|
||||
@@ -12,11 +12,11 @@ featuredLinks:
|
||||
- /packages/learn-github-packages/installing-a-package
|
||||
popular:
|
||||
- /packages/working-with-a-github-packages-registry/working-with-the-npm-registry
|
||||
- '{% ifversion fpt %}/packages/working-with-a-github-packages-registry/working-with-the-container-registry{% else %}/packages/working-with-a-github-packages-registry/working-with-the-docker-registry{% endif %}'
|
||||
- '{% ifversion fpt or ghec%}/packages/working-with-a-github-packages-registry/working-with-the-container-registry{% else %}/packages/working-with-a-github-packages-registry/working-with-the-docker-registry{% endif %}'
|
||||
- /packages/learn-github-packages
|
||||
- /packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry
|
||||
guideCards:
|
||||
- '{% ifversion fpt %}/packages/working-with-a-github-packages-registry/working-with-the-container-registry{% else %}/packages/working-with-a-github-packages-registry/working-with-the-docker-registry{% endif %}'
|
||||
- '{% ifversion fpt or ghec %}/packages/working-with-a-github-packages-registry/working-with-the-container-registry{% else %}/packages/working-with-a-github-packages-registry/working-with-the-docker-registry{% endif %}'
|
||||
- /packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry
|
||||
changelog:
|
||||
label: packages
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Working with the Docker registry
|
||||
intro: '{% ifversion fpt or ghec %}The Docker registry has now been replaced by the {% data variables.product.prodname_container_registry %}.{% else %}You can push and pull your Docker images using the {% data variables.product.prodname_registry %} Docker registry, which uses the package namespace `https://docker.pkg.github.com`.{% endif %}'
|
||||
intro: '{% ifversion fpt or ghec %}The Docker registry has now been replaced by the {% data variables.product.prodname_container_registry %}.{% else %}You can push and pull your Docker images using the {% data variables.product.prodname_registry %} Docker registry.{% endif %}'
|
||||
product: '{% data reusables.gated-features.packages %}'
|
||||
redirect_from:
|
||||
- /articles/configuring-docker-for-use-with-github-package-registry
|
||||
|
||||
@@ -92,21 +92,21 @@ If you choose the `/docs` folder of any branch as your publishing source, {% dat
|
||||
## Limits on use of {% data variables.product.prodname_pages %}
|
||||
|
||||
{% ifversion fpt or ghec %}
|
||||
{% 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 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)."
|
||||
|
||||
### Prohibited uses
|
||||
{% endif %}
|
||||
{% 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). {% data reusables.pages.no_sensitive_data_pages %}
|
||||
{% 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). {% data reusables.pages.no_sensitive_data_pages %}
|
||||
|
||||
In addition, your use of {% data variables.product.prodname_pages %} is subject to the [GitHub Terms of Service](/free-pro-team@latest/github/site-policy/github-terms-of-service/), including the restrictions on get rich quick schemes, sexually obscene content, and violent or threatening content or activity.
|
||||
In addition, your use of {% data variables.product.prodname_pages %} is subject to the [GitHub Terms of Service](/free-pro-team@latest/github/site-policy/github-terms-of-service/), including the restrictions on get-rich-quick schemes, sexually obscene content, and violent or threatening content or activity.
|
||||
|
||||
### Usage limits
|
||||
{% 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.{% ifversion fpt or ghec %} For more information, see "[What is my disk quota?"](/articles/what-is-my-disk-quota/#file-and-repository-size-limitations){% endif %}
|
||||
- {% data variables.product.prodname_pages %} source repositories have a recommended limit of 1 GB.{% ifversion fpt or ghec %} 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.
|
||||
{% ifversion fpt or ghec %}
|
||||
- {% data variables.product.prodname_pages %} sites have a *soft* bandwidth limit of 100GB per month.
|
||||
- {% data variables.product.prodname_pages %} sites have a *soft* bandwidth limit of 100 GB 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.
|
||||
|
||||
@@ -35,13 +35,13 @@ Before you can push the original repository to your new copy, or _mirror_, of th
|
||||
```
|
||||
3. Mirror-push to the new repository.
|
||||
```shell
|
||||
$ cd <em>old-repository</em>
|
||||
$ cd <em>old-repository.git</em>
|
||||
$ git push --mirror https://{% data variables.command_line.codeblock %}/<em>exampleuser</em>/<em>new-repository</em>.git
|
||||
```
|
||||
4. Remove the temporary local repository you created earlier.
|
||||
```shell
|
||||
$ cd ..
|
||||
$ rm -rf <em>old-repository</em>
|
||||
$ rm -rf <em>old-repository.git</em>
|
||||
```
|
||||
|
||||
## Mirroring a repository that contains {% data variables.large_files.product_name_long %} objects
|
||||
@@ -53,7 +53,7 @@ Before you can push the original repository to your new copy, or _mirror_, of th
|
||||
```
|
||||
3. Navigate to the repository you just cloned.
|
||||
```shell
|
||||
$ cd <em>old-repository</em>
|
||||
$ cd <em>old-repository.git</em>
|
||||
```
|
||||
4. Pull in the repository's {% data variables.large_files.product_name_long %} objects.
|
||||
```shell
|
||||
@@ -70,7 +70,7 @@ Before you can push the original repository to your new copy, or _mirror_, of th
|
||||
7. Remove the temporary local repository you created earlier.
|
||||
```shell
|
||||
$ cd ..
|
||||
$ rm -rf <em>old-repository</em>
|
||||
$ rm -rf <em>old-repository.git</em>
|
||||
```
|
||||
|
||||
## Mirroring a repository in another location
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
title: Configuring tag protection rules
|
||||
shortTitle: Tag protection rules
|
||||
intro: You can configure tag protection rules for your repository to prevent contributors from creating or deleting tags.
|
||||
product: '{% data reusables.gated-features.tag-protection-rules %}'
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghes: '>3.4'
|
||||
ghae: issue-6337
|
||||
ghec: '*'
|
||||
---
|
||||
|
||||
{% note %}
|
||||
|
||||
**Note:** Tag protection rules are currently in beta and subject to change.
|
||||
|
||||
{% endnote %}
|
||||
|
||||
When you add a tag protection rule, all tags that match the pattern provided will be protected. Only users with admin or maintain permissions in the repository will be able to create protected tags, and only users with admin permissions in the repository will be able to delete protected tags. Para obtener más información, consulta la sección "[Roles de repositorio para una organización](/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role)".
|
||||
|
||||
Additionally, you can create custom repository roles to allow other groups of users to create or delete tags that match tag protection rules. Para obtener más información, consulta la sección "[Administrar los roles personalizados de repositorio en una organización](/organizations/managing-peoples-access-to-your-organization-with-roles/managing-custom-repository-roles-for-an-organization)".
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-settings %}
|
||||
1. In the "Code and automation" section of the sidebar, click **{% octicon "tag" aria-label="The tag icon" %} Tags**.
|
||||
1. Click **New rule**. 
|
||||
1. Under "Tag name pattern", type the pattern of the tags you want to protect. In this example, typing "\*" protects all tags. 
|
||||
1. Click **Add rule**. 
|
||||
@@ -17,6 +17,7 @@ children:
|
||||
- /enabling-anonymous-git-read-access-for-a-repository
|
||||
- /about-email-notifications-for-pushes-to-your-repository
|
||||
- /configuring-autolinks-to-reference-external-resources
|
||||
- /configuring-tag-protection-rules
|
||||
shortTitle: Administrar la configuración de un repositorio
|
||||
---
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ Primero, necesitas [registrar tu aplicación][new oauth app]. A cada aplicación
|
||||
|
||||
Puedes llenar toda la información como más te guste, con excepción de la **URL de rellamado para la autorización**. Esta es fácilmente la parte más importante para configurar tu aplicación. Es la URL de rellamado a la cual {% data variables.product.product_name %} devuelve al usuario después de una autenticación exitosa.
|
||||
|
||||
Ya que estamos ejecutando un servidor común de Sinatra, la ubicación de la instancia local se configura como `http://localhost:4567`. Vamos a llenar la URL de rellamado como `http://localhost:4567/callback`.
|
||||
Since we're running a regular Sinatra server, the location of the local instance is set to `http://127.0.0.1:4567`. Let's fill in the callback URL as `http://127.0.0.1:4567/callback`.
|
||||
|
||||
## Aceptar la autorización del usuario
|
||||
|
||||
@@ -80,7 +80,7 @@ Posteriormente, pega este contenido en _views/index.erb_:
|
||||
|
||||
También, ten en cuenta que la URL utiliza el parámetro de consulta `scope` para definir los [alcances][oauth scopes] que solicita la aplicación. Para nuestra aplicación, estamos solicitando el alcance `user:email` para leer las direcciones de correo electrónico privadas.
|
||||
|
||||
Navega en tu buscador hacia `http://localhost:4567`. Después de dar clic en el enlace, se te llevará a {% data variables.product.product_name %} y se te mostrará un diálogo que se ve más o menos así: 
|
||||
Navigate your browser to `http://127.0.0.1:4567`. Después de dar clic en el enlace, se te llevará a {% data variables.product.product_name %} y se te mostrará un diálogo que se ve más o menos así: 
|
||||
|
||||
Si confías en ti mismo, da clic en **Autorizar App**. ¡Oh-oh! Sinatra te arroja un error `404`. ¡¿Qué pasa?!
|
||||
|
||||
@@ -175,7 +175,7 @@ Podemos hacer lo que queramos con nuestros resultados. En este caso, solo las va
|
||||
|
||||
## Implementar la autenticación "persistente"
|
||||
|
||||
Estaríamos hablando de un pésimo modelo si requerimos que los usuarios inicien sesión en la app cada vez que necesiten acceder a la página web. Por ejemplo, intenta navegar directamente a `http://localhost:4567/basic`. Obtendrás un error.
|
||||
Estaríamos hablando de un pésimo modelo si requerimos que los usuarios inicien sesión en la app cada vez que necesiten acceder a la página web. For example, try navigating directly to `http://127.0.0.1:4567/basic`. Obtendrás un error.
|
||||
|
||||
¿Qué pasaría si pudiéramos evitar todo el proceso de "da clic aquí", y solo lo _recordáramos_, mientras que los usuarios sigan en sesión dentro de
|
||||
{% data variables.product.product_name %}, y pudieran acceder a esta aplicación? Agárrate,
|
||||
@@ -294,7 +294,7 @@ Después, crea un archivo en _views_, el cual se llame _advanced.erb_ y pega est
|
||||
</html>
|
||||
```
|
||||
|
||||
Desde la líne de comandos, llama a `ruby advanced_server.rb`, lo cual inicia tu servidor en el puerto `4567` -- el mismo puerto que utilizamos cuando tuvimos una app de Sinatra sencilla. Cuando navegas a `http://localhost:4567`, la app llama a `authenticate!`, lo cual te redirige a `/callback`. Entonces, `/callback` nos regresa a `/` y, ya que estuvimos autenticados, interpreta a _advanced.erb_.
|
||||
Desde la líne de comandos, llama a `ruby advanced_server.rb`, lo cual inicia tu servidor en el puerto `4567` -- el mismo puerto que utilizamos cuando tuvimos una app de Sinatra sencilla. When you navigate to `http://127.0.0.1:4567`, the app calls `authenticate!` which redirects you to `/callback`. Entonces, `/callback` nos regresa a `/` y, ya que estuvimos autenticados, interpreta a _advanced.erb_.
|
||||
|
||||
Podríamos simplificar completamente esta ruta redonda si solo cambiamos nuestra URL de rellamado en {% data variables.product.product_name %} a `/`. Pero, ya que tanto _server.rb_ como _advanced.rb_ dependen de la misma URL de rellamado, necesitamos hacer un poco más de ajustes para que funcione.
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
#Reference 5861
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghec: '*'
|
||||
ghes: '>3.4'
|
||||
ghae: 'issue-5861'
|
||||
@@ -0,0 +1 @@
|
||||
{% ifversion ghae %}Tag protection rules are available in internal and private repositories with {% data variables.product.prodname_ghe_managed %}, {% else%}Tag protection rules are available {% endif %}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 %}, {% data variables.product.prodname_ghe_cloud %}, and {% data variables.product.prodname_ghe_server %}. {% ifversion fpt or ghec %}{% data reusables.gated-features.more-info %}{% endif %}
|
||||
@@ -1 +1 @@
|
||||
Por ejemplo, puedes permitir el acceso desde la única dirección IP de tu red de oficina. La lista de direcciones IP permitidas bloqueará el acceso mediante la web, las API y Git desde cualquier dirección IP que no se encuentre en ella.
|
||||
Por ejemplo, puedes permitir el acceso desde la única dirección IP de tu red de oficina. The allow list for IP addresses will block access to private resources via the web, API, and Git from any IP addresses that are not on the allow list.
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
{% note %}
|
||||
|
||||
**Note:** When SAML SSO is enabled, the only setting you can update on {% data variables.product.prodname_dotcom %} for your existing SAML configuration is the SAML certificate. If you need to update the Sign on URL or Issuer, you must first disable SAML SSO and then reconfigure SAML SSO with the new settings.
|
||||
|
||||
{% endnote %}
|
||||
@@ -0,0 +1,5 @@
|
||||
{% note %}
|
||||
|
||||
**Note:** To avoid exceeding the rate limit on {% data variables.product.product_name %}, do not assign more than 1,000 users per hour to the IdP application. If you use groups to assign users to the IdP application, do not add more than 100 users to each group per hour. If you exceed these thresholds, attempts to provision users may fail with a "rate limit" error.
|
||||
|
||||
{% endnote %}
|
||||
@@ -129,7 +129,6 @@ translations/es-ES/content/code-security/supply-chain-security/keeping-your-depe
|
||||
translations/es-ES/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/listing-dependencies-configured-for-version-updates.md,Listed in localization-support#489
|
||||
translations/es-ES/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-encrypted-secrets-for-dependabot.md,Listed in localization-support#489
|
||||
translations/es-ES/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-pull-requests-for-dependency-updates.md,Listed in localization-support#489
|
||||
translations/es-ES/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/upgrading-from-dependabotcom-to-github-native-dependabot.md,broken liquid tags
|
||||
translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-alerts-for-vulnerable-dependencies.md,Listed in localization-support#489
|
||||
translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-dependabot-security-updates.md,Listed in localization-support#489
|
||||
translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-managing-vulnerable-dependencies.md,Listed in localization-support#489
|
||||
|
||||
|
@@ -100,4 +100,4 @@ topics:
|
||||
|
||||
## 反馈和支持
|
||||
|
||||
If you have feedback or feature requests for notifications, use a [{% data variables.product.product_name %} feedback discussion](https://github.com/github/feedback/discussions/categories/general-feedback).
|
||||
如果您有针对通知的反馈或功能请求,请使用 [{% data variables.product.product_name %} 反馈讨论](https://github.com/github/feedback/discussions/categories/general-feedback)。
|
||||
|
||||
@@ -19,6 +19,8 @@ shortTitle: Missing contributions
|
||||
|
||||
Your profile contributions graph is a record of contributions you've made to repositories {% ifversion ghae %}owned by{% else %}on{% endif %} {% data variables.product.product_location %}. 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.
|
||||
|
||||
If you are part of an organization that uses SAML single sign-on (SSO), you won’t be able to see contribution activity from the organization on your profile if you do not have an active SSO session. People viewing your profile from outside your organization will see anonymized contribution activity of your contribution activity for your organization.
|
||||
|
||||
## Contributions that are counted
|
||||
|
||||
### Issues, pull requests and discussions
|
||||
|
||||
@@ -21,7 +21,7 @@ shortTitle: 添加电子邮件地址
|
||||
|
||||
**注意**:
|
||||
- {% data reusables.user-settings.no-verification-disposable-emails %}
|
||||
- If you're a member of an {% data variables.product.prodname_emu_enterprise %}, you cannot make changes to your email address on {% data variables.product.prodname_dotcom_the_website %}. {% data reusables.enterprise-accounts.emu-more-info-account %}
|
||||
- 如果您是 {% data variables.product.prodname_emu_enterprise %} 的成员,则无法在 {% data variables.product.prodname_dotcom_the_website %} 上更改您的电子邮件地址。 {% data reusables.enterprise-accounts.emu-more-info-account %}
|
||||
|
||||
{% endnote %}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ shortTitle: 合并多个用户帐户
|
||||
|
||||
{% ifversion ghec %}
|
||||
|
||||
**Tip:** {% data variables.product.prodname_emus %} allow an enterprise to provision unique user accounts for its members through an identity provider (IdP). For more information, see "[About Enterprise Managed Users](/admin/identity-and-access-management/managing-iam-with-enterprise-managed-users/about-enterprise-managed-users)." For other use cases, we recommend using only one user account to manage both personal and professional repositories.
|
||||
**提示:** {% data variables.product.prodname_emus %} 允许企业通过身份提供商 (IdP) 为其成员配置唯一的用户帐户。 更多信息请参阅“[关于企业管理用户](/admin/identity-and-access-management/managing-iam-with-enterprise-managed-users/about-enterprise-managed-users)”。 对于其他用例,我们建议仅使用一个用户帐户来管理个人和专业存储库。
|
||||
|
||||
{% else %}
|
||||
|
||||
@@ -31,14 +31,14 @@ shortTitle: 合并多个用户帐户
|
||||
|
||||
{% warning %}
|
||||
|
||||
**Warning:** Organization and repository access permissions aren't transferable between accounts. If the account you want to delete has an existing access permission, an organization owner or repository administrator will need to invite the account that you want to keep.
|
||||
**警告:** 组织和存储库访问权限不可在帐户之间转移。 如果要删除的帐户具有现有访问权限,则组织所有者或存储库管理员将需要邀请您要保留的帐户。
|
||||
|
||||
{% endwarning %}
|
||||
|
||||
1. 从您要删除的帐户[转让任何仓库](/articles/how-to-transfer-a-repository)到要保留的帐户。 议题、拉取请求和 wiki 也会转让。 确认要保留的帐户中存在仓库。
|
||||
2. [更新远程 URL](/github/getting-started-with-github/managing-remote-repositories)(在移动的仓库的任何本地克隆中)。
|
||||
3. [删除帐户](/articles/deleting-your-user-account)(不再使用的)。
|
||||
4. To attribute past commits to the new account, add the email address you used to author the commits to the account you're keeping. 更多信息请参阅“[为什么我的贡献没有在我的个人资料中显示?](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile#your-local-git-commit-email-isnt-connected-to-your-account)”
|
||||
4. 要将过去的提交归因于新帐户,请将用于创作提交的电子邮件地址添加到要保留的帐户。 更多信息请参阅“[为什么我的贡献没有在我的个人资料中显示?](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile#your-local-git-commit-email-isnt-connected-to-your-account)”
|
||||
|
||||
## 延伸阅读
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: 查看组织中人员的角色
|
||||
intro: '您可以查看组织中人员的列表,并按其角色进行筛选。 For more information on organization roles, see "[Roles in an organization](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization)."'
|
||||
intro: '您可以查看组织中人员的列表,并按其角色进行筛选。 有关组织角色的详细信息,请参阅“[组织中的角色](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization)”。'
|
||||
permissions: Organization members can see people's roles in the organization.
|
||||
redirect_from:
|
||||
- /articles/viewing-people-s-roles-in-an-organization
|
||||
@@ -26,39 +26,39 @@ shortTitle: 查看组织中的人员
|
||||
|
||||
{% ifversion fpt %}
|
||||
|
||||
If your organization uses {% data variables.product.prodname_ghe_cloud %}, you can also view the enterprise owners who manage billing settings and policies for all your enterprise's organizations. 更多信息请参阅 [{% data variables.product.prodname_ghe_cloud %} 文档](/enterprise-cloud@latest/account-and-profile/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/viewing-peoples-roles-in-an-organization#view-enterprise-owners-and-their-roles-in-an-organization)。
|
||||
如果您的组织使用 {% data variables.product.prodname_ghe_cloud %},您还可以查看管理所有企业组织的计费设置和策略的企业所有者。 更多信息请参阅 [{% data variables.product.prodname_ghe_cloud %} 文档](/enterprise-cloud@latest/account-and-profile/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/viewing-peoples-roles-in-an-organization#view-enterprise-owners-and-their-roles-in-an-organization)。
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if enterprise-owners-visible-for-org-members %}
|
||||
## View enterprise owners and their roles in an organization
|
||||
## 查看企业所有者及其在组织中的角色
|
||||
|
||||
If your organization is managed by an enterprise account, then you can view the enterprise owners who manage billing settings and policies for all of your enterprise's organizations. For more information about enterprise accounts, see "[Types of {% data variables.product.prodname_dotcom %} accounts](/get-started/learning-about-github/types-of-github-accounts)."
|
||||
如果您的组织由企业帐户管理,则可以查看管理企业所有组织的帐单设置和策略的企业所有者。 有关企业帐户的详细信息,请参阅“[{% data variables.product.prodname_dotcom %} 帐户类型](/get-started/learning-about-github/types-of-github-accounts)”。
|
||||
|
||||
You can also view whether an enterprise owner has a specific role in the organization. Enterprise owners can also be an organization member, any other organization role, or be un-affililated with the organization.
|
||||
您还可以查看企业所有者是否在组织中具有特定角色。 企业所有者也可以是组织成员、任何其他组织角色或与组织无关。
|
||||
|
||||
{% note %}
|
||||
|
||||
**Note:** If you're an organization owner, you can also invite an enterprise owner to have a role in the organization. If an enterprise owner accepts the invitation, a seat or license in the organization is used from the available licenses for your enterprise. For more information about how licensing works, see "[Roles in an enterprise](/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-owner)."
|
||||
**注意:**如果您是组织所有者,还可以邀请企业所有者在组织中担任角色。 如果企业所有者接受邀请,则会从企业的可用许可证中使用组织中的席位或许可证。 有关许可的工作原理的详细信息,请参阅“[企业中的角色](/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-owner)”。
|
||||
|
||||
{% endnote %}
|
||||
|
||||
| **Enterprise role** | **Organization role** | **Organization access or impact** |
|
||||
| ------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| 企业所有者 | Un-affililated or no official organization role | Cannot access organization content or repositories but manages enterprise settings and policies that impact your organization. |
|
||||
| 企业所有者 | Organization owner | Able to configure organization settings and manage access to the organization's resources through teams, etc. |
|
||||
| 企业所有者 | Organization member | Able to access organization resources and content, such as repositories, without access to the organization's settings. |
|
||||
| **企业角色** | **组织角色** | **组织访问或影响** |
|
||||
| -------- | ------------------ | ------------------------------ |
|
||||
| 企业所有者 | 非附属或无官方组织角色 | 无法访问组织内容或存储库,但可管理影响组织的企业设置和策略。 |
|
||||
| 企业所有者 | Organization owner | 能够配置组织设置并通过团队等管理对组织资源的访问。 |
|
||||
| 企业所有者 | 组织成员 | 能够访问组织资源和内容(如存储库),而无需访问组织的设置。 |
|
||||
|
||||
To review all roles in an organization, see "[Roles in an organization](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization)." {% ifversion ghec %} An organization member can also have a custom role for a specific repository. For more information, see "[Managing custom repository roles for an organization](/organizations/managing-peoples-access-to-your-organization-with-roles/managing-custom-repository-roles-for-an-organization)."{% endif %}
|
||||
要查看组织中的所有角色,请参阅“[组织中的角色](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization)”。 {% ifversion ghec %} 组织成员还可以具有特定存储库的自定义角色。 更多信息请参阅“[管理组织的自定义仓库角色](/organizations/managing-peoples-access-to-your-organization-with-roles/managing-custom-repository-roles-for-an-organization)”。{% endif %}
|
||||
|
||||
For more information about the enterprise owner role, see "[Roles in an enterprise](/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-owner)."
|
||||
有关企业所有者角色的更多信息,请参阅“[企业中的角色](/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-owner)”。
|
||||
|
||||
{% data reusables.profile.access_org %}
|
||||
{% data reusables.user-settings.access_org %}
|
||||
{% data reusables.organizations.people %}
|
||||
4. In the left sidebar, under "Enterprise permissions", click **Enterprise owners**. 
|
||||
5. View the list of the enterprise owners for your enterprise. If the enterprise owner is also a member of your organization, you can see their role in the organization.
|
||||
4. 在左侧边栏的“Enterprise permissions(企业权限)”下,单击 **Enterprise owners(企业所有者)**。 
|
||||
5. 查看企业的企业所有者列表。 如果企业所有者也是您组织的成员,则您可以看到他们在组织中的角色。
|
||||
|
||||

|
||||

|
||||
|
||||
{% endif %}
|
||||
|
||||
@@ -78,6 +78,12 @@ shortTitle: 启动时运行运行器应用程序
|
||||
```
|
||||
{% endmac %}
|
||||
|
||||
The command takes an optional `user` argument to install the service as a different user.
|
||||
|
||||
```shell
|
||||
./svc.sh install --user <em>USERNAME</em>
|
||||
```
|
||||
|
||||
## 启动服务
|
||||
|
||||
使用以下命令启动服务:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Monitoring and troubleshooting workflows
|
||||
title: 监控和故障排除工作流程
|
||||
shortTitle: 监控和故障排除
|
||||
intro: 'You can view the status and results of each step in your workflow, debug a failed workflow, search and download logs, and view billable job execution minutes.'
|
||||
intro: 您可以查看工作流程中每个步骤的状态和结果、调试失败的工作流程、搜索和下载日志以及查看计费作业执行分钟数。
|
||||
redirect_from:
|
||||
- /articles/viewing-your-repository-s-workflows
|
||||
- /articles/viewing-your-repositorys-workflows
|
||||
|
||||
@@ -57,7 +57,7 @@ versions:
|
||||
{% data reusables.repositories.navigate-to-workflow %}
|
||||
{% data reusables.repositories.view-run %}
|
||||
{% data reusables.repositories.navigate-to-job %}
|
||||
1. In the upper right corner, click {% octicon "gear" aria-label="The gear icon" %} and select **Download log archive**.
|
||||
1. 在右上角,单击 {% octicon "gear" aria-label="The gear icon" %} ,然后选择 **Download log archive(下载日志存档)**。
|
||||
|
||||

|
||||
|
||||
@@ -70,7 +70,7 @@ versions:
|
||||
{% data reusables.repositories.actions-tab %}
|
||||
{% data reusables.repositories.navigate-to-workflow %}
|
||||
{% data reusables.repositories.view-run %}
|
||||
1. In the upper right corner, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}.
|
||||
1. 在右上角,单击 {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}。
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -41,7 +41,9 @@ When you enable {% data variables.product.prodname_github_connect %}, you config
|
||||
To use {% data variables.product.prodname_github_connect %}, you must have an organization or enterprise account on {% data variables.product.prodname_dotcom_the_website %} that uses {% data variables.product.prodname_ghe_cloud %}. You may already have {% data variables.product.prodname_ghe_cloud %} included in your plan. {% data reusables.enterprise.link-to-ghec-trial %}
|
||||
|
||||
{% ifversion ghes %}
|
||||
To configure a connection, your proxy configuration must allow connectivity to `github.com`, `api.github.com`, and `uploads.github.com`. 更多信息请参阅“[配置出站 Web 代理服务器](/enterprise/{{ currentVersion }}/admin/guides/installation/configuring-an-outbound-web-proxy-server)”。
|
||||
If your organization or enterprise account on {% data variables.product.prodname_dotcom_the_website %} uses IP allow lists, you must add the IP address or network for {% data variables.product.product_location %} to your IP allow list on {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[Managing allowed IP addresses for your organization](/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization)" and "[Enforcing policies for security settings in your enterprise](/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-allowed-ip-addresses-for-organizations-in-your-enterprise)" in the {% data variables.product.prodname_ghe_cloud %} documentation.
|
||||
|
||||
To configure a connection, your proxy configuration must allow connectivity to `github.com`, `api.github.com`, and `uploads.github.com`. For more information, see "[Configuring an outbound web proxy server](/enterprise/{{ currentVersion }}/admin/guides/installation/configuring-an-outbound-web-proxy-server)."
|
||||
{% endif %}
|
||||
|
||||
## 启用 {% data variables.product.prodname_github_connect %}
|
||||
@@ -69,7 +71,7 @@ If you're connecting {% data variables.product.product_location %} to an organiz
|
||||
|
||||
Enterprise owners can disable {% data variables.product.prodname_github_connect %}.
|
||||
|
||||
与 {% data variables.product.prodname_ghe_cloud %} 断开连接后,{% data variables.product.prodname_github_connect %} {% data variables.product.prodname_github_app %} 会从企业帐户或组织中删除,{% data variables.product.product_location %} 上存储的凭据也会删除。
|
||||
When you disconnect from {% data variables.product.prodname_ghe_cloud %}, the {% data variables.product.prodname_github_connect %} {% data variables.product.prodname_github_app %} is deleted from your enterprise account or organization and credentials stored on {% data variables.product.product_location %} are deleted.
|
||||
|
||||
{% data reusables.enterprise-accounts.access-enterprise %}
|
||||
{% data reusables.enterprise-accounts.github-connect-tab %}
|
||||
|
||||
@@ -33,8 +33,6 @@ redirect_from:
|
||||
|
||||
{% data reusables.saml.about-saml-access-enterprise-account %} For more information, see "[Viewing and managing a user's SAML access to your enterprise account](/admin/user-management/managing-users-in-your-enterprise/viewing-and-managing-a-users-saml-access-to-your-enterprise)."
|
||||
|
||||
{% data reusables.saml.cannot-update-existing-saml-settings %}
|
||||
|
||||
{% data reusables.saml.saml-disabled-linked-identities-removed %}
|
||||
|
||||
{% data reusables.scim.enterprise-account-scim %}
|
||||
|
||||
@@ -25,7 +25,11 @@ With {% data variables.product.prodname_emus %}, your enterprise uses SAML SSO t
|
||||
|
||||
After you configure SAML SSO, we recommend storing your recovery codes so you can recover access to your enterprise in the event that your identity provider is unavailable.
|
||||
|
||||
{% data reusables.saml.cannot-update-existing-saml-settings %}
|
||||
{% note %}
|
||||
|
||||
**Note:** When SAML SSO is enabled, the only setting you can update on {% data variables.product.prodname_dotcom %} for your existing SAML configuration is the SAML certificate. If you need to update the Sign on URL or Issuer, you must first disable SAML SSO and then reconfigure SAML SSO with the new settings.
|
||||
|
||||
{% endnote %}
|
||||
|
||||
## Configuring SAML single sign-on for {% data variables.product.prodname_emus %}
|
||||
|
||||
|
||||
@@ -76,6 +76,8 @@ To configure provisioning, the setup user with the **@<em>SHORT-CODE</em>_admin*
|
||||
|
||||
After you have configured SAML SSO and provisioning, you will be able provision new users on {% data variables.product.prodname_dotcom_the_website %} by assigning users to the {% data variables.product.prodname_emu_idp_application %} application.
|
||||
|
||||
{% data reusables.scim.emu-scim-rate-limit %}
|
||||
|
||||
You can also automatically manage organization membership by assigning groups to the application and adding them to the "Push Groups" tab in Okta. When the group is provisioned successfully, it will be available to connect to teams in the enterprise's organizations. For more information about managing teams, see "[Managing team memberships with identity provider groups](/github/setting-up-and-managing-your-enterprise/managing-your-enterprise-users-with-your-identity-provider/managing-team-memberships-with-identity-provider-groups)."
|
||||
|
||||
When assigning users, you can use the "Roles" attribute in the {% data variables.product.prodname_emu_idp_application %} application to set a user's role in your enterprise on {% data variables.product.product_name %}. For more information on roles, see "[Roles in an enterprise](/github/setting-up-and-managing-your-enterprise/managing-users-in-your-enterprise/roles-in-an-enterprise)."
|
||||
|
||||
@@ -19,7 +19,7 @@ You must configure provisioning for {% data variables.product.prodname_emus %} t
|
||||
|
||||
When you update information associated with a user's identity on your IdP, your IdP will update the user's account on GitHub.com. When you unassign the user from the {% data variables.product.prodname_emu_idp_application %} application or deactivate a user's account on your IdP, your IdP will communicate with {% data variables.product.prodname_dotcom %} to invalidate any SAML sessions and disable the member's account. The disabled account's information is maintained and their username is changed to a hash of their original username with the short code appended. If you reassign a user to the {% data variables.product.prodname_emu_idp_application %} application or reactivate their account on your IdP, the {% data variables.product.prodname_managed_user %} account on {% data variables.product.prodname_dotcom %} will be reactivated and username restored.
|
||||
|
||||
Groups in your IdP can be used to manage team membership within your enterprise's organizations, allowing you to configure repository access and permissions through your IdP. For more information, see "[Managing team memberships with identity provider groups](/github/setting-up-and-managing-your-enterprise/managing-your-enterprise-users-with-your-identity-provider/managing-team-memberships-with-identity-provider-groups)."
|
||||
Groups in your IdP can be used to manage team membership within your enterprise's organizations, allowing you to configure repository access and permissions through your IdP. 更多信息请参阅“[使用身份提供商组管理团队成员](/github/setting-up-and-managing-your-enterprise/managing-your-enterprise-users-with-your-identity-provider/managing-team-memberships-with-identity-provider-groups)”。
|
||||
|
||||
## 基本要求
|
||||
|
||||
@@ -51,6 +51,8 @@ To configure provisioning for your {% data variables.product.prodname_emu_enterp
|
||||
|
||||
After creating your personal access token and storing it securely, you can configure provisioning on your identity provider.
|
||||
|
||||
{% data reusables.scim.emu-scim-rate-limit %}
|
||||
|
||||
To configure Azure Active Directory to provision users for your {% data variables.product.prodname_emu_enterprise %}, see [Tutorial: Configure GitHub Enterprise Managed User for automatic user provisioning](https://docs.microsoft.com/en-us/azure/active-directory/saas-apps/github-enterprise-managed-user-provisioning-tutorial) in the Azure AD documentation.
|
||||
|
||||
To configure Okta to provision users for your {% data variables.product.prodname_emu_enterprise %}, see "[Configuring SCIM provisioning for Enterprise Managed Users with Okta](/github/setting-up-and-managing-your-enterprise/managing-your-enterprise-users-with-your-identity-provider/configuring-scim-provisioning-for-enterprise-managed-users-with-okta)."
|
||||
|
||||
@@ -67,7 +67,7 @@ You can restrict network traffic to your enterprise on {% data variables.product
|
||||
|
||||
{% elsif ghec %}
|
||||
|
||||
Enterprise owners can restrict access to assets owned by organizations in an enterprise by configuring an allow list for specific IP addresses. {% data reusables.identity-and-permissions.ip-allow-lists-example-and-restrictions %}
|
||||
Enterprise owners can restrict access to private assets owned by organizations in an enterprise 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 %}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ shortTitle: 邀请人员进行管理
|
||||
|
||||
{% data reusables.enterprise-accounts.access-enterprise %}
|
||||
{% data reusables.enterprise-accounts.people-tab %}
|
||||
1. 在左侧边栏中,单击 **Administrators(管理员)**。 
|
||||
{% data reusables.enterprise-accounts.administrators-tab %}
|
||||
1. 在管理员列表上方,单击 {% ifversion ghec %}**邀请管理员**{% elsif ghes %}**添加所有者**{% endif %}。
|
||||
{% ifversion ghec %}
|
||||

|
||||
@@ -65,10 +65,11 @@ shortTitle: 邀请人员进行管理
|
||||
|
||||
{% data reusables.enterprise-accounts.access-enterprise %}
|
||||
{% data reusables.enterprise-accounts.people-tab %}
|
||||
1. 在您要删除的人员用户名旁边,单击 {% octicon "gear" aria-label="The Settings gear" %},然后单击 **Remove owner(删除所有者)**{% ifversion ghec %} 或**Remove billing manager(删除帐单管理员)**。{% endif %}
|
||||
{% data reusables.enterprise-accounts.administrators-tab %}
|
||||
1. Next to the username of the person you'd like to remove, click {% octicon "gear" aria-label="The Settings gear" %}, then click {% ifversion ghes %}**Remove owner**{% elsif ghec %}**Convert to member**{% endif %}.
|
||||
{% ifversion ghec %}
|
||||

|
||||
{% elsif ghes %}
|
||||

|
||||
{% endif %}
|
||||
1. 阅读确认,然后单击 **Remove owner(删除所有者)**{% ifversion ghec %} 或 **Remove billing manager(删除帐单管理员)**{% endif %}。
|
||||
1. Read the confirmation, then click {% ifversion ghes %}**Remove owner**{% elsif ghec %}**Yes, convert USERNAME to member**{% endif %}.
|
||||
|
||||
@@ -41,7 +41,7 @@ shortTitle: 查看企业中的人员
|
||||
|
||||
## Viewing suspended members in an {% data variables.product.prodname_emu_enterprise %}
|
||||
|
||||
If your enterprise uses {% data variables.product.prodname_emus %}, you can also view suspended users. Suspended users are members who have been deprovisioned after being unassigned from the {% data variables.product.prodname_emu_idp_application %} application or deleted from the identity provider. For more information, see "[About Enterprise Managed Users](/admin/identity-and-access-management/managing-iam-with-enterprise-managed-users/about-enterprise-managed-users)."
|
||||
If your enterprise uses {% data variables.product.prodname_emus %}, you can also view suspended users. Suspended users are members who have been deprovisioned after being unassigned from the {% data variables.product.prodname_emu_idp_application %} application or deleted from the identity provider. 更多信息请参阅“[关于企业管理用户](/admin/identity-and-access-management/managing-iam-with-enterprise-managed-users/about-enterprise-managed-users)”。
|
||||
|
||||
{% data reusables.enterprise-accounts.access-enterprise %}
|
||||
{% data reusables.enterprise-accounts.people-tab %}
|
||||
|
||||
@@ -52,6 +52,13 @@ shortTitle: 降级订阅
|
||||
|
||||
如果将您的组织从 {% data variables.product.prodname_ghe_cloud %} 降级到 {% data variables.product.prodname_team %} 或 {% data variables.product.prodname_free_team %},该帐户将失去对高级安全性、合规性和部署控件的访问权限。 {% data reusables.gated-features.more-info %}
|
||||
|
||||
|
||||
{% note %}
|
||||
|
||||
**注意:** 如果您当前正在试用 {% data variables.product.prodname_ghe_cloud %},并且在试用期结束前未购买 {% data variables.product.prodname_enterprise %} ,则您的组织将自动降级为 {% data variables.product.prodname_free_team %} 或 {% data variables.product.prodname_team %}。 更多信息请参阅“[设置 {% data variables.product.prodname_ghe_cloud %} 的试用](/get-started/signing-up-for-github/setting-up-a-trial-of-github-enterprise-cloud#finishing-your-trial)”。
|
||||
|
||||
{% endnote %}
|
||||
|
||||
{% data reusables.organizations.billing-settings %}
|
||||
1. 在“Current plan(当前计划)”下,使用 **Edit(编辑)**下拉菜单,单击您想要的降级选项。 
|
||||
{% data reusables.dotcom_billing.confirm_cancel_org_plan %}
|
||||
|
||||
@@ -16,17 +16,19 @@ shortTitle: 设置
|
||||
|
||||
This guide shows you how your team can get {% data variables.product.prodname_vs %} subscribers licensed and started with {% data variables.product.prodname_enterprise %}.
|
||||
|
||||
If you prefer video, you can watch [Setting up your {% data variables.product.prodname_enterprise %} licenses with {% data variables.product.prodname_vs %} subscriptions](https://www.youtube.com/watch?v=P_zBgp_BE_I) on Microsoft Visual Studio's YouTube channel.
|
||||
|
||||
## Roles for {% data variables.product.prodname_vss_ghe %}
|
||||
|
||||
Before setting up {% data variables.product.prodname_vss_ghe %}, it's important to understand the roles for this combined offering.
|
||||
|
||||
| Role | 服务 | 描述 | 更多信息 |
|
||||
|:----------------------- |:----------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| **Subscriptions admin** | {% data variables.product.prodname_vs %} subscription | Person who assigns licenses for {% data variables.product.prodname_vs %} subscription | [Overview of admin responsibilities](https://docs.microsoft.com/en-us/visualstudio/subscriptions/admin-responsibilities) in Microsoft Docs |
|
||||
| **Subscriber** | {% data variables.product.prodname_vs %} subscription | Person who uses a license for {% data variables.product.prodname_vs %} subscription | [Visual Studio Subscriptions documentation](https://docs.microsoft.com/en-us/visualstudio/subscriptions/) in Microsoft Docs |
|
||||
| **企业所有者** | {% data variables.product.prodname_dotcom %} | Person who has a user account that's an administrator of an enterprise on {% data variables.product.product_location %} | "[企业中的角色](/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-owner)" |
|
||||
| **Organization owner** | {% data variables.product.prodname_dotcom %} | Person who has a user account that's an owner of an organization in your team's enterprise on {% data variables.product.product_location %} | "[Roles in an organization](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization#organization-owners)" |
|
||||
| **Enterprise member** | {% data variables.product.prodname_dotcom %} | Person who has a user account that's a member of an enterprise on {% data variables.product.product_location %} | "[企业中的角色](/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-members)" |
|
||||
| Role | 服务 | 描述 | 更多信息 |
|
||||
|:----------------------- |:----------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| **Subscriptions admin** | {% data variables.product.prodname_vs %} subscription | Person who assigns licenses for {% data variables.product.prodname_vs %} subscription | [Overview of admin responsibilities](https://docs.microsoft.com/en-us/visualstudio/subscriptions/admin-responsibilities) in Microsoft Docs |
|
||||
| **Subscriber** | {% data variables.product.prodname_vs %} subscription | Person who uses a license for {% data variables.product.prodname_vs %} subscription | [Visual Studio Subscriptions documentation](https://docs.microsoft.com/en-us/visualstudio/subscriptions/) in Microsoft Docs |
|
||||
| **企业所有者** | {% data variables.product.prodname_dotcom %} | Person who has a user account that's an administrator of an enterprise on {% data variables.product.product_location %} | "[企业中的角色](/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-owner)" |
|
||||
| **Organization owner** | {% data variables.product.prodname_dotcom %} | Person who has a user account that's an owner of an organization in your team's enterprise on {% data variables.product.product_location %} | "[组织中的角色](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization#organization-owners)" |
|
||||
| **Enterprise member** | {% data variables.product.prodname_dotcom %} | Person who has a user account that's a member of an enterprise on {% data variables.product.product_location %} | "[企业中的角色](/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-members)" |
|
||||
|
||||
## 基本要求
|
||||
|
||||
@@ -40,7 +42,7 @@ To set up {% data variables.product.prodname_vss_ghe %}, members of your team mu
|
||||
|
||||
One person may be able to complete the tasks because the person has all of the roles, but you may need to coordinate the tasks with multiple people. For more information, see "[Roles for {% data variables.product.prodname_vss_ghe %}](#roles-for-visual-studio-subscriptions-with-github-enterprise)."
|
||||
|
||||
1. An enterprise owner must create at least one organization in your enterprise on {% data variables.product.product_location %}. For more information, see "[Adding organizations to your enterprise](/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise)."
|
||||
1. An enterprise owner must create at least one organization in your enterprise on {% data variables.product.product_location %}. 更多信息请参阅“[将组织添加到企业](/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise)”。
|
||||
|
||||
1. The subscription admin must assign a license for {% data variables.product.prodname_vs %} to a subscriber in {% data variables.product.prodname_vss_admin_portal_with_url %}. For more information, see [Overview of the {% data variables.product.prodname_vs %} Subscriptions Administrator Portal](https://docs.microsoft.com/en-us/visualstudio/subscriptions/using-admin-portal) and [Assign {% data variables.product.prodname_vs %} Licenses in the {% data variables.product.prodname_vs %} Subscriptions Administration Portal](https://docs.microsoft.com/en-us/visualstudio/subscriptions/assign-license) in Microsoft Docs.
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ Any valid SARIF 2.1.0 output file can be uploaded, however, {% data variables.pr
|
||||
| `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`. {% ifversion fpt or ghes > 3.1 or ghae or ghec %}
|
||||
| `properties.problem.severity` | **Recommended.** A string that indicates the level of severity of any alerts generated by a non-security query. This, with the `properties.precision` property, determines whether the results are displayed by default on {% data variables.product.prodname_dotcom %} so that the results with the highest `problem.severity`, and highest `precision` are shown first. Can be one of: `error`, `warning`, or `recommendation`.
|
||||
| `properties.security-severity` | **Recommended.** A score that indicates the level of severity, between 0.0 and 10.0, for security queries (`@tags` includes `security`). This, with the `properties.precision` property, determines whether the results are displayed by default on {% data variables.product.prodname_dotcom %} so that the results with the highest `security-severity`, and highest `precision` are shown first. {% data variables.product.prodname_code_scanning_capc %} translates numerical scores as follows: over 9.0 is `critical`, 7.0 to 8.9 is `high`, 4.0 to 6.9 is `medium` and 3.9 or less is `low`. {% endif %}
|
||||
| `properties.security-severity` | **Recommended.** A string representing a score that indicates the level of severity, between 0.0 and 10.0, for security queries (`@tags` includes `security`). This, with the `properties.precision` property, determines whether the results are displayed by default on {% data variables.product.prodname_dotcom %} so that the results with the highest `security-severity`, and highest `precision` are shown first. {% data variables.product.prodname_code_scanning_capc %} translates numerical scores as follows: over 9.0 is `critical`, 7.0 to 8.9 is `high`, 4.0 to 6.9 is `medium` and 3.9 or less is `low`. {% endif %}
|
||||
|
||||
### `result` object
|
||||
|
||||
@@ -114,7 +114,7 @@ Any valid SARIF 2.1.0 output file can be uploaded, however, {% data variables.pr
|
||||
| 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).
|
||||
| `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). The allowed range for this property 0 to 2^63 - 1.
|
||||
| `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.
|
||||
@@ -129,7 +129,7 @@ A location within a programming artifact, such as a file in the repository or a
|
||||
|
||||
| Name | Description |
|
||||
|----|----|
|
||||
| `location.id` | **Optional.** A unique identifier that distinguishes this location from all other locations within a single result object.
|
||||
| `location.id` | **Optional.** A unique identifier that distinguishes this location from all other locations within a single result object. The allowed range for this property 0 to 2^63 - 1.
|
||||
| `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.
|
||||
|
||||
|
||||
@@ -67,7 +67,6 @@ includeGuides:
|
||||
- /code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/listing-dependencies-configured-for-version-updates
|
||||
- /code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-encrypted-secrets-for-dependabot
|
||||
- /code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-pull-requests-for-dependency-updates
|
||||
- /code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/upgrading-from-dependabotcom-to-github-native-dependabot
|
||||
- /code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-alerts-for-vulnerable-dependencies
|
||||
- /code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-dependabot-security-updates
|
||||
- /code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-managing-vulnerable-dependencies
|
||||
|
||||
@@ -7,6 +7,7 @@ redirect_from:
|
||||
- /github/administering-a-repository/about-github-dependabot-version-updates
|
||||
- /github/administering-a-repository/about-dependabot-version-updates
|
||||
- /code-security/supply-chain-security/about-dependabot-version-updates
|
||||
- /code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/upgrading-from-dependabotcom-to-github-native-dependabot
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghec: '*'
|
||||
|
||||
@@ -15,7 +15,6 @@ topics:
|
||||
- Pull requests
|
||||
children:
|
||||
- /about-dependabot-version-updates
|
||||
- /upgrading-from-dependabotcom-to-github-native-dependabot
|
||||
- /enabling-and-disabling-dependabot-version-updates
|
||||
- /listing-dependencies-configured-for-version-updates
|
||||
- /managing-pull-requests-for-dependency-updates
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
---
|
||||
title: 从 Dependabot.com 上传到 GitHub 原生的 Dependabot
|
||||
intro: 您可以通过合并拉取请求升级到 GitHub 原生的 Dependabot,允许继续更新您的依赖项。
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghec: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Repositories
|
||||
- Dependabot
|
||||
- Version updates
|
||||
- Dependencies
|
||||
redirect_from:
|
||||
- /code-security/supply-chain-security/upgrading-from-dependabotcom-to-github-native-dependabot
|
||||
shortTitle: Dependabot.com 升级
|
||||
---
|
||||
|
||||
{% warning %}
|
||||
|
||||
Dependabot Preview 已在 2021 年 8 月 3 日关闭。 为了继续获取 Dependabot 更新,请迁移到 GitHub 原生的 Dependabot。
|
||||
|
||||
来自 Dependabot Preview 的开放拉取请求将保持开放状态,包括升级到 GitHub 原生 Dependabot 的拉取请求,但自动程序本身将不再适用于您的 {% data variables.product.prodname_dotcom %} 帐户和组织。
|
||||
|
||||
{% endwarning %}
|
||||
|
||||
## 关于从 Dependabot Preview 升级到 {% data variables.product.prodname_dotcom %} 原生的 {% data variables.product.prodname_dependabot %}
|
||||
|
||||
Dependabot Preview 已直接植入 {% data variables.product.prodname_dotcom %},因此您可以将 {% data variables.product.prodname_dependabot %} 与 {% data variables.product.prodname_dotcom %} 中的所有其他功能一起使用,而无需安装和使用单独的应用程序。 通过迁移到 {% data variables.product.prodname_dotcom %} 原生的 {% data variables.product.prodname_dependabot %},我们也可以注重将大量令人兴奋的新功能植入 {% data variables.product.prodname_dependabot %},包括更多的[生态系统更新](https://github.com/github/roadmap/issues/150)、[改进的通知](https://github.com/github/roadmap/issues/133)以及 {% data variables.product.prodname_dependabot %} 对 [{% data variables.product.prodname_ghe_server %}](https://github.com/github/roadmap/issues/86) 和 [{% data variables.product.prodname_ghe_managed %}](https://github.com/github/roadmap/issues/135) 的支持。
|
||||
|
||||
## Dependabot Preview 与 {% data variables.product.prodname_dotcom %} 原生 {% data variables.product.prodname_dependabot %} 之间的差异
|
||||
|
||||
虽然大多数 Dependabot Preview 功能存在于 {% data variables.product.prodname_dotcom %} 原生 {% data variables.product.prodname_dependabot %} 中,但仍有几个功能不可用:
|
||||
- **实时更新:** 我们希望将来恢复这些功能。 现在,您可以每天运行 {% data variables.product.prodname_dotcom %} {% data variables.product.prodname_dependabot %},以便在发布后的一天内捕获新包。
|
||||
- **PHP 环境变量注册表:** 对于依赖 `ACF_PRO_KEY` 环境变量的项目,您也许能够提供 Advanced Custom Fields 插件的许可副本。 相关示例请参阅 [dependabot/acf-php-example](https://github.com/dependabot/acf-php-example#readme)。 对于其他环境变量,您可以使用 {% data variables.product.prodname_actions %} 从这些注册表中获取依赖项。
|
||||
- **自动合并:**我们始终建议您在合并依赖项之前先验证它们;因此,在可预见的将来将不支持自动合并。 对于那些已审核依赖项或仅使用内部依赖项的用户,我们建议添加第三方自动合并应用程序,或设置用于合并的 GitHub Actions。 我们提供了 [`dependabot/fetch-metadata`](https://github.com/marketplace/actions/fetch-metadata-from-dependabot-prs) 操作来帮助开发者[启用 GitHub 的自动合并](https://github.com/dependabot/fetch-metadata/#enabling-auto-merge)。
|
||||
|
||||
在 {% data variables.product.prodname_dotcom %}-原生 {% data variables.product.prodname_dependabot %} 中,您可以使用配置文件配置所有版本更新。 此文件类似于 Dependabot Preview 配置文件,其中包含一些将自动包含在升级拉取请求中的更改和改进。 有关升级拉取请求的更多信息,请参阅“[升级到 GitHub 原生 Dependabot](/code-security/supply-chain-security/upgrading-from-dependabotcom-to-github-native-dependabot#upgrading-to-github-native-dependabot)”。
|
||||
|
||||
要查看以前在 Dependabot.com 仪表板上的 {% data variables.product.prodname_dotcom %}-原生 {% data variables.product.prodname_dependabot %} 的更新日志:
|
||||
|
||||
1. 导航到仓库的 **Insights(洞察)**页面。
|
||||
2. 单击左侧的 **Dependency graph(依赖项图)**。
|
||||
3. 单击 **{% data variables.product.prodname_dependabot %}**。
|
||||
|
||||
有关 {% data variables.product.prodname_dotcom %}-原生 {% data variables.product.prodname_dependabot %} 版本更新的更多信息,请参阅“[关于 Dependabot 版本更新](/code-security/supply-chain-security/about-dependabot-version-updates)”。
|
||||
|
||||
## 升级到 {% data variables.product.prodname_dotcom %}-原生 {% data variables.product.prodname_dependabot %}
|
||||
|
||||
从 Depabot Preview 升级到 {% data variables.product.prodname_dotcom %}-原生 {% data variables.product.prodname_dependabot %} 需要您合并仓库中的*升级到 GitHub-原生 Dependabot* 拉取请求。 此拉取请求包括 {% data variables.product.prodname_dotcom %}-原生 {% data variables.product.prodname_dependabot %} 所需的更新配置文件。
|
||||
|
||||
如果使用私有仓库,则必须在组织的安全和分析设置中授予 Dependabot 访问这些仓库的权限。 更多信息请参阅“[允许 Dependabot 访问私有依赖项](/organizations/keeping-your-organization-secure/managing-security-and-analysis-settings-for-your-organization#allowing-dependabot-to-access-private-dependencies)”。 以前,Dependabot 可以访问组织内的所有仓库,但是我们实施了此更改,因为对 Dependabot 使用最小权限原则更为安全。
|
||||
|
||||
如果使用私人注册表,则必须将现有的 Dependabot Preview 密钥添加到仓库或组织的“ Dependabot 密钥”中。 更多信息请参阅“[管理 Dependabot 的加密密码](/code-security/supply-chain-security/managing-encrypted-secrets-for-dependabot)”。
|
||||
|
||||
如果您在迁移方面有任何问题或需要帮助,您可以在 [`dependabot/dependabot-core`](https://github.com/dependabot/dependabot-core/issues/new?assignees=%40dependabot%2Fpreview-migration-reviewers&labels=E%3A+preview-migration&template=migration-issue.md&title=) 仓库中查看或打开议题。
|
||||
@@ -54,7 +54,7 @@ topics:
|
||||
1. 查看漏洞的详细信息以及包含自动安全更新的拉取请求(如果有)。
|
||||
1. (可选)如果还没有针对该警报的 {% data variables.product.prodname_dependabot_security_updates %} 更新,要创建拉取请求以解决该漏洞,请单击 **Create {% data variables.product.prodname_dependabot %} security update(创建 Dependabot 安全更新)**。 
|
||||
1. 当您准备好更新依赖项并解决漏洞时,合并拉取请求。 {% data variables.product.prodname_dependabot %} 提出的每个拉取请求都包含可用于控制 {% data variables.product.prodname_dependabot %} 的命令的相关信息。 更多信息请参阅“[管理依赖项更新的拉取请求](/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-pull-requests-for-dependency-updates#managing-dependabot-pull-requests-with-comment-commands)”。
|
||||
1. (可选)如果警报正在修复、不正确或位于未使用的代码中,请选择“Dismiss(忽略)”,然后单击忽略警报的原因。 
|
||||
1. Optionally, if the alert is being fixed, if it's incorrect, or located in unused code, select the "Dismiss" dropdown, and click a reason for dismissing the alert.{% if reopen-dependabot-alerts %} Unfixed dismissed alerts can be reopened later.{% endif %} 
|
||||
|
||||
{% elsif ghes = 3.3 %}
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
@@ -83,6 +83,19 @@ topics:
|
||||
1. **Dependencies(依赖项)**选项卡顶部的横幅将会显示,直到解决所有漏洞依赖项或者您忽略该横幅。 单击横幅右上角的 **Dismiss(忽略)**并选择忽略警报的原因。 
|
||||
{% endif %}
|
||||
|
||||
{% if reopen-dependabot-alerts %}
|
||||
|
||||
## Viewing and updating closed alerts
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-security %}
|
||||
{% data reusables.repositories.sidebar-dependabot-alerts %}
|
||||
1. To just view closed alerts, click **Closed**. 
|
||||
1. Click the alert that you would like to view or update. 
|
||||
2. Optionally, if the alert was dismissed and you wish to reopen it, click **Reopen**. 
|
||||
|
||||
{% endif %}
|
||||
|
||||
## 延伸阅读
|
||||
|
||||
- "[关于有漏洞依赖项的警报](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)" {% ifversion fpt or ghec or ghes > 3.2 %}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Enabling Codespaces for your organization
|
||||
shortTitle: Enable Codespaces
|
||||
title: 为组织启用 Codespaces
|
||||
shortTitle: 启用 Codespaces
|
||||
intro: '您可以控制组织中的哪些用户可以使用 {% data variables.product.prodname_codespaces %}。'
|
||||
product: '{% data reusables.gated-features.codespaces %}'
|
||||
permissions: 'To manage user permissions for {% data variables.product.prodname_codespaces %} for an organization, you must be an organization owner.'
|
||||
@@ -17,20 +17,20 @@ topics:
|
||||
---
|
||||
|
||||
|
||||
## About enabling {% data variables.product.prodname_codespaces %} for your organization
|
||||
## 关于为组织启用 {% data variables.product.prodname_codespaces %}
|
||||
|
||||
组织所有者可以控制组织中的哪些用户可以创建和使用代码空间。
|
||||
|
||||
To use codespaces in your organization, you must do the following:
|
||||
要在组织中使用 Codespaces,必须执行以下操作:
|
||||
|
||||
- Ensure that users have [at least write access](/organizations/managing-access-to-your-organizations-repositories/repository-permission-levels-for-an-organization) to the repositories where they want to use a codespace.
|
||||
- [Enable {% data variables.product.prodname_codespaces %} for users in your organization](#enable-codespaces-for-users-in-your-organization). You can choose allow {% data variables.product.prodname_codespaces %} for selected users or only for specific users.
|
||||
- 确保用户他们要在其中使用代码空间的存储库[至少具有写入权限](/organizations/managing-access-to-your-organizations-repositories/repository-permission-levels-for-an-organization)。
|
||||
- [为组织中的用户启用 {% data variables.product.prodname_codespaces %}](#enable-codespaces-for-users-in-your-organization)。 您可以选择允许所选用户使用 {% data variables.product.prodname_codespaces %} ,也可以选择仅允许特定用户使用。
|
||||
- [设置支出限制](/billing/managing-billing-for-github-codespaces/managing-spending-limits-for-codespaces)
|
||||
- 确保您的组织未启用 IP 地址允许列表。 更多信息请参阅“[管理组织允许的 IP 地址](/organizations/keeping-your-organization-secure/managing-allowed-ip-addresses-for-your-organization)”。
|
||||
|
||||
默认情况下,代码空间只能访问从中创建它的存储库。 如果您希望组织中的代码空间能够访问代码空间创建者可以访问的其他组织仓库,请参阅“[管理 {% data variables.product.prodname_codespaces %} 的访问和安全](/codespaces/managing-codespaces-for-your-organization/managing-access-and-security-for-your-organizations-codespaces)”。
|
||||
|
||||
## Enable {% data variables.product.prodname_codespaces %} for users in your organization
|
||||
## 为组织中的用户启用 {% data variables.product.prodname_codespaces %}
|
||||
|
||||
{% data reusables.profile.access_org %}
|
||||
{% data reusables.profile.org_settings %}
|
||||
@@ -38,25 +38,25 @@ To use codespaces in your organization, you must do the following:
|
||||
1. 在“User permissions(用户权限)”下,选择以下选项之一:
|
||||
|
||||
* **Selected users(所选用户)**选择特定组织成员使用 {% data variables.product.prodname_codespaces %}。
|
||||
* **Allow for all members** to allow all your organization members to use {% data variables.product.prodname_codespaces %}.
|
||||
* **Allow for all members and outside collaborators** to allow all your organization members as well as outside collaborators to use {% data variables.product.prodname_codespaces %}.
|
||||
* **允许所有成员**以允许所有组织成员使用 {% data variables.product.prodname_codespaces %}。
|
||||
* **允许所有成员和外部协作者**以允许所有组织成员以及外部协作者使用 {% data variables.product.prodname_codespaces %}。
|
||||
|
||||

|
||||
|
||||
{% note %}
|
||||
|
||||
**Note:** When you select **Allow for all members and outside collaborators**, all outside collaborators who have been added to specific repositories can create and use {% data variables.product.prodname_codespaces %}. Your organization will be billed for all usage incurred by outside collaborators. For more information on managing outside collaborators, see "[About outside collaborators](/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization#about-outside-collaborators)."
|
||||
**注意:** 当您选择 **Allow for all members and outside collaborators(允许所有成员和外部协作者)**时,所有已添加到特定存储库的外部协作者都可以创建和使用 {% data variables.product.prodname_codespaces %}。 您的组织将对外部协作者发生的所有使用付费。 有关管理外部协作者的详细信息,请参阅“[关于外部协作者](/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization#about-outside-collaborators)”。
|
||||
|
||||
{% endnote %}
|
||||
|
||||
1. 单击 **Save(保存)**。
|
||||
|
||||
## Disabling {% data variables.product.prodname_codespaces %} for your organization
|
||||
## 为组织禁用 {% data variables.product.prodname_codespaces %}
|
||||
|
||||
{% data reusables.profile.access_org %}
|
||||
{% data reusables.profile.org_settings %}
|
||||
{% data reusables.organizations.click-codespaces %}
|
||||
1. Under "User permissions", select **Disabled**.
|
||||
1. 在“User permissions(用户权限)”下,选择 **Disabled(已禁用)**。
|
||||
|
||||
## 设置支出限制
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Managing repository access for your organization's codespaces
|
||||
title: 管理组织代码空间的存储库访问
|
||||
shortTitle: 存储库访问
|
||||
intro: '您可以管理 {% data variables.product.prodname_codespaces %} 可以访问的组织仓库。'
|
||||
product: '{% data reusables.gated-features.codespaces %}'
|
||||
@@ -18,7 +18,7 @@ redirect_from:
|
||||
- /codespaces/working-with-your-codespace/managing-access-and-security-for-codespaces
|
||||
---
|
||||
|
||||
默认情况下,代码空间只能访问创建它的仓库。 When you enable access and security for a repository owned by your organization, any codespaces that are created for that repository will also have read permissions to all other repositories the organization owns and the codespace creator has permissions to access. If you want to restrict the repositories a codespace can access, you can limit it to either the repository where the codespace was created, or to specific repositories. 您应该只对您信任的仓库启用访问和安全。
|
||||
默认情况下,代码空间只能访问创建它的仓库。 当您为组织拥有的存储库启用访问和安全性时,为该存储库创建的任何代码空间也将对组织拥有的所有其他存储库具有读取权限,并且代码空间创建者具有访问权限。 如果要限制代码空间可以访问的存储库,可以将其限制为创建代码空间的存储库或特定存储库。 您应该只对您信任的仓库启用访问和安全。
|
||||
|
||||
要管理组织中的哪些用户可以使用 {% data variables.product.prodname_codespaces %},请参阅“[管理组织的用户权限](/codespaces/managing-codespaces-for-your-organization/managing-user-permissions-for-your-organization)”。
|
||||
|
||||
@@ -30,4 +30,4 @@ redirect_from:
|
||||
|
||||
## 延伸阅读
|
||||
|
||||
- "[Managing repository access for your codespaces](/codespaces/managing-your-codespaces/managing-repository-access-for-your-codespaces)"
|
||||
- "[管理代码空间的存储库访问](/codespaces/managing-your-codespaces/managing-repository-access-for-your-codespaces)"
|
||||
|
||||
@@ -320,6 +320,16 @@ GitHub 尝试自动更改拉取请求的基本分支已成功。
|
||||
|:-------------------------- |:--------:|:---------:|
|
||||
| <ul><li>拉取请求</li></ul> | **X** | **X** |
|
||||
|
||||
## head_ref_force_pushed
|
||||
|
||||
The pull request's HEAD branch was force pushed.
|
||||
|
||||
### 可用性
|
||||
|
||||
| 议题类型 | 议题事件 API | 时间表事件 API |
|
||||
|:-------------------------- |:--------:|:---------:|
|
||||
| <ul><li>拉取请求</li></ul> | **X** | **X** |
|
||||
|
||||
### 事件对象属性
|
||||
|
||||
{% data reusables.issue-events.issue-event-common-properties %}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Repl.it with GitHub Classroom
|
||||
shortTitle: Repl.it with GitHub Classroom
|
||||
intro: 'As of July 13 2021, Repl.it integration is no longer available in {% data variables.product.prodname_classroom %}.'
|
||||
title: 使用 GitHub Classroom 的 Repl.it
|
||||
shortTitle: 使用 GitHub Classroom 的 Repl.it
|
||||
intro: '自 2021 年 7 月 13 日起,Repl.it 集成在 {% data variables.product.prodname_classroom %} 中不再可用。'
|
||||
versions:
|
||||
fpt: '*'
|
||||
redirect_from:
|
||||
@@ -10,19 +10,19 @@ redirect_from:
|
||||
- /education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/about-using-replit-with-github-classroom
|
||||
---
|
||||
|
||||
## What’s changing with Repl.it integration
|
||||
## Repl.it 集成有什么变化
|
||||
|
||||
As of July 13 2021, Repl.it integration is no longer available. Here’s what’s changed:
|
||||
自 2021 年 7 月 13 日起,Repl.it 集成不再可用。 变化如下:
|
||||
|
||||
- New private and public repls can no longer be created from within GitHub Classroom.
|
||||
- Replit Hacker benefits, such as Always On and Boosts, are no longer available for new GitHub Classroom users.
|
||||
- 无法再从 GitHub Classroom 中创建新的私有和公共版本。
|
||||
- Replit Hacker 的权益(如 Always On 和 Boosts)不再适用于新的 GitHub Classroom 用户。
|
||||
|
||||
## What does this mean for existing assignments?
|
||||
Your existing GitHub Classroom repls will remain private forever and you can submit work to GitHub Classroom via these repls until September 30 2021. After September 2021, the Replit icon on the assignment README will no longer work. We suggest you remove the instructions from any README using the integration and let students know that the icon will no longer work.
|
||||
## 这对现有作业意味着什么?
|
||||
您现有的 GitHub Classroom 回复将永远保持私密状态,在 2021 年 9 月 30 日之前您可以通过这些回复向 GitHub Classroom 提交作业。 2021 年 9 月之后,作业自述文件上的 Replit 图标将不再有效。 我们建议您使用集成从任何自述文件中删除说明,并让学生知道该图标将不再有效。
|
||||
|
||||
While you can no longer create private repls from within Classroom, you can continue to create private repls in Replit until September 30th.
|
||||
虽然您无法再在 Classroom 中创建私有回复,但在 9 月 30 日之前您可以继续在 Replit 中创建私密回复。
|
||||
|
||||
We know cloud IDE integrations are important to your classroom and are working hard to bring you more options.
|
||||
我们知道云 IDE 集成对您的课堂很重要,正在努力为您带来更多选择。
|
||||
|
||||
## 延伸阅读
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Using GitHub CLI extensions
|
||||
intro: 'Learn how to use custom extensions written by other {% data variables.product.prodname_cli %} users.'
|
||||
title: 使用 GitHub CLI 扩展
|
||||
intro: '了解如何使用其他 {% data variables.product.prodname_cli %} 用户编写的自定义扩展。'
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghes: '*'
|
||||
@@ -14,21 +14,21 @@ topics:
|
||||
|
||||
{% note %}
|
||||
|
||||
**Note:** Extensions outside of {% data variables.product.product_name %} and {% data variables.product.prodname_cli %} are not certified by {% data variables.product.product_name %} and are governed by separate terms of service, privacy policy, and support documentation. To mitigate risk when using third-party extensions, audit the source code of the extension before installing or updating the extension.
|
||||
**注意: {% data variables.product.product_name %} 和 {% data variables.product.prodname_cli %} 以外的** 扩展未经 {% data variables.product.product_name %} 认证,并受单独的服务条款、隐私政策和支持文档的约束。 要在使用第三方扩展时降低风险,请在安装或更新扩展之前审核扩展的源代码。
|
||||
|
||||
{% endnote %}
|
||||
|
||||
{% data reusables.cli.cli-extensions %} For more information about how to create {% data variables.product.prodname_cli %} extensions, see "[Creating {% data variables.product.prodname_cli %} extensions](/github-cli/github-cli/creating-github-cli-extensions)."
|
||||
{% data reusables.cli.cli-extensions %} 有关如何创建 {% data variables.product.prodname_cli %} 扩展的详细信息,请参阅“[创建 {% data variables.product.prodname_cli %} 扩展](/github-cli/github-cli/creating-github-cli-extensions)”。
|
||||
|
||||
Extensions are locally installed and are scoped to the user. Therefore, if you access {% data variables.product.prodname_cli %} from a different machine or another user accesses {% data variables.product.prodname_cli %} from the same machine, the extension will not be available.
|
||||
扩展在本地安装,范围限定为用户。 因此,如果您从另一台计算机访问 {% data variables.product.prodname_cli %} ,或者其他用户从同一台计算机访问 {% data variables.product.prodname_cli %} ,则该扩展将不可用。
|
||||
|
||||
## Finding extensions
|
||||
## 查找扩展
|
||||
|
||||
You can find extensions by browsing [repositories with the `gh-extension` topic](https://github.com/topics/gh-extension).
|
||||
您可以通过浏览[具有 `gh-extension` 主题的存储库](https://github.com/topics/gh-extension)来查找扩展。
|
||||
|
||||
## Installing extensions
|
||||
## 安装扩展
|
||||
|
||||
To install an extension, use the `extensions install` subcommand. Replace the `repo` parameter with the repository of the extension. You can use the full URL, such as `https://github.com/octocat/gh-whoami`, or just the owner and repository, such as `octocat/gh-whoami`.
|
||||
要安装扩展,请使用 `extensions install` 子命令。 将 `repo` 参数替换为扩展的存储库。 You can use the full URL, such as `https://github.com/octocat/gh-whoami`, or just the owner and repository, such as `octocat/gh-whoami`.
|
||||
|
||||
If the owner and repository are used, `gh` will install the extension using the hostname to which `gh` is currently authenticated. The full URL format is useful when installing extensions from a different host. For example, users on {% data variables.product.prodname_ghe_server %} should use the full repository URL to install extensions from {% data variables.product.prodname_dotcom_the_website %} or any other host.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: 管理组织允许的 IP 地址
|
||||
intro: 您可以通过配置允许连接的 IP 地址列表来限制对组织资产的访问。
|
||||
intro: You can restrict access to your organization's private assets by configuring a list of IP addresses that are allowed to connect.
|
||||
product: '{% data reusables.gated-features.allowed-ip-addresses %}'
|
||||
redirect_from:
|
||||
- /github/setting-up-and-managing-organizations-and-teams/managing-allowed-ip-addresses-for-your-organization
|
||||
@@ -19,7 +19,7 @@ shortTitle: 管理允许的 IP 地址
|
||||
|
||||
## 关于允许的 IP 地址
|
||||
|
||||
您可以通过为特定 IP 地址配置允许列表来限制对组织资产的访问。 {% data reusables.identity-and-permissions.ip-allow-lists-example-and-restrictions %}
|
||||
You can restrict access to private 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 %}
|
||||
|
||||
@@ -27,7 +27,7 @@ shortTitle: 管理允许的 IP 地址
|
||||
|
||||
如果您设置了允许列表,您还可以选择将为组织中安装的 {% data variables.product.prodname_github_apps %} 配置的任何 IP 地址自动添加到允许列表中。 {% data variables.product.prodname_github_app %} 的创建者可以为其应用程序配置允许列表,指定应用程序运行的 IP 地址。 通过将允许列表继承到您的列表中,您可以避免申请中的连接请求被拒绝。 更多信息请参阅“[允许 {% data variables.product.prodname_github_apps %} 访问](#allowing-access-by-github-apps)”。
|
||||
|
||||
您还可以为企业帐户中的组织配置允许的 IP 地址。 更多信息请参阅“[在企业中实施安全设置策略](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise)”。
|
||||
您还可以为企业帐户中的组织配置允许的 IP 地址。 更多信息请参阅“[在企业中实施安全设置策略](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-allowed-ip-addresses-for-organizations-in-your-enterprise)”。
|
||||
|
||||
## 添加允许的 IP 地址
|
||||
|
||||
|
||||
@@ -60,94 +60,98 @@ In addition to managing organization-level settings, organization owners have ad
|
||||
|
||||
{% endnote %}
|
||||
{% endif %}
|
||||
| 仓库操作 | 读取 | 分类 | 写入 | 维护 | 管理员 |
|
||||
|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:-----:|:-----:|:-----:|:-----:|:---------------------------------------------:|
|
||||
| Manage [individual](/organizations/managing-access-to-your-organizations-repositories/managing-an-individuals-access-to-an-organization-repository), [team](/organizations/managing-access-to-your-organizations-repositories/managing-team-access-to-an-organization-repository), and [outside collaborator](/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization) access to the repository | | | | | **X** |
|
||||
| 从人员或团队的已分配仓库拉取 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 复刻人员或团队的已分配仓库 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 编辑和删除自己的评论 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 打开议题 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 关闭自己打开的议题 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 重新打开自己关闭的议题 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 受理议题 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 从团队已分配仓库的复刻发送拉取请求 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 提交拉取请求审查 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 查看已发布的版本 | **X** | **X** | **X** | **X** | **X** |{% ifversion fpt or ghec %}
|
||||
| 查看 [GitHub Actions 工作流程运行](/actions/automating-your-workflow-with-github-actions/managing-a-workflow-run) | **X** | **X** | **X** | **X** | **X**
|
||||
| 仓库操作 | 读取 | 分类 | 写入 | 维护 | 管理员 |
|
||||
|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:-----:|:-----:|:-----:|:-----:|:-------------------------------------------------------------------:|
|
||||
| Manage [individual](/organizations/managing-access-to-your-organizations-repositories/managing-an-individuals-access-to-an-organization-repository), [team](/organizations/managing-access-to-your-organizations-repositories/managing-team-access-to-an-organization-repository), and [outside collaborator](/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization) access to the repository | | | | | **X** |
|
||||
| 从人员或团队的已分配仓库拉取 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 复刻人员或团队的已分配仓库 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 编辑和删除自己的评论 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 打开议题 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 关闭自己打开的议题 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 重新打开自己关闭的议题 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 受理议题 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 从团队已分配仓库的复刻发送拉取请求 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 提交拉取请求审查 | **X** | **X** | **X** | **X** | **X** |
|
||||
| 查看已发布的版本 | **X** | **X** | **X** | **X** | **X** |{% ifversion fpt or ghec %}
|
||||
| 查看 [GitHub Actions 工作流程运行](/actions/automating-your-workflow-with-github-actions/managing-a-workflow-run) | **X** | **X** | **X** | **X** | **X**
|
||||
{% endif %}
|
||||
| 编辑公共仓库中的 Wiki | **X** | **X** | **X** | **X** | **X** |
|
||||
| 编辑私有仓库中的 Wiki | | | **X** | **X** | **X** |{% ifversion fpt or ghec %}
|
||||
| [举报滥用或垃圾内容](/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam) | **X** | **X** | **X** | **X** | **X**
|
||||
| 编辑公共仓库中的 Wiki | **X** | **X** | **X** | **X** | **X** |
|
||||
| 编辑私有仓库中的 Wiki | | | **X** | **X** | **X** |{% ifversion fpt or ghec %}
|
||||
| [举报滥用或垃圾内容](/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam) | **X** | **X** | **X** | **X** | **X**
|
||||
{% endif %}
|
||||
| 应用/忽略标签 | | **X** | **X** | **X** | **X** |
|
||||
| 创建、编辑、删除标签 | | | **X** | **X** | **X** |
|
||||
| 关闭、重新打开和分配所有议题与拉取请求 | | **X** | **X** | **X** | **X** |
|
||||
| [在拉取请求上启用和禁用自动合并](/github/administering-a-repository/managing-auto-merge-for-pull-requests-in-your-repository) | | | **X** | **X** | **X** |
|
||||
| 应用里程碑 | | **X** | **X** | **X** | **X** |
|
||||
| 标记[重复的议题和拉取请求](/articles/about-duplicate-issues-and-pull-requests) | | **X** | **X** | **X** | **X** |
|
||||
| 申请[拉取请求审查](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review) | | **X** | **X** | **X** | **X** |
|
||||
| 合并[拉取请求](/github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges) | | | **X** | **X** | **X** |
|
||||
| 推送到(写入)人员或团队的已分配仓库 | | | **X** | **X** | **X** |
|
||||
| 编辑和删除任何人对提交、拉取请求和议题的评论 | | | **X** | **X** | **X** |
|
||||
| [隐藏任何人的评论](/communities/moderating-comments-and-conversations/managing-disruptive-comments) | | | **X** | **X** | **X** |
|
||||
| [锁定对话](/communities/moderating-comments-and-conversations/locking-conversations) | | | **X** | **X** | **X** |
|
||||
| 转让议题(更多信息请参阅“[将议题转让给其他仓库](/articles/transferring-an-issue-to-another-repository)”) | | | **X** | **X** | **X** |
|
||||
| [作为仓库的指定代码所有者](/articles/about-code-owners) | | | **X** | **X** | **X** |
|
||||
| [将拉取请求草稿标记为可供审查](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request) | | | **X** | **X** | **X** |
|
||||
| [将拉取请求转换为草稿](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request) | | | **X** | **X** | **X** |
|
||||
| 提交影响拉取请求可合并性的审查 | | | **X** | **X** | **X** |
|
||||
| 对拉取请求[应用建议的更改](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request) | | | **X** | **X** | **X** |
|
||||
| 创建[状态检查](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks) | | | **X** | **X** | **X** |{% ifversion fpt or ghec %}
|
||||
| 创建、编辑、运行、重新运行和取消 [GitHub Actions 工作流程](/actions/automating-your-workflow-with-github-actions/) | | | **X** | **X** | **X**
|
||||
| 应用/忽略标签 | | **X** | **X** | **X** | **X** |
|
||||
| 创建、编辑、删除标签 | | | **X** | **X** | **X** |
|
||||
| 关闭、重新打开和分配所有议题与拉取请求 | | **X** | **X** | **X** | **X** |
|
||||
| [在拉取请求上启用和禁用自动合并](/github/administering-a-repository/managing-auto-merge-for-pull-requests-in-your-repository) | | | **X** | **X** | **X** |
|
||||
| 应用里程碑 | | **X** | **X** | **X** | **X** |
|
||||
| 标记[重复的议题和拉取请求](/articles/about-duplicate-issues-and-pull-requests) | | **X** | **X** | **X** | **X** |
|
||||
| 申请[拉取请求审查](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review) | | **X** | **X** | **X** | **X** |
|
||||
| 合并[拉取请求](/github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges) | | | **X** | **X** | **X** |
|
||||
| 推送到(写入)人员或团队的已分配仓库 | | | **X** | **X** | **X** |
|
||||
| 编辑和删除任何人对提交、拉取请求和议题的评论 | | | **X** | **X** | **X** |
|
||||
| [隐藏任何人的评论](/communities/moderating-comments-and-conversations/managing-disruptive-comments) | | | **X** | **X** | **X** |
|
||||
| [锁定对话](/communities/moderating-comments-and-conversations/locking-conversations) | | | **X** | **X** | **X** |
|
||||
| 转让议题(更多信息请参阅“[将议题转让给其他仓库](/articles/transferring-an-issue-to-another-repository)”) | | | **X** | **X** | **X** |
|
||||
| [作为仓库的指定代码所有者](/articles/about-code-owners) | | | **X** | **X** | **X** |
|
||||
| [将拉取请求草稿标记为可供审查](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request) | | | **X** | **X** | **X** |
|
||||
| [将拉取请求转换为草稿](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request) | | | **X** | **X** | **X** |
|
||||
| 提交影响拉取请求可合并性的审查 | | | **X** | **X** | **X** |
|
||||
| 对拉取请求[应用建议的更改](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request) | | | **X** | **X** | **X** |
|
||||
| 创建[状态检查](/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks) | | | **X** | **X** | **X** |{% ifversion fpt or ghec %}
|
||||
| 创建、编辑、运行、重新运行和取消 [GitHub Actions 工作流程](/actions/automating-your-workflow-with-github-actions/) | | | **X** | **X** | **X**
|
||||
{% endif %}
|
||||
| 创建和编辑发行版 | | | **X** | **X** | **X** |
|
||||
| 查看发行版草稿 | | | **X** | **X** | **X** |
|
||||
| 编辑仓库的说明 | | | | **X** | **X** |{% ifversion fpt or ghae or ghec %}
|
||||
| [查看和安装包](/packages/publishing-and-managing-packages) | **X** | **X** | **X** | **X** | **X** |
|
||||
| [发布包](/packages/publishing-and-managing-packages/publishing-a-package) | | | **X** | **X** | **X** |
|
||||
| [删除和恢复包](/packages/learn-github-packages/deleting-and-restoring-a-package) | | | | | **X** |{% endif %}
|
||||
| 管理[主题](/articles/classifying-your-repository-with-topics) | | | | **X** | **X** |
|
||||
| 启用 wiki 和限制 wiki 编辑器 | | | | **X** | **X** |
|
||||
| 启用项目板 | | | | **X** | **X** |
|
||||
| 配置[拉取请求合并](/articles/configuring-pull-request-merges) | | | | **X** | **X** |
|
||||
| 配置[ {% data variables.product.prodname_pages %} 的发布源](/articles/configuring-a-publishing-source-for-github-pages) | | | | **X** | **X** |
|
||||
| [推送到受保护分支](/articles/about-protected-branches) | | | | **X** | **X** |
|
||||
| [创建和编辑仓库社交卡](/articles/customizing-your-repositorys-social-media-preview) | | | | **X** | **X** |{% ifversion fpt or ghec %}
|
||||
| 限制[仓库中的交互](/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository) | | | | **X** | **X**
|
||||
| 创建和编辑发行版 | | | **X** | **X** | **X** |
|
||||
| 查看发行版草稿 | | | **X** | **X** | **X** |
|
||||
| 编辑仓库的说明 | | | | **X** | **X** |{% ifversion fpt or ghae or ghec %}
|
||||
| [查看和安装包](/packages/publishing-and-managing-packages) | **X** | **X** | **X** | **X** | **X** |
|
||||
| [发布包](/packages/publishing-and-managing-packages/publishing-a-package) | | | **X** | **X** | **X** |
|
||||
| [删除和恢复包](/packages/learn-github-packages/deleting-and-restoring-a-package) | | | | | **X** |{% endif %}
|
||||
| 管理[主题](/articles/classifying-your-repository-with-topics) | | | | **X** | **X** |
|
||||
| 启用 wiki 和限制 wiki 编辑器 | | | | **X** | **X** |
|
||||
| 启用项目板 | | | | **X** | **X** |
|
||||
| 配置[拉取请求合并](/articles/configuring-pull-request-merges) | | | | **X** | **X** |
|
||||
| 配置[ {% data variables.product.prodname_pages %} 的发布源](/articles/configuring-a-publishing-source-for-github-pages) | | | | **X** | **X** |
|
||||
| [Manage branch protection rules](/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/managing-a-branch-protection-rule) | | | | | **X** |
|
||||
| [推送到受保护分支](/articles/about-protected-branches) | | | | **X** | **X** |
|
||||
| 合并受保护分支上的拉取请求(即使没有批准审查) | | | | | **X** |{% ifversion fpt or ghes > 3.4 or ghae-issue-6337 or ghec %}
|
||||
| Create tags that match a [tag protection rule](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-tag-protection-rules) | | | | **X** | **X** |
|
||||
| Delete tags that match a [tag protection rule](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-tag-protection-rules) | | | | | **X**
|
||||
{% endif %}
|
||||
| 删除议题(请参阅“[删除议题](/articles/deleting-an-issue)”) | | | | | **X** |
|
||||
| 合并受保护分支上的拉取请求(即使没有批准审查) | | | | | **X** |
|
||||
| [定义仓库的代码所有者](/articles/about-code-owners) | | | | | **X** |
|
||||
| 将仓库添加到团队(详细信息请参阅“[管理团队对组织仓库的访问](/organizations/managing-access-to-your-organizations-repositories/managing-team-access-to-an-organization-repository#giving-a-team-access-to-a-repository)”) | | | | | **X** |
|
||||
| [管理外部协作者对仓库的权限](/articles/adding-outside-collaborators-to-repositories-in-your-organization) | | | | | **X** |
|
||||
| [更改仓库的可见性](/articles/restricting-repository-visibility-changes-in-your-organization) | | | | | **X** |
|
||||
| 将仓库设为模板(请参阅“[创建模板仓库](/articles/creating-a-template-repository)”) | | | | | **X** |
|
||||
| 更改仓库设置 | | | | | **X** |
|
||||
| 管理团队和协作者对仓库的权限 | | | | | **X** |
|
||||
| 编辑仓库的默认分支 | | | | | **X** |
|
||||
| 重命名仓库的默认分支(请参阅“[重命名分支](/github/administering-a-repository/renaming-a-branch)”) | | | | | **X** |
|
||||
| 重命名仓库默认分支以外的分支(请参阅“[重命名分支](/github/administering-a-repository/renaming-a-branch)”) | | | **X** | **X** | **X** |
|
||||
| 管理 web 挂钩和部署密钥 | | | | | **X** |{% ifversion fpt or ghec %}
|
||||
| [管理私有仓库的数据使用设置](/get-started/privacy-on-github/managing-data-use-settings-for-your-private-repository) | | | | | **X**
|
||||
| [创建和编辑仓库社交卡](/articles/customizing-your-repositorys-social-media-preview) | | | | **X** | **X** |{% ifversion fpt or ghec %}
|
||||
| 限制[仓库中的交互](/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository) | | | | **X** | **X**
|
||||
{% endif %}
|
||||
| [管理仓库的复刻策略](/github/administering-a-repository/managing-the-forking-policy-for-your-repository) | | | | | **X** |
|
||||
| [将仓库转让给组织](/articles/restricting-repository-creation-in-your-organization) | | | | | **X** |
|
||||
| [删除仓库或将仓库转让到组织外部](/articles/setting-permissions-for-deleting-or-transferring-repositories) | | | | | **X** |
|
||||
| [存档仓库](/articles/about-archiving-repositories) | | | | | **X** |{% ifversion fpt or ghec %}
|
||||
| 显示赞助按钮(请参阅“[在仓库中显示赞助按钮](/articles/displaying-a-sponsor-button-in-your-repository)”)。 | | | | | **X**
|
||||
| 删除议题(请参阅“[删除议题](/articles/deleting-an-issue)”) | | | | | **X** |
|
||||
| [定义仓库的代码所有者](/articles/about-code-owners) | | | | | **X** |
|
||||
| 将仓库添加到团队(详细信息请参阅“[管理团队对组织仓库的访问](/organizations/managing-access-to-your-organizations-repositories/managing-team-access-to-an-organization-repository#giving-a-team-access-to-a-repository)”) | | | | | **X** |
|
||||
| [管理外部协作者对仓库的权限](/articles/adding-outside-collaborators-to-repositories-in-your-organization) | | | | | **X** |
|
||||
| [更改仓库的可见性](/articles/restricting-repository-visibility-changes-in-your-organization) | | | | | **X** |
|
||||
| 将仓库设为模板(请参阅“[创建模板仓库](/articles/creating-a-template-repository)”) | | | | | **X** |
|
||||
| 更改仓库设置 | | | | | **X** |
|
||||
| 管理团队和协作者对仓库的权限 | | | | | **X** |
|
||||
| 编辑仓库的默认分支 | | | | | **X** |
|
||||
| 重命名仓库的默认分支(请参阅“[重命名分支](/github/administering-a-repository/renaming-a-branch)”) | | | | | **X** |
|
||||
| 重命名仓库默认分支以外的分支(请参阅“[重命名分支](/github/administering-a-repository/renaming-a-branch)”) | | | **X** | **X** | **X** |
|
||||
| 管理 web 挂钩和部署密钥 | | | | | **X** |{% ifversion fpt or ghec %}
|
||||
| [管理私有仓库的数据使用设置](/get-started/privacy-on-github/managing-data-use-settings-for-your-private-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** |{% ifversion fpt or ghec %}
|
||||
| 在仓库中[启用 {% data variables.product.prodname_discussions %}](/github/administering-a-repository/enabling-or-disabling-github-discussions-for-a-repository) | | | | **X** | **X** |
|
||||
| 为 {% data variables.product.prodname_discussions %} [创建和编辑类别](/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository) | | | | **X** | **X** |
|
||||
| [将讨论移动到其他类别](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository) | | | **X** | **X** | **X** |
|
||||
| [将讨论转移到](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository)新仓库 | | | **X** | **X** | **X** |
|
||||
| [管理置顶的讨论](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository) | | | **X** | **X** | **X** |
|
||||
| [批量将议题转换为讨论](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository) | | | **X** | **X** | **X** |
|
||||
| [锁定和解锁讨论](/discussions/managing-discussions-for-your-community/moderating-discussions) | | **X** | **X** | **X** | **X** |
|
||||
| [单独将议题转换为讨论](/discussions/managing-discussions-for-your-community/moderating-discussions) | | **X** | **X** | **X** | **X** |
|
||||
| [创建新的讨论并对现有讨论发表评论](/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion) | **X** | **X** | **X** | **X** | **X** |
|
||||
| [删除讨论](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository#deleting-a-discussion) | | **X** | | **X** | **X** |{% endif %}{% ifversion fpt or ghec %}
|
||||
| 创建 [codespaces](/codespaces/about-codespaces) | | | **X** | **X** | **X**
|
||||
| [管理仓库的复刻策略](/github/administering-a-repository/managing-the-forking-policy-for-your-repository) | | | | | **X** |
|
||||
| [将仓库转让给组织](/articles/restricting-repository-creation-in-your-organization) | | | | | **X** |
|
||||
| [删除仓库或将仓库转让到组织外部](/articles/setting-permissions-for-deleting-or-transferring-repositories) | | | | | **X** |
|
||||
| [存档仓库](/articles/about-archiving-repositories) | | | | | **X** |{% ifversion fpt or ghec %}
|
||||
| 显示赞助按钮(请参阅“[在仓库中显示赞助按钮](/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** |{% ifversion fpt or ghec %}
|
||||
| 在仓库中[启用 {% data variables.product.prodname_discussions %}](/github/administering-a-repository/enabling-or-disabling-github-discussions-for-a-repository) | | | | **X** | **X** |
|
||||
| 为 {% data variables.product.prodname_discussions %} [创建和编辑类别](/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository) | | | | **X** | **X** |
|
||||
| [将讨论移动到其他类别](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository) | | | **X** | **X** | **X** |
|
||||
| [将讨论转移到](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository)新仓库 | | | **X** | **X** | **X** |
|
||||
| [管理置顶的讨论](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository) | | | **X** | **X** | **X** |
|
||||
| [批量将议题转换为讨论](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository) | | | **X** | **X** | **X** |
|
||||
| [锁定和解锁讨论](/discussions/managing-discussions-for-your-community/moderating-discussions) | | **X** | **X** | **X** | **X** |
|
||||
| [单独将议题转换为讨论](/discussions/managing-discussions-for-your-community/moderating-discussions) | | **X** | **X** | **X** | **X** |
|
||||
| [创建新的讨论并对现有讨论发表评论](/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion) | **X** | **X** | **X** | **X** | **X** |
|
||||
| [删除讨论](/discussions/managing-discussions-for-your-community/managing-discussions-in-your-repository#deleting-a-discussion) | | **X** | | **X** | **X** |{% endif %}{% ifversion fpt or ghec %}
|
||||
| 创建 [codespaces](/codespaces/about-codespaces) | | | **X** | **X** | **X**
|
||||
{% endif %}
|
||||
|
||||
### Access requirements for security features
|
||||
|
||||
@@ -84,6 +84,8 @@ You can only choose an additional permission if it's not already included in the
|
||||
- **Set interaction limits**: Temporarily restrict certain users from commenting, opening issues, or creating pull requests in your public repository to enforce a period of limited activity. For more information, see "[Limiting interactions in your repository](/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository)."
|
||||
- **Set the social preview**: Add an identifying image to your repository that appears on social media platforms when your repository is linked. 更多信息请参阅“[自定义仓库的社交媒体审查](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/customizing-your-repositorys-social-media-preview)”。
|
||||
- **Push commits to protected branches**: Push to a branch that is marked as a protected branch.
|
||||
- **Create protected tags**: Create tags that match a tag protection rule. For more information, see "[Configuring tag protection rules](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-tag-protection-rules)."
|
||||
- **Delete protected tags**: Delete tags that match a tag protection rule. For more information, see "[Configuring tag protection rules](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-tag-protection-rules)."
|
||||
|
||||
### 安全
|
||||
|
||||
|
||||
@@ -22,8 +22,6 @@ shortTitle: 启用和测试 SAML SSO
|
||||
|
||||
{% data reusables.saml.saml-disabled-linked-identities-removed %}
|
||||
|
||||
{% data reusables.saml.cannot-update-existing-saml-settings %}
|
||||
|
||||
## 启用和测试组织的 SAML 单点登录
|
||||
|
||||
在组织中实施 SAML SSO 之前,请确保您已准备好组织。 更多信息请参阅“[准备在组织中实施 SAML 单点登录](/articles/preparing-to-enforce-saml-single-sign-on-in-your-organization)”。
|
||||
|
||||
@@ -36,10 +36,6 @@ When you enable auto assignment, any time your team has been requested to review
|
||||
|
||||
When code owners are automatically requested for review, the team is still removed and replaced with individuals unless a branch protection rule is configured to require review from code owners. If such a branch protection rule is in place, the team request cannot be removed and so the individual request will appear in addition.
|
||||
|
||||
{% ifversion fpt %}
|
||||
为了进一步提高团队的协作能力,您可以升级到 {% data variables.product.prodname_ghe_cloud %},其中包括受保护的分支机构和私有仓库的代码所有者等功能。 {% data reusables.enterprise.link-to-ghec-trial %}
|
||||
{% endif %}
|
||||
|
||||
### 路由算法
|
||||
|
||||
代码审查分配根据两种可能的算法之一自动选择和分配审查者。
|
||||
|
||||
@@ -12,11 +12,11 @@ featuredLinks:
|
||||
- /packages/learn-github-packages/installing-a-package
|
||||
popular:
|
||||
- /packages/working-with-a-github-packages-registry/working-with-the-npm-registry
|
||||
- '{% ifversion fpt %}/packages/working-with-a-github-packages-registry/working-with-the-container-registry{% else %}/packages/working-with-a-github-packages-registry/working-with-the-docker-registry{% endif %}'
|
||||
- '{% ifversion fpt or ghec%}/packages/working-with-a-github-packages-registry/working-with-the-container-registry{% else %}/packages/working-with-a-github-packages-registry/working-with-the-docker-registry{% endif %}'
|
||||
- /packages/learn-github-packages
|
||||
- /packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry
|
||||
guideCards:
|
||||
- '{% ifversion fpt %}/packages/working-with-a-github-packages-registry/working-with-the-container-registry{% else %}/packages/working-with-a-github-packages-registry/working-with-the-docker-registry{% endif %}'
|
||||
- '{% ifversion fpt or ghec %}/packages/working-with-a-github-packages-registry/working-with-the-container-registry{% else %}/packages/working-with-a-github-packages-registry/working-with-the-docker-registry{% endif %}'
|
||||
- /packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry
|
||||
changelog:
|
||||
label: packages
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Working with the Docker registry
|
||||
intro: '{% ifversion fpt or ghec %}The Docker registry has now been replaced by the {% data variables.product.prodname_container_registry %}.{% else %}You can push and pull your Docker images using the {% data variables.product.prodname_registry %} Docker registry, which uses the package namespace `https://docker.pkg.github.com`.{% endif %}'
|
||||
intro: '{% ifversion fpt or ghec %}The Docker registry has now been replaced by the {% data variables.product.prodname_container_registry %}.{% else %}You can push and pull your Docker images using the {% data variables.product.prodname_registry %} Docker registry.{% endif %}'
|
||||
product: '{% data reusables.gated-features.packages %}'
|
||||
redirect_from:
|
||||
- /articles/configuring-docker-for-use-with-github-package-registry
|
||||
|
||||
@@ -92,21 +92,21 @@ If you choose the `/docs` folder of any branch as your publishing source, {% dat
|
||||
## Limits on use of {% data variables.product.prodname_pages %}
|
||||
|
||||
{% ifversion fpt or ghec %}
|
||||
{% 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 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)."
|
||||
|
||||
### Prohibited uses
|
||||
{% endif %}
|
||||
{% 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). {% data reusables.pages.no_sensitive_data_pages %}
|
||||
{% 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). {% data reusables.pages.no_sensitive_data_pages %}
|
||||
|
||||
In addition, your use of {% data variables.product.prodname_pages %} is subject to the [GitHub Terms of Service](/free-pro-team@latest/github/site-policy/github-terms-of-service/), including the restrictions on get rich quick schemes, sexually obscene content, and violent or threatening content or activity.
|
||||
In addition, your use of {% data variables.product.prodname_pages %} is subject to the [GitHub Terms of Service](/free-pro-team@latest/github/site-policy/github-terms-of-service/), including the restrictions on get-rich-quick schemes, sexually obscene content, and violent or threatening content or activity.
|
||||
|
||||
### Usage limits
|
||||
{% 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.{% ifversion fpt or ghec %} For more information, see "[What is my disk quota?"](/articles/what-is-my-disk-quota/#file-and-repository-size-limitations){% endif %}
|
||||
- {% data variables.product.prodname_pages %} source repositories have a recommended limit of 1 GB.{% ifversion fpt or ghec %} 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.
|
||||
{% ifversion fpt or ghec %}
|
||||
- {% data variables.product.prodname_pages %} sites have a *soft* bandwidth limit of 100GB per month.
|
||||
- {% data variables.product.prodname_pages %} sites have a *soft* bandwidth limit of 100 GB 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.
|
||||
|
||||
@@ -39,22 +39,22 @@ remote: error: Required status check "ci-build" is failing
|
||||
|
||||
{% ifversion fpt or ghae or ghes or ghec %}
|
||||
|
||||
## Conflicts between head commit and test merge commit
|
||||
## 头部提交与测试合并提交之间的冲突
|
||||
|
||||
有时,测试合并提交与头部提交的状态检查结果存在冲突。 如果测试合并提交具有状态,则测试合并提交必须通过。 否则,必须传递头部提交的状态后才可合并该分支。 有关测试合并提交的更多信息,请参阅“[拉取](/rest/reference/pulls#get-a-pull-request)”。
|
||||
|
||||

|
||||
{% endif %}
|
||||
|
||||
## Handling skipped but required checks
|
||||
## 处理已跳过但需要检查
|
||||
|
||||
Sometimes a required status check is skipped on pull requests due to path filtering. For example, a Node.JS test will be skipped on a pull request that just fixes a typo in your README file and makes no changes to the JavaScript and TypeScript files in the `scripts` directory.
|
||||
有时,由于路径筛选,在拉取请求上会跳过所需的状态检查。 例如,Node.JS 测试在仅修复自述文件中拼写错误的拉取请求上将跳过,并且不会更改 `scripts` 目录中的 JavaScript 和 TypeScript 文件。
|
||||
|
||||
If this check is required and it gets skipped, then the check's status is shown as pending, because it's required. In this situation you won't be able to merge the pull request.
|
||||
如果此检查是必需的,并且被跳过,则检查的状态将显示为挂起,因为它是必需的。 在此情况下,您将无法合并拉取请求。
|
||||
|
||||
### 示例
|
||||
|
||||
In this example you have a workflow that's required to pass.
|
||||
在此示例中,您有一个需要通过的工作流程。
|
||||
|
||||
```yaml
|
||||
name: ci
|
||||
@@ -81,11 +81,11 @@ jobs:
|
||||
- run: npm test
|
||||
```
|
||||
|
||||
If someone submits a pull request that changes a markdown file in the root of the repository, then the workflow above won't run at all because of the path filtering. As a result you won't be able to merge the pull request. You would see the following status on the pull request:
|
||||
如果有人提交更改存储库根目录中 Markdown 文件的拉取请求,则上述工作流程将因路径筛选而完全不会运行。 因此,您将无法合并拉取请求。 您将在拉取请求上看到以下状态:
|
||||
|
||||

|
||||

|
||||
|
||||
You can fix this by creating a generic workflow, with the same name, that will return true in any case similar to the workflow below :
|
||||
您可以通过创建具有相同名称的通用工作流程来解决此问题,该工作流程在任何情况下都将返回 true,类似于下面的工作流程:
|
||||
|
||||
```yaml
|
||||
name: ci
|
||||
@@ -100,21 +100,21 @@ jobs:
|
||||
steps:
|
||||
- run: 'echo "No build required" '
|
||||
```
|
||||
Now the checks will always pass whenever someone sends a pull request that doesn't change the files listed under `paths` in the first workflow.
|
||||
现在,每当有人发送拉取请求时,检查将始终通过,该请求不会更改第一个工作流程中`路径下`列出的文件。
|
||||
|
||||

|
||||

|
||||
|
||||
{% note %}
|
||||
|
||||
**注意:**
|
||||
* Make sure that the `name` key and required job name in both the workflow files are the same. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions)".
|
||||
* The example above uses {% data variables.product.prodname_actions %} but this workaround is also applicable to other CI/CD providers that integrate with {% data variables.product.company_short %}.
|
||||
* 确保两个工作流程文件中`名称`键和所需的作业名称相同。 更多信息请参阅“[{% data variables.product.prodname_actions %} 的工作流程语法](/actions/reference/workflow-syntax-for-github-actions)”。
|
||||
* 上面的示例使用 {% data variables.product.prodname_actions %} 但此解决方法也适用于与 {% data variables.product.company_short %} 集成的其他 CI/CD 提供程序。
|
||||
|
||||
{% endnote %}
|
||||
|
||||
{% ifversion fpt or ghes > 3.3 or ghae-issue-5379 or ghec %}It's also possible for a protected branch to require a status check from a specific {% data variables.product.prodname_github_app %}. If you see a message similar to the following, then you should verify that the check listed in the merge box was set by the expected app.
|
||||
{% ifversion fpt or ghes > 3.3 or ghae-issue-5379 or ghec %}受保护分支也可能要求特定 {% data variables.product.prodname_github_app %} 进行状态检查。 如果看到类似于以下内容的消息,则应验证合并框中列出的检查项是否由预期的应用设置。
|
||||
|
||||
```
|
||||
Required status check "build" was not set by the expected {% data variables.product.prodname_github_app %}.
|
||||
必需状态检查 "build" 未由预期的 {% data variables.product.prodname_github_app %} 设置。
|
||||
```
|
||||
{% endif %}
|
||||
|
||||
@@ -45,5 +45,5 @@ shortTitle: 更改默认分支
|
||||
1. 在“Default branch(默认分支)”下,在默认分支名称的右侧单击 {% octicon "arrow-switch" aria-label="The switch icon with two arrows" %}。 
|
||||
1. 使用下拉菜单,然后单击分支名称。 
|
||||
1. 单击 **Update(更新)**。 
|
||||
1. 阅读警告,然后单击 **I understand, update the default branch(我了解,请更新默认分支)**。 
|
||||
1. 阅读警告,然后单击 **I understand, update the default branch(我了解,请更新默认分支)**。 
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ topics:
|
||||
|
||||
您可以通过选择仓库的可见性来限制谁可以访问仓库。 更多信息请参阅“[关于仓库可见性](#about-repository-visibility)”。
|
||||
|
||||
对于用户拥有的仓库,您可以向其他人授予协作者访问权限,以便他们可以协作处理您的项目。 如果仓库归组织所有,您可以向组织成员授予访问权限,以便协作处理您的仓库。 For more information, see "[Permission levels for a user account repository](/articles/permission-levels-for-a-user-account-repository/)" and "[Repository roles for an organization](/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization)."
|
||||
对于用户拥有的仓库,您可以向其他人授予协作者访问权限,以便他们可以协作处理您的项目。 如果仓库归组织所有,您可以向组织成员授予访问权限,以便协作处理您的仓库。 更多信息请参阅“[用户帐户仓库的权限级别](/articles/permission-levels-for-a-user-account-repository/)”和“[组织的仓库角色](/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization)”。
|
||||
|
||||
{% ifversion fpt or ghec %}
|
||||
通过用户帐户和组织的 {% data variables.product.prodname_free_team %},可与无限的协作者合作处理设置了完全功能的无限公共仓库,或者是设置了有限功能的无限私有仓库, 要获取对私有仓库的高级处理,您可以升级到 {% data variables.product.prodname_pro %}、{% data variables.product.prodname_team %} 或 {% data variables.product.prodname_ghe_cloud %}。 {% data reusables.gated-features.more-info %}
|
||||
@@ -48,11 +48,11 @@ topics:
|
||||
|
||||
{% ifversion fpt or ghec or ghes %}
|
||||
|
||||
When you create a repository, you can choose to make the repository public or private.{% ifversion ghec or ghes %} If you're creating the repository in an organization{% ifversion ghec %} that is owned by an enterprise account{% endif %}, you can also choose to make the repository internal.{% endif %}{% endif %}{% ifversion fpt %} Repositories in organizations that use {% data variables.product.prodname_ghe_cloud %} and are owned by an enterprise account can also be created with internal visibility. For more information, see [the {% data variables.product.prodname_ghe_cloud %} documentation](/enterprise-cloud@latest/repositories/creating-and-managing-repositories/about-repositories).
|
||||
创建存储库时,可以选择将存储库设为公开或私有。{% ifversion ghec or ghes %} 如果要在{% ifversion ghec %}企业帐户拥有的{% endif %} 组织中创建存储库,则还可以选择将存储库设为内部存储库。{% endif %}{% endif %}{% ifversion fpt %}还可以通过内部可见性创建使用 {% data variables.product.prodname_ghe_cloud %} 并由企业帐户拥有的组织中的存储库。 更多信息请参阅 [{% data variables.product.prodname_ghe_cloud %} 文档](/enterprise-cloud@latest/repositories/creating-and-managing-repositories/about-repositories)。
|
||||
|
||||
{% elsif ghae %}
|
||||
|
||||
When you create a repository owned by your user account, the repository is always private. When you create a repository owned by an organization, you can choose to make the repository private or internal.
|
||||
当您创建由您的用户帐户拥有的仓库时,仓库始终是私有的。 创建组织拥有的存储库时,可以选择将存储库设为私有或内部存储库。
|
||||
|
||||
{% endif %}
|
||||
|
||||
@@ -78,19 +78,19 @@ When you create a repository owned by your user account, the repository is alway
|
||||
|
||||
{% data reusables.repositories.about-internal-repos %} 有关内部资源的更多信息,请参阅 {% data variables.product.prodname_dotcom %} 的白皮书“[内部资源简介](https://resources.github.com/whitepapers/introduction-to-innersource/)”。
|
||||
|
||||
All enterprise members have read permissions to the internal repository, but internal repositories are not visible to people {% ifversion fpt or ghec %}outside of the enterprise{% else %}who are not members of any organization{% endif %}, including outside collaborators on organization repositories. For more information, see "[Roles in an enterprise](/github/setting-up-and-managing-your-enterprise/roles-in-an-enterprise#enterprise-members)" and "[Repository roles for an organization](/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization)."
|
||||
所有企业成员对内部仓库具有读取权限,但内部仓库对{% ifversion fpt or ghec %}企业外部{% else %}非组织成员{% endif %}的人员不可见,包括组织仓库的外部协作者。 更多信息请参阅“[企业中的角色](/github/setting-up-and-managing-your-enterprise/roles-in-an-enterprise#enterprise-members)”和“[组织的存储库角色](/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization)”。
|
||||
|
||||
{% ifversion ghes %}
|
||||
{% note %}
|
||||
|
||||
**Note:** A user must be part of an organization to be an enterprise member and have access to internal repositories. If a user on {% data variables.product.product_location %} is not a member of any organization, that user will not have access to internal repositories.
|
||||
**注意:** 用户必须是组织的一部分才能成为企业成员并有权访问内部存储库。 如果 {% data variables.product.product_location %} 上的用户不是任何组织的成员,则该用户将无权访问内部存储库。
|
||||
|
||||
{% endnote %}
|
||||
{% endif %}
|
||||
|
||||
{% data reusables.repositories.internal-repo-default %}
|
||||
|
||||
Any member of the enterprise can fork any internal repository owned by an organization in the enterprise. The forked repository will belong to the member's user account, and the visibility of the fork will be private. 如果用户从企业拥有的所有组织中删除,该用户的内部仓库复刻也会自动删除。
|
||||
企业的任何成员都可以复刻企业中组织拥有的任何内部存储库。 复刻的存储库将属于成员的用户帐户,复刻的可见性将是私有的。 如果用户从企业拥有的所有组织中删除,该用户的内部仓库复刻也会自动删除。
|
||||
{% endif %}
|
||||
|
||||
## 限制查看仓库中的内容和差异
|
||||
@@ -101,7 +101,7 @@ Any member of the enterprise can fork any internal repository owned by an organi
|
||||
|
||||
### 文本限制
|
||||
|
||||
Text files over **512 KB** are always displayed as plain text. 代码不强调语法,散文文件不会转换成 HTML(如 Markdown、AsciiDoc *等*)。
|
||||
超过 **512 KB** 的文本文件始终显示为纯文本。 代码不强调语法,散文文件不会转换成 HTML(如 Markdown、AsciiDoc *等*)。
|
||||
|
||||
超过 **5 MB** 的文本文件仅通过其源 URL 访问,将通过 `{% data variables.product.raw_github_com %}` 提供;例如 `https://{% data variables.product.raw_github_com %}/octocat/Spoon-Knife/master/index.html`。 单击 **Raw(源)**按钮获取文件的源 URL。
|
||||
|
||||
@@ -109,8 +109,8 @@ Text files over **512 KB** are always displayed as plain text. 代码不强调
|
||||
|
||||
因为差异可能很大,所以我们会对评论、拉取请求和比较视图的差异施加限制:
|
||||
|
||||
- In a pull request, no total diff may exceed *20,000 lines that you can load* or *1 MB* of raw diff data.
|
||||
- No single file's diff may exceed *20,000 lines that you can load* or *500 KB* of raw diff data. *四百行*和 *20 KB* 会自动加载为一个文件。
|
||||
- 在拉取请求中,总差异不得超过*您可以加载的 20,000 行* 或 *1 MB* 的原始差异数据。
|
||||
- 任何单个文件的差异都不能超过*您可以加载的 20,000 行,*或 *500 KB* 的原始差异数据。 *四百行*和 *20 KB* 会自动加载为一个文件。
|
||||
- 单一差异中的最大文件数限于 *300*。
|
||||
- 单一差异中可呈现的文件(如图像、PDF 和 GeoJSON 文件)最大数量限于 *25*。
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ topics:
|
||||
3. 在“Owner(所有者)”下拉菜单中,选择要在其上创建仓库的帐户。 
|
||||
{% data reusables.repositories.repo-name %}
|
||||
{% data reusables.repositories.choose-repo-visibility %}
|
||||
6. 如果您不使用模板,可以使用许多可选项预填充仓库。 如果要将现有仓库导入 {% data variables.product.product_name %},请不要选择上述任何选项,否则可能会导致合并冲突。 您可以通过用户界面添加或创建新文件,或者选择稍后使用命令行添加新文件。 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](/repositories/working-with-files/managing-files/adding-a-file-to-a-repository#adding-a-file-to-a-repository-using-the-command-line)," and "[Addressing merge conflicts](/articles/addressing-merge-conflicts/)."
|
||||
6. 如果您不使用模板,可以使用许多可选项预填充仓库。 如果要将现有仓库导入 {% data variables.product.product_name %},请不要选择上述任何选项,否则可能会导致合并冲突。 您可以通过用户界面添加或创建新文件,或者选择稍后使用命令行添加新文件。 更多信息请参阅“[使用命令行导入 Git 存储库](/articles/importing-a-git-repository-using-the-command-line/)”、“[将文件添加到存储库](/repositories/working-with-files/managing-files/adding-a-file-to-a-repository#adding-a-file-to-a-repository-using-the-command-line)”和“[解决合并冲突](/articles/addressing-merge-conflicts/)”。
|
||||
- 您可以创建自述文件以介绍您的项目。 更多信息请参阅“[关于自述文件](/articles/about-readmes/)”。
|
||||
- 您可以创建 *.gitignore* 文件以设置忽略规则。 更多信息请参阅“[忽略文件](/github/getting-started-with-github/ignoring-files)”。{% ifversion fpt or ghec %}
|
||||
- 您可以选择为项目添加软件许可。 更多信息请参阅“[许可仓库](/articles/licensing-a-repository)”。{% endif %}
|
||||
|
||||
@@ -36,13 +36,13 @@ topics:
|
||||
```
|
||||
3. 镜像推送至新仓库。
|
||||
```shell
|
||||
$ cd <em>old-repository</em>
|
||||
$ cd <em>old-repository.git</em>
|
||||
$ git push --mirror https://{% data variables.command_line.codeblock %}/<em>exampleuser</em>/<em>new-repository</em>.git
|
||||
```
|
||||
4. 删除您之前创建的临时本地仓库。
|
||||
```shell
|
||||
$ cd ..
|
||||
$ rm -rf <em>old-repository</em>
|
||||
$ rm -rf <em>old-repository.git</em>
|
||||
```
|
||||
|
||||
## 镜像包含 {% data variables.large_files.product_name_long %} 对象的仓库。
|
||||
@@ -54,7 +54,7 @@ topics:
|
||||
```
|
||||
3. 导航到刚克隆的仓库。
|
||||
```shell
|
||||
$ cd <em>old-repository</em>
|
||||
$ cd <em>old-repository.git</em>
|
||||
```
|
||||
4. 拉取仓库的 {% data variables.large_files.product_name_long %} 对象。
|
||||
```shell
|
||||
@@ -71,7 +71,7 @@ topics:
|
||||
7. 删除您之前创建的临时本地仓库。
|
||||
```shell
|
||||
$ cd ..
|
||||
$ rm -rf <em>old-repository</em>
|
||||
$ rm -rf <em>old-repository.git</em>
|
||||
```
|
||||
|
||||
## 镜像其他位置的仓库
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user