1
0
mirror of synced 2026-01-29 03:03:52 -05:00

Merge branch 'main' into update-python-build-docs

This commit is contained in:
Martin Lopes
2021-06-03 12:58:01 +10:00
committed by GitHub
139 changed files with 5514 additions and 4991 deletions

View File

@@ -61,7 +61,7 @@ jobs:
owner: 'github',
repo: 'docs-internal',
title: `@${context.payload.sender.login} confirm that \#${issueNo} should be in the public github/docs repo`,
body: `@${context.payload.sender.login} opened https://github.com/github/docs/issues/${issueNo} publicly in the github/docs repo, instead of the private github/docs-internal repo.\n\n@${context.payload.sender.login}, please confirm that this belongs in the public repo and that no sensitive information was disclosed by commenting below and closing the issue.\n\nIf this was not intentional and sensitive information was shared, please delete https://github.com/github/docs/issues/${issueNo} and notify us in the \#docs-open-source channel.\n\nThanks! \n\n/cc @github/docs @github/docs-engineering`,
body: `@${context.payload.sender.login} opened https://github.com/github/docs/issues/${issueNo} publicly in the github/docs repo, instead of the private github/docs-internal repo.\n\n@${context.payload.sender.login}, please confirm that this belongs in the public repo and that no sensitive information was disclosed by commenting below and closing the issue.\n\nIf this was not intentional and sensitive information was shared, please delete https://github.com/github/docs/issues/${issueNo} and notify us in the \#docs-open-source channel.\n\nThanks!`,
labels: ['OS confirmation'],
});

View File

@@ -17,11 +17,11 @@ jobs:
const repo = context.payload.repository.name
const allStatusLabels = [
'Status: GREEN',
'Status: GREY',
'Status: YELLOW',
'Status: BLACK',
'Status: RED'
'green',
'grey',
'yellow',
'black',
'red'
];
const currentLabels = await github.issues.listLabelsOnIssue({
@@ -33,7 +33,7 @@ jobs:
const newLabels = currentLabels.data.filter( label => allStatusLabels.includes(label.name) === false)
allStatusLabels.forEach( label => {
if(context.payload.comment.body.includes(label)) {
if(context.payload.comment.body.toLowerCase().includes(`status: ${label}`)) {
newLabels.push(label)
}
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -12,7 +12,7 @@ export type BreadcrumbT = {
type Props = {}
export const Breadcrumbs = (props: Props) => {
const router = useRouter()
const pathWithLocale = `/${router.locale}${router.asPath}`
const pathWithLocale = `/${router.locale}${router.asPath.split('?')[0]}` // remove query string
const { breadcrumbs } = useMainContext()
return (

View File

@@ -70,7 +70,7 @@ export const HeaderNotifications = () => {
return (
<>
{allNotifications.map(({ type, content }, i) => {
const isLast = i !== allNotifications.length - 1
const isLast = i === allNotifications.length - 1
return (
<div
className={cx(

View File

@@ -12,7 +12,13 @@ export const LanguagePicker = () => {
return (
<div className="ml-4 d-flex flex-justify-center flex-items-center">
<Dropdown css>
<Dropdown
css={`
ul {
width: unset;
}
`}
>
<summary>
{selectedLang.nativeName || selectedLang.name}
<Dropdown.Caret />

View File

@@ -45,17 +45,6 @@ export const ScrollButton = () => {
>
<ChevronUpIcon />
</button>
<style jsx>{`
.opacity-0 {
opacity: 0;
}
.opacity-100 {
opacity: 1;
}
.transition-200 {
transition: 200ms;
}
`}</style>
</div>
)
}

View File

@@ -8,14 +8,15 @@ type Props = {
className?: string
}
export const TruncateLines = (props: Props) => {
const Component = props.as || 'div'
const { as, maxLines, className, children } = props
const Component = as || 'div'
return (
<Component className={cx('root', props.className)}>
{props.children}
<Component className={cx('root', className)}>
{children}
<style jsx>{`
.root {
display: -webkit-box;
-webkit-line-clamp: ${props.maxLines};
-webkit-line-clamp: ${maxLines};
-webkit-box-orient: vertical;
overflow: hidden;
}

View File

@@ -0,0 +1,31 @@
import { Tooltip, Link } from '@primer/components'
import { PrinterIcon } from './PrinterIcon'
type Props = {
children: React.ReactNode
}
export const ArticleTitle = ({ children }: Props) => {
return (
<div className="d-flex flex-items-baseline flex-justify-between">
<h1 className="my-4">{children}</h1>
<div className="d-none d-lg-block ml-2">
<Tooltip aria-label="Print this article" noDelay direction="n">
<Link
as="button"
underline={false}
muted
onClick={() => {
try {
document.execCommand('print', false)
} catch (e) {
window.print()
}
}}
>
<PrinterIcon />
</Link>
</Tooltip>
</div>
</div>
)
}

View File

@@ -17,42 +17,40 @@ export const ArticleVersionPicker = () => {
}
return (
<div className="d-none d-lg-flex flex-justify-end">
<Dropdown
css={`
ul {
width: unset;
<Dropdown
css={`
ul {
width: unset;
}
`}
>
<summary className="f4 h5-mktg btn-outline-mktg btn-mktg p-2">
<span className="d-md-none d-xl-inline-block">{t('article_version')}</span>{' '}
{allVersions[currentVersion].versionTitle}
<Dropdown.Caret />
</summary>
<Dropdown.Menu direction="sw">
{(page.permalinks || []).map((permalink) => {
if (permalink.pageVersion === 'homepage') {
return null
}
`}
>
<summary className="f4 h5-mktg btn-outline-mktg btn-mktg p-2">
<span className="d-md-none d-xl-inline-block">{t('article_version')}</span>{' '}
{allVersions[currentVersion].versionTitle}
<Dropdown.Caret />
</summary>
<Dropdown.Menu direction="sw">
{(page.permalinks || []).map((permalink) => {
if (permalink.pageVersion === 'homepage') {
return null
}
return (
<Dropdown.Item key={permalink.href}>
<Link href={permalink.href}>
<a>{permalink.pageVersionTitle}</a>
</Link>
</Dropdown.Item>
)
})}
<div className="pb-1">
<Link href={`/${router.locale}/${enterpriseServerVersions[0]}/admin/all-releases`}>
<a className="f6 no-underline color-text-tertiary pl-3 pr-2 no-wrap">
See all Enterprise releases
</a>
</Link>
</div>
</Dropdown.Menu>
</Dropdown>
</div>
return (
<Dropdown.Item key={permalink.href}>
<Link href={permalink.href}>
<a>{permalink.pageVersionTitle}</a>
</Link>
</Dropdown.Item>
)
})}
<div className="pb-1">
<Link href={`/${router.locale}/${enterpriseServerVersions[0]}/admin/all-releases`}>
<a className="f6 no-underline color-text-tertiary pl-3 pr-2 no-wrap">
See all Enterprise releases
</a>
</Link>
</div>
</Dropdown.Menu>
</Dropdown>
)
}

View File

@@ -0,0 +1,20 @@
// From https://heroicons.com
export const PrinterIcon = () => {
return (
<svg
xmlns="http://www.w3.org/2000/svg"
height={18}
width={18}
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
d="M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H5a2 2 0 00-2 2v4a2 2 0 002 2h2m2 4h6a2 2 0 002-2v-4a2 2 0 00-2-2H9a2 2 0 00-2 2v4a2 2 0 002 2zm8-12V5a2 2 0 00-2-2H9a2 2 0 00-2 2v4h10z"
/>
</svg>
)
}

View File

@@ -84,6 +84,7 @@ export type MainContextT = {
currentProductTree?: CurrentProductTree
featureFlags: FeatureFlags
page: {
documentType: string
languageVariants: Array<{ name: string; code: string; hreflang: string; href: string }>
topics: Array<string>
fullTitle?: string
@@ -126,6 +127,7 @@ export const getMainContextFromRequest = (req: any): MainContextT => {
relativePath: req.context.page?.relativePath,
page: {
languageVariants: req.context.page.languageVariants,
documentType: req.context.page.documentType,
fullTitle: req.context.page.fullTitle,
topics: req.context.page.topics || [],
introPlainText: req.context.page?.introPlainText,

View File

@@ -70,8 +70,9 @@ export const useProductLandingContext = (): ProductLandingContextT => {
export const getProductLandingContextFromRequest = (req: any): ProductLandingContextT => {
const productTree = req.context.currentProductTree
const page = req.context.page
return {
...pick(req.context.page, [
...pick(page, [
'title',
'shortTitle',
'introPlainText',
@@ -96,11 +97,11 @@ export const getProductLandingContextFromRequest = (req: any): ProductLandingCon
})
),
introLinks: productTree.page.introLinks
introLinks: page.introLinks
? {
quickstart: productTree.page.introLinks.quickstart,
reference: productTree.page.introLinks.reference,
overview: productTree.page.introLinks.overview,
quickstart: page.introLinks.quickstart,
reference: page.introLinks.reference,
overview: page.introLinks.overview,
}
: null,

View File

@@ -0,0 +1,33 @@
import { createContext, useContext } from 'react'
export type TocItem = {
fullPath: string
title: string
intro?: string
}
export type TocLandingContextT = {
title: string
introPlainText: string
tocItems: Array<TocItem>
}
export const TocLandingContext = createContext<TocLandingContextT | null>(null)
export const useTocLandingContext = (): TocLandingContextT => {
const context = useContext(TocLandingContext)
if (!context) {
throw new Error('"useTocLandingContext" may only be used inside "TocLandingContext.Provider"')
}
return context
}
export const getTocLandingContextFromRequest = (req: any): TocLandingContextT => {
return {
title: req.context.page.title,
introPlainText: req.context.page.introPlainText,
tocItems: req.context.tocItems || [],
}
}

View File

@@ -78,7 +78,7 @@ const ArticleList = ({ title, viewAllHref, articles }: ArticleListProps) => {
<Link href={link.href}>
<a className="link-with-intro Bump-link--hover no-underline d-block py-3">
<h4 className="link-with-intro-title">
{link.title}
<span dangerouslySetInnerHTML={{ __html: link.title }} />
<span className="Bump-link-symbol"></span>
</h4>
{!link.hideIntro && link.intro && (
@@ -87,7 +87,7 @@ const ArticleList = ({ title, viewAllHref, articles }: ArticleListProps) => {
maxLines={2}
className="link-with-intro-intro color-text-secondary mb-0 mt-1"
>
{link.intro}
<span dangerouslySetInnerHTML={{ __html: link.intro }} />
</TruncateLines>
)}
{link.date && (

View File

@@ -11,6 +11,7 @@ export const GuideCards = () => {
const router = useRouter()
const { currentCategory } = useMainContext()
const { guideCards } = useProductLandingContext()
const routePath = `/${router.asPath.split('?')[0]}` // remove query string
if (!guideCards) {
return null
@@ -25,7 +26,7 @@ export const GuideCards = () => {
</div>
{!currentCategory && (
<Link href={`${router.asPath}/guides`}>
<Link href={`${routePath}/guides`}>
<a className="btn btn-outline float-right">
Explore guides <ArrowRightIcon />
</a>

View File

@@ -47,7 +47,7 @@ const ArticleList = ({ page }: { page: CurrentProductTree }) => {
return (
<li
key={grandchildPage.href + index}
className={cx('mb-3', index >= maxArticles ? 'd-none' : null)}
className={cx('mb-3', (!isShowingMore && index >= maxArticles) ? 'd-none' : null)}
>
<Link href={grandchildPage.href}>
<a>{grandchildPage.page.title}</a>

View File

@@ -0,0 +1,64 @@
import { DefaultLayout } from 'components/DefaultLayout'
import { useProductLandingContext } from 'components/context/ProductLandingContext'
import { LandingHero } from 'components/landing/LandingHero'
import { FeaturedArticles } from 'components/landing/FeaturedArticles'
import { GuideCards } from 'components/landing/GuideCards'
import { SponsorsExamples } from 'components/landing/SponsorsExamples'
import { CommunityExamples } from 'components/landing/CommunityExamples'
import { CodeExamples } from 'components/landing/CodeExamples'
import { LandingSection } from 'components/landing/LandingSection'
import { useTranslation } from 'components/hooks/useTranslation'
import { ProductArticlesList } from 'components/landing/ProductArticlesList'
export const ProductLanding = () => {
const { shortTitle, guideCards, productUserExamples, productCommunityExamples, productCodeExamples } =
useProductLandingContext()
const { t } = useTranslation('product_landing')
return (
<DefaultLayout>
<LandingSection className="pt-3">
<LandingHero />
</LandingSection>
<LandingSection>
<FeaturedArticles />
</LandingSection>
{productCodeExamples.length > 0 && (
<LandingSection title={t('code_examples')} className="my-6">
<CodeExamples />
</LandingSection>
)}
{productCommunityExamples.length > 0 && (
<LandingSection title={t('communities_using_discussions')} className="my-6">
<CommunityExamples />
</LandingSection>
)}
{productUserExamples.length > 0 && (
<LandingSection title={t('sponsor_community')} className="my-6">
<SponsorsExamples />
</LandingSection>
)}
{/* {% if currentVersion contains 'enterprise-server' and currentProduct == 'admin' %}
{% include product-releases %}
{% endif %} */}
{guideCards.length > 0 && (
<div className="color-bg-tertiary py-6 my-8">
<LandingSection title={t('guides')} className="my-6">
<GuideCards />
</LandingSection>
</div>
)}
<LandingSection sectionLink="all-docs" title={`All ${shortTitle} Docs`}>
<ProductArticlesList />
</LandingSection>
</DefaultLayout>
)
}

View File

@@ -4,19 +4,29 @@ import cx from 'classnames'
import type { TocItem } from '../context/ProductLandingContext'
export const TableOfContents = (props: { items?: Array<TocItem> }) => {
type Props = {
items: Array<TocItem>
variant?: 'compact' | 'expanded'
}
export const TableOfContents = (props: Props) => {
const { items, variant = 'expanded' } = props
const router = useRouter()
return (
<div>
{(props.items || []).map((obj) => {
if (!obj) {
<ul className={cx(variant === 'compact' ? 'list-style-inside pl-2' : 'list-style-none')}>
{(items || []).map((item) => {
if (!item) {
return null
}
const { fullPath: href, title, intro } = obj
const { fullPath: href, title, intro } = item
const isActive = router.pathname === href
return (
<div key={href} className={cx('mb-5', isActive && 'color-auto-gray-4')}>
return variant === 'compact' ? (
<li key={href} className="f4 my-1">
<Link href={href}>{title}</Link>
</li>
) : (
<li key={href} className={cx('mb-5', isActive && 'color-auto-gray-4')}>
<Link href={href}>
<a className="Bump-link--hover no-underline d-block py-1 border-bottom color-border-primary">
<h4>
@@ -26,9 +36,9 @@ export const TableOfContents = (props: { items?: Array<TocItem> }) => {
</a>
</Link>
{intro && <p className="f4 mt-3" dangerouslySetInnerHTML={{ __html: intro }} />}
</div>
</li>
)
})}
</div>
</ul>
)
}

View File

@@ -0,0 +1,55 @@
import { Grid } from '@primer/components'
import { DefaultLayout } from 'components/DefaultLayout'
import { TableOfContents } from 'components/landing/TableOfContents'
import { ArticleVersionPicker } from 'components/article/ArticleVersionPicker'
import { Breadcrumbs } from 'components/Breadcrumbs'
import { useTocLandingContext } from 'components/context/TocLandingContext'
import { ArticleTitle } from 'components/article/ArticleTitle'
type Props = {
variant?: 'compact' | 'expanded'
}
export const TocLanding = ({ variant = 'expanded' }: Props) => {
const { title, introPlainText, tocItems } = useTocLandingContext()
return (
<DefaultLayout>
<div className="container-xl px-3 px-md-6 my-4 my-lg-4">
<div className="d-lg-flex flex-justify-between">
<div className="d-block d-lg-none">
<ArticleVersionPicker />
</div>
<div className="d-flex flex-items-center">
<Breadcrumbs />
</div>
<div className="d-none d-lg-block">
<ArticleVersionPicker />
</div>
</div>
<Grid
gridTemplateColumns="minmax(500px, 720px) minmax(220px, 1fr)"
gridTemplateRows="auto 1fr"
gridGap={16}
>
<div>
<div className="mt-8">
<ArticleTitle>{title}</ArticleTitle>
<div className="lead-mktg">
<p>{introPlainText}</p>
</div>
</div>
<div className="border-bottom border-xl-0 pb-4 mb-5 pb-xl-0 mb-xl-0" />
<div className={variant === 'expanded' ? 'mt-7' : 'mt-2'}>
<TableOfContents items={tocItems} variant={variant} />
</div>
</div>
<div></div>
</Grid>
</div>
</DefaultLayout>
)
}

View File

@@ -1,16 +1,12 @@
import { useRouter } from 'next/router'
import Link from 'next/link'
import cx from 'classnames'
import { useDetails, Details } from '@primer/components'
import { ChevronDownIcon } from '@primer/octicons-react'
import { useMainContext } from 'components/context/MainContext'
import { CurrentProductTree, useMainContext } from 'components/context/MainContext'
import { AllProductsLink } from 'components/product/AllProductsLink'
// <!--
// Styling note:
// Categories, Maptopics, and Articles list items get a class of `active` when they correspond to content
// hierarchy of the current page. If an item's URL is also the same as the current URL, the item
// also gets an `is-current-page` class.
// -->
export const SidebarProduct = () => {
const router = useRouter()
const { currentProductTree: currentProductTree } = useMainContext()
@@ -29,7 +25,7 @@ export const SidebarProduct = () => {
<>
<li title="" className="sidebar-product mb-2">
<Link href={currentProductTree.href}>
<a className="pl-4 pr-5 pb-1 f4 color-text-primary">{productTitle}</a>
<a className="pl-4 pr-5 pb-1 f4 color-text-primary no-underline">{productTitle}</a>
</Link>
</li>
@@ -53,135 +49,17 @@ export const SidebarProduct = () => {
>
{isStandaloneCategory ? (
<Link href={childPage.href}>
<a className="pl-4 pr-2 py-2 f6 text-uppercase d-block flex-auto mr-3 color-text-primary">
<a className="pl-4 pr-2 py-2 f6 text-uppercase d-block flex-auto mr-3 color-text-primary no-underline">
{childTitle}
</a>
</Link>
) : (
<details
className={cx('dropdown-withArrow details details-reset')}
open={routePath.includes(childPage.href) || i < 3}
>
<summary>
<div className="d-flex flex-justify-between">
<Link href={childPage.href}>
<a className="pl-4 pr-2 py-2 f6 text-uppercase d-block flex-auto mr-3 color-text-primary">
{childTitle}
</a>
</Link>
{i < 3 && (
<svg
xmlns="http://www.w3.org/2000/svg"
className="octicon flex-shrink-0 arrow mr-3"
style={{ marginTop: 7 }}
viewBox="0 0 16 16"
width="16"
height="16"
>
{' '}
<path
fillRule="evenodd"
clipRule="evenodd"
d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"
></path>
</svg>
)}
</div>
</summary>
{routePath.includes(childPage.href) || i < 3 ? (
<>
{/* <!-- some categories have maptopics with child articles --> */}
{childPage.childPages[0].page.documentType === 'mapTopic' ? (
<ul className="sidebar-topics list-style-none position-relative">
{childPage.childPages.map((grandchildPage, i) => {
const grandchildTitle =
grandchildPage.renderedShortTitle ||
grandchildPage.renderedFullTitle
const isActive = routePath.includes(grandchildPage.href)
const isCurrent = routePath === grandchildPage.href
return (
<li
key={childPage.href + i}
className={cx(
'sidebar-maptopic',
isActive && 'active',
isCurrent && 'is-current-page'
)}
>
<Link href={grandchildPage.href}>
<a className="pl-4 pr-5 py-2 color-text-primary">{grandchildTitle}</a>
</Link>
<ul className="sidebar-articles my-2">
{grandchildPage.childPages.map(
(greatgrandchildPage, i, arr) => {
const greatgrandchildTitle =
greatgrandchildPage.renderedShortTitle ||
greatgrandchildPage.renderedFullTitle
const isLast = i === arr.length - 1
const isActive = routePath.includes(
greatgrandchildPage.href
)
const isCurrent = routePath === greatgrandchildPage.href
return (
<li
key={greatgrandchildPage.href + i}
className={cx(
'sidebar-article',
isActive && 'active',
isCurrent && 'is-current-page'
)}
>
<Link href={greatgrandchildPage.href}>
<a
className={cx(
'pl-6 pr-5 py-1 color-text-primary',
isLast && 'pb-2'
)}
>
{greatgrandchildTitle}
</a>
</Link>
</li>
)
}
)}
</ul>
</li>
)
})}
</ul>
) : childPage.childPages[0].page.documentType == 'article' ? (
<ul className="sidebar-articles list-style-none">
{/* <!-- some categories have no maptopics, only articles --> */}
{childPage.childPages.map((grandchildPage, i, arr) => {
const grandchildTitle =
grandchildPage.renderedShortTitle ||
grandchildPage.renderedFullTitle
const isLast = i === arr.length - 1
const isActive = routePath.includes(grandchildPage.href)
const isCurrent = routePath === grandchildPage.href
return (
<li
key={grandchildPage.href + i}
className={cx(
'sidebar-article',
isActive && 'active',
isCurrent && 'is-current-page'
)}
>
<Link href={grandchildPage.href}>
<a className={cx('pl-6 pr-5 py-1 color-text-primary', isLast && 'pb-2')}>
{grandchildTitle}
</a>
</Link>
</li>
)
})}
</ul>
) : null}
</>
) : null}
</details>
<CollapsibleSection
index={i}
routePath={routePath}
title={childTitle}
page={childPage}
/>
)}
</li>
)
@@ -193,3 +71,113 @@ export const SidebarProduct = () => {
</>
)
}
type SectionProps = {
index: number
routePath: string
page: CurrentProductTree
title: string
}
const CollapsibleSection = (props: SectionProps) => {
const { routePath, index, title, page } = props
const isDefaultOpen = routePath.includes(page.href) || index < 3
const { getDetailsProps, open: isOpen } = useDetails({ defaultOpen: isDefaultOpen })
return (
<Details {...getDetailsProps()} className="details-reset">
<summary>
<div className="d-flex flex-justify-between">
<Link href={page.href}>
<a className="pl-4 pr-2 py-2 f6 text-uppercase d-block flex-auto mr-3 color-text-primary no-underline">
{title}
</a>
</Link>
{page.childPages.length > 0 && (
<span style={{ marginTop: 7 }} className="flex-shrink-0 pr-3">
<ChevronDownIcon className={cx('opacity-60', isOpen && 'rotate-180')} />
</span>
)}
</div>
</summary>
{/* <!-- some categories have maptopics with child articles --> */}
{page.childPages[0].page.documentType === 'mapTopic' ? (
<ul className="sidebar-topics list-style-none position-relative">
{page.childPages.map((childPage, i) => {
const childTitle = childPage.renderedShortTitle || childPage.renderedFullTitle
const isActive = routePath.includes(childPage.href)
const isCurrent = routePath === childPage.href
return (
<li
key={childPage.href + i}
className={cx(
'sidebar-maptopic',
isActive && 'active',
isCurrent && 'is-current-page'
)}
>
<Link href={childPage.href}>
<a className="pl-4 pr-5 py-2 color-text-primary no-underline">{childTitle}</a>
</Link>
<ul className="sidebar-articles my-2">
{childPage.childPages.map((grandchildPage, i, arr) => {
const grandchildTitle =
grandchildPage.renderedShortTitle || grandchildPage.renderedFullTitle
const isLast = i === arr.length - 1
const isActive = routePath.includes(grandchildPage.href)
const isCurrent = routePath === grandchildPage.href
return (
<li
key={grandchildPage.href + i}
className={cx(
'sidebar-article',
isActive && 'active',
isCurrent && 'is-current-page'
)}
>
<Link href={grandchildPage.href}>
<a
className={cx(
'pl-6 pr-5 py-1 color-text-primary no-underline',
isLast && 'pb-2'
)}
>
{grandchildTitle}
</a>
</Link>
</li>
)
})}
</ul>
</li>
)
})}
</ul>
) : page.childPages[0].page.documentType == 'article' ? (
<ul className="sidebar-articles list-style-none">
{/* <!-- some categories have no maptopics, only articles --> */}
{page.childPages.map((childPage, i, arr) => {
const childTitle = childPage.renderedShortTitle || childPage.renderedFullTitle
const isLast = i === arr.length - 1
const isActive = routePath.includes(childPage.href)
const isCurrent = routePath === childPage.href
return (
<li
key={childPage.href + i}
className={cx(
'sidebar-article',
isActive && 'active',
isCurrent && 'is-current-page'
)}
>
<Link href={childPage.href}>
<a className={cx('pl-6 pr-5 py-1 color-text-primary no-underline', isLast && 'pb-2')}>
{childTitle}
</a>
</Link>
</li>
)
})}
</ul>
) : null}
</Details>
)
}

View File

@@ -35,13 +35,13 @@ Once you complete this project, you should understand how to build your own Java
### Prerequisites
Before you begin, you'll need to download Node.js and create a GitHub repository.
Before you begin, you'll need to download Node.js and create a public {% data variables.product.prodname_dotcom %} repository.
1. Download and install Node.js 12.x, which includes npm.
https://nodejs.org/en/download/current/
1. Create a new repository on {% data variables.product.product_location %}. You can choose any repository name or use "hello-world-javascript-action" like this example. You can add these files after your project has been pushed to {% data variables.product.product_name %}. For more information, see "[Create a new repository](/articles/creating-a-new-repository)."
1. Create a new public repository on {% data variables.product.product_location %} and call it "hello-world-javascript-action". For more information, see "[Create a new repository](/articles/creating-a-new-repository)."
1. Clone your repository to your computer. For more information, see "[Cloning a repository](/articles/cloning-a-repository)."
@@ -51,7 +51,7 @@ Before you begin, you'll need to download Node.js and create a GitHub repository
cd hello-world-javascript-action
```
1. From your terminal, initialize the directory with a `package.json` file.
1. From your terminal, initialize the directory with npm to generate a `package.json` file.
```shell
npm init -y
@@ -59,10 +59,8 @@ Before you begin, you'll need to download Node.js and create a GitHub repository
### Creating an action metadata file
Create a new file `action.yml` in the `hello-world-javascript-action` directory with the following example code. For more information, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/actions/creating-actions/metadata-syntax-for-github-actions)."
Create a new file named `action.yml` in the `hello-world-javascript-action` directory with the following example code. For more information, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/actions/creating-actions/metadata-syntax-for-github-actions)."
**action.yml**
```yaml
name: 'Hello World'
description: 'Greet someone and record the time'
@@ -108,7 +106,7 @@ GitHub Actions provide context information about the webhook event, Git refs, wo
Add a new file called `index.js`, with the following code.
**index.js**
{% raw %}
```javascript
const core = require('@actions/core');
const github = require('@actions/github');
@@ -126,6 +124,7 @@ try {
core.setFailed(error.message);
}
```
{% endraw %}
If an error is thrown in the above `index.js` example, `core.setFailed(error.message);` uses the actions toolkit [`@actions/core`](https://github.com/actions/toolkit/tree/main/packages/core) package to log a message and set a failing exit code. For more information, see "[Setting exit codes for actions](/actions/creating-actions/setting-exit-codes-for-actions)."
@@ -143,7 +142,6 @@ In your `hello-world-javascript-action` directory, create a `README.md` file tha
- Environment variables the action uses.
- An example of how to use your action in a workflow.
**README.md**
```markdown
# Hello world javascript action
@@ -180,7 +178,7 @@ It's best practice to also add a version tag for releases of your action. For mo
```shell
git add action.yml index.js node_modules/* package.json package-lock.json README.md
git commit -m "My first action is ready"
git tag -a -m "My first action release" v1
git tag -a -m "My first action release" v1.1
git push --follow-tags
```
@@ -205,7 +203,7 @@ Checking in your `node_modules` directory can cause problems. As an alternative,
```shell
git add action.yml dist/index.js node_modules/*
git commit -m "Use vercel/ncc"
git tag -a -m "My first action release" v1
git tag -a -m "My first action release" v1.1
git push --follow-tags
```
@@ -217,10 +215,11 @@ Now you're ready to test your action out in a workflow. When an action is in a p
#### Example using a public action
The following workflow code uses the completed hello world action in the `actions/hello-world-javascript-action` repository. Copy the workflow code into a `.github/workflows/main.yml` file, but replace the `actions/hello-world-javascript-action` repository with the repository you created. You can also replace the `who-to-greet` input with your name.
This example demonstrates how your new public action can be run from within an external repository.
Copy the following YAML into a new file at `.github/workflows/main.yml`, and update the `uses: octocat/hello-world-javascript-action@v1.1` line with your username and the name of the public repository you created above. You can also replace the `who-to-greet` input with your name.
{% raw %}
**.github/workflows/main.yml**
```yaml
on: [push]
@@ -231,7 +230,7 @@ jobs:
steps:
- name: Hello world action step
id: hello
uses: actions/hello-world-javascript-action@v1.1
uses: octocat/hello-world-javascript-action@v1.1
with:
who-to-greet: 'Mona the Octocat'
# Use the output from the `hello` step
@@ -240,6 +239,8 @@ jobs:
```
{% endraw %}
When this workflow is triggered, the runner will download the `hello-world-javascript-action` action from your public repository and then execute it.
#### Example using a private action
Copy the workflow code into a `.github/workflows/main.yml` file in your action's repository. You can also replace the `who-to-greet` input with your name.

View File

@@ -24,7 +24,7 @@ topics:
This guide shows you how to create a workflow that performs continuous integration (CI) for your Xamarin project. The workflow you create will allow you to see when commits to a pull request cause build or test failures against your default branch; this approach can help ensure that your code is always healthy.
{% data variables.product.prodname_actions %}-hosted macOS runner stores Xamarin SDK versions and the associated Mono versions as a set of symlinks to Xamarin SDK locations that are available by a single bundle symlink. For a full list of available Xamarin SDK versions and their corresponding bundles, see the runners documentation:
For a full list of available Xamarin SDK versions on the {% data variables.product.prodname_actions %}-hosted macOS runners, see the documentation:
* [macOS 10.15](https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md#xamarin-bundles)
* [macOS 11](https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11-Readme.md#xamarin-bundles)
@@ -41,7 +41,7 @@ We recommend that you have a basic understanding of Xamarin, .NET Core SDK, YAML
### Bulding Xamarin.iOS apps
The example below demonstrates how to change the default Xamarin bundle and build a Xamarin.iOS application.
The example below demonstrates how to change the default Xamarin SDK versions and build a Xamarin.iOS application.
{% raw %}
```yaml
@@ -55,34 +55,33 @@ jobs:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Select default Xamarin bundle to 6_12_6
run: |
XAMARIN_SDK=6_12_6
$VM_ASSETS/select-xamarin-sdk.sh $XAMARIN_SDK
- uses: actions/checkout@v2
- name: Set default Xamarin SDK versions
run: |
$VM_ASSETS/select-xamarin-sdk-v2.sh --mono=6.12 --ios=14.10
- name: Set default Xcode 12.3
run: |
XCODE_ROOT=/Applications/Xcode_12.3.0.app
echo "MD_APPLE_SDK_ROOT=$XCODE_ROOT" >> $GITHUB_ENV
sudo xcode-select -s $XCODE_ROOT
- name: Set default Xcode 12.3
run: |
XCODE_ROOT=/Applications/Xcode_12.3.0.app
echo "MD_APPLE_SDK_ROOT=$XCODE_ROOT" >> $GITHUB_ENV
sudo xcode-select -s $XCODE_ROOT
- name: Setup .NET Core SDK 5.0.x
uses: actions/setup-dotnet@v1
with:
dotnet-version: '5.0.x'
- name: Setup .NET Core SDK 5.0.x
uses: actions/setup-dotnet@v1
with:
dotnet-version: '5.0.x'
- name: Install dependencies
run: nuget restore <sln_file_path>
- name: Install dependencies
run: nuget restore <sln_file_path>
- name: Build
run: msbuild <csproj_file_path> /p:Configuration=Debug /p:Platform=iPhoneSimulator /t:Rebuild
- name: Build
run: msbuild <csproj_file_path> /p:Configuration=Debug /p:Platform=iPhoneSimulator /t:Rebuild
```
{% endraw %}
### Bulding Xamarin.Android apps
The example below demonstrates how to change default the Xamarin bundle and build a Xamarin.Android application.
The example below demonstrates how to change default Xamarin SDK versions and build a Xamarin.Android application.
{% raw %}
```yaml
@@ -96,22 +95,21 @@ jobs:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Select default Xamarin bundle to 6_12_6
run: |
XAMARIN_SDK=6_12_6
$VM_ASSETS/select-xamarin-sdk.sh $XAMARIN_SDK
- uses: actions/checkout@v2
- name: Set default Xamarin SDK versions
run: |
$VM_ASSETS/select-xamarin-sdk-v2.sh --mono=6.10 --android=10.2
- name: Setup .NET Core SDK 5.0.x
uses: actions/setup-dotnet@v1
with:
dotnet-version: '5.0.x'
- name: Setup .NET Core SDK 5.0.x
uses: actions/setup-dotnet@v1
with:
dotnet-version: '5.0.x'
- name: Install dependencies
run: nuget restore <sln_file_path>
- name: Install dependencies
run: nuget restore <sln_file_path>
- name: Build
run: msbuild <csproj_file_path> /t:PackageForAndroid /p:Configuration=Debug
- name: Build
run: msbuild <csproj_file_path> /t:PackageForAndroid /p:Configuration=Debug
```
{% endraw %}

View File

@@ -20,7 +20,7 @@ topics:
Subdomain isolation mitigates cross-site scripting and other related vulnerabilities. For more information, see "[Cross-site scripting](http://en.wikipedia.org/wiki/Cross-site_scripting)" on Wikipedia. We highly recommend that you enable subdomain isolation on {% data variables.product.product_location %}.
When subdomain isolation is enabled, {% data variables.product.prodname_ghe_server %} replaces several paths with subdomains.
When subdomain isolation is enabled, {% data variables.product.prodname_ghe_server %} replaces several paths with subdomains. After enabling subdomain isolation, attempts to access the previous paths for some user-supplied content, such as `http(s)://HOSTNAME/raw/`, may return `404` errors.
{% if currentVersion == "enterprise-server@2.22" %}
To use Docker with {% data variables.product.prodname_registry %}, you must also enable subdomain isolation. For more information, see "[Working with the Docker registry](/enterprise/{{ currentVersion }}/user/packages/working-with-a-github-packages-registry/working-with-the-docker-registry)."

View File

@@ -9,8 +9,12 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.1'
github-ae: 'next'
type: how_to
topics:
- Security
- Security policies
- Vulnerabilities
- Repositories
- Health
---
### About security policies

View File

@@ -5,8 +5,12 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: overview
topics:
- Security
- Repositories
- Dependencies
- Vulnerabilities
- Advanced Security
---
### About {% data variables.product.prodname_dotcom %}'s security features

View File

@@ -7,7 +7,9 @@ versions:
enterprise-server: '>=3.0'
github-ae: '*'
topics:
- Security
- Repositories
- Dependencies
- Vulnerabilities
children:
- /github-security-features
- /securing-your-repository

View File

@@ -6,8 +6,12 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Organizations
- Dependencies
- Vulnerabilities
- Advanced Security
---
### Introduction

View File

@@ -9,8 +9,12 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Repositories
- Dependencies
- Vulnerabilities
- Advanced Security
---
### Introduction

View File

@@ -7,7 +7,9 @@ versions:
enterprise-server: '>=3.0'
github-ae: '*'
topics:
- Security
- Repositories
- Dependencies
- Vulnerabilities
children:
- /getting-started
- /secret-security

View File

@@ -11,8 +11,10 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: overview
topics:
- Repositories
- Secret scanning
- Advanced Security
---
{% data reusables.secret-scanning.beta %}

View File

@@ -10,7 +10,10 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Secret scanning
- Advanced Security
- Repositories
---

View File

@@ -8,6 +8,8 @@ versions:
enterprise-server: '>=3.0'
github-ae: '*'
topics:
- Secret scanning
- Advanced Security
- Repositories
children:
- /about-secret-scanning

View File

@@ -8,7 +8,11 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Secret scanning
- Advanced Security
- Alerts
- Repositories
---

View File

@@ -10,8 +10,11 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: overview
topics:
- Security
- Advanced Security
- Code scanning
- CodeQL
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->

View File

@@ -11,8 +11,15 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- Actions
- Repositories
- Pull requests
- JavaScript
- Python
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->

View File

@@ -13,8 +13,16 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- CodeQL
- Actions
- Repositories
- C/C++
- C#
- Java
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->

View File

@@ -10,7 +10,8 @@ versions:
enterprise-server: '>=3.0'
github-ae: '*'
topics:
- Security
- Advanced Security
- Code scanning
children:
- /about-code-scanning
- /triaging-code-scanning-alerts-in-pull-requests

View File

@@ -13,8 +13,12 @@ redirect_from:
- /github/finding-security-vulnerabilities-and-errors-in-your-code/managing-alerts-from-code-scanning
- /github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository
- /code-security/secure-coding/managing-code-scanning-alerts-for-your-repository
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- Alerts
- Repositories
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
@@ -48,7 +52,7 @@ You need write permission to view a summary of all the alerts for a repository o
{% data reusables.repositories.sidebar-security %}
{% data reusables.repositories.sidebar-code-scanning-alerts %}
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.1"%}
1. Optionally, use the drop-down menus to filter alerts. For example, you can filter by the tool that was used to identify alerts.
1. Optionally, use{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.2" %} the free text search box or{% endif %} the drop-down menus to filter alerts. For example, you can filter by the tool that was used to identify alerts.
![Filter by tool](/assets/images/help/repository/code-scanning-filter-by-tool.png){% endif %}
1. Under "{% data variables.product.prodname_code_scanning_capc %}," click the alert you'd like to explore.
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.1"%}
@@ -61,12 +65,49 @@ You need write permission to view a summary of all the alerts for a repository o
1. Alerts from {% data variables.product.prodname_codeql %} analysis include a description of the problem. Click **Show more** for guidance on how to fix your code.
![Details for an alert](/assets/images/help/repository/code-scanning-alert-details.png)
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.2" %}
### Searching {% data variables.product.prodname_code_scanning %} alerts
You can search the list of alerts. This is useful if there is a large number of alerts in your repository, or if you don't know the exact name for an alert for example. {% data variables.product.product_name %} performs the free text search across:
- The name of the alert
- The alert description
- The alert details (this also includes the information hidden from view by default in the **Show more** collapsible section)
![The alert information used in searches](/assets/images/help/repository/code-scanning-free-text-search-areas.png)
| Supported search | Syntax example | Results |
| ---- | ---- | ---- |
| Single word search | `injection` | Returns all the alerts containing the word `injection` |
| Multiple word search | `sql injection` | Returns all the alerts containing `sql` or `injection` |
| Exact match search</br>(use double quotes) | `"sql injection"` | Returns all the alerts containing the exact phrase `sql injection` |
| OR search | `sql OR injection` | Returns all the alerts containing `sql` or `injection` |
| AND search | `sql AND injection` | Returns all the alerts containing both words `sql` and `injection` |
{% tip %}
**Tips:**
- The multiple word search is equivalent to an OR search.
- The AND search will return results where the search terms are found _anywhere_, in any order in the alert name, description, or details.
{% endtip %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-security %}
{% data reusables.repositories.sidebar-code-scanning-alerts %}
1. To the right of the **Filters** drop-down menus, type the keywords to search for in the free text search box.
![The free text search box](/assets/images/help/repository/code-scanning-search-alerts.png)
2. Press <kbd>return</kbd>. The alert listing will contain the open {% data variables.product.prodname_code_scanning %} alerts matching your search criteria.
{% endif %}
### Fixing an alert
Anyone with write permission for a repository can fix an alert by committing a correction to the code. If the repository has {% data variables.product.prodname_code_scanning %} scheduled to run on pull requests, it's best to raise a pull request with your correction. This will trigger {% data variables.product.prodname_code_scanning %} analysis of the changes and test that your fix doesn't introduce any new problems. For more information, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning)" and "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)."
If you have write permission for a repository, you can view fixed alerts by viewing the summary of alerts and clicking **Closed**. For more information, see "[Viewing the alerts for a repository](#viewing-the-alerts-for-a-repository)." The "Closed" list shows fixed alerts and alerts that users have dismissed.
You can use{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.2" %} the free text search or{% endif %} the filters to display a subset of alerts and then in turn mark all matching alerts as closed.
Alerts may be fixed in one branch but not in another. You can use the "Branch" drop-down menu, on the summary of alerts, to check whether an alert is fixed in a particular branch.
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.1"%}
@@ -105,7 +146,7 @@ To dismiss or delete alerts:
![Deleting alerts](/assets/images/help/repository/code-scanning-delete-alerts.png)
Optionally, you can use the filters to display a subset of alerts and then delete all matching alerts at once. For example, if you have removed a query from {% data variables.product.prodname_codeql %} analysis, you can use the "Rule" filter to list just the alerts for that query and then select and delete all of those alerts.
Optionally, you can use{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.2" %} the free text search or{% endif %} the filters to display a subset of alerts and then delete all matching alerts at once. For example, if you have removed a query from {% data variables.product.prodname_codeql %} analysis, you can use the "Rule" filter to list just the alerts for that query and then select and delete all of those alerts.
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.1"%}
![Filter alerts by rule](/assets/images/help/repository/code-scanning-filter-by-rule.png)

View File

@@ -10,8 +10,15 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- CodeQL
- Actions
- Repositories
- Containers
- Java
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->

View File

@@ -14,8 +14,12 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- Actions
- Repositories
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->

View File

@@ -11,8 +11,13 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- Pull requests
- Alerts
- Repositories
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->

View File

@@ -11,8 +11,18 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- CodeQL
- Actions
- Troubleshooting
- Repositories
- Pull requests
- C/C++
- C#
- Java
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->

View File

@@ -11,7 +11,9 @@ versions:
enterprise-server: '>=3.0'
github-ae: '*'
topics:
- Security
- Advanced Security
- Code scanning
- CodeQL
children:
- /automatically-scanning-your-code-for-vulnerabilities-and-errors
- /integrating-with-code-scanning

View File

@@ -10,8 +10,12 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: overview
topics:
- Security
- Advanced Security
- Code scanning
- Webhooks
- Integration
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->

View File

@@ -11,7 +11,9 @@ versions:
enterprise-server: '>=3.0'
github-ae: '*'
topics:
- Security
- Advanced Security
- Code scanning
- Integration
children:
- /about-integration-with-code-scanning
- /uploading-a-sarif-file-to-github

View File

@@ -12,8 +12,12 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: reference
topics:
- Security
- Advanced Security
- Code scanning
- Integration
- SARIF
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->

View File

@@ -12,8 +12,15 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- Integration
- Actions
- Repositories
- CI
- SARIF
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->

View File

@@ -8,7 +8,14 @@ versions:
enterprise-server: '>=3.0'
github-ae: '*'
topics:
- Security
- Advanced Security
- Code scanning
- CodeQL
- Repositories
- Pull requests
- Integration
- CI
- SARIF
redirect_from:
- /code-security/secure-coding/about-codeql-code-scanning-in-your-ci-system
---

View File

@@ -13,8 +13,18 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- CodeQL
- Integration
- CI
- Repositories
- Pull requests
- C/C++
- C#
- Java
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->

View File

@@ -9,8 +9,13 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- Integration
- CI
- CodeQL
children:
- /about-codeql-code-scanning-in-your-ci-system
- /running-codeql-cli-in-your-ci-system

View File

@@ -7,9 +7,17 @@ miniTocMaxHeadingLevel: 4
versions:
free-pro-team: '*'
enterprise-server: '>=3.1'
github-ae: next
github-ae: 'next'
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- CodeQL
- Repositories
- Pull requests
- Integration
- CI
- SARIF
redirect_from:
- /code-security/secure-coding/running-codeql-cli-in-your-ci-system
---

View File

@@ -12,8 +12,16 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- CodeQL
- Repositories
- Pull requests
- Integration
- CI
- SARIF
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
<!--UI-LINK: When GitHub Enterprise Server doesn't have GitHub Actions set up, the Security > Code scanning alerts view links to this article.-->
@@ -158,7 +166,7 @@ This example is similar to the previous example, however this time the repositor
$ . /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh
```
1. Build the code. On macOS, you need to prefix the build command with the environment variable `$CODEQL_RUNNER`. For more information, see "[Troubleshooting {% data variables.product.prodname_codeql_runner %} in your CI system](/code-security/secure-coding/troubleshooting-codeql-runner-in-your-ci-system#no-code-found-during-the-build)#no-code-found-during-the-build)."
1. Build the code. On macOS, you need to prefix the build command with the environment variable `$CODEQL_RUNNER`. For more information, see "[Troubleshooting {% data variables.product.prodname_codeql_runner %} in your CI system](/code-security/secure-coding/troubleshooting-codeql-runner-in-your-ci-system#no-code-found-during-the-build)."
{% data reusables.code-scanning.codeql-runner-analyze-example %}

View File

@@ -12,8 +12,14 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Security
- Advanced Security
- Code scanning
- CodeQL
- Troubleshooting
- Integration
- CI
---
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->

View File

@@ -4,6 +4,10 @@ intro: 'Vulnerability disclosure is a coordinated effort between security report
miniTocMaxHeadingLevel: 4
versions:
free-pro-team: '*'
type: overview
topics:
- Security advisories
- Vulnerabilities
---
### About disclosing vulnerabilities in the industry

View File

@@ -7,8 +7,11 @@ redirect_from:
- /github/managing-security-vulnerabilities/about-github-security-advisories
versions:
free-pro-team: '*'
type: overview
topics:
- Security
- Security advisories
- Vulnerabilities
- CVEs
---
{% data reusables.repositories.security-advisory-admin-permissions %}

View File

@@ -7,8 +7,11 @@ redirect_from:
- /github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory
versions:
free-pro-team: '*'
type: how_to
topics:
- Security
- Security advisories
- Vulnerabilities
- Collaboration
---
People with admin permissions to a security advisory can add collaborators to the security advisory.

View File

@@ -6,8 +6,12 @@ redirect_from:
- /github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability
versions:
free-pro-team: '*'
type: how_to
topics:
- Security
- Security advisories
- Vulnerabilities
- Collaboration
- Forks
---
### Prerequisites

View File

@@ -7,8 +7,10 @@ redirect_from:
- /github/managing-security-vulnerabilities/creating-a-security-advisory
versions:
free-pro-team: '*'
type: how_to
topics:
- Security
- Security advisories
- Vulnerabilities
---
Anyone with admin permissions to a repository can create a security advisory.

View File

@@ -5,8 +5,10 @@ redirect_from:
- /github/managing-security-vulnerabilities/editing-a-security-advisory
versions:
free-pro-team: '*'
type: how_to
topics:
- Security
- Security advisories
- Vulnerabilities
---
People with admin permissions to a security advisory can edit the security advisory.

View File

@@ -8,7 +8,10 @@ redirect_from:
versions:
free-pro-team: '*'
topics:
- Security
- Security advisories
- Vulnerabilities
- Repositories
- CVEs
children:
- /about-coordinated-disclosure-of-security-vulnerabilities
- /about-github-security-advisories

View File

@@ -7,8 +7,11 @@ redirect_from:
- /github/managing-security-vulnerabilities/permission-levels-for-security-advisories
versions:
free-pro-team: '*'
type: reference
topics:
- Security
- Security advisories
- Vulnerabilities
- Permissions
---
### Permissions overview

View File

@@ -7,8 +7,12 @@ redirect_from:
- /github/managing-security-vulnerabilities/publishing-a-security-advisory
versions:
free-pro-team: '*'
type: how_to
topics:
- Security
- Security advisories
- Vulnerabilities
- CVEs
- Repositories
---
<!--Marketing-LINK: From /features/security/software-supply-chain page "Publishing a security advisory".-->

View File

@@ -5,8 +5,11 @@ redirect_from:
- /github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory
versions:
free-pro-team: '*'
type: how_to
topics:
- Security
- Security advisories
- Vulnerabilities
- Collaboration
---
People with admin permissions to a security advisory can remove collaborators from the security advisory.

View File

@@ -5,8 +5,10 @@ redirect_from:
- /github/managing-security-vulnerabilities/withdrawing-a-security-advisory
versions:
free-pro-team: '*'
type: how_to
topics:
- Security
- Security advisories
- Vulnerabilities
---
If you publish a security advisory in error, you can withdraw the security advisory by contacting {% data variables.contact.contact_support %}.

View File

@@ -5,6 +5,13 @@ product: '{% data reusables.gated-features.security-center %}'
versions:
free-pro-team: '*'
github-ae: 'next'
type: how_to
topics:
- Security overview
- Advanced Security
- Alerts
- Organizations
- Teams
---
{% data reusables.security-center.beta %}

View File

@@ -5,7 +5,10 @@ intro: 'View, sort, and filter the security alerts from across your organization
product: '{% data reusables.gated-features.security-center %}'
versions:
free-pro-team: '*'
github-ae: next
github-ae: 'next'
topics:
- Security overview
- Advanced Security
children:
- /exploring-security-alerts
---

View File

@@ -9,7 +9,9 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
topics:
- Security
- Dependabot
- Dependencies
- Repositories
children:
- /understanding-your-software-supply-chain
- /keeping-your-dependencies-updated-automatically

View File

@@ -9,8 +9,13 @@ redirect_from:
- /code-security/supply-chain-security/about-dependabot-version-updates
versions:
free-pro-team: '*'
type: overview
topics:
- Dependabot
- Version updates
- Repositories
- Dependencies
- Pull requests
---
### About {% data variables.product.prodname_dependabot_version_updates %}

View File

@@ -8,8 +8,13 @@ redirect_from:
miniTocMaxHeadingLevel: 4
versions:
free-pro-team: '*'
type: reference
topics:
- Dependabot
- Version updates
- Repositories
- Dependencies
- Pull requests
---
### About the *dependabot.yml* file
@@ -944,3 +949,17 @@ registries:
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
```
{% endraw %}
#### `terraform-registry`
The `terraform-registry` type supports a token.
{% raw %}
```yaml
registries:
terraform-example:
type: terraform-registry
url: https://terraform.example.com
token: ${{secrets.MY_TERRAFORM_API_TOKEN}}
```
{% endraw %}

View File

@@ -7,8 +7,15 @@ redirect_from:
- /code-security/supply-chain-security/customizing-dependency-updates
versions:
free-pro-team: '*'
type: how_to
topics:
- Dependabot
- Version updates
- Security updates
- Repositories
- Dependencies
- Pull requests
- Vulnerabilities
---
### About customizing dependency updates

View File

@@ -7,8 +7,13 @@ redirect_from:
- /code-security/supply-chain-security/enabling-and-disabling-version-updates
versions:
free-pro-team: '*'
type: how_to
topics:
- Dependabot
- Version updates
- Repositories
- Dependencies
- Pull requests
---
<!--Marketing-LINK: From /features/security/software-supply-chain page "About version updates for dependencies".-->

View File

@@ -7,6 +7,10 @@ versions:
free-pro-team: '*'
topics:
- Repositories
- Dependabot
- Version updates
- Dependencies
- Pull requests
children:
- /about-dependabot-version-updates
- /upgrading-from-dependabotcom-to-github-native-dependabot

View File

@@ -7,8 +7,12 @@ redirect_from:
- /code-security/supply-chain-security/keeping-your-actions-up-to-date-with-dependabot
versions:
free-pro-team: '*'
type: how_to
topics:
- Repositories
- Dependabot
- Version updates
- Actions
---
### About {% data variables.product.prodname_dependabot_version_updates %} for actions

View File

@@ -6,8 +6,12 @@ redirect_from:
- /code-security/supply-chain-security/listing-dependencies-configured-for-version-updates
versions:
free-pro-team: '*'
type: how_to
topics:
- Repositories
- Dependabot
- Version updates
- Dependencies
---
### Viewing dependencies monitored by {% data variables.product.prodname_dependabot %}

View File

@@ -6,6 +6,13 @@ redirect_from:
- /code-security/supply-chain-security/managing-encrypted-secrets-for-dependabot
versions:
free-pro-team: '*'
type: how_to
topics:
- Dependabot
- Version updates
- Secret store
- Repositories
- Dependencies
---
### About encrypted secrets for {% data variables.product.prodname_dependabot %}

View File

@@ -6,8 +6,14 @@ redirect_from:
- /code-security/supply-chain-security/managing-pull-requests-for-dependency-updates
versions:
free-pro-team: '*'
type: how_to
topics:
- Repositories
- Version updates
- Security updates
- Pull requests
- Dependencies
- Vulnerabilities
---
### About {% data variables.product.prodname_dependabot %} pull requests

View File

@@ -3,8 +3,12 @@ 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:
free-pro-team: '*'
type: how_to
topics:
- Repositories
- Dependabot
- Version updates
- Dependencies
redirect_from:
- /code-security/supply-chain-security/upgrading-from-dependabotcom-to-github-native-dependabot
---

View File

@@ -9,8 +9,13 @@ redirect_from:
versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
type: overview
topics:
- Security
- Dependabot
- Alerts
- Vulnerabilities
- Repositories
- Dependencies
---
<!--For this article in earlier GHES versions, see /content/github/managing-security-vulnerabilities-->
<!--Marketing-LINK: From /features/security/software-supply-chain page "About alerts for vulnerable dependencies ".-->

View File

@@ -8,8 +8,14 @@ redirect_from:
- /code-security/supply-chain-security/about-dependabot-security-updates
versions:
free-pro-team: '*'
type: overview
topics:
- Security
- Dependabot
- Security updates
- Vulnerabilities
- Repositories
- Dependencies
- Pull requests
---
<!--Marketing-LINK: From /features/security/software-supply-chain page "About Dependabot security updates".-->

View File

@@ -6,8 +6,13 @@ redirect_from:
- /code-security/supply-chain-security/about-managing-vulnerable-dependencies
versions:
free-pro-team: '*'
type: overview
topics:
- Security
- Dependabot
- Vulnerabilities
- Repositories
- Dependencies
- Pull requests
---
<!--Marketing-LINK: From /features/security/software-supply-chain page "Managing vulnerabilities in your projects dependencies ".-->

View File

@@ -7,8 +7,13 @@ redirect_from:
- /code-security/supply-chain-security/browsing-security-vulnerabilities-in-the-github-advisory-database
versions:
free-pro-team: '*'
type: how_to
topics:
- Security
- Security advisories
- Alerts
- Dependabot
- Vulnerabilities
- CVEs
---
<!--Marketing-LINK: From /features/security/software-supply-chain page "Browsing security vulnerabilities in the GitHub Advisory Database".-->

View File

@@ -11,8 +11,14 @@ redirect_from:
- /code-security/supply-chain-security/configuring-dependabot-security-updates
versions:
free-pro-team: '*'
type: how_to
topics:
- Security
- Dependabot
- Security updates
- Alerts
- Dependencies
- Pull requests
- Repositories
---
<!--Marketing-LINK: From home page "Learn more about Dependabot".-->

View File

@@ -8,8 +8,14 @@ redirect_from:
versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
type: how_to
topics:
- Security
- Dependabot
- Alerts
- Notifications
- Vulnerabilities
- Dependencies
- Repositories
---
<!--For this article in earlier GHES versions, see /content/github/managing-security-vulnerabilities-->

View File

@@ -10,6 +10,14 @@ redirect_from:
versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
topics:
- Repositories
- Dependabot
- Version updates
- Dependencies
- Pull requests
- Vulnerabilities
- Alerts
children:
- /about-managing-vulnerable-dependencies
- /browsing-security-vulnerabilities-in-the-github-advisory-database

View File

@@ -8,8 +8,16 @@ redirect_from:
- /code-security/supply-chain-security/troubleshooting-dependabot-errors
versions:
free-pro-team: '*'
type: how_to
topics:
- Security
- Dependabot
- Security updates
- Version updates
- Repositories
- Pull requests
- Troubleshooting
- Errors
- Dependencies
---
### About {% data variables.product.prodname_dependabot %} errors

View File

@@ -8,8 +8,19 @@ redirect_from:
versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
type: how_to
topics:
- Security
- Dependabot
- Alerts
- Troubleshooting
- Errors
- Security updates
- Dependencies
- Vulnerabilities
- Dependency graph
- Alerts
- CVEs
- Repositories
---
The results of dependency detection reported by {% data variables.product.product_name %} may be different from the results returned by other tools. There are good reasons for this and it's helpful to understand how {% data variables.product.prodname_dotcom %} determines dependencies for your project.

View File

@@ -10,8 +10,14 @@ shortTitle: Viewing and updating vulnerable dependencies
versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
type: how_to
topics:
- Security
- Dependabot
- Security updates
- Alerts
- Dependencies
- Pull requests
- Repositories
---
Your repository's {% data variables.product.prodname_dependabot %} alerts tab lists all open and closed {% data variables.product.prodname_dependabot_alerts %}{% if currentVersion == "free-pro-team@latest" %} and corresponding {% data variables.product.prodname_dependabot_security_updates %}{% endif %}. You can sort the list of alerts using the drop-down menu, and you can click into specific alerts for more details. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)."

View File

@@ -3,7 +3,12 @@ title: About dependency review
intro: 'Dependency review lets you catch vulnerable dependencies before you introduce them to your environment, and provides information on license, dependents, and age of dependencies.'
versions:
free-pro-team: '*'
type: overview
topics:
- Advanced Security
- Dependency review
- Vulnerabilities
- Dependencies
- Pull requests
redirect_from:
- /code-security/supply-chain-security/about-dependency-review

View File

@@ -7,7 +7,10 @@ redirect_from:
versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
type: overview
topics:
- Dependency graph
- Dependencies
- Repositories
---
<!--For this article in earlier GHES versions, see /content/github/visualizing-repository-data-with-graphs-->

View File

@@ -12,7 +12,10 @@ redirect_from:
versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
type: how_to
topics:
- Dependency graph
- Dependencies
- Repositories
---
<!--For this article in earlier GHES versions, see /content/github/visualizing-repository-data-with-graphs-->

View File

@@ -3,6 +3,10 @@ title: Understanding your software supply chain
versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
topics:
- Dependency graph
- Dependencies
- Repositories
children:
- /about-the-dependency-graph
- /exploring-the-dependencies-of-a-repository

View File

@@ -58,7 +58,7 @@ Developers and organization administrators can also configure settings to add en
### Joining the beta
A limited number of people will be invited to join the beta. To join the waitlist, see [Sign up for Codespaces beta](https://github.com/features/codespaces/signup).
A limited number of people will be invited to join the beta. To join the waitlist, see [Sign up for the Codespaces beta](https://github.com/features/codespaces/signup).
### Contacting us about {% data variables.product.prodname_codespaces %}

View File

@@ -51,8 +51,10 @@ When you create a new codespace, {% data variables.product.prodname_dotcom %} cl
* _install_
* _bootstrap.sh_
* _bootstrap_
* _script/bootstrap_
* _setup.sh_
* _setup_
* _script/setup_
If none of these files are found, then any files or folders in `dotfiles` starting with `.` are symlinked to the codespace's `~` or `$HOME` directory.

View File

@@ -1,6 +1,6 @@
---
title: Creating a default community health file
intro: 'You can create default community health files, such as CONTRIBUTING and CODE_OF_CONDUCT. Default files will be used for any public repository owned by the account that does not contain its own file of that type.'
intro: 'You can create default community health files, such as CONTRIBUTING and CODE_OF_CONDUCT. Default files will be used for any repository owned by the account that does not contain its own file of that type.'
redirect_from:
- /articles/creating-a-default-community-health-file-for-your-organization
- /github/building-a-strong-community/creating-a-default-community-health-file-for-your-organization
@@ -16,12 +16,12 @@ topics:
You can add default community health files to the root of a public repository called `.github` that is owned by an organization{% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.19" %} or user account{% endif %}.
{% data variables.product.product_name %} will use and display default files for any public repository owned by the account that does not have its own file of that type in any of the following places:
{% data variables.product.product_name %} will use and display default files for any repository owned by the account that does not have its own file of that type in any of the following places:
- the root of the repository
- the `.github` folder
- the `docs` folder
For example, anyone who creates an issue or pull request in a public repository that does not have its own CONTRIBUTING file will see a link to the default CONTRIBUTING file. If a repository has any files in its own `.github/ISSUE_TEMPLATE` folder{% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.19" %}, including issue templates or a *config.yml* file,{% endif %} none of the contents of the default `.github/ISSUE_TEMPLATE` folder will be used.
For example, anyone who creates an issue or pull request in a repository that does not have its own CONTRIBUTING file will see a link to the default CONTRIBUTING file. If a repository has any files in its own `.github/ISSUE_TEMPLATE` folder{% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.19" %}, including issue templates or a *config.yml* file,{% endif %} none of the contents of the default `.github/ISSUE_TEMPLATE` folder will be used.
Default files are not included in clones, packages, or downloads of individual repositories because they are stored only in the `.github` repository.

View File

@@ -12,7 +12,13 @@ versions:
free-pro-team: '*'
enterprise-server: '>=3.0'
github-ae: '*'
type: how_to
topics:
- Dependabot
- Alerts
- Advanced Security
- Dependency graph
- Secret scanning
- Repositories
---
{% if currentVersion == "free-pro-team@latest" %}

View File

@@ -3,8 +3,13 @@ title: Reviewing dependency changes in a pull request
intro: 'If a pull request contains changes to dependencies, you can view a summary of what has changed and whether there are known vulnerabilities in any of the dependencies.'
versions:
free-pro-team: '*'
type: how_to
topics:
- Pull requests
- Dependency review
- Advanced Security
- Vulnerabilities
- Dependencies
redirect_from:
- /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request
- /github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request

View File

@@ -26,7 +26,7 @@ For more information about adding people to your enterprise, see "{% if currentV
Enterprise owners have complete control over the enterprise and can take every action, including:
- Managing administrators
- {% if currentVersion == "free-pro-team@latest" %}Adding and removing {% elsif currentVersion == "github-ae@latest" %}Managing{% endif %} organizations {% if currentVersion == "free-pro-team@latest" %}to and from {% elsif currentVersion == "github-ae@latest" %} in{% endif %} the enterprise
- {% if currentVersion == "free-pro-team@latest" %}Adding and removing {% elsif currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.20" %}Managing{% endif %} organizations {% if currentVersion == "free-pro-team@latest" %}to and from {% elsif currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.20" %} in{% endif %} the enterprise
- Managing enterprise settings
- Enforcing policy across organizations
{% if currentVersion == "free-pro-team@latest" %}- Managing billing settings{% endif %}

View File

@@ -127,6 +127,8 @@ When you participate in certain programs, {% data variables.product.prodname_dot
| ![{% data variables.product.prodname_dotcom %} Sponsor badge icon](/assets/images/help/profile/badge-sponsors-small.png) | **{% data variables.product.prodname_dotcom %} Sponsor** | If you sponsored an open source contributor through {% data variables.product.prodname_sponsors %} you'll get a {% data variables.product.prodname_dotcom %} Sponsor badge on your profile. Clicking the badge takes you to the **Sponsoring** tab of your profile. For more information, see "[Sponsoring open source contributors](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-open-source-contributors)." |
| {% octicon "cpu" aria-label="The Developer Program icon" %} | **Developer Program Member** | If you're a registered member of the {% data variables.product.prodname_dotcom %} Developer Program, building an app with the {% data variables.product.prodname_dotcom %} API, you'll get a Developer Program Member badge on your profile. For more information on the {% data variables.product.prodname_dotcom %} Developer Program, see [GitHub Developer](/program/). |
| {% octicon "star-fill" aria-label="The star icon" %} | **Pro** | If you use {% data variables.product.prodname_pro %} you'll get a PRO badge on your profile. For more information about {% data variables.product.prodname_pro %}, see "[{% data variables.product.prodname_dotcom %}'s products](/github/getting-started-with-github/githubs-products#github-pro)." |
| {% octicon "lock" aria-label="The lock icon" %} | **Security Bug Bounty Hunter** | If you helped out hunting down security vulnerabilities, you'll get a Security Bug Bounty Hunter badge on your profile. For more information about the {% data variables.product.prodname_dotcom %} Security program, see [{% data variables.product.prodname_dotcom %} Security](https://bounty.github.com/). |
| {% octicon "mortar-board" aria-label="The mortar-board icon" %} | **Github Campus Expert** | If you participate in the {% data variables.product.prodname_dotcom %} Campus Program you'll get a {% data variables.product.prodname_dotcom %} Campus Expert badge on your profile. For more information about the Campus Experts program, see [Campus Experts](https://education.github.com/experts). |
### Disabling badges on your profile
@@ -141,7 +143,7 @@ You can disable some of the badges for {% data variables.product.prodname_dotcom
### List of qualifying repositories for Mars 2020 Helicopter Contributor badge
If you authored any commit(s) present in the commit history for the listed tag of one or more of the repositories below, you'll receive the Mars 2020 Helicopter Contributor badge on your profile. The authored commit must be with a verified email address, associated with your account at the time {% data variables.product.prodname_dotcom %} determined the eligible contributions, in order to be attributed to you. Future changes to verified emails will not have an effect on the badge. We built the list based on information received from NASA's Jet Propulsion Laboratory.
If you authored any commit(s) present in the commit history for the listed tag of one or more of the repositories below, you'll receive the Mars 2020 Helicopter Contributor badge on your profile. The authored commit must be with a verified email address, associated with your account at the time {% data variables.product.prodname_dotcom %} determined the eligible contributions, in order to be attributed to you. You can be the original author or [one of the co-authors](/github/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors) of the commit. Future changes to verified emails will not have an effect on the badge. We built the list based on information received from NASA's Jet Propulsion Laboratory.
| {% data variables.product.prodname_dotcom %} Repository | Version | Tag |
|---|---|---|
@@ -212,7 +214,7 @@ If you authored any commit(s) present in the commit history for the listed tag o
| [HdrHistogram/HdrHistogram](https://github.com/HdrHistogram/HdrHistogram) | 2.1.9 | [HdrHistogram-2.1.9](https://github.com/HdrHistogram/HdrHistogram/releases/tag/HdrHistogram-2.1.9) |
| [locationtech/spatial4j](https://github.com/locationtech/spatial4j) | 0.7 | [spatial4j-0.7](https://github.com/locationtech/spatial4j/releases/tag/spatial4j-0.7) |
| [locationtech/jts](https://github.com/locationtech/jts) | 1.15.0 | [jts-1.15.0](https://github.com/locationtech/jts/releases/tag/jts-1.15.0) |
| [apache/log4j](https://github.com/apache/log4j) | 2.11 | [v1_2_11](https://github.com/apache/log4j/releases/tag/v1_2_11) |
| [apache/logging-log4j2](https://github.com/apache/logging-log4j2) | 2.11 | [log4j-2.11.0](https://github.com/apache/logging-log4j2/releases/tag/log4j-2.11.0) |
### Further reading

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