From 1cdb1c701de0a151d9fa492e0cb21b31698b568e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 21 Aug 2023 08:29:06 +0000 Subject: [PATCH] deploy: e068fb91583c1f3465cfd4ceac6545b2c095a608 --- 404.html | 8 ++++---- assets/js/07ff0001.f9031d5f.js | 1 - assets/js/17f63c9e.119a4502.js | 1 - .../{10a78dc7.d6bfa5b1.js => 2b41380d.1c0c1c34.js} | 2 +- assets/js/532aed71.e99b6e73.js | 1 + assets/js/5534a79d.83bfbcc4.js | 1 + assets/js/9600e9a0.0370494e.js | 1 - assets/js/97b08134.85b52c42.js | 1 - assets/js/97b08134.bd3076f2.js | 1 + assets/js/e22550d2.29589ba8.js | 1 - assets/js/e22550d2.fa7a24af.js | 1 + assets/js/e6339af7.8edb6f32.js | 1 - assets/js/e6339af7.cf609479.js | 1 + assets/js/e6722c50.b0a34470.js | 1 + assets/js/e6722c50.fe24b714.js | 1 - assets/js/ed1016b5.834e2fd6.js | 1 + assets/js/main.2ce33fcb.js | 2 -- assets/js/main.9c63d07d.js | 2 ++ ...js.LICENSE.txt => main.9c63d07d.js.LICENSE.txt} | 0 assets/js/runtime~main.5ba44627.js | 1 - assets/js/runtime~main.b24c5c75.js | 1 + deployment.html | 8 ++++---- deployment/category/deployment-specifics.html | 8 ++++---- deployment/continuous-deployment.html | 8 ++++---- deployment/images.html | 8 ++++---- deployment/internal_tf.html | 8 ++++---- deployment/logs.html | 8 ++++---- deployment/monitoring.html | 8 ++++---- deployment/postgresql.html | 8 ++++---- deployment/scripts.html | 8 ++++---- deployment/secrets.html | 8 ++++---- deployment/specifics/centos-stream-source-git.html | 8 ++++---- deployment/specifics/fedora-source-git.html | 8 ++++---- deployment/specifics/packit-service.html | 8 ++++---- deployment/testing-changes.html | 8 ++++---- deployment/tls-certs.html | 8 ++++---- deployment/vars.html | 8 ++++---- development.html | 8 ++++---- development/creating-stream-9-repos.html | 8 ++++---- development/how-open-is-this-service.html | 8 ++++---- development/patch-metadata.html | 8 ++++---- docs.html | 8 ++++---- docs/about.html | 8 ++++---- docs/archive-not-matching-git.html | 8 ++++---- docs/category/downstream-jobs.html | 8 ++++---- docs/category/source-git.html | 8 ++++---- docs/category/upstream-jobs.html | 8 ++++---- docs/cli.html | 8 ++++---- docs/cli/build.html | 8 ++++---- docs/cli/build/copr.html | 8 ++++---- docs/cli/build/in-image-builder.html | 8 ++++---- docs/cli/build/koji.html | 8 ++++---- docs/cli/build/local.html | 8 ++++---- docs/cli/build/mock.html | 8 ++++---- docs/cli/create-update.html | 8 ++++---- docs/cli/init.html | 8 ++++---- docs/cli/prepare-sources.html | 8 ++++---- docs/cli/propose-downstream.html | 8 ++++---- docs/cli/push-updates.html | 8 ++++---- docs/cli/source-git/init.html | 8 ++++---- docs/cli/source-git/status.html | 8 ++++---- docs/cli/source-git/update-dist-git.html | 8 ++++---- docs/cli/source-git/update-source-git.html | 8 ++++---- docs/cli/srpm.html | 8 ++++---- docs/cli/status.html | 8 ++++---- docs/cli/sync-from-downstream.html | 8 ++++---- docs/cli/validate-config.html | 8 ++++---- docs/configuration.html | 8 ++++---- docs/configuration/actions.html | 8 ++++---- docs/configuration/downstream/bodhi_update.html | 8 ++++---- docs/configuration/downstream/koji_build.html | 8 ++++---- .../downstream/pull_from_upstream.html | 8 ++++---- docs/configuration/examples.html | 8 ++++---- docs/configuration/jobs.html | 8 ++++---- docs/configuration/upstream/copr_build.html | 8 ++++---- .../configuration/upstream/propose_downstream.html | 8 ++++---- docs/configuration/upstream/tests.html | 8 ++++---- .../upstream/upstream_koji_build.html | 8 ++++---- docs/configuration/upstream/vm_image_build.html | 8 ++++---- docs/cross-project-testing.html | 8 ++++---- docs/faq.html | 8 ++++---- docs/fedora-releases-guide.html | 8 ++++---- docs/guide.html | 8 ++++---- docs/reproduce-locally.html | 8 ++++---- docs/service-level-objectives.html | 8 ++++---- img/usage/copr_build_groups_dark.svg | 6 +++--- img/usage/copr_build_groups_light.svg | 6 +++--- img/usage/koji_build_groups_dark.svg | 6 +++--- img/usage/koji_build_groups_light.svg | 6 +++--- img/usage/srpm_builds_dark.svg | 6 +++--- img/usage/srpm_builds_light.svg | 6 +++--- img/usage/sync_release_runs_dark.svg | 6 +++--- img/usage/sync_release_runs_light.svg | 6 +++--- img/usage/tft_test_run_groups_dark.svg | 6 +++--- img/usage/tft_test_run_groups_light.svg | 6 +++--- img/usage/vm_image_build_targets_dark.svg | 6 +++--- img/usage/vm_image_build_targets_light.svg | 6 +++--- index.html | 8 ++++---- posts.html | 8 ++++---- posts/2021-features.html | 8 ++++---- posts/2021-in-numbers.html | 8 ++++---- posts/2022-features.html | 8 ++++---- posts/archive.html | 8 ++++---- posts/copr-srpms.html | 8 ++++---- posts/downstream-automation.html | 8 ++++---- posts/fas-verification-automation.html | 8 ++++---- posts/fedora-eln.html | 8 ++++---- posts/manual-triggering.html | 8 ++++---- posts/monorepos.html | 8 ++++---- posts/page/2.html | 8 ++++---- posts/pre-commit-hooks.html | 8 ++++---- posts/pull-from-upstream.html | 8 ++++---- posts/release-field-handling.html | 8 ++++---- posts/tags.html | 8 ++++---- posts/tags/2021.html | 8 ++++---- posts/tags/2022.html | 8 ++++---- posts/tags/configuration.html | 8 ++++---- posts/tags/copr.html | 8 ++++---- posts/tags/downstream.html | 8 ++++---- posts/tags/fas.html | 8 ++++---- posts/tags/monorepos.html | 8 ++++---- posts/tags/propose-downstream.html | 8 ++++---- posts/tags/specfile.html | 8 ++++---- posts/tags/srpm.html | 8 ++++---- posts/tags/summary.html | 8 ++++---- posts/tags/testing-farm.html | 8 ++++---- posts/tags/workflow.html | 8 ++++---- posts/tags/yearly-features.html | 8 ++++---- posts/tags/yearly-numbers.html | 8 ++++---- posts/testing-farm-triggering.html | 8 ++++---- posts/weekly.html | 10 +++++----- posts/weekly/2019.html | 10 +++++----- posts/weekly/2020.html | 10 +++++----- posts/weekly/2021.html | 10 +++++----- posts/weekly/2022.html | 10 +++++----- posts/weekly/2023/08/07/index.html | 11 +++++++++++ posts/weekly/2023/08/14/index.html | 11 +++++++++++ posts/weekly/2023/{08/07.html => week-31.html} | 14 +++++++------- posts/weekly/2023/{08/14.html => week-32.html} | 12 ++++++------ posts/weekly/April-2023.html | 10 +++++----- posts/weekly/February-2023.html | 10 +++++----- posts/weekly/January-2023.html | 10 +++++----- posts/weekly/July-2023.html | 12 ++++++------ posts/weekly/June-2023.html | 10 +++++----- posts/weekly/March-2023.html | 10 +++++----- posts/weekly/May-2023.html | 10 +++++----- posts/weekly/archive.html | 10 +++++----- posts/weekly/atom.xml | 13 +++++++++---- posts/weekly/feed.json | 12 ++++++++---- posts/weekly/page/2.html | 10 +++++----- posts/weekly/rss.xml | 9 +++++---- posts/weekly/tags.html | 10 +++++----- posts/weekly/tags/2019.html | 10 +++++----- posts/weekly/tags/2020.html | 10 +++++----- posts/weekly/tags/2021.html | 10 +++++----- posts/weekly/tags/2022.html | 10 +++++----- posts/weekly/tags/2023-august.html | 10 +++++----- posts/weekly/tags/2023.html | 10 +++++----- posts/weekly/tags/august.html | 10 +++++----- research.html | 8 ++++---- research/automation-tools.html | 8 ++++---- research/automation-tools/dlrn.html | 8 ++++---- research/automation-tools/rdopkg.html | 8 ++++---- research/automation-tools/rpkg-util.html | 8 ++++---- research/automation-tools/rpkg.html | 8 ++++---- research/automation-tools/tito.html | 8 ++++---- .../category/automation-of-internal-processes.html | 8 ++++---- research/category/celery.html | 8 ++++---- research/category/database.html | 8 ++++---- research/category/deployment.html | 8 ++++---- research/category/integrations.html | 8 ++++---- research/category/specfiles.html | 8 ++++---- research/category/testing.html | 8 ++++---- research/category/user-experience.html | 8 ++++---- research/category/user-interface.html | 8 ++++---- research/celery/task-workflow-refactor.html | 8 ++++---- research/celery/tasks-prioritizing.html | 8 ++++---- research/celery/temporal.html | 8 ++++---- research/database/composite-types.html | 8 ++++---- research/database/data-stores.html | 8 ++++---- research/database/postgres-views.html | 8 ++++---- research/database/refresh.html | 8 ++++---- .../database/whats-in-production-database.html | 8 ++++---- .../deployment/automation-for-stable-branches.html | 8 ++++---- research/deployment/automotive-rosa.html | 8 ++++---- research/deployment/deploy-packit-pr.html | 8 ++++---- research/deployment/deployment-improvements.html | 8 ++++---- research/deployment/distributed-workers.html | 8 ++++---- .../distributed-workers/AWS-SQS-RDS.html | 8 ++++---- research/deployment/verification.html | 8 ++++---- research/deployment/workers-scaling.html | 8 ++++---- research/deprecation.html | 8 ++++---- research/git-notes.html | 8 ++++---- research/integrations/building-srpm-in-copr.html | 8 ++++---- .../building-srpm-in-copr/september-2022.html | 8 ++++---- research/integrations/console.html | 8 ++++---- research/integrations/downstream.html | 8 ++++---- research/integrations/gitlab.html | 8 ++++---- research/integrations/image-builder.html | 8 ++++---- research/internal-automation/cert-management.html | 8 ++++---- research/internal-automation/onboard.html | 8 ++++---- research/internal-automation/onboard/status.html | 8 ++++---- research/internal-automation/sync2jira.html | 8 ++++---- research/making-decisions.html | 8 ++++---- research/monitoring.html | 8 ++++---- research/monitoring/adoption-metrics.html | 8 ++++---- .../adoption-metrics/define-adoption-metrics.html | 8 ++++---- .../adoption-metrics/implementation.html | 8 ++++---- research/monitoring/error-budgets.html | 8 ++++---- research/monitoring/error-budgets/SLOs-SLIs.html | 8 ++++---- .../error-budgets/users-expectations.html | 8 ++++---- research/monitoring/github-api-call-inventory.html | 8 ++++---- research/monitoring/logs-aggregation.html | 8 ++++---- research/monitoring/metrics.html | 8 ++++---- research/monorepo-support.html | 8 ++++---- research/monorepo-support/refactoring.html | 8 ++++---- research/outages.html | 8 ++++---- research/outages/reporting.html | 8 ++++---- research/source-git.html | 8 ++++---- research/source-git/customize-update-dist-git.html | 8 ++++---- research/source-git/dist-git-to-src-git.html | 8 ++++---- .../source-git/dist-git-to-src-git/updates.html | 8 ++++---- research/source-git/fedora-spec-files.html | 8 ++++---- research/source-git/in-zuul.html | 8 ++++---- research/source-git/on-pagure.html | 8 ++++---- research/source-git/split-the-stream.html | 8 ++++---- research/source-git/sync-status.html | 8 ++++---- research/source-git/update.html | 8 ++++---- research/specfiles/library-requirements.html | 8 ++++---- research/specfiles/packages-with-patches.html | 8 ++++---- research/testing/external-testing.html | 8 ++++---- .../testing/openshift-to-podman-kube-play.html | 8 ++++---- research/testing/zuul.html | 8 ++++---- research/ui/dashboard.html | 8 ++++---- research/ui/dashboard/dashboard-improvements.html | 8 ++++---- research/ui/dashboard/oauth.html | 8 ++++---- research/ui/website-improvements.html | 8 ++++---- research/user-stories.html | 8 ++++---- .../user-stories/python_project_from_scratch.html | 8 ++++---- research/user-stories/summit-demo.html | 8 ++++---- .../user-stories/tests-builds-from-more-prs.html | 8 ++++---- research/ux/automatic-config-updates.html | 8 ++++---- research/ux/configuration-versioning.html | 8 ++++---- research/ux/improve-service-processing.html | 8 ++++---- search.html | 8 ++++---- sitemap.xml | 2 +- source-git.html | 8 ++++---- source-git/design.html | 8 ++++---- source-git/status.html | 8 ++++---- source-git/work-with-source-git.html | 8 ++++---- source-git/work-with-source-git/build-locally.html | 8 ++++---- .../control-patch-generation.html | 8 ++++---- .../work-with-source-git/create-source-git.html | 8 ++++---- .../work-with-source-git/fix-diverged-history.html | 8 ++++---- .../work-with-source-git/propose-to-dist-git.html | 8 ++++---- .../work-with-source-git/pull-upstream-fixes.html | 8 ++++---- .../work-with-source-git/sync-from-dist-git.html | 8 ++++---- source-git/work-with-source-git/update-spec.html | 8 ++++---- usage.html | 8 ++++---- 259 files changed, 1004 insertions(+), 972 deletions(-) delete mode 100644 assets/js/07ff0001.f9031d5f.js delete mode 100644 assets/js/17f63c9e.119a4502.js rename assets/js/{10a78dc7.d6bfa5b1.js => 2b41380d.1c0c1c34.js} (58%) create mode 100644 assets/js/532aed71.e99b6e73.js create mode 100644 assets/js/5534a79d.83bfbcc4.js delete mode 100644 assets/js/9600e9a0.0370494e.js delete mode 100644 assets/js/97b08134.85b52c42.js create mode 100644 assets/js/97b08134.bd3076f2.js delete mode 100644 assets/js/e22550d2.29589ba8.js create mode 100644 assets/js/e22550d2.fa7a24af.js delete mode 100644 assets/js/e6339af7.8edb6f32.js create mode 100644 assets/js/e6339af7.cf609479.js create mode 100644 assets/js/e6722c50.b0a34470.js delete mode 100644 assets/js/e6722c50.fe24b714.js create mode 100644 assets/js/ed1016b5.834e2fd6.js delete mode 100644 assets/js/main.2ce33fcb.js create mode 100644 assets/js/main.9c63d07d.js rename assets/js/{main.2ce33fcb.js.LICENSE.txt => main.9c63d07d.js.LICENSE.txt} (100%) delete mode 100644 assets/js/runtime~main.5ba44627.js create mode 100644 assets/js/runtime~main.b24c5c75.js create mode 100644 posts/weekly/2023/08/07/index.html create mode 100644 posts/weekly/2023/08/14/index.html rename posts/weekly/2023/{08/07.html => week-31.html} (62%) rename posts/weekly/2023/{08/14.html => week-32.html} (55%) diff --git a/404.html b/404.html index c9b8f56d5..759c214d4 100644 --- a/404.html +++ b/404.html @@ -15,8 +15,8 @@ - - + +
@@ -35,7 +35,7 @@ @packit@fosstodon.org (Mastodon)
- - + + \ No newline at end of file diff --git a/assets/js/07ff0001.f9031d5f.js b/assets/js/07ff0001.f9031d5f.js deleted file mode 100644 index fd4889d50..000000000 --- a/assets/js/07ff0001.f9031d5f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[4328],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>k});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},g=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,c=u(e,["components","mdxType","originalType","parentName"]),s=p(r),g=a,k=s["".concat(l,".").concat(g)]||s[g]||m[g]||i;return r?n.createElement(k,o(o({ref:t},c),{},{components:r})):n.createElement(k,o({ref:t},c))}));function k(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=g;var u={};for(var l in t)hasOwnProperty.call(t,l)&&(u[l]=t[l]);u.originalType=e,u[s]="string"==typeof e?e:a,o[1]=u;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>u,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const i={title:"Week 32 in Packit",date:new Date("2023-08-14T00:00:00.000Z"),tags:["2023-August",2023,"August"]},o=void 0,u={permalink:"/posts/weekly/2023/08/14/",editUrl:"https://github.com/packit/packit.dev/tree/main/weekly/2023/08/14.md",source:"@site/weekly/2023/08/14.md",title:"Week 32 in Packit",description:"Week 32 (August 8th \u2013 August 14th)",date:"2023-08-14T00:00:00.000Z",formattedDate:"August 14, 2023",tags:[{label:"2023-August",permalink:"/posts/weekly/tags/2023-august"},{label:"2023",permalink:"/posts/weekly/tags/2023"},{label:"August",permalink:"/posts/weekly/tags/august"}],readingTime:.42,hasTruncateMarker:!1,authors:[],frontMatter:{title:"Week 32 in Packit",date:"2023-08-14T00:00:00.000Z",tags:["2023-August","2023","August"]},nextItem:{title:"Week 31 in Packit",permalink:"/posts/weekly/2023/08/07/"}},l={authorsImageUrls:[]},p=[{value:"Week 32 (August 8th \u2013 August 14th)",id:"week-32-august-8th--august-14th",level:2}],c={toc:p},s="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(s,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"week-32-august-8th--august-14th"},"Week 32 (August 8th \u2013 August 14th)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Two new configuration options for filtering when getting latest upstream release tag were introduced: ",(0,a.kt)("inlineCode",{parentName:"li"},"upstream_tag_include")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"upstream_tag_exclude"),". They should contain a Python regex that can be used as an argument in ",(0,a.kt)("inlineCode",{parentName:"li"},"re.match"),". (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit/pull/2030"},"packit#2030"),", ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2138"},"packit-service#2138"),")"),(0,a.kt)("li",{parentName:"ul"},"Retriggering of ",(0,a.kt)("inlineCode",{parentName:"li"},"pull-from-upstream")," via a comment will now use the correct configuration file from the default dist-git branch. (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2140"},"packit-service#2140"),")"),(0,a.kt)("li",{parentName:"ul"},"The ",(0,a.kt)("inlineCode",{parentName:"li"},"pull-from-upstream")," job can now be used with upstream repos that are not hosted on a supported git forge. (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2137"},"packit-service#2137"),")")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/17f63c9e.119a4502.js b/assets/js/17f63c9e.119a4502.js deleted file mode 100644 index 7b5c4311c..000000000 --- a/assets/js/17f63c9e.119a4502.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[1301],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>k});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},g=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,c=u(e,["components","mdxType","originalType","parentName"]),s=p(r),g=a,k=s["".concat(l,".").concat(g)]||s[g]||m[g]||i;return r?n.createElement(k,o(o({ref:t},c),{},{components:r})):n.createElement(k,o({ref:t},c))}));function k(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=g;var u={};for(var l in t)hasOwnProperty.call(t,l)&&(u[l]=t[l]);u.originalType=e,u[s]="string"==typeof e?e:a,o[1]=u;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>u,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const i={title:"Week 32 in Packit",date:new Date("2023-08-14T00:00:00.000Z"),tags:["2023-August",2023,"August"]},o=void 0,u={permalink:"/posts/weekly/2023/08/14/",editUrl:"https://github.com/packit/packit.dev/tree/main/weekly/2023/08/14.md",source:"@site/weekly/2023/08/14.md",title:"Week 32 in Packit",description:"Week 32 (August 8th \u2013 August 14th)",date:"2023-08-14T00:00:00.000Z",formattedDate:"August 14, 2023",tags:[{label:"2023-August",permalink:"/posts/weekly/tags/2023-august"},{label:"2023",permalink:"/posts/weekly/tags/2023"},{label:"August",permalink:"/posts/weekly/tags/august"}],readingTime:.42,hasTruncateMarker:!1,authors:[],frontMatter:{title:"Week 32 in Packit",date:"2023-08-14T00:00:00.000Z",tags:["2023-August","2023","August"]},nextItem:{title:"Week 31 in Packit",permalink:"/posts/weekly/2023/08/07/"}},l={authorsImageUrls:[]},p=[{value:"Week 32 (August 8th \u2013 August 14th)",id:"week-32-august-8th--august-14th",level:2}],c={toc:p},s="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(s,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"week-32-august-8th--august-14th"},"Week 32 (August 8th \u2013 August 14th)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Two new configuration options for filtering when getting latest upstream release tag were introduced: ",(0,a.kt)("inlineCode",{parentName:"li"},"upstream_tag_include")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"upstream_tag_exclude"),". They should contain a Python regex that can be used as an argument in ",(0,a.kt)("inlineCode",{parentName:"li"},"re.match"),". (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit/pull/2030"},"packit#2030"),", ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2138"},"packit-service#2138"),")"),(0,a.kt)("li",{parentName:"ul"},"Retriggering of ",(0,a.kt)("inlineCode",{parentName:"li"},"pull-from-upstream")," via a comment will now use the correct configuration file from the default dist-git branch. (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2140"},"packit-service#2140"),")"),(0,a.kt)("li",{parentName:"ul"},"The ",(0,a.kt)("inlineCode",{parentName:"li"},"pull-from-upstream")," job can now be used with upstream repos that are not hosted on a supported git forge. (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2137"},"packit-service#2137"),")")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/10a78dc7.d6bfa5b1.js b/assets/js/2b41380d.1c0c1c34.js similarity index 58% rename from assets/js/10a78dc7.d6bfa5b1.js rename to assets/js/2b41380d.1c0c1c34.js index e247be61b..4a1b6ad50 100644 --- a/assets/js/10a78dc7.d6bfa5b1.js +++ b/assets/js/2b41380d.1c0c1c34.js @@ -1 +1 @@ -"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[2767],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>k});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=a,k=u["".concat(l,".").concat(f)]||u[f]||m[f]||o;return r?n.createElement(k,i(i({ref:t},s),{},{components:r})):n.createElement(k,i({ref:t},s))}));function k(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const o={title:"Week 31 in Packit",date:new Date("2023-08-07T00:00:00.000Z"),authors:"mfocko",tags:["2023-August",2023,"August"]},i="Week 31 (August 1st \u2013 August 7th)",c={permalink:"/posts/weekly/2023/08/07/",editUrl:"https://github.com/packit/packit.dev/tree/main/weekly/2023/08/07.md",source:"@site/weekly/2023/08/07.md",title:"Week 31 in Packit",description:"- Licenses in Packit specfiles are now confirmed to be SPDX-compatible. (example PR: packit#2026)",date:"2023-08-07T00:00:00.000Z",formattedDate:"August 7, 2023",tags:[{label:"2023-August",permalink:"/posts/weekly/tags/2023-august"},{label:"2023",permalink:"/posts/weekly/tags/2023"},{label:"August",permalink:"/posts/weekly/tags/august"}],readingTime:.145,hasTruncateMarker:!1,authors:[{name:"Matej Focko",email:"mfocko@redhat.com",url:"https://github.com/mfocko",imageURL:"https://github.com/mfocko.png",key:"mfocko"}],frontMatter:{title:"Week 31 in Packit",date:"2023-08-07T00:00:00.000Z",authors:"mfocko",tags:["2023-August","2023","August"]},prevItem:{title:"Week 32 in Packit",permalink:"/posts/weekly/2023/08/14/"},nextItem:{title:"July 2023",permalink:"/posts/weekly/July-2023"}},l={authorsImageUrls:[void 0]},p=[],s={toc:p},u="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Licenses in Packit specfiles are now confirmed to be SPDX-compatible. (example PR: ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit/pull/2026"},"packit#2026"),")\nIf you are interested in more details, see a ",(0,a.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=Hjhe6jtx3Zw&t=8651s"},"talk")," from Flock 2023 by Mirek.")))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[3997],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>k});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=a,k=u["".concat(l,".").concat(f)]||u[f]||m[f]||o;return r?n.createElement(k,i(i({ref:t},s),{},{components:r})):n.createElement(k,i({ref:t},s))}));function k(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const o={title:"Week 31 in Packit",date:new Date("2023-08-07T00:00:00.000Z"),authors:"mfocko",tags:["2023-August",2023,"August"]},i="Week 31 (August 1st \u2013 August 7th)",c={permalink:"/posts/weekly/2023/week-31",editUrl:"https://github.com/packit/packit.dev/tree/main/weekly/2023/week-31.md",source:"@site/weekly/2023/week-31.md",title:"Week 31 in Packit",description:"- Licenses in Packit specfiles are now confirmed to be SPDX-compatible. (example PR: packit#2026)",date:"2023-08-07T00:00:00.000Z",formattedDate:"August 7, 2023",tags:[{label:"2023-August",permalink:"/posts/weekly/tags/2023-august"},{label:"2023",permalink:"/posts/weekly/tags/2023"},{label:"August",permalink:"/posts/weekly/tags/august"}],readingTime:.145,hasTruncateMarker:!1,authors:[{name:"Matej Focko",email:"mfocko@redhat.com",url:"https://github.com/mfocko",imageURL:"https://github.com/mfocko.png",key:"mfocko"}],frontMatter:{title:"Week 31 in Packit",date:"2023-08-07T00:00:00.000Z",authors:"mfocko",tags:["2023-August","2023","August"]},prevItem:{title:"Week 32 in Packit",permalink:"/posts/weekly/2023/week-32"},nextItem:{title:"July 2023",permalink:"/posts/weekly/July-2023"}},l={authorsImageUrls:[void 0]},p=[],s={toc:p},u="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Licenses in Packit specfiles are now confirmed to be SPDX-compatible. (example PR: ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit/pull/2026"},"packit#2026"),")\nIf you are interested in more details, see a ",(0,a.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=Hjhe6jtx3Zw&t=8651s"},"talk")," from Flock 2023 by Mirek.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/532aed71.e99b6e73.js b/assets/js/532aed71.e99b6e73.js new file mode 100644 index 000000000..a09563048 --- /dev/null +++ b/assets/js/532aed71.e99b6e73.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[6807],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),c=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=c(r),k=n,g=s["".concat(u,".").concat(k)]||s[k]||m[k]||i;return r?a.createElement(g,o(o({ref:t},p),{},{components:r})):a.createElement(g,o({ref:t},p))}));function g(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=k;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const i={title:"Week 32 in Packit",date:new Date("2023-08-14T00:00:00.000Z"),authors:"flachman",tags:["2023-August",2023,"August"]},o=void 0,l={permalink:"/posts/weekly/2023/week-32",editUrl:"https://github.com/packit/packit.dev/tree/main/weekly/2023/week-32.md",source:"@site/weekly/2023/week-32.md",title:"Week 32 in Packit",description:"Week 32 (August 8th \u2013 August 14th)",date:"2023-08-14T00:00:00.000Z",formattedDate:"August 14, 2023",tags:[{label:"2023-August",permalink:"/posts/weekly/tags/2023-august"},{label:"2023",permalink:"/posts/weekly/tags/2023"},{label:"August",permalink:"/posts/weekly/tags/august"}],readingTime:.42,hasTruncateMarker:!1,authors:[{name:"Franti\u0161ek Lachman",email:"flachman@redhat.com",url:"https://github.com/lachmanfrantisek",imageURL:"https://github.com/lachmanfrantisek.png",key:"flachman"}],frontMatter:{title:"Week 32 in Packit",date:"2023-08-14T00:00:00.000Z",authors:"flachman",tags:["2023-August","2023","August"]},nextItem:{title:"Week 31 in Packit",permalink:"/posts/weekly/2023/week-31"}},u={authorsImageUrls:[void 0]},c=[{value:"Week 32 (August 8th \u2013 August 14th)",id:"week-32-august-8th--august-14th",level:2}],p={toc:c},s="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"week-32-august-8th--august-14th"},"Week 32 (August 8th \u2013 August 14th)"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Two new configuration options for filtering when getting latest upstream release tag were introduced: ",(0,n.kt)("inlineCode",{parentName:"li"},"upstream_tag_include")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"upstream_tag_exclude"),". They should contain a Python regex that can be used as an argument in ",(0,n.kt)("inlineCode",{parentName:"li"},"re.match"),". (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/packit/packit/pull/2030"},"packit#2030"),", ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2138"},"packit-service#2138"),")"),(0,n.kt)("li",{parentName:"ul"},"Retriggering of ",(0,n.kt)("inlineCode",{parentName:"li"},"pull-from-upstream")," via a comment will now use the correct configuration file from the default dist-git branch. (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2140"},"packit-service#2140"),")"),(0,n.kt)("li",{parentName:"ul"},"The ",(0,n.kt)("inlineCode",{parentName:"li"},"pull-from-upstream")," job can now be used with upstream repos that are not hosted on a supported git forge. (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2137"},"packit-service#2137"),")")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5534a79d.83bfbcc4.js b/assets/js/5534a79d.83bfbcc4.js new file mode 100644 index 000000000..7c3b74dd3 --- /dev/null +++ b/assets/js/5534a79d.83bfbcc4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[787],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=a.createContext({}),c=function(e){var t=a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=c(r),k=n,g=s["".concat(u,".").concat(k)]||s[k]||m[k]||i;return r?a.createElement(g,o(o({ref:t},p),{},{components:r})):a.createElement(g,o({ref:t},p))}));function g(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=k;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[s]="string"==typeof e?e:n,o[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=r(87462),n=(r(67294),r(3905));const i={title:"Week 32 in Packit",date:new Date("2023-08-14T00:00:00.000Z"),authors:"flachman",tags:["2023-August",2023,"August"]},o=void 0,l={permalink:"/posts/weekly/2023/week-32",editUrl:"https://github.com/packit/packit.dev/tree/main/weekly/2023/week-32.md",source:"@site/weekly/2023/week-32.md",title:"Week 32 in Packit",description:"Week 32 (August 8th \u2013 August 14th)",date:"2023-08-14T00:00:00.000Z",formattedDate:"August 14, 2023",tags:[{label:"2023-August",permalink:"/posts/weekly/tags/2023-august"},{label:"2023",permalink:"/posts/weekly/tags/2023"},{label:"August",permalink:"/posts/weekly/tags/august"}],readingTime:.42,hasTruncateMarker:!1,authors:[{name:"Franti\u0161ek Lachman",email:"flachman@redhat.com",url:"https://github.com/lachmanfrantisek",imageURL:"https://github.com/lachmanfrantisek.png",key:"flachman"}],frontMatter:{title:"Week 32 in Packit",date:"2023-08-14T00:00:00.000Z",authors:"flachman",tags:["2023-August","2023","August"]},nextItem:{title:"Week 31 in Packit",permalink:"/posts/weekly/2023/week-31"}},u={authorsImageUrls:[void 0]},c=[{value:"Week 32 (August 8th \u2013 August 14th)",id:"week-32-august-8th--august-14th",level:2}],p={toc:c},s="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(s,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"week-32-august-8th--august-14th"},"Week 32 (August 8th \u2013 August 14th)"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Two new configuration options for filtering when getting latest upstream release tag were introduced: ",(0,n.kt)("inlineCode",{parentName:"li"},"upstream_tag_include")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"upstream_tag_exclude"),". They should contain a Python regex that can be used as an argument in ",(0,n.kt)("inlineCode",{parentName:"li"},"re.match"),". (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/packit/packit/pull/2030"},"packit#2030"),", ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2138"},"packit-service#2138"),")"),(0,n.kt)("li",{parentName:"ul"},"Retriggering of ",(0,n.kt)("inlineCode",{parentName:"li"},"pull-from-upstream")," via a comment will now use the correct configuration file from the default dist-git branch. (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2140"},"packit-service#2140"),")"),(0,n.kt)("li",{parentName:"ul"},"The ",(0,n.kt)("inlineCode",{parentName:"li"},"pull-from-upstream")," job can now be used with upstream repos that are not hosted on a supported git forge. (",(0,n.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2137"},"packit-service#2137"),")")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9600e9a0.0370494e.js b/assets/js/9600e9a0.0370494e.js deleted file mode 100644 index 4dfcea390..000000000 --- a/assets/js/9600e9a0.0370494e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[698],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>k});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=a,k=u["".concat(l,".").concat(f)]||u[f]||m[f]||o;return r?n.createElement(k,i(i({ref:t},s),{},{components:r})):n.createElement(k,i({ref:t},s))}));function k(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const o={title:"Week 31 in Packit",date:new Date("2023-08-07T00:00:00.000Z"),authors:"mfocko",tags:["2023-August",2023,"August"]},i="Week 31 (August 1st \u2013 August 7th)",c={permalink:"/posts/weekly/2023/08/07/",editUrl:"https://github.com/packit/packit.dev/tree/main/weekly/2023/08/07.md",source:"@site/weekly/2023/08/07.md",title:"Week 31 in Packit",description:"- Licenses in Packit specfiles are now confirmed to be SPDX-compatible. (example PR: packit#2026)",date:"2023-08-07T00:00:00.000Z",formattedDate:"August 7, 2023",tags:[{label:"2023-August",permalink:"/posts/weekly/tags/2023-august"},{label:"2023",permalink:"/posts/weekly/tags/2023"},{label:"August",permalink:"/posts/weekly/tags/august"}],readingTime:.145,hasTruncateMarker:!1,authors:[{name:"Matej Focko",email:"mfocko@redhat.com",url:"https://github.com/mfocko",imageURL:"https://github.com/mfocko.png",key:"mfocko"}],frontMatter:{title:"Week 31 in Packit",date:"2023-08-07T00:00:00.000Z",authors:"mfocko",tags:["2023-August","2023","August"]},prevItem:{title:"Week 32 in Packit",permalink:"/posts/weekly/2023/08/14/"},nextItem:{title:"July 2023",permalink:"/posts/weekly/July-2023"}},l={authorsImageUrls:[void 0]},p=[],s={toc:p},u="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Licenses in Packit specfiles are now confirmed to be SPDX-compatible. (example PR: ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit/pull/2026"},"packit#2026"),")\nIf you are interested in more details, see a ",(0,a.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=Hjhe6jtx3Zw&t=8651s"},"talk")," from Flock 2023 by Mirek.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/97b08134.85b52c42.js b/assets/js/97b08134.85b52c42.js deleted file mode 100644 index 591407578..000000000 --- a/assets/js/97b08134.85b52c42.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[7520],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",y={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,u=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),s=p(n),h=a,m=s["".concat(u,".").concat(h)]||s[h]||y[h]||l;return n?r.createElement(m,i(i({ref:t},c),{},{components:n})):r.createElement(m,i({ref:t},c))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=h;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[s]="string"==typeof e?e:a,i[1]=o;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const l={title:"July 2023",date:new Date("2023-07-10T13:49:53.000Z"),tags:[2023]},i=void 0,o={permalink:"/posts/weekly/July-2023",editUrl:"https://github.com/packit/packit.dev/tree/main/weekly/July-2023.md",source:"@site/weekly/July-2023.md",title:"July 2023",description:"Week 27 (July 4th \u2013 July 10th)",date:"2023-07-10T13:49:53.000Z",formattedDate:"July 10, 2023",tags:[{label:"2023",permalink:"/posts/weekly/tags/2023"}],readingTime:.81,hasTruncateMarker:!1,authors:[],frontMatter:{title:"July 2023",date:"2023-07-10T13:49:53.000Z",tags:["2023"]},prevItem:{title:"Week 31 in Packit",permalink:"/posts/weekly/2023/08/07/"},nextItem:{title:"June 2023",permalink:"/posts/weekly/June-2023"}},u={authorsImageUrls:[]},p=[{value:"Week 27 (July 4th \u2013 July 10th)",id:"week-27-july-4th--july-10th",level:2},{value:"Week 28 (July 11th \u2013 July 17th)",id:"week-28-july-11th--july-17th",level:2},{value:"Weeks 29\u201330 (July 18th \u2013 July 31st)",id:"weeks-2930-july-18th--july-31st",level:2}],c={toc:p},s="wrapper";function y(e){let{components:t,...n}=e;return(0,a.kt)(s,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"week-27-july-4th--july-10th"},"Week 27 (July 4th \u2013 July 10th)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Packit now correctly reloads upstream specfile after running ",(0,a.kt)("inlineCode",{parentName:"li"},"pre-sync")," action. (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit/pull/2006"},"packit#2006"),")")),(0,a.kt)("h2",{id:"week-28-july-11th--july-17th"},"Week 28 (July 11th \u2013 July 17th)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Packit now includes instructions on how to checkout the dist-git PR locally when syncing the release.\n(",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2116"},"packit-service#2116"),")"),(0,a.kt)("li",{parentName:"ul"},"We have fixed a bug in processing options of ",(0,a.kt)("inlineCode",{parentName:"li"},"%prep")," macros in our ",(0,a.kt)("inlineCode",{parentName:"li"},"specfile")," library. For instance, when a quoted\nstring appeared inside an expression expansion, it could lead to improper parsing, rendering the spec file invalid\nafter accessing the options. (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/specfile/pull/253"},"specfile#253"),")"),(0,a.kt)("li",{parentName:"ul"},"packit.dev has a new format! As the content has expanded a lot in the recent year, we decided to switch to using\n",(0,a.kt)("a",{parentName:"li",href:"https://docusaurus.io/"},"Docosaurus"),":\nnow all the documentation is in one place and this format also enables additional features for our blog posts.\n(",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit.dev/pull/694"},"packit.dev#694"),")")),(0,a.kt)("h2",{id:"weeks-2930-july-18th--july-31st"},"Weeks 29\u201330 (July 18th \u2013 July 31st)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"With plenty of team members on vacation, we didn't manage to implement any significant new features during these two weeks.")))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/97b08134.bd3076f2.js b/assets/js/97b08134.bd3076f2.js new file mode 100644 index 000000000..6695e6b27 --- /dev/null +++ b/assets/js/97b08134.bd3076f2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[7520],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>k});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",y={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,u=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),s=p(n),h=a,k=s["".concat(u,".").concat(h)]||s[h]||y[h]||l;return n?r.createElement(k,i(i({ref:t},c),{},{components:n})):r.createElement(k,i({ref:t},c))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=h;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[s]="string"==typeof e?e:a,i[1]=o;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const l={title:"July 2023",date:new Date("2023-07-10T13:49:53.000Z"),tags:[2023]},i=void 0,o={permalink:"/posts/weekly/July-2023",editUrl:"https://github.com/packit/packit.dev/tree/main/weekly/July-2023.md",source:"@site/weekly/July-2023.md",title:"July 2023",description:"Week 27 (July 4th \u2013 July 10th)",date:"2023-07-10T13:49:53.000Z",formattedDate:"July 10, 2023",tags:[{label:"2023",permalink:"/posts/weekly/tags/2023"}],readingTime:.81,hasTruncateMarker:!1,authors:[],frontMatter:{title:"July 2023",date:"2023-07-10T13:49:53.000Z",tags:["2023"]},prevItem:{title:"Week 31 in Packit",permalink:"/posts/weekly/2023/week-31"},nextItem:{title:"June 2023",permalink:"/posts/weekly/June-2023"}},u={authorsImageUrls:[]},p=[{value:"Week 27 (July 4th \u2013 July 10th)",id:"week-27-july-4th--july-10th",level:2},{value:"Week 28 (July 11th \u2013 July 17th)",id:"week-28-july-11th--july-17th",level:2},{value:"Weeks 29\u201330 (July 18th \u2013 July 31st)",id:"weeks-2930-july-18th--july-31st",level:2}],c={toc:p},s="wrapper";function y(e){let{components:t,...n}=e;return(0,a.kt)(s,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"week-27-july-4th--july-10th"},"Week 27 (July 4th \u2013 July 10th)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Packit now correctly reloads upstream specfile after running ",(0,a.kt)("inlineCode",{parentName:"li"},"pre-sync")," action. (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit/pull/2006"},"packit#2006"),")")),(0,a.kt)("h2",{id:"week-28-july-11th--july-17th"},"Week 28 (July 11th \u2013 July 17th)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Packit now includes instructions on how to checkout the dist-git PR locally when syncing the release.\n(",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2116"},"packit-service#2116"),")"),(0,a.kt)("li",{parentName:"ul"},"We have fixed a bug in processing options of ",(0,a.kt)("inlineCode",{parentName:"li"},"%prep")," macros in our ",(0,a.kt)("inlineCode",{parentName:"li"},"specfile")," library. For instance, when a quoted\nstring appeared inside an expression expansion, it could lead to improper parsing, rendering the spec file invalid\nafter accessing the options. (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/specfile/pull/253"},"specfile#253"),")"),(0,a.kt)("li",{parentName:"ul"},"packit.dev has a new format! As the content has expanded a lot in the recent year, we decided to switch to using\n",(0,a.kt)("a",{parentName:"li",href:"https://docusaurus.io/"},"Docosaurus"),":\nnow all the documentation is in one place and this format also enables additional features for our blog posts.\n(",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit.dev/pull/694"},"packit.dev#694"),")")),(0,a.kt)("h2",{id:"weeks-2930-july-18th--july-31st"},"Weeks 29\u201330 (July 18th \u2013 July 31st)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"With plenty of team members on vacation, we didn't manage to implement any significant new features during these two weeks.")))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e22550d2.29589ba8.js b/assets/js/e22550d2.29589ba8.js deleted file mode 100644 index 44fc7e82a..000000000 --- a/assets/js/e22550d2.29589ba8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[9176],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",y={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,u=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),s=p(n),h=a,m=s["".concat(u,".").concat(h)]||s[h]||y[h]||l;return n?r.createElement(m,i(i({ref:t},c),{},{components:n})):r.createElement(m,i({ref:t},c))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=h;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[s]="string"==typeof e?e:a,i[1]=o;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const l={title:"July 2023",date:new Date("2023-07-10T13:49:53.000Z"),tags:[2023]},i=void 0,o={permalink:"/posts/weekly/July-2023",editUrl:"https://github.com/packit/packit.dev/tree/main/weekly/July-2023.md",source:"@site/weekly/July-2023.md",title:"July 2023",description:"Week 27 (July 4th \u2013 July 10th)",date:"2023-07-10T13:49:53.000Z",formattedDate:"July 10, 2023",tags:[{label:"2023",permalink:"/posts/weekly/tags/2023"}],readingTime:.81,hasTruncateMarker:!1,authors:[],frontMatter:{title:"July 2023",date:"2023-07-10T13:49:53.000Z",tags:["2023"]},prevItem:{title:"Week 31 in Packit",permalink:"/posts/weekly/2023/08/07/"},nextItem:{title:"June 2023",permalink:"/posts/weekly/June-2023"}},u={authorsImageUrls:[]},p=[{value:"Week 27 (July 4th \u2013 July 10th)",id:"week-27-july-4th--july-10th",level:2},{value:"Week 28 (July 11th \u2013 July 17th)",id:"week-28-july-11th--july-17th",level:2},{value:"Weeks 29\u201330 (July 18th \u2013 July 31st)",id:"weeks-2930-july-18th--july-31st",level:2}],c={toc:p},s="wrapper";function y(e){let{components:t,...n}=e;return(0,a.kt)(s,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"week-27-july-4th--july-10th"},"Week 27 (July 4th \u2013 July 10th)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Packit now correctly reloads upstream specfile after running ",(0,a.kt)("inlineCode",{parentName:"li"},"pre-sync")," action. (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit/pull/2006"},"packit#2006"),")")),(0,a.kt)("h2",{id:"week-28-july-11th--july-17th"},"Week 28 (July 11th \u2013 July 17th)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Packit now includes instructions on how to checkout the dist-git PR locally when syncing the release.\n(",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2116"},"packit-service#2116"),")"),(0,a.kt)("li",{parentName:"ul"},"We have fixed a bug in processing options of ",(0,a.kt)("inlineCode",{parentName:"li"},"%prep")," macros in our ",(0,a.kt)("inlineCode",{parentName:"li"},"specfile")," library. For instance, when a quoted\nstring appeared inside an expression expansion, it could lead to improper parsing, rendering the spec file invalid\nafter accessing the options. (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/specfile/pull/253"},"specfile#253"),")"),(0,a.kt)("li",{parentName:"ul"},"packit.dev has a new format! As the content has expanded a lot in the recent year, we decided to switch to using\n",(0,a.kt)("a",{parentName:"li",href:"https://docusaurus.io/"},"Docosaurus"),":\nnow all the documentation is in one place and this format also enables additional features for our blog posts.\n(",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit.dev/pull/694"},"packit.dev#694"),")")),(0,a.kt)("h2",{id:"weeks-2930-july-18th--july-31st"},"Weeks 29\u201330 (July 18th \u2013 July 31st)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"With plenty of team members on vacation, we didn't manage to implement any significant new features during these two weeks.")))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e22550d2.fa7a24af.js b/assets/js/e22550d2.fa7a24af.js new file mode 100644 index 000000000..4eb838d33 --- /dev/null +++ b/assets/js/e22550d2.fa7a24af.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[9176],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>k});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",y={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,u=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),s=p(n),h=a,k=s["".concat(u,".").concat(h)]||s[h]||y[h]||l;return n?r.createElement(k,i(i({ref:t},c),{},{components:n})):r.createElement(k,i({ref:t},c))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=h;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[s]="string"==typeof e?e:a,i[1]=o;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>y,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const l={title:"July 2023",date:new Date("2023-07-10T13:49:53.000Z"),tags:[2023]},i=void 0,o={permalink:"/posts/weekly/July-2023",editUrl:"https://github.com/packit/packit.dev/tree/main/weekly/July-2023.md",source:"@site/weekly/July-2023.md",title:"July 2023",description:"Week 27 (July 4th \u2013 July 10th)",date:"2023-07-10T13:49:53.000Z",formattedDate:"July 10, 2023",tags:[{label:"2023",permalink:"/posts/weekly/tags/2023"}],readingTime:.81,hasTruncateMarker:!1,authors:[],frontMatter:{title:"July 2023",date:"2023-07-10T13:49:53.000Z",tags:["2023"]},prevItem:{title:"Week 31 in Packit",permalink:"/posts/weekly/2023/week-31"},nextItem:{title:"June 2023",permalink:"/posts/weekly/June-2023"}},u={authorsImageUrls:[]},p=[{value:"Week 27 (July 4th \u2013 July 10th)",id:"week-27-july-4th--july-10th",level:2},{value:"Week 28 (July 11th \u2013 July 17th)",id:"week-28-july-11th--july-17th",level:2},{value:"Weeks 29\u201330 (July 18th \u2013 July 31st)",id:"weeks-2930-july-18th--july-31st",level:2}],c={toc:p},s="wrapper";function y(e){let{components:t,...n}=e;return(0,a.kt)(s,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"week-27-july-4th--july-10th"},"Week 27 (July 4th \u2013 July 10th)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Packit now correctly reloads upstream specfile after running ",(0,a.kt)("inlineCode",{parentName:"li"},"pre-sync")," action. (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit/pull/2006"},"packit#2006"),")")),(0,a.kt)("h2",{id:"week-28-july-11th--july-17th"},"Week 28 (July 11th \u2013 July 17th)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Packit now includes instructions on how to checkout the dist-git PR locally when syncing the release.\n(",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit-service/pull/2116"},"packit-service#2116"),")"),(0,a.kt)("li",{parentName:"ul"},"We have fixed a bug in processing options of ",(0,a.kt)("inlineCode",{parentName:"li"},"%prep")," macros in our ",(0,a.kt)("inlineCode",{parentName:"li"},"specfile")," library. For instance, when a quoted\nstring appeared inside an expression expansion, it could lead to improper parsing, rendering the spec file invalid\nafter accessing the options. (",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/specfile/pull/253"},"specfile#253"),")"),(0,a.kt)("li",{parentName:"ul"},"packit.dev has a new format! As the content has expanded a lot in the recent year, we decided to switch to using\n",(0,a.kt)("a",{parentName:"li",href:"https://docusaurus.io/"},"Docosaurus"),":\nnow all the documentation is in one place and this format also enables additional features for our blog posts.\n(",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit.dev/pull/694"},"packit.dev#694"),")")),(0,a.kt)("h2",{id:"weeks-2930-july-18th--july-31st"},"Weeks 29\u201330 (July 18th \u2013 July 31st)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"With plenty of team members on vacation, we didn't manage to implement any significant new features during these two weeks.")))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e6339af7.8edb6f32.js b/assets/js/e6339af7.8edb6f32.js deleted file mode 100644 index 3c9e49821..000000000 --- a/assets/js/e6339af7.8edb6f32.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[1907],{15062:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Week 32 in Packit","permalink":"/posts/weekly/2023/08/14/"},{"title":"Week 31 in Packit","permalink":"/posts/weekly/2023/08/07/"},{"title":"July 2023","permalink":"/posts/weekly/July-2023"},{"title":"June 2023","permalink":"/posts/weekly/June-2023"},{"title":"May 2023","permalink":"/posts/weekly/May-2023"},{"title":"April 2023","permalink":"/posts/weekly/April-2023"},{"title":"March 2023","permalink":"/posts/weekly/March-2023"},{"title":"February 2023","permalink":"/posts/weekly/February-2023"},{"title":"January 2023","permalink":"/posts/weekly/January-2023"},{"title":"2022","permalink":"/posts/weekly/2022"},{"title":"2021","permalink":"/posts/weekly/2021"},{"title":"2020","permalink":"/posts/weekly/2020"}]}')}}]); \ No newline at end of file diff --git a/assets/js/e6339af7.cf609479.js b/assets/js/e6339af7.cf609479.js new file mode 100644 index 000000000..51d24b714 --- /dev/null +++ b/assets/js/e6339af7.cf609479.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[1907],{15062:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Week 32 in Packit","permalink":"/posts/weekly/2023/week-32"},{"title":"Week 31 in Packit","permalink":"/posts/weekly/2023/week-31"},{"title":"July 2023","permalink":"/posts/weekly/July-2023"},{"title":"June 2023","permalink":"/posts/weekly/June-2023"},{"title":"May 2023","permalink":"/posts/weekly/May-2023"},{"title":"April 2023","permalink":"/posts/weekly/April-2023"},{"title":"March 2023","permalink":"/posts/weekly/March-2023"},{"title":"February 2023","permalink":"/posts/weekly/February-2023"},{"title":"January 2023","permalink":"/posts/weekly/January-2023"},{"title":"2022","permalink":"/posts/weekly/2022"},{"title":"2021","permalink":"/posts/weekly/2021"},{"title":"2020","permalink":"/posts/weekly/2020"}]}')}}]); \ No newline at end of file diff --git a/assets/js/e6722c50.b0a34470.js b/assets/js/e6722c50.b0a34470.js new file mode 100644 index 000000000..d12139ac4 --- /dev/null +++ b/assets/js/e6722c50.b0a34470.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[5624],{38516:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2023/week-32","metadata":{"permalink":"/posts/weekly/2023/week-32","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/2023/week-32.md","source":"@site/weekly/2023/week-32.md","title":"Week 32 in Packit","description":"Week 32 (August 8th \u2013 August 14th)","date":"2023-08-14T00:00:00.000Z","formattedDate":"August 14, 2023","tags":[{"label":"2023-August","permalink":"/posts/weekly/tags/2023-august"},{"label":"2023","permalink":"/posts/weekly/tags/2023"},{"label":"August","permalink":"/posts/weekly/tags/august"}],"readingTime":0.42,"hasTruncateMarker":false,"authors":[{"name":"Franti\u0161ek Lachman","email":"flachman@redhat.com","url":"https://github.com/lachmanfrantisek","imageURL":"https://github.com/lachmanfrantisek.png","key":"flachman"}],"frontMatter":{"title":"Week 32 in Packit","date":"2023-08-14T00:00:00.000Z","authors":"flachman","tags":["2023-August","2023","August"]},"nextItem":{"title":"Week 31 in Packit","permalink":"/posts/weekly/2023/week-31"}},"content":"## Week 32 (August 8th \u2013 August 14th)\\n\\n- Two new configuration options for filtering when getting latest upstream release tag were introduced: `upstream_tag_include` and `upstream_tag_exclude`. They should contain a Python regex that can be used as an argument in `re.match`. ([packit#2030](https://github.com/packit/packit/pull/2030), [packit-service#2138](https://github.com/packit/packit-service/pull/2138))\\n- Retriggering of `pull-from-upstream` via a comment will now use the correct configuration file from the default dist-git branch. ([packit-service#2140](https://github.com/packit/packit-service/pull/2140))\\n- The `pull-from-upstream` job can now be used with upstream repos that are not hosted on a supported git forge. ([packit-service#2137](https://github.com/packit/packit-service/pull/2137))"},{"id":"/2023/week-31","metadata":{"permalink":"/posts/weekly/2023/week-31","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/2023/week-31.md","source":"@site/weekly/2023/week-31.md","title":"Week 31 in Packit","description":"- Licenses in Packit specfiles are now confirmed to be SPDX-compatible. (example PR: packit#2026)","date":"2023-08-07T00:00:00.000Z","formattedDate":"August 7, 2023","tags":[{"label":"2023-August","permalink":"/posts/weekly/tags/2023-august"},{"label":"2023","permalink":"/posts/weekly/tags/2023"},{"label":"August","permalink":"/posts/weekly/tags/august"}],"readingTime":0.145,"hasTruncateMarker":false,"authors":[{"name":"Matej Focko","email":"mfocko@redhat.com","url":"https://github.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mfocko"}],"frontMatter":{"title":"Week 31 in Packit","date":"2023-08-07T00:00:00.000Z","authors":"mfocko","tags":["2023-August","2023","August"]},"prevItem":{"title":"Week 32 in Packit","permalink":"/posts/weekly/2023/week-32"},"nextItem":{"title":"July 2023","permalink":"/posts/weekly/July-2023"}},"content":"- Licenses in Packit specfiles are now confirmed to be SPDX-compatible. (example PR: [packit#2026](https://github.com/packit/packit/pull/2026))\\n If you are interested in more details, see a [talk](https://www.youtube.com/watch?v=Hjhe6jtx3Zw&t=8651s) from Flock 2023 by Mirek."},{"id":"/July-2023","metadata":{"permalink":"/posts/weekly/July-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/July-2023.md","source":"@site/weekly/July-2023.md","title":"July 2023","description":"Week 27 (July 4th \u2013 July 10th)","date":"2023-07-10T13:49:53.000Z","formattedDate":"July 10, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":0.81,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"July 2023","date":"2023-07-10T13:49:53.000Z","tags":["2023"]},"prevItem":{"title":"Week 31 in Packit","permalink":"/posts/weekly/2023/week-31"},"nextItem":{"title":"June 2023","permalink":"/posts/weekly/June-2023"}},"content":"## Week 27 (July 4th \u2013 July 10th)\\n\\n- Packit now correctly reloads upstream specfile after running `pre-sync` action. ([packit#2006](https://github.com/packit/packit/pull/2006))\\n\\n## Week 28 (July 11th \u2013 July 17th)\\n\\n- Packit now includes instructions on how to checkout the dist-git PR locally when syncing the release.\\n ([packit-service#2116](https://github.com/packit/packit-service/pull/2116))\\n- We have fixed a bug in processing options of `%prep` macros in our `specfile` library. For instance, when a quoted\\n string appeared inside an expression expansion, it could lead to improper parsing, rendering the spec file invalid\\n after accessing the options. ([specfile#253](https://github.com/packit/specfile/pull/253))\\n- packit.dev has a new format! As the content has expanded a lot in the recent year, we decided to switch to using\\n [Docosaurus](https://docusaurus.io/):\\n now all the documentation is in one place and this format also enables additional features for our blog posts.\\n ([packit.dev#694](https://github.com/packit/packit.dev/pull/694))\\n\\n## Weeks 29\u201330 (July 18th \u2013 July 31st)\\n\\n- With plenty of team members on vacation, we didn\'t manage to implement any significant new features during these two weeks."},{"id":"/June-2023","metadata":{"permalink":"/posts/weekly/June-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/June-2023.md","source":"@site/weekly/June-2023.md","title":"June 2023","description":"Week 22 (May 30th \u2013 June 5th)","date":"2023-06-05T22:18:53.000Z","formattedDate":"June 5, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":1.87,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"June 2023","date":"2023-06-05T22:18:53.000Z","tags":["2023"]},"prevItem":{"title":"July 2023","permalink":"/posts/weekly/July-2023"},"nextItem":{"title":"May 2023","permalink":"/posts/weekly/May-2023"}},"content":"## Week 22 (May 30th \u2013 June 5th)\\n\\n- Packit will now filter the pull requests based on the target branch if the `branch` is specified in the particular job configuration. ([packit-service#2074](https://github.com/packit/packit-service/pull/2074))\\n- Packit now supports `manual_trigger` in the configuration that allows you to make jobs run only when explicitly triggered by a comment. ([packit-service#2069](https://github.com/packit/packit-service/pull/2069))\\n\\n## Week 23 (June 6th \u2013 June 12th)\\n\\n- Our dashboard now shows projects in a table instead of the cards.\\n ([dashboard#267](https://github.com/packit/dashboard/pull/267))\\n- `/packit test` command has two new options:\\n\\n With `--identifier` option, Testing Farm will trigger only jobs with that identifier.\\n ([packit-service#2079](https://github.com/packit/packit-service/pull/2079))\\n\\n Also, it is now possible to specify labels for a job and trigger tests based on labels\\n using a `--labels` option of the `/packit test` command.\\n ([packit#1988](https://github.com/packit/packit/pull/1988),\\n [packit-service#2088](https://github.com/packit/packit-service/pull/2088))\\n\\n- If the `vm_image_build job` doesn\'t have Copr project/owner configured,\\n Copr project used for the latest Copr build of the pull request will be now used.\\n ([packit-service#2080](https://github.com/packit/packit-service/pull/2080))\\n- Fixed filters in `files_to_sync` not being applied properly.\\n ([packit#1977](https://github.com/packit/packit/pull/1977))\\n- The issue that could\'ve caused inconsistencies when tests from a PR\\n were supposed to be merged during the test runs on the Testing Farm has been fixed.\\n ([packit-service#2090](https://github.com/packit/packit-service/pull/2090))\\n\\n## Week 24 (June 13th \u2013 June 19th)\\n\\n- Packit now includes dist-git branch in the title of the PRs for `propose-downstream` and `pull-from-upstream`.\\n ([packit#1996](https://github.com/packit/packit/pull/1996))\\n\\n- Many dashboard issues have been fixed during the\\n [Contribute to an Open Source Service](https://sched.co/1MvMM)\\n workshop at [DevConf.CZ](https://www.devconf.info/cz/).\\n [Stef Walter](https://github.com/stefwalter),\\n [Erik Gustavsson](https://github.com/SpyTec),\\n [Roman Braunstingl](https://github.com/RFJBraunstingl),\\n [Jaroslav Reznik](https://github.com/jreznik),\\n [Christophe de Dinechin](https://github.com/c3d),\\n [Gris Ge](https://github.com/cathay4t)\\n and [David Duncan](https://github.com/davdunc),\\n thank you for your contribution!\\n ([dashboard#291](https://github.com/packit/dashboard/pull/291),\\n [dashboard#292](https://github.com/packit/dashboard/pull/292),\\n [dashboard#293](https://github.com/packit/dashboard/pull/293),\\n [dashboard#294](https://github.com/packit/dashboard/pull/294),\\n [dashboard#295](https://github.com/packit/dashboard/pull/295))\\n\\n## Week 25 (June 21st \u2013 June 27th)\\n\\n- If you are interested about the manual triggering deployed two weeks ago, David Kornel and Jakub Stejskal published [a blog post](https://fedoramagazine.org/how-to-use-testing-farm-outside-of-rhel/) about this on fedoramagazine.org.\\n- Copr builds configured as a monorepo job will now be built in one Copr project together. The bug with overwriting the statuses for monorepo jobs has been fixed as well. ([packit-service#2097](https://github.com/packit/packit-service/pull/2097))\\n\\n## Week 26 (June 27th \u2013 July 3rd)\\n\\n- The bug which prevented errors on Testing Farm request submission from being\\n correctly propagated to the user was fixed.\\n ([packit-service#2103](https://github.com/packit/packit-service/pull/2103))\\n- `pull_from_upstream` jobs can now be retriggered with a comment\\n `/packit pull-from-upstream` in a dist-git pull request.\\n ([packit-service#2087](https://github.com/packit/packit-service/pull/2087))"},{"id":"/May-2023","metadata":{"permalink":"/posts/weekly/May-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/May-2023.md","source":"@site/weekly/May-2023.md","title":"May 2023","description":"Week 18 (May 4th - May 9th)","date":"2023-05-10T06:41:12.000Z","formattedDate":"May 10, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":1.51,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"May 2023","date":"2023-05-10T06:41:12.000Z","tags":["2023"]},"prevItem":{"title":"June 2023","permalink":"/posts/weekly/June-2023"},"nextItem":{"title":"April 2023","permalink":"/posts/weekly/April-2023"}},"content":"## Week 18 (May 4th - May 9th)\\n\\nWe have experienced issues with automatic Bodhi updates that we are investigating.\\nIn case you miss a Bodhi update, you can\\n[retrigger the job](https://packit.dev/docs/fedora-releases-guide/#retriggering-2) via `/packit create-update`\\ncomment in a dist-git pull request.\\nBesides that, during this short week (another Czech Republic public holiday) we didn\'t manage to implement\\nany significant new features.\\n\\n## Week 19 (May 9th \u2013 May 15th)\\n\\n- Packit now doesn\'t react to its own comments on Pagure and GitLab (on GitHub, this was already implemented).\\n ([packit-service#2048](https://github.com/packit/packit-service/pull/2048))\\n\\n## Week 20 (May 16th \u2013 May 22nd)\\n\\n- We have implemented a denylisting mechanism allowing us to denylist namespaces/projects to prevent misuse of our service. ([packit-service#2046](https://github.com/packit/packit-service/pull/2046))\\n- Packit will now additionally require for each test job requiring build a build job definition to be present in the Packit configuration file. ([packit-service#2012](https://github.com/packit/packit-service/pull/2012))\\n- Packit now checks whether the configured architecture for the test target is supported by Testing Farm and in case it\'s not supported, Packit doesn\'t submit these test requests. ([packit-service#2053](https://github.com/packit/packit-service/pull/2053))\\n\\n## Week 21 (May 23rd \u2013 May 29th)\\n\\n- Unsuccessful Image Builder requests now provide error details so you can fix the Image configuration. ([packit#1981](https://github.com/packit/packit/pull/1981))\\n- Copr projects created by Packit will not follow the Fedora branching from now. This decision has been made to lower the load on Copr from the temporary Copr projects created, mainly, for the PR builds. If you are releasing your packages to the Copr, please use the new setting `follow_fedora_branching`.\\n Already existing projects are not affected by this change and it is also not enforced with the custom Copr repositories. ([packit#1970](https://github.com/packit/packit/pull/1970))\\n- Additional artifact(s) passed as `artifacts` in the `tf_extra_params` dictionary will be now combined with the artifact passed by Packit instead of rewriting it. ([packit-service#2056](https://github.com/packit/packit-service/pull/2056))\\n- Specfile library now handles multiple `%changelog` sections. ([specfile#230](https://github.com/packit/specfile/pull/230))"},{"id":"/April-2023","metadata":{"permalink":"/posts/weekly/April-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/April-2023.md","source":"@site/weekly/April-2023.md","title":"April 2023","description":"Weeks 14\u201315 (April 3rd \u2013 April 17th)","date":"2023-04-17T14:00:00.000Z","formattedDate":"April 17, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":1.65,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"April 2023","date":"2023-04-17T14:00:00.000Z","tags":["2023"]},"prevItem":{"title":"May 2023","permalink":"/posts/weekly/May-2023"},"nextItem":{"title":"March 2023","permalink":"/posts/weekly/March-2023"}},"content":"## Weeks 14\u201315 (April 3rd \u2013 April 17th)\\n\\n- `packit source-git` related commands can skip dist-git repos, where the git trailer is not found, when looking for the right dist-git dir where to work. ([packit#1938](https://github.com/packit/packit/pull/1938))\\n- Tmt tests can now be run with fmf root outside of git root ([packit#1936](https://github.com/packit/packit/pull/1936))\\n- Commits created by Packit no longer contain the \\"Signed-off-by\\" tag. ([packit#1934](https://github.com/packit/packit/pull/1934))\\n- Packit\'s source_git functionality installs/loads the `_packitpatch` script in a more reliable manner that doesn\'t rely on deprecated setuptools functionality. ([packit#1926](https://github.com/packit/packit/pull/1926))\\n- Packit now supports monorepo configuration in CLI ([packit#1864](https://github.com/packit/packit/pull/1864))\\n- Packit should now correctly catch the logs if any of the user actions fail during `propose_downstream`. ([packit#1939](https://github.com/packit/packit/pull/1939))\\n- Packit now resets `Release` field in dist-git spec file to 1 when the version in upstream spec file is not up-to-date with the release that triggered `propose_downstream`. ([packit#1940](https://github.com/packit/packit/pull/1940))\\n\\n## Week 16 (April 18th \u2013 April 24th)\\n\\n- Packit now complies with [PEP 621](https://peps.python.org/pep-0621/) and stores project metadata in `pyproject.toml`. ([packit#1913](https://github.com/packit/packit/pull/1913))\\n- Packit now properly respects `upstream_ref` for tags that start with \\"a\\", \\"b\\", \\"c\\", \\"e\\", \\"n\\", \\"r\\", \\"s\\". ([packit#1943](https://github.com/packit/packit/pull/1943))\\n- Packit Service now supports multi package configuration (a.k.a. monorepo configuration). ([packit-service#1982](https://github.com/packit/packit-service/pull/1982))\\n\\n## Week 17-18 (April 25th \u2013 May 3rd)\\n\\n- Detection of `%autorelease` usage in dist-git spec file during `propose-downstream` and `pull-from-upstream` has been improved and Packit will always preserve it. ([packit#1949](https://github.com/packit/packit/pull/1949))\\n- We have fixed an issue that prevented you from building in Copr and Koji on release in the GitLab upstream. ([packit-service#2027](https://github.com/packit/packit-service/pull/2027))\\n- TMT tests can now be run with FMF root outside of git root. ([packit-service#2007](https://github.com/packit/packit-service/pull/2007))\\n- When reacting to branch pushes, Packit now correctly checks whether the branch name matches the configuration for the test jobs with configured `commit` trigger. ([packit-service#2015](https://github.com/packit/packit-service/pull/2015))\\n- The `propose-downstream` job triggered by an issue comment now correctly loads the configuration from the upstream repository. ([packit-service#2021](https://github.com/packit/packit-service/pull/2021))\\n- Packit is newly on Mastodon. Or, more specifically, on Fosstodon.\\n Follow [@packit@fosstodon.org](https://fosstodon.org/@packit) and be one of the first to know about all the news!"},{"id":"/March-2023","metadata":{"permalink":"/posts/weekly/March-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/March-2023.md","source":"@site/weekly/March-2023.md","title":"March 2023","description":"Week 10 (March 7th \u2013 March 13th)","date":"2023-03-13T14:00:00.000Z","formattedDate":"March 13, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":0.755,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"March 2023","date":"2023-03-13T14:00:00.000Z","tags":["2023"]},"prevItem":{"title":"April 2023","permalink":"/posts/weekly/April-2023"},"nextItem":{"title":"February 2023","permalink":"/posts/weekly/February-2023"}},"content":"## Week 10 (March 7th \u2013 March 13th)\\n\\n- Parsing the spec file by RPM is now performed only if really necessary, greatly improving performance in certain scenarios. ([specfile#212](https://github.com/packit/specfile/pull/212))\\n\\n## Week 11 (March 14th \u2013 March 20th)\\n\\n- Packit now uses the `get_current_version` action defined by the user to retrieve version before updating the specfile %setup macro (if any). ([packit#1886](https://github.com/packit/packit/pull/1886))\\n\\n## Week 12 (March 21st \u2013 March 27th)\\n\\n- \'upstream_tag_template\' is now also used when looking for the latest version tag in Git.\\n This allows upstream repositories to mix different tag-patterns in the same repository,\\n but consider only one to tell the latest version.\\n ([packit#1891](https://github.com/packit/packit/pull/1891))\\n\\n## Week 13 (March 28th \u2013 April 3rd)\\n\\n- Packit now preserves `%autorelease` during `propose_downstream` and `pull_from_upstream`. ([packit#1904](https://github.com/packit/packit/pull/1904))\\n- Since in GitLab, it is not possible to overwrite the pending statuses, Packit now provides more generic descriptions and URLs when setting the first pending status. ([packit-service#1975](https://github.com/packit/packit-service/pull/1975))"},{"id":"/February-2023","metadata":{"permalink":"/posts/weekly/February-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/February-2023.md","source":"@site/weekly/February-2023.md","title":"February 2023","description":"Weeks 5\u20136 (February 1st \u2013 February 13th)","date":"2023-02-13T14:00:00.000Z","formattedDate":"February 13, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":2.255,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"February 2023","date":"2023-02-13T14:00:00.000Z","tags":["2023"]},"prevItem":{"title":"March 2023","permalink":"/posts/weekly/March-2023"},"nextItem":{"title":"January 2023","permalink":"/posts/weekly/January-2023"}},"content":"## Weeks 5\u20136 (February 1st \u2013 February 13th)\\n\\n- You can now use `--srpm` option with the `packit build locally` CLI command. ([packit#1810](https://github.com/packit/packit/pull/1810))\\n- You will newly see news about Packit as a footer of the GitHub check runs summary. ([packit-service#1881](https://github.com/packit/packit-service/pull/1881))\\n- Packit now groups related builds and test runs (e.g. triggered by the same event, just different chroots) together. In the future, this will allow better presentation of the overall pipelines (e.g. in the dashboard). We now also create database entries before sending requests to external service (e.g. Testing Farm), therefore failures will be more visible in the dashboard. ([packit-service#1787](https://github.com/packit/packit-service/pull/1787))\\n\\n## Week 7 (February 14th \u2013 February 20th)\\n\\n- Packit now provides `PACKIT_PROJECT_VERSION` environment variable when running `changelog-entry` action. ([packit#1853](https://github.com/packit/packit/pull/1853))\\n- Packit CLI now requires bodhi in version 7.0.0 at minimum. ([packit#1844](https://github.com/packit/packit/pull/1844))\\n- You can now specify branches for a job triggered by a commit with a regex. ([packit-service#1909](https://github.com/packit/packit-service/pull/1909))\\n\\n## Week 8 (February 21st \u2013 February 27th)\\n\\n- `packit validate-config` CLI command now provides details about errors when it cannot parse the config file. ([packit#1861](https://github.com/packit/packit/pull/1861))\\n- `--update-release`/`--no-update-release` CLI flag now affects only `Release`, not `Version`. ([packit#1857](https://github.com/packit/packit/pull/1857))\\n- Packit does fewer API calls when searching for the package configuration file in remote repositories. ([packit#1846](https://github.com/packit/packit/pull/1846))\\n- Commit statuses/check names will now contain the name of the branch or release for the build and test jobs with `commit` or `release` trigger.\\n This will prevent the collision of the names. ([packit-service#1920](https://github.com/packit/packit-service/pull/1920))\\n\\n## Week 9 (February 28th \u2013 March 6th)\\n\\n- Aliases logic was updated to account for the upcoming Fedora release (Bodhi now marks such release as `frozen`). From now on, Fedora 38 updates will be created even when the release is frozen. ([packit#1863](https://github.com/packit/packit/pull/1863))\\n- `packit validate-config` now correctly checks glob-patterns in \'files_to_sync\' ([packit#1865](https://github.com/packit/packit/pull/1865)) and provides details about errors when it cannot parse a config file. ([packit#1861](https://github.com/packit/packit/pull/1861))\\n- Pull-from-upstream jobs are now displayed on our dashboard \ud83e\udd73 https://dashboard.packit.dev/jobs/pull-from-upstreams ([packit-service#1951](https://github.com/packit/packit-service/pull/1951), [packit-service#1939](https://github.com/packit/packit-service/pull/1939))\\n- Packit will no longer automatically request access to the forks on GitLab. This will prevent us from spamming one-time contributors with requesting the access, whereas the regular contributors can add Packit following the instructions from the comments on the MRs, so they can receive the results of Packit pipeline right from the commit statuses. ([packit-service#1946](https://github.com/packit/packit-service/pull/1946))\\n- Packit will retry tasks that are interrupted by a worker shutdown. This should improve throughput and reduce cases where there is no outcome, i.e. \\"builds should have been done but nothing happened\\". ([packit-service#1935](https://github.com/packit/packit-service/pull/1935))\\n- OGR now understands a few community-hosted GitLab instances that could not be determined automatically from the hostname. Thanks to that, you don\'t need to hardcode these instances to be mapped correctly. ([ogr#775](https://github.com/packit/ogr/pull/775))\\n\\nThank you, [@SpyTec](https://github.com/SpyTec) for so many [wonderful changes in our dasbhoard](https://github.com/packit/dashboard/pulls?q=is%3Apr+author%3ASpyTec)."},{"id":"/January-2023","metadata":{"permalink":"/posts/weekly/January-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/January-2023.md","source":"@site/weekly/January-2023.md","title":"January 2023","description":"Week 0 \ud83c\udf04 (December 20th 2022 \u2013 January 2nd 2023)","date":"2023-01-02T14:00:00.000Z","formattedDate":"January 2, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":2.175,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"January 2023","date":"2023-01-02T14:00:00.000Z","tags":["2023"]},"prevItem":{"title":"February 2023","permalink":"/posts/weekly/February-2023"},"nextItem":{"title":"2022","permalink":"/posts/weekly/2022"}},"content":"## Week 0 \ud83c\udf04 (December 20th 2022 \u2013 January 2nd 2023)\\n\\n- ogr now raises `GitForgeInternalError` rather than `PagureAPIException` when\\n getting 50x response from the Pagure API. This should increase usability as\\n those tasks will be retried.\\n ([ogr#762](https://github.com/packit/ogr/pull/762))\\n- Packit now puts the correct release number into the changelog when the\\n Release tag is reset during propose-downstream.\\n ([packit#1816](https://github.com/packit/packit/pull/1816)))\\n\\n## Week 1 (January 3rd \u2013 January 9th)\\n\\n- SRPMs for projects that installed the GitHub App before September 6th and\\n don\'t have `srpm_build_deps` defined are now built in Copr as well.\\n ([packit-service#1822](https://github.com/packit/packit-service/pull/1822))\\n- We have fixed a bug in dashboard that linked `null` as a Copr build for\\n Testing Farm runs that do not require any Copr build.\\n ([dashboard#200](https://github.com/packit/dashboard/pull/200))\\n- All classes including `Specfile` itself can now be copied using the standard\\n `copy()` and `deepcopy()` functions from `copy` module.\\n ([specfile#176](https://github.com/packit/specfile/pull/176))\\n\\n## Week 2 (January 10th \u2013 January 16th)\\n\\n- When configuring Copr chroot (target in Packit terminology) specific configuration, make sure to specify additional_modules as a string: module names separated with a comma, example: \\"httpd:2.4,python:4\\". ([packit#1826](https://github.com/packit/packit/pull/1826))\\n- We have fixed a bug which caused long Copr build end reporting time on a few occurrences. ([packit-service#1838](https://github.com/packit/packit-service/pull/1838))\\n- A few fixes has been implemented to make it possible to use [`propose-downstream` job](https://packit.dev/docs/configuration/#propose_downstream) on GitLab. ([packit-service#1842](https://github.com/packit/packit-service/pull/1842), [packit-service#1844](https://github.com/packit/packit-service/pull/1844), [packit-service#1845](https://github.com/packit/packit-service/pull/1845), [packit-service#1846](https://github.com/packit/packit-service/pull/1846))\\n\\n## Week 3 + 4 (January 17th \u2013 January 30th)\\n\\n- Users can now re-trigger _bodhi_update_ and _koji_build_ jobs by `/packit create-update`\\n and `/packit koji-update` comments in an issue opened by Packit in the configured `issue_repository` if anything\\n went wrong during these jobs. ([packit-service#1796](https://github.com/packit/packit-service/pull/1796))\\n- All Copr projects created by Packit now default to `enable_net=False`: our documentation stated this, but it\\n wasn\'t the case. This is now corrected. ([packit#1825](https://github.com/packit/packit/pull/1825))\\n- You can now specify `update_release: false` in the configuration to tell Packit not to change the Version and\\n Release in the spec file. It works the same as `--no-update-release` (renamed from now deprecated `--no-bump`) in\\n the CLI. ([packit#1827](https://github.com/packit/packit/pull/1827))\\n- Packit now supports setting `module_hotfixes` for Copr projects.\\n ([packit#1829](https://github.com/packit/packit/pull/1829))\\n- Packit now also allows passing in free-form parameters to Testing Farm in order to support all of its\\n options immediately once they are added. The parameters can be passed through the `tf_extra_params` config option.\\n The free-form dictionary must follow the structure of Testing Farm POST requests. See [our documentation](https://packit.dev/docs/testing-farm/)\\n and examples for more information. ([packit-service#1853](https://github.com/packit/packit-service/pull/1853))\\n- Fixed a bug in section parsing that caused sections to be ignored when there were macro definitions spread\\n across the spec file and not cumulated at the top. ([specfile#191](https://github.com/packit/specfile/pull/191))\\n- Also fixed the infinite loop that occurred when section options were followed by whitespace.\\n ([specfile#197](https://github.com/packit/specfile/pull/197))"},{"id":"/2022","metadata":{"permalink":"/posts/weekly/2022","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/2022.md","source":"@site/weekly/2022.md","title":"2022","description":"Let\'s see what happened in Packit in 2022.","date":"2023-01-01T00:00:00.000Z","formattedDate":"January 1, 2023","tags":[{"label":"2022","permalink":"/posts/weekly/tags/2022"}],"readingTime":24.99,"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"2022","date":"2023-01-01T00:00:00.000Z","aliases":["/posts/weekly/january-2022","/posts/weekly/february-2022","/posts/weekly/march-2022","/posts/weekly/april-2022","/posts/weekly/may-2022","/posts/weekly/june-2022","/posts/weekly/july-2022","/posts/weekly/august-2022","/posts/weekly/september-2022","/posts/weekly/october-2022","/posts/weekly/november-2022","/posts/weekly/december-2022"],"tags":["2022"]},"prevItem":{"title":"January 2023","permalink":"/posts/weekly/January-2023"},"nextItem":{"title":"2021","permalink":"/posts/weekly/2021"}},"content":"Let\'s see what happened in Packit in 2022.\\n\\n\x3c!--truncate--\x3e\\n\\n## Week 0 (December 13th - January 2nd)\\n\\n- Dashboard shows a message when the SRPM build logs are not present instead of\\n an empty page that might suggest logs are being loaded.\\n ([packit/dashboard#158](https://github.com/packit/dashboard/pull/158))\\n\\n## Week 1 (January 3rd - January 7th)\\n\\n- Packit service now discards old (currently, this means 3 months) SRPM builds logs.\\n ([packit/packit-service#1315](https://github.com/packit/packit-service/pull/1315))\\n- We have added `target_branch_head_commit` property to the `PullRequest` class in ogr that allows\\n you to get commit hash of the HEAD of the target branch (i.e. base, where the changes are merged to).\\n ([packit/ogr#671](https://github.com/packit/ogr/pull/671))\\n- Service now passes `PACKIT_TARGET_SHA` variable, which holds commit hash of the HEAD of the target\\n branch where the changes are supposed to be merged, to the Testing Farm environment. This should\\n help solving the issue of running tests from non-merged codebase on the Testing Farm side.\\n ([packit/packit-service#1319](https://github.com/packit/packit-service/pull/1319))\\n\\n## Week 2 (January 10th - January 14th)\\n\\n- Packit no longer ignores `--no-bump` and `--release-suffix` options for\\n source-git repos.\\n [packit/packit#1452](https://github.com/packit/packit/pull/1452)\\n- Packit now names local branch `pr/{pr_id}` when checking out a PR, even when\\n it\'s not being merged with the target branch. This results into NVR of the\\n build containing `pr{pr_id}` instead of `pr.changes{pr_id}`.\\n [packit/packit#1445](https://github.com/packit/packit/pull/1445)\\n\\n## Week 3 (January 17th - January 21st)\\n\\n- `%changelog` sections in dist-git using the `%autochangelog` macro [are\\n preserved](https://github.com/packit/packit/pull/1453) when running\\n `propose-downstream`, except when `sync_changelog` is set to `true`.\\n- When checking if directories hold a Git-tree, Packit now also allows [`.git`\\n to be a file with a `gitdir`](https://github.com/packit/packit/pull/1458)\\n reference, not only a directory.\\n\\n## Week 4 (January 25th - January 28th)\\n\\n- SRPM build view contains info about build start and finished time.\\n [packit/dashboard#163](https://github.com/packit/dashboard/pull/163)\\n- When submitting a distgit PR during `propose-downstream` job, we create\\n a `README.packit` file with some info about the sync the packit version used.\\n To avoid this you can add `create_sync_note: false` to conig file.\\n [packit/packit#1465](https://github.com/packit/packit/pull/1465)\\n\\n## Week 5 (January 31th - February 7th)\\n\\n- A new option `--no-require-autosetup` for `source-git init` command has been\\n introduced. Please note that source-git repositories not using `%autosetup` may\\n not be properly initialized. ([packit#1470](https://github.com/packit/packit/pull/1470))\\n- Packit-service now supports re-triggering against failed task using comment on\\n pull request `/packit rebuild-failed` and similarly for testing farm: `/packit retest-failed`.\\n ([packit-service#1303](https://github.com/packit/packit-service/pull/1303))\\n\\n## Week 6 (February 8th - February 14th)\\n\\n- Packit now correctly handles colons in git trailer values in source-git commits.\\n ([packit#1478](https://github.com/packit/packit/pull/1478))\\n\\n## Week 7 (February 14th\u2764\ufe0f - February 18th)\\n\\n- Synchronization of default files can now be disabled using a new config\\n `files_to_sync`. Key `sync_files` is now deprecated.\\n ([packit#1483](https://github.com/packit/packit/pull/1483))\\n ([packit.dev#390](https://github.com/packit/packit.dev/pull/390))\\n- `python3-setuptools_scm` is now available by default in the sandbox.\\n\\n## Week 8 (February 18th - February 28th)\\n\\n- Packit now allows specifying more test distros for one build target\\n to test on in Testing Farm in the configuration. The checks for the\\n test job will also contain the name of the actual test distro\\n (and not the build target as previously).\\n- A new option, `srpm_build_deps`, in the packit configuration file \\n can be used. Which is a list of RPM dependencies that are needed for\\n the actions to be run when building SRPM and is an indicator to build\\n the SRPMs in Copr.\\n\\n## Week 9 (March 1st - March 7th)\\n\\n- When a specfile is being generated, and both `specfile_path` and\\n `downstream_package_name` are not set, Packit now correctly resolves this\\n situation and sets `specfile_path` to the name of the upstream repo suffixed\\n with `\\".spec\\"`.\\n ([packit#1499](https://github.com/packit/packit/pull/1499))\\n- A new command `packit source-git status` has been introduced for checking\\n the synchronization of a source-git and a dist-git repository based on the\\n used git trailers. The command outputs a range of commits which need to be\\n synchronized from dist-git to source-git or the other way around. If possible,\\n the command also provides instructions on how to synchronize the repositories.\\n ([packit#1500](https://github.com/packit/packit/pull/1500))\\n- We have added a new `enable_net` configuration option for Copr builds that\\n allows you to disable network access during Copr builds. It is also complemented\\n by `--enable-net`/`--disable-net` CLI options if you use Packit locally.\\n ([packit#1504](https://github.com/packit/packit/pull/1504))\\n- Packit now adds \ud83d\udc40 instead of \ud83d\udc4d as a reaction to `/packit command`\\n ([packit-service#1372](https://github.com/packit/packit-service/pull/1372))\\n- Progress of propose-downstream is now saved in the database and is available\\n via API. Visualization in the dashboard is to follow next week, stay tuned.\\n ([packit-service#1292](https://github.com/packit/packit-service/pull/1292))\\n- When running tests for the pull-request job, we now expose environment\\n variables for commit hash, branch and URL both for pull-request source and\\n target. In the test environment, you can use the following variables:\\n `PACKIT_SOURCE_SHA`, `PACKIT_TARGET_SHA`, `PACKIT_SOURCE_BRANCH`,\\n `PACKIT_TARGET_BRANCH`, `PACKIT_SOURCE_URL` and `PACKIT_TARGET_URL`.\\n These variables are not set for test runs of releases and branch pushes.\\n ([packit-service#1382](https://github.com/packit/packit-service/pull/1382))\\n\\n## Week 10 (March 8th - March 14th)\\n\\n- You can view information about ongoing propose-downstream jobs via our dashboard.\\n ([dashboard#168](https://github.com/packit/dashboard/pull/168))\\n- We have switched the cache for dist-git branches and Copr targets to TTL cache\\n that gets discarded once in 12 hours, in case there is a change in targets, the\\n changes shall propagate to both of our deployments without the need to redeploy\\n within 12 hours. ([packit#1513](https://github.com/packit/packit/pull/1513))\\n- Packit now comments when it fails to find Copr project specified in the config.\\n ([packit#1395](https://github.com/packit/packit-service/pull/1395))\\n- Packit now reacts to dist-git pushes to either `rawhide` or `main` when configured\\n to do Koji builds for `rawhide`.\\n ([packit#1393](https://github.com/packit/packit-service/pull/1393))\\n- You can specify an identifier for your job to be able to configure one job multiple times.\\n For example, you can build multiple projects from one repository (known as monorepo concept)\\n or try multiple build options. Using identifiers allows Packit to avoid naming collisions\\n in commit statuses and default Copr project names.\\n ([packit-service#1385](https://github.com/packit/packit-service/pull/1385))\\n- Packit no longer provides a misleading comment when it fails to update a set of\\n targets on its own Copr projects.\\n ([packit-service#1397](https://github.com/packit/packit-service/pull/1397))\\n\\n## Week 11 (March 15th - March 21st)\\n\\n- When using Packit CLI for creating Bodhi updates,\\n you can now set `fas_username` and `fas_password` in your Packit user config\\n to not be asked about that when the command is executed.\\n Also, this allows Packit GitHub application to use this as well\\n so you can look forward to Bodhi updates created by Packit\\n (will be announced and described in a dedicated post).\\n ([packit#1517](https://github.com/packit/packit/pull/1517))\\n\\n## Week 12 (March 22nd - March 28th)\\n\\n- We have updated contact information to `Packit `.\\n ([packit-service#1410](https://github.com/packit/packit-service/pull/1410))\\n- Interactions with Bodhi should be now more reliable when creating Bodhi updates.\\n ([packit#1528](https://github.com/packit/packit/pull/1528))\\n- Packit will no longer error out when trying to create a new Copr repository\\n when it is already present.\\n ([packit#1527](https://github.com/packit/packit/pull/1527))\\n- There is a new `packit_instances` key that you can use to specify the Packit\\n instances you want to use for working on your jobs. Nothing will change for our\\n production users, but users of our stage instance need to use this key to\\n preserve the support of the stage instance -- they can set both stg and prod in\\n the `packit_instances` list to use both, or use just one. Just be careful with\\n the downstream jobs where both instances work with the same services.\\n This new option works like other Packit options so you can set it on the top\\n level and/or (re)define it on the job level.\\n More information about our staging instance can be found here:\\n [packit#1530](https://github.com/packit/packit/discussions/1530).\\n ([packit#1417](https://github.com/packit/packit-service/pull/1417))\\n\\n## Week 13 (March 29th - April 4th)\\n\\n- We have implemented `get_contributors` function in ogr that can be used for getting contributors to the project on GitHub (set of logins) and GitLab (set of authors).\\n ([ogr#692](https://github.com/packit/ogr/pull/692))\\n- When multiple propose downstream attempts for the same PR fail, the error messages are sent to to the same issue (as comments), instead of creating multiple new issues.\\n ([packit#1427](https://github.com/packit/packit-service/pull/1427))\\n- Downstream synchronization of the Packit configuration file (aka `packit.yaml`) is now working properly again.\\n ([packit#1532](https://github.com/packit/packit/pull/1532))\\n- `packit source-git update-dist-git` and `packit source-git update-source-git` now check the synchronization of source-git and dist-git repositories prior to doing the update. If the update can\'t be done, for example, because the histories have diverged, the command provides instructions on how to synchronize the repositories.\\n A `--force` option is available to try to update the destination repository anyway.\\n ([packit#1534](https://github.com/packit/packit/pull/1534))\\n- When using `post_upstream_clone` to generate your spec-file,\\n Packit now correctly checks out a release before the action is run.\\n ([packit#1542](https://github.com/packit/packit/pull/1542))\\n\\n## Week 14 (April 5th - April 11th)\\n\\n- We have introduced two new build and test target aliases: `fedora-latest-stable` resolves to the latest stable Fedora\\n Linux release, while `fedora-branched` resolves to all branched releases (all Fedora Linux release, except `rawhide`).\\n ([packit#1546](https://github.com/packit/packit/pull/1546))\\n- We have reverted the functionality of Packit that allowed you to have set **only** specific targets for Copr repositories.\\n This functionality was introduced a while ago and was found to be not very beneficial in cases of differently\\n configured Copr jobs building in parallel in the same Copr repository. This is an implementation detail in the end,\\n but Copr project chroots are now only added and never subtracted\\n (every build has precisely specified targets based on the copr_build job definition).\\n ([packit#1551](https://github.com/packit/packit/pull/1551))\\n- If you are using our stage instance, we make it listen only on `/packit-stg` comment commands so you can now differentiate\\n between the instances when commanding Packit via pull-request or issue comments.\\n For the production instance, you can continue using `/packit` prefix as you are used to.\\n ([packit-service#1432](https://github.com/packit/packit-service/pull/1432))\\n- A new configuration option `downstream_branch_name` has been added, which is meant to be used in source-git projects\\n and allows users to customize the name of the branch in dist-git which corresponds to the current source-git branch.\\n ([packit#1555](https://github.com/packit/packit/pull/1555))\\n- `revision-range` argument of the source-git `update-source-git` command is now optional. If not specified,\\n dist-git commits with no counterpart in source-git are synchronized.\\n ([packit#1547](https://github.com/packit/packit/pull/1547))\\n\\n## Week 15 (April 12th - April 14th)\\n\\n- We have implemented reporting of status for the propose-downstream job which means that you can now\\n see the progress of the job via check runs/commit statuses on the particular release commits.\\n ([packit-service#1435](https://github.com/packit/packit-service/pull/1435))\\n\\n## Week 16 (April 19th - April 25th)\\n\\n- The bug in our service about not setting GitHub and Gitlab statuses in case of lack of permissions was fixed.\\n ([packit/packit-service#1457](https://github.com/packit/packit-service/pull/1457))\\n- Packit\'s CLI `source-git update-*` commands now check whether the target repository is pristine and in case not raise an error.\\n ([packit/packit#1562](https://github.com/packit/packit/pull/1562))\\n\\n## Week 17 (April 26th - May 2th)\\n\\n- We have fixed an issue affecting Pipelines view on Dashboard. Currently you should be able to see pipelines again; we are also working on fixing empty rows for `propose-downstream` jobs.\\n ([packit-service#1461](https://github.com/packit/packit-service/pull/1461))\\n- Packit now shows the specific info when it does not have permissions to create a Bodhi update of your package.\\n When you configure `issue_repository` in your Packit config file, Packit will create an issue in that project and link the dist-git page where you can give _Packit FAS user_ the correct permissions.\\n ([packit-service#1465](https://github.com/packit/packit-service/pull/1465))\\n- Packit now exports `PACKIT_PR_ID` environment variable to the Testing Farm.\\n ([packit-service#1467](https://github.com/packit/packit-service/pull/1467))\\n- The bug in the Copr permission request is now fixed. (After the release of a new Copr client, Packit didn\'t catch that permission problem and didn\'t request the permissions to build in a custom Copr project.)\\n ([packit-service#1472](https://github.com/packit/packit-service/pull/1472))\\n- We have fixed a bug that caused Packit to fail when submitting Testing Farm on `commit` trigger.\\n ([packit-service#1474](https://github.com/packit/packit-service/pull/1472))\\n- Packit now builds RPMs in Copr triggered by `release` event with correct NVR (without the artificial release suffix). You can use it for distributing RPM packages via Copr. \\n ([packit-service#1478](https://github.com/packit/packit-service/pull/1478))\\n- From the security perspective, we have decided to disable the `create_pr` option for our service, from now on Packit will unconditionally create PRs when running `propose-downstream`.\\n We have also updated the `propose-downstream` CLI such that it is possible to use `create_pr` from configuration **or** override it via `--pr/--no-pr` options.\\n ([packit#1563](https://github.com/packit/packit/pull/1563))\\n- Packit now supports `release_suffix` configuration option that allows you to override the long release string provided by Packit that is used to ensure correct ordering and uniqueness of RPMs built in Copr.\\n ([packit#1568](https://github.com/packit/packit/pull/1568))\\n\\n## Week 18 (May 3rd - May 9th)\\n\\n- `packit source-git` commands learnt to replace [Git-trailers in commit messages](https://packit.dev/source-git/work-with-source-git/control-patch-generation/) if they already exist. ([packit#1577](https://github.com/packit/packit/pull/1577))\\n- When initializing source-git repos, the author of downstream commits created from patch files which are not in a git-am format is set to the original author of the patch-file in dist-git, instead of using the locally configured Git author. ([packit#1575](https://github.com/packit/packit/pull/1575))\\n- Packit now correctly inform users about downstream errors only on the last try. (Previously, Packit informed for all tries even the last try succeded.) ([packit-service#1485](https://github.com/packit/packit-service/pull/1485))\\n- Dashboard now also shows propose-downstream jobs in pipelines view. We have also merged all jobs to one column to minimize dead space on the page. ([dashboard#178](https://github.com/packit/dashboard/pull/178))\\n\\n## Week 19 (May 10th - May 16th)\\n\\n- Metadata dictionary is no longer required when specifying a job. Keys which used to belong to the yaml metadata dictionary are now keys of the job dictionary itself. ([packit#1569](https://github.com/packit/packit/pull/1569))\\n- Packit now correctly removes patches during `packit source-git init` when the preamble does not contain blank lines. ([packit#1582](https://github.com/packit/packit/pull/1582))\\n- Packit now supports `--release-suffix` parameter in all of the related CLI commands. Also we have added a support for the `release_suffix` option from configuration to the CLI. With regards to that we have introduced a new CLI switch `--default-release-suffix` that allows you to override the configuration option to Packit-generated default option that ensures correct NVR ordering of the RPMs. ([packit#1586](https://github.com/packit/packit/pull/1586))\\n- Resolved an SRPM build problem caused by a new version of git that refuses to fetch in a git repo when it\'s owned on the OS level by someone else. ([packit#1497](https://github.com/packit/packit-service/pull/1497))\\n- Packit now passes `PACKIT_COPR_PROJECT` and `PACKIT_COPR_RPMS` variables to the Testing Farm. `PACKIT_COPR_PROJECT` holds Copr project in format owner/project and `PACKIT_COPR_RPMS` space-separated RPMs that were built in Copr. ([packit-service#1486](https://github.com/packit/packit-service/pull/1486))\\n- Packit now builds only its own dist-git commits. Other commits are not being acted upon. For reasoning, see [packit-service#1490](https://github.com/packit/packit-service/issues/1490). ([packit-service#1498](https://github.com/packit/packit-service/pull/1498))\\n- We have automated our allowlisting process via a new Packit comment command `/packit verify-fas`. You can find more info in [our requirements](https://packit.dev/docs/guide/#2-approval). ([packit-service#1487](https://github.com/packit/packit-service/pull/1487))\\n\\n## Week 20 (May 17th - May 23rd)\\n\\n- We have fixed an issue with the handling of messages from Copr on release builds, which has resulted in not setting the correct statuses on commits. ([packit-service#1513](https://github.com/packit/packit-service/pull/1513))\\n- When doing an automatic FAS account verification, Packit now suggests the URL where the GitHub account needs to be set. ([packit-service#1508](https://github.com/packit/packit-service/pull/1508))\\n\\n## Week 21 (May 24th - May 30th)\\n\\n- Packit will not raise an exception anymore when creating a SRPM with dangling symlinks. ([packit#1592](https://github.com/packit/packit/pull/1592))\\n- You can now override which dist-git commits will be built in Koji by specifying FAS accounts of authors and committers using\\n `allowed_pr_authors` or `allowed_committers` in the job metadata (see [the documentation](https://packit.dev/docs/configuration/#koji_build)). ([packit-service#1520](https://github.com/packit/packit-service/pull/1520))\\n\\n## Week 22 (May 31st - June 6th)\\n\\n- Packit shows basic information about allowlisting in the status description\\n when your namespace is not allowed.\\n ([packit-service#1533](https://github.com/packit/packit-service/pull/1533))\\n\\n## Week 23 (June 7th - June 13th)\\n\\n- The creation of Bodhi updates should not time out anymore, because we no longer get the latest build of a package via Bodhi.\\n ([packit#1612](https://github.com/packit/packit/pull/1612))\\n- We have fixed a regression where string values for the `targets` and `dist_git_branches` configuration keys were not accepted.\\n ([packit#1608](https://github.com/packit/packit/pull/1608))\\n- We improved the reporting for the test job if we are not able to find any FMF metadata and the `skip_build` option is enabled.\\n ([packit-service#1539](https://github.com/packit/packit-service/pull/1539))\\n\\n## Week 24 (June 14th - June 21st)\\n\\n- Git ref name that Packit works with during `propose-downstream` is now made more obvious in logs.\\n ([packit#1626](https://github.com/packit/packit/pull/1626))\\n- Packit now correctly handles creation of custom archives in root while a specfile is in a subdirectory.\\n ([packit#1622](https://github.com/packit/packit/pull/1622))\\n- There is a new check for git projects that are allowed to use a custom Copr project.\\n There will be a better integration in the form of a new config field in Copr settings that Packit can use.\\n In the meantime, the mapping is defined and maintained by the Packit team.\\n Let us know if you need a project to be allowed.\\n ([packit-service#1556](https://github.com/packit/packit-service/pull/1556))\\n- A link to Copr build logs was updated: it now points to a place where logs are available once a build starts.\\n ([packit-service#1554](https://github.com/packit/packit-service/pull/1554))\\n\\n## Week 25 (June 21st - June 27th)\\n\\n- Packit Bash completion file is no longer needlessly executable. ([packit#1634](https://github.com/packit/packit/pull/1634))\\n- Packit now works with Bodhi 5 and Bodhi 6 authentication mechanism. ([packit#1629](https://github.com/packit/packit/pull/1629))\\n- Git ref name that Packit works with during `propose-downstream` is now made more obvious in logs. ([packit#1626](https://github.com/packit/packit/pull/1626))\\n- We have fixed the incorrect displaying of `propose downstream` results in our dashboard. ([packit-service#1553](https://github.com/packit/packit-service/pull/1553))\\n\\n## Weeks 26\u201327 (June 27th\u2013July 11th)\\n\\n- We adjusted the way we check the author of the PR for PRs related to\\n dist-git commits that trigger Koji build jobs. This should fix the race\\n condition causing not creating Koji builds in some cases.\\n ([packit-service#1573](https://github.com/packit/packit-service/pull/1573))\\n- Results from Testing Farm are now correctly reported when multiple jobs with\\n different identifier are defined.\\n ([packit-service#1565](https://github.com/packit/packit-service/pull/1565))\\n- On a Bodhi authentication error, Packit will retry the task multiple times\\n in ten-minute intervals to be able to fix the issue in the meantime.\\n ([packit-service#1564](https://github.com/packit/packit-service/pull/1564))\\n\\n## Week 28 (July 12th\u2013July 18th)\\n\\n- Packit now guides everyone better when a FAS account is private\\n and updates the internal information about installations correctly\\n when the app is reinstalled.\\n ([packit-service#1575](https://github.com/packit/packit-service/pull/1575))\\n- Packit can now correctly create Bodhi updates using the new Bodhi 6 client.\\n ([packit#1651](https://github.com/packit/packit/pull/1651))\\n- RPM build commands of Packit CLI have been merged into one build subcommand,\\n for more information see the updated [documentation](https://packit.dev/docs/cli/build/).\\n We have also introduced a new --srpm option to the new build subcommand\\n that can be used to trigger local, Copr or Koji build from an already built\\n SRPM rather than the one implicitly created by Packit.\\n ([packit#1611](https://github.com/packit/packit/pull/1611))\\n\\n## Week 29 (July 19th\u2013July 25th)\\n\\n- Packit now correctly supports `tmt_plan` and `tf_post_install_script` in the\\n configuration. ([packit#1659](https://github.com/packit/packit/pull/1659))\\n- We have reverted to Bodhi 5 client since Packit couldn\'t create bodhi updates\\n with the new version 6 client: [fedora-infra/bodhi#4660](https://github.com/fedora-infra/bodhi/issues/4660)\\n ([packit-service#1590](https://github.com/packit/packit-service/pull/1590)).\\n Packit also provides a more helpful error message when it hits this.\\n ([packit#1660](https://github.com/packit/packit/pull/1660))\\n- During creating Copr builds, on Copr errors, Packit will retry the task\\n multiple times in case there is a Copr outage.\\n ([packit-service#1579](https://github.com/packit/packit-service/pull/1579))\\n\\n## Week 30 (July 26th\u2013August 1st)\\n\\n- Packit has switched to `python-specfile` library for handling spec files. This may cause some issues to pop up. ([packit#1588](https://github.com/packit/packit/pull/1588))\\n- Packit CLI can now build RPMs in mock. For more information see https://packit.dev/docs/cli/build/mock ([packit#1662](https://github.com/packit/packit/pull/1662))\\n- When using Packit before being allowed, Packit newly links an approval issue where the self-approval can be performed. ([packit-service#1596](https://github.com/packit/packit-service/pull/1596))\\n- A downstream koji-build can now be re-triggered by adding a comment containing `/packit koji-build` into a dist-git pull request with target branch corresponding to the branch the build should be acted upon. ([packit-service#1586](https://github.com/packit/packit-service/pull/1586))\\n\\n## Week 31 (August 2nd \u2013 August 8th)\\n\\n- Action `fix_spec_file` can change a spec file - Packit now preserves that change.\\n ([packit#1679](https://github.com/packit/packit/pull/1679))\\n- BREAKING CHANGE: fixed an issue where the repo was searched for the specfile\\n before checking if `downstream_package_name` is set, and\\n `.spec` can be used as the `specfile_path`.\\n ([packit#1663](https://github.com/packit/packit/pull/1663))\\n\\n## Week 32 (August 9th \u2013 August 15th)\\n\\n- We have fixed an issue when propose downstream didn\'t retry to download sources that were not yet available at the time of the first attempt. ([packit-service#1609](https://github.com/packit/packit-service/pull/1609))\\n- When creating Copr builds, Packit will now retry multiple times in case there is a GitHub outage or an internal error. ([packit-service#1589](https://github.com/packit/packit-service/pull/1589))\\n\\n## Week 33 (August 16th \u2013 August 22nd)\\n\\n- Packit CLI can now submit VM images in [Red Hat Image Builder](https://console.redhat.com/insights/image-builder).\\n All build-related commands have now consistent `--wait` / `--no-wait` options.\\n ([packit#1666](https://github.com/packit/packit/pull/1666))\\n- Packit `prepare-sources` command now has a `--create-symlinks` / `--no-create-symlinks` option,\\n which enables copying the archive instead of symlinking. This will be used in the Copr environment,\\n where symlinking the archive previously caused issues.\\n ([packit#1682](https://github.com/packit/packit/pull/1682))\\n- We have fixed the handling of the situation when Packit lacks permission to update a Copr project.\\n ([packit#1684](https://github.com/packit/packit/pull/1684))\\n- Dashboard should now load data for [jobs](https://dashboard.packit.dev/jobs) faster because\\n the database querying has been improved and also queries are done only when needed.\\n ([packit-service#1617](https://github.com/packit/packit-service/pull/1617),\\n [dashboard#189](https://github.com/packit/dashboard/pull/189))\\n\\n## Week 34 (August 23rd \u2013 August 29th)\\n\\n- `packit propose-downstream` is now more informative when sources cannot be\\n downloaded. ([packit#1698](https://github.com/packit/packit/pull/1698))\\n- No more annoying issues will be created after a successful _propose\\n downstream_. ([packit#1693](https://github.com/packit/packit/pull/1693))\\n- We have fixed an issue with reporting results when multiple Testing Farm\\n jobs with identifiers are configured.\\n ([packit-service#1634](https://github.com/packit/packit-service/pull/1634))\\n\\n## Week 35 (August 30th \u2013 September 5th)\\n\\n- SRPMs for Copr builds are built in Copr by default for Packit GitHub app installations since September 6, 2022.\\n For older installations, you can set the `srpm_build_deps` config option to use Copr as a builder.\\n Let us know if you hit any issue with the new implementation. We are going to slowly decommission the old implementation\\n and are happy to help with the transition. ([packit-service#1636](https://github.com/packit/packit-service/pull/1636))\\n- More indexes added to the database have further improved API/dashboard response times. ([packit-service#1639](https://github.com/packit/packit-service/pull/1639))\\n- When submitting Testing Farm tests, Packit will now retry multiple times in case there is a failure.\\n ([packit-service#1605](https://github.com/packit/packit-service/pull/1605))\\n- We have implemented checking the available composes before submitting the tests for both internal and public Testing\\n Farm. ([packit-service#1628](https://github.com/packit/packit-service/pull/1628))\\n\\n## Week 36 (September 6th \u2013 September 12th)\\n\\n- When querying Bodhi for information about Fedora/EPEL releases to resolve aliases,\\n packit now correctly handles pagination of API results. This resolves an issue that caused\\n Fedora 37 not to be pointed to from any alias.\\n ([packit#1704](https://github.com/packit/packit/pull/1704))\\n\\n## Week 37 (September 13th \u2013 September 19th)\\n\\n- Added support for filenames specified in source URL fragments, for example: `https://example.com/foo/1.0/download.cgi#/%{name}-%{version}.tar.gz` ([specfile#100](https://github.com/packit/specfile/pull/100))\\n- Some more underlying improvements to our libraries and deployment.\\n\\n## Week 38 (September 20th \u2013 September 26th)\\n\\n- Propose downstream job now pushes changes even when it\'s not creating a new pull request. This allows updating existing pull requests. ([packit#1725](https://github.com/packit/packit/pull/1725))\\n- Packit now deduces Copr targets for Copr builds when you have set your custom Copr project to be used. ([packit-service#1673](https://github.com/packit/packit-service/pull/1673))\\n- Retriggering tasks via re-run button in Github commit checks when there are configured identifiers for jobs should now work correctly. ([packit-service#1671](https://github.com/packit/packit-service/pull/1671))\\n- Packit now reports a pending state rather than an error on Testing Farm runs in case the related copr build has not finished yet. ([packit-service#1669](https://github.com/packit/packit-service/pull/1669))\\n- Users can now **allow** building in a custom Copr project from a _git-forge_ project.\\n User has to add manually the _git-forge_ project reference to the Copr project settings.\\n As an example, we should add _github.com/packit/ogr_ to the list named _Packit forge project allowed_ in our _packit-dev_ Copr project settings: https://copr.fedorainfracloud.org/coprs/packit/packit-dev/edit#packit_forge_projects_allowed. ([packit-service#1638](https://github.com/packit/packit-service/pull/1638))\\n\\n## Week 39 (September 27th \u2013 October 3rd)\\n\\n- We have improved mapping of Testing Farm Composes, if you have set your own custom mapping and the TF Compose is available, it will be used as is without any additional modifications we do (version, etc.). ([packit-service#1675](https://github.com/packit/packit-service/pull/1675))\\n- We have added support for running the tests with Copr builds built by Packit in another pull request (in a different repository). You can read more about this feature in [our documentation](https://packit.dev/docs/testing-farm/#running-tests-with-builds-from-another-pull-request). ([packit-service#1658](https://github.com/packit/packit-service/pull/1658))\\n\\n## Week 40 (October 4th \u2013 October 10th)\\n\\n- Packit now correctly selects a Testing Farm compose when it\'s specified correctly in the configuration without an architecture suffix. ([packit-service#1689](https://github.com/packit/packit-service/pull/1689))\\n- We have fixed an issue that prevented Packit to work correctly on merge requests on GitLab instances. ([packit-service#1683](https://github.com/packit/packit-service/pull/1683))\\n- Packit Service will now replace invalid characters for the Copr projects using the default naming scheme. ([packit-service#1684](https://github.com/packit/packit-service/pull/1684))\\n- When we report to set `Packit allowed forge projects` in the Copr projects, the link for the group projects is now correct. ([packit-service#1680](https://github.com/packit/packit-service/pull/1680))\\n- It is now possible to filter changelog entries by specifying lower bound EVR, upper bound EVR or both. ([specfile#104](https://github.com/packit/specfile/pull/104))\\n\\n## Week 41 (October 11th \u2013 October 17th)\\n\\n- Packit now correctly authenticates with Bodhi 6 and therefore creates Bodhi updates. \ud83d\ude80 ([packit#1746](https://github.com/packit/packit/pull/1746), [packit-service#1704](https://github.com/packit/packit-service/pull/1704))\\n- There are two changes in the naming of the service jobs:\\n The `build` job type name has been deprecated. It aimed to be an alias when Packit supported just one build type.\\n There are currently more types of builds and just `build` can be misleading. Please, be explicit and use `copr_build` instead.\\n The `production_build` name for upstream Koji build is misleading because it is not used to run production/non-scratch\\n builds and because it can be confused with the `koji_build` job that is triggered for dist-git commits.\\n (The `koji_build` job can trigger both scratch and non-scratch/production builds.)\\n To be explicit, use `upstream_koji_build` for builds triggered in upstream and `koji_build` for builds triggered in downstream.\\n Users will get a neutral status describing the change when the old names are in use. The status will become a warning\\n starting in November and the old names will be removed by the end of the year. ([packit-service#1656](https://github.com/packit/packit-service/pull/1656))\\n- We\'ve fixed the Markdown table format in the GitHub checks page, which was broken when the user\'s repo was not allowed to use Packit. ([packit-service#1688](https://github.com/packit/packit-service/pull/1688))\\n\\n## Week 42 (October 17th \u2013 October 23rd)\\n\\n- Packit now won\'t repeatedly comment in pull requests about the need to migrate configuration of allowed forge projects to Copr. ([packit-service#1716](https://github.com/packit/packit-service/pull/1716))\\n\\n## Week 43 (October 25th \u2013 October 31th)\\n\\n- Fixed an issue with version and release in a spec file being updated even if `--no-bump` flag was specified.\\n Also fixed an issue when `None` appeared in release instead of a number.\\n ([packit#1753](https://github.com/packit/packit/pull/1753))\\n- We have improved the handling of test jobs which should fix related issues with reporting and triggering\\n that occurred when multiple test jobs were configured.\\n ([packit-service#1717](https://github.com/packit/packit-service/pull/1717))\\n\\n## Week 44 (November 1st \u2013 November 7th)\\n\\n- Fixed an issue due to which the repository was never searched for a specfile if `specfile_path` was not specified, and `specfile_path` was always set to `.spec`. ([packit#1758](https://github.com/packit/packit/pull/1758))\\n- Packit is now able to generate automatic Bodhi update notes including a changelog diff since the latest stable build of a package. ([packit#1747](https://github.com/packit/packit/pull/1747))\\n- Description of Bodhi updates now contains a changelog diff. ([packit-service#1713](https://github.com/packit/packit-service/pull/1713))\\n\\n## Week 45 (November 8th \u2013 November 14th)\\n\\n- You can re-trigger a Bodhi update via dist-git PR comment `/packit create-update`. ([packit-service#1729](https://github.com/packit/packit-service/pull/1729))\\n- Packit now correctly finds an SRPM when rpmbuild reports warnings while it parses a spec file. ([packit#1772](https://github.com/packit/packit/pull/1772))\\n- When packit.yaml is present in the repo but is empty, Packit now produces a better error message instead of an internal Python exception. ([packit#1769](https://github.com/packit/packit/pull/1769))\\n- Retriggering of tests when there is a build job and a test job with an identifier configured was fixed. ([packit-service#1731](https://github.com/packit/packit-service/pull/1731))\\n- Packit GitHub app will not modify a package version when `release_suffix` configuration option is empty. ([packit-service#1738](https://github.com/packit/packit-service/pull/1738))\\n- Our `specfile` parser now supports localized tags (e.g. `Summary(fr)`) and tags with qualifiers (e.g. `Requires(post)`). ([specfile#132](https://github.com/packit/specfile/pull/132))\\n- SRPM build logs are now deleted after 30 days instead of 90 days. This doesn\'t apply to SRPM builds done in Copr, which deletes the logs after 14 days. ([packit/packit-service#1745](https://github.com/packit/packit-service/pull/1745))\\n\\n## Week 46 (November 15th \u2013 November 21st)\\n\\n- `srpm_build_deps` can be now configured also on the job configuration level. ([packit-service#1757](https://github.com/packit/packit-service/pull/1757))\\n\\n## Week 47 (November 22nd \u2013 November 28th)\\n\\n- We have changed the limit for our [SLO1](https://packit.dev/docs/service-level-objectives/#slo1-changes-to-github-prs-receive-a-status-update-within-15-seconds-in-99-of-cases): it was increased from 15s to 30s to account for setting all statuses. ([packit-service#1776](https://github.com/packit/packit-service/pull/1776))\\n- The job names deprecated in October (`build` alias of `copr_build` and `production_build` replaced by `upstream_koji_build`) newly lead to an error state (was `neutral` ) of the deprecated status created by Packit.\\n The old names will be removed by the end of the year. ([packit-service#1777](https://github.com/packit/packit-service/pull/1777))\\n- The Copr build logs URL now points to logs that are available even while building. ([packit-service#1767](https://github.com/packit/packit-service/pull/1767))\\n- Fixed an issue that caused empty lines originally inside changelog entries to appear at the end. ([specfile#140](https://github.com/packit/specfile/pull/140))\\n\\n## Week 48 (November 29th \u2013 December 5th)\\n\\n- `packit propose-downstream` now uploads all remote sources (those specified as URLs) and the\\n source specified by `spec_source_id` (whether remote or not) to lookaside. Previously, only Source0\\n was uploaded. Source0 is no longer treated specially, but as `spec_source_id` is `Source0` by default,\\n Source0 is still being uploaded by default unless `spec_source_id` is overriden.\\n ([packit#1778](https://github.com/packit/packit/pull/1778))\\n- [A VM image build](/docs/configuration/upstream/vm_image_build) can be triggered inside a PR via a comment\\n command `/packit vm-image-build` (the job needs to be defined in the configuration).\\n This feature is experimental and is still being tested.\\n ([packit-service#1761](https://github.com/packit/packit-service/pull/1761))\\n- `Section` and `Tag` objects in `specfile` library now have `normalized_name` property for more convenient comparison.\\n There is a new method, `Specfile.get_active_macros()`, to get active macros in the context of the spec file.\\n The underlying `rpm.spec` instance is now exposed as `Specfile.rpm_spec` property.\\n There is a new utility class for parsing NEVRA strings. ([specfile#141](https://github.com/packit/specfile/pull/141))\\n\\n## Week 49 (December 6th \u2013 December 12th)\\n\\n- Packit now correctly handles a race condition when it tries to create bodhi\\n updates for builds that are not yet tagged properly. CLI exprience was also\\n improved for this case.\\n ([packit#1803](https://github.com/packit/packit/pull/1803))\\n- Packit now resets the `Release` tag during `propose-downstream` if the version\\n is updated and the `Release` tag has not explicitly been overridden in the\\n upstream specfile.\\n ([packit#1801](https://github.com/packit/packit/pull/1801))\\n- If you still don\'t build SRPMs in Copr you\'ll get a warning status that you\\n should use `srpm_build_deps` to be sure that we don\'t break your workflow once\\n we switch to building all SRPMs in Copr in January.\\n ([packit-service#1804](https://github.com/packit/packit-service/pull/1804))\\n- We\'ve increased internal task retry backoff time in Packit GitHub app from 3 to\\n 7 seconds. We hope this will increase success for network flakes and _random_\\n infrastructure issues. Creation of bodhi updates should be now more reliable too\\n as Packit will try more times (from 2 to 5).\\n ([packit-service#1800](https://github.com/packit/packit-service/pull/1800))\\n- Tags enclosed in conditional macro expansions are not ignored anymore.\\n ([specfile#156](https://github.com/packit/specfile/pull/156))\\n- Context managers (`Specfile.sections()`, `Specfile.tags()` etc.) can now be nested\\n and combined together (with one exception - `Specfile.macro_definitions()`), and\\n it is also possible to use tag properties (e.g. `Specfile.version`, `Specfile.license`)\\n inside them. It is also possible to access the data directly, avoiding the `with`\\n statement, by using the `content` property (e.g. `Specfile.tags().content`), but\\n be aware that no modifications done to such data will be preserved. You must use\\n `with` to make changes.\\n ([specfile#153](https://github.com/packit/specfile/pull/153))\\n\\n## Week 50 (December 13th \u2013 December 19th)\\n\\n- Context managers are no longer shared between `Specfile` instances, making it possible\\n to work with more than one `Specfile` instance at a time.\\n ([specfile#157](https://github.com/packit/specfile/pull/157))"},{"id":"/2021","metadata":{"permalink":"/posts/weekly/2021","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/2021.md","source":"@site/weekly/2021.md","title":"2021","description":"Let\'s see what happened in Packit in 2021.","date":"2022-05-16T00:00:00.000Z","formattedDate":"May 16, 2022","tags":[{"label":"2021","permalink":"/posts/weekly/tags/2021"}],"readingTime":18.03,"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"2021","date":"2022-05-16T00:00:00.000Z","tags":["2021"]},"prevItem":{"title":"2022","permalink":"/posts/weekly/2022"},"nextItem":{"title":"2020","permalink":"/posts/weekly/2020"}},"content":"Let\'s see what happened in Packit in 2021.\\n\\n\x3c!--truncate--\x3e\\n\\n## Week 1 (January 4th - January 8th)\\n\\n- Name of the job/command/comment to propose update of downstream package has been synced\\n between CLI and service to `propose-downstream`.\\n `propose-update` is now deprecated. ([packit#1065](https://github.com/packit-service/packit/pull/1065), [packit-service#913](https://github.com/packit/packit-service/pull/913))\\n\\n## Week 2 (January 11th - January 15th)\\n\\n- Branch deletions are now correctly ignored. ([packit-service#919](https://github.com/packit/packit-service/pull/919))\\n- Multiple internal improvements have been done.\\n ([packit#1072](https://github.com/packit/packit/pull/1072),\\n [packit-service#922](https://github.com/packit/packit-service/pull/922),\\n [packit-service#923](https://github.com/packit/packit-service/pull/923))\\n\\n## Week 3 (January 18th - January 22th)\\n\\n- We have temporarily disabled the testing-farm support because the cluster with old runner has died and the new runner is not ready.\\n The tests are now skipped and you get `Testing farm is temporarily disabled.` status until we have the new runner available.\\n ([packit-service#929](https://github.com/packit/packit-service/pull/929))\\n\\n## Week 4 (January 25th - January 29th)\\n\\n- The CLI and the service now detect name of the default branch of a repository\\n instead of assuming it to be called `master`.\\n ([packit#1074](https://github.com/packit/packit/pull/1074),\\n [packit-service#924](https://github.com/packit/packit-service/pull/924))\\n- Build status page now points to the built SRPM uploaded to COPR.\\n ([packit-service#889](https://github.com/packit/packit-service/pull/889))\\n- `propose-downstream` on source-git repositories now always uses `--local-content`.\\n ([packit#1093](https://github.com/packit/packit/pull/1093))\\n- Hunor fixed bug [packit#1089](https://github.com/packit/packit/pull/1089)\\n which caused a wrong revision to be used for certain jobs in Packit Service.\\n- Tomas improved the reliability of our sandboxing service.\\n ([sandcastle#95](https://github.com/packit/sandcastle/pull/95))\\n- Default branches in all [our repositories](https://github.com/packit)\\n have been renamed from `master` to `main`.\\n\\n## Week 5 (February 1st - February 5th)\\n\\n- The service uses new Testing Farm ([API](https://testing-farm.gitlab.io/api/)).\\n We are still working on better user experience and fixing bugs.\\n ([packit-service#875](https://github.com/packit/packit-service/pull/875))\\n- MatejF refactored permission system on pull requests and issues comments and\\n renamed whitelist to allowlist. ([packit-service#936](https://github.com/packit/packit-service/pull/936))\\n- The service now retries failed tasks.\\n ([packit-service#931](https://github.com/packit/packit-service/pull/931))\\n- `--koji-target` option of the CLI\'s `build` command now accepts aliases.\\n ([packit#1052](https://github.com/packit/packit/pull/1052))\\n- The service runs on Fedora 33 now.\\n\\n## Week 6 (February 8th - February 12th)\\n\\n- `--dist-git-branches` option in the CLI\'s `propose-downstream` command was\\n fixed, it now respects set branches.\\n ([packit#1094](https://github.com/packit/packit/pull/1094))\\n- The way Packit adds patches to spec-file in source-git repo was improved, now\\n it shouldn\'t fail if patches are sparsely numbered.\\n ([packit#1100](https://github.com/packit/packit/pull/1100))\\n\\n## Week 7 (February 15th - February 19th)\\n\\n- The service now handles issue/MR comments on Gitlab.\\n ([packit-service#985](https://github.com/packit/packit-service/pull/985))\\n- `packit init` command now works with CentOS packages.\\n ([packit#1106](https://github.com/packit/packit/pull/1106))\\n\\n## Week 8 (February 22th - February 25th)\\n\\n- Sandcastle can run multiple commands in one sandbox, kudos to Tomas.\\n ([sandcastle#93](https://github.com/packit/sandcastle/pull/93))\\n- MatejF & MatejM improved CLI\'s `create-update` to work with EPEL and add password prompt.\\n ([packit#1122](https://github.com/packit/packit/pull/1122),\\n [packit#1127](https://github.com/packit/packit/pull/1127))\\n- Service runs builds for targets from `build` + `test` jobs, kudos to Laura.\\n ([packit-service#996](https://github.com/packit/packit-service/pull/996))\\n- MatejF did a lot of small fixes and improvements of packit-service.\\n ([packit-service#989](https://github.com/packit/packit-service/pull/989),\\n [packit-service#993](https://github.com/packit/packit-service/pull/993),\\n [packit-service#994](https://github.com/packit/packit-service/pull/994))\\n\\n## Week 9 (March 1st - March 5th)\\n\\n- Tomas improved the performance of sandcastle, all the user-defined actions now run in one sandbox.\\n This should also speed up the SRPM builds. ([packit#1129](https://github.com/packit/packit/pull/1129))\\n- You can view the results of jobs directly in our dashboard, kudos to Anchit. ([dashboard#73](https://github.com/packit/dashboard/pull/73))\\n- Jirka implemented setting of the [environment context](https://tmt.readthedocs.io/en/latest/spec/context.html)\\n when running the Testing farm tests. ([packit-service#1008](https://github.com/packit/packit-service/pull/1008))\\n- In Packit there is a new configuration option `sources` which overrides the URLs defined in specfiles.\\n ([packit#1131](https://github.com/packit/packit/pull/1131), [packit#1143](https://github.com/packit/packit/pull/1143))\\n\\n## Week 10 (March 8th - March 12th)\\n\\n- Jirka worked on setting up GitHub Workflows across all of the Packit\\n repositories to build the container images for Packit Service and push them\\n to Quay.io.\\n- Tom\xe1\u0161 fixed a bug in the linearization mechanism used when generating patch\\n files from a series of Git commits. ([packit#1144](https://github.com/packit/packit/pull/1144))\\n- Hunor implemented a way for `packit` to detect if patch-files generated from\\n Git are identical with the ones already in dist-git. This should help\\n avoiding superfluous changes done by `propose-downstream`. ([packit#1133](https://github.com/packit/packit/pull/1133))\\n- Jirka increased the delay (to 3 minutes in total) for Packit Service when\\n retrying downloading the sources during a `propose-downstream` job. This\\n should give more time for the sources to become available after a release is\\n created. ([packit-service#1019](https://github.com/packit/packit-service/pull/1019))\\n- Mat\u011bj fixed an ugly bug which caused Packit Service not to react to\\n installation events. ([packit-service#1018](https://github.com/packit/packit-service/pull/1018))\\n\\n## Week 11 (March 15th - March 19th)\\n\\n- Laura fixed a bug in the processing of GitHub App installations.\\n ([packit-service#1020](https://github.com/packit/packit-service/pull/1020))\\n- Jirka fixed a bug that caused improper numbering of patches for source-git.\\n ([packit#1164](https://github.com/packit/packit/pull/1164))\\n\\n## Week 12 (March 22th - March 26th)\\n\\n- Franta improved database schema. It will help us match builds and tests together more easily and solve some UX problems.\\n ([packit-service#954](https://github.com/packit/packit-service/pull/954))\\n- `packit init` CLI command has been updated to\\n - place downstream packaging files in a subdirectory `.distro` instead of `fedora`.\\n ([packit#1165](https://github.com/packit/packit/pull/1165))\\n - enable using Stream 9 dist-git as a source.\\n ([packit#1177](https://github.com/packit/packit/pull/1177))\\n- Laura reworked how specfiles are being synced from downstream dist-git repositories and we are running a PoC for packit\'s projects to test the new approach.\\n ([packit-service#1023](https://github.com/packit/packit-service/pull/1023))\\n- It\'s possible to specify a distinct test repository for tests in a test job.\\n ([packit#1155](https://github.com/packit/packit/pull/1155))\\n ([packit-service#1021](https://github.com/packit/packit-service/pull/1021))\\n- `centos-stream` target is temporarily resolved to `centos-stream-8` to reflect a change in Copr.\\n ([packit#1167](https://github.com/packit/packit/pull/1167))\\n\\n## Week 13 (March 29th - April 1st)\\n\\n- Jirka fixed a bug in `packit push-update`\\n ([packit#1191](https://github.com/packit/packit/pull/1191)).\\n- Mat\u011bj introduced the `fedora-latest` alias for build and test targets, which\\n resolves to the latest _branched_ Fedora Linux\\n ([packit#1187](https://github.com/packit/packit/pull/1187)).\\n- A custom path for the package config (aka `packit.yaml`) can be specified\\n using a new, top-level `-c, --config` option\\n ([packit#1184](https://github.com/packit/packit/pull/1184)).\\n\\n## Week 14 (April 4th - April 9th)\\n\\n- Honza converted packit\'s test suite from STI to FMF and configured packit to\\n synchronize the suite to Fedora dist-git\\n ([packit#1192](https://github.com/packit/packit/pull/1192)).\\n- Franta fixed a bug in packit which kept only appending targets to an existing\\n COPR project which is no longer a case - dropped targets are now being\\n removed\\n ([packit#1197](https://github.com/packit/packit/pull/1197)).\\n\\n## Week 15 (April 12th - April 16th)\\n\\n- Tom\xe1\u0161 fixed an issue in chaining variable definitions in the RPM macros used\\n to set up source-git repositories with `packit init`\\n ([packit#1206](https://github.com/packit/packit/pull/1206)).\\n- Jirka improved the error message Packit Service emits when the request to\\n start a test in Testing Farm fails\\n ([packit-service#1055](https://github.com/packit/packit-service/pull/1055)).\\n- Laura made Packit Service to set a status for jobs as soon as the requests\\n are received, and before starting any of the jobs\\n ([packit-service#1046](https://github.com/packit/packit-service/pull/1046)).\\n This way users will receive a more immediate feedback about the Service\\n handling their requests.\\n\\n## Week 16 (April 19th - April 23th)\\n\\n- The `current_version_command` and `create_tarball_command` config options are being deprecated\\n in favour of [actions](https://packit.dev/docs/configuration/actions/).\\n An issue will be created in the affected repositories if we find those options in use.\\n ([packit-service#1064](https://github.com/packit/packit-service/pull/1064))\\n- The result pages have been replaced by the views on our dashboard.\\n Let us know what do you think about that and what information do you want to see there.\\n You can expect more changes on this field.\\n - The result views have been implemented by [@IceWreck](https://github.com/IceWreck)\\n ([dashboard#73](https://github.com/packit/dashboard/pull/73)).\\n - The integration on packit-service side has been done by [Ma\u0165o](https://github.com/mfocko)\\n ([packit-service#1056](https://github.com/packit/packit-service/pull/1056),\\n [dashboard#95](https://github.com/packit/dashboard/pull/95)).\\n\\n## Week 17 (April 26th - April 30th)\\n\\n- When initiating a new source-git repo, packit adds info about sources to packit.yaml.\\n Also dist-git sources from the lookaside cache are not commited.\\n ([packit#1208](https://github.com/packit/packit/pull/1208),\\n [packit#1216](https://github.com/packit/packit/pull/1216)).\\n- Franta added support for git repository cache into packit. The service part is yet to be done\\n ([packit#1214](https://github.com/packit/packit/pull/1214)).\\n- Service reacts to `/packit` commands only when they appear alone on a line\\n ([packit-service#1065](https://github.com/packit/packit-service/pull/1065),\\n [packit-service#1083](https://github.com/packit/packit-service/pull/1083)).\\n- Service doesn\'t create duplicate issues when configuration is invalid\\n ([packit-service#1075](https://github.com/packit/packit-service/pull/1075)).\\n- We deprecated `current_version_command` and `create_tarball_command` in packit config\\n ([packit#1212](https://github.com/packit/packit/pull/1212)).\\n\\n## Week 18 (May 3rd - May 7th)\\n\\n- Laura fixed the problem with `fedora-latest` alias\\n ([packit#1222](https://github.com/packit/packit/pull/1222)).\\n- We now have separate workers for short and long running tasks. This should\\n lead to better responsiveness\\n ([packit-service#1059](https://github.com/packit/packit-service/pull/1059),\\n [deployment#202](https://github.com/packit/deployment/pull/202)).\\n\\n## Week 19 (May 10th - May 14th)\\n\\n- Jirka added support for creating Bugzilla bugs for newly created MRs on GitLab\\n ([packit-service#1087](https://github.com/packit/packit-service/pull/1087)).\\n- The installation instructions for failed or unfinished COPR builds are not\\n displayed on the results page ([dashboard#104](https://github.com/packit/dashboard/pull/104)).\\n\\n## Week 20 (May 17th - May 21st)\\n\\n- Hunor created an update-dist-git command\\n ([packit#1228](https://github.com/packit/packit/pull/1228)).\\n- Jan: use packit config as a place to create reference to tests\\n ([packit#1245](https://github.com/packit/packit/pull/1245)).\\n\\n## Week 21 (May 24th - May 28th)\\n\\n- Jirka added attribute for `update-dist-git` command to specify the packaging tool (e.g. `centpkg`).\\n By default, `fedpkg` is used.\\n ([packit#1257](https://github.com/packit/packit/pull/1257),\\n [packit-service#1105](https://github.com/packit/packit-service/pull/1105)).\\n- Tom\xe1\u0161 added support for `patch_id` in the metadata of source-git commits.\\n ([packit#1252](https://github.com/packit/packit/pull/1252))\\n- Hunor improved the strategy of checking Copr results\\n when we don\'t receive that information over message-bus.\\n ([packit-service#1104](https://github.com/packit/packit-service/pull/1104))\\n\\n## Week 22 (May 31st - June 4th)\\n\\n- We have a new [status page](https://status.packit.dev), kudos to Jirka!\\n- Franta fixed a bug that if some action during `propose-downstream` caused an upstream git repository to be dirty,\\n the sync for other branches failed. ([packit-service#1111](https://github.com/packit/packit-service/pull/1111))\\n- `packit generate` is not supported anymore. ([packit#1269](https://github.com/packit/packit/pull/1269))\\n- Tom\xe1\u0161 improved the patch ordering. ([packit#1263](https://github.com/packit/packit/pull/1263))\\n\\n## Week 23 (June 7th - June 11th)\\n\\n- Tom\xe1\u0161 improved the way changelog is passed from source-git repo to dist-git.\\n ([packit#1265](https://github.com/packit/packit/pull/1265))\\n- Hunor created a new subcommand `source-git` to group source-git related commands\\n `init` and `update-dist-git`. ([packit#1273](https://github.com/packit/packit/pull/1273))\\n- Franti\u0161ek improved API by adding `submitted_time` to the test result.\\n ([packit-service#1113](https://github.com/packit/packit-service/pull/1113))\\n\\n## Week 24 (June 14th - June 19th)\\n\\n- Franta started working on packit-service being able to submit test jobs to\\n internal testing farm so teams can test upstream changes against RHEL.\\n ([packit-service#1124](https://github.com/packit/packit-service/pull/1124)\\n [packit#1280](https://github.com/packit/packit/pull/1280))\\n- Hunor continues working on `packit source-git init`: CLI is now more\\n streamlined and simplified, and the command produces source-git repos\\n matching [our documentation]({{< ref \\"create-source-git.md\\" >}}).\\n ([packit#1277](https://github.com/packit/packit/pull/1277))\\n- Ma\u0165o Focko finished his refactoring of the `Upstream` class - should not have\\n impact on our users, but make the code easier to work with.\\n ([packit#1157](https://github.com/packit/packit/pull/1157))\\n\\n## Week 25 (June 21st - June 26th)\\n\\n- Hunor made several improvements to `source-git init`\'s CLI.\\n ([packit#1284](https://github.com/packit/packit/pull/1284))\\n- Thanks to Frantisek there is now one COPR project/repo used for all releases.\\n ([packit-service#1128](https://github.com/packit/packit-service/pull/1128))\\n- Laura fixed a bug in syncing downstream to upstream.\\n ([packit#1285](https://github.com/packit/packit/pull/1285))\\n\\n## Week 26+27 (June 28th - July 9th)\\n\\nSummer is here and vacations with it. Most of the work done in this sprint\\nis either internal (not user facing) or not finished yet.\\n\\n- Thanks to Ma\u0165ejM Packit Service now triggers a new Copr build if no\\n suitable build has been found. That fixes an issue that the service sometimes\\n did not react to `/packit test`.\\n ([packit-service#1132](https://github.com/packit/packit-service/pull/1132))\\n\\n## Week 28 (July 12th - July 16th)\\n\\n- We have a new API endpoint for obtaining projects of a given forge.\\n ([packit-service#1159](https://github.com/packit/packit-service/pull/1159))\\n- The bug causing that some projects couldn\'t be loaded in our dashboard was fixed.\\n ([packit-service#1161](https://github.com/packit/packit-service/pull/1161))\\n\\n## Week 29 (July 19th - July 23th)\\n\\n- Various improvements on our dashboard were done; mainly:\\n - Projects can be filtered by a forge.\\n ([dashboard#124](https://github.com/packit/dashboard/pull/124))\\n - Table with jobs was unified and cleaned.\\n ([dashboard#121](https://github.com/packit/dashboard/pull/121))\\n- Newly, we use the [Checks API](https://docs.github.com/en/rest/reference/checks) to show results on GitHub.\\n You can still see the results on the bottom of the pull-request page,\\n but also in the `Checks` tab.\\n This gives us more options like status with a neutral state\\n (e.g. currently, for permission errors) or a place for showing more details.\\n Don\'t forget to give our GitHub application permissions to use it.\\n You can expect more improvements in this field.\\n ([packit-service#1167](https://github.com/packit/packit-service/pull/1167))\\n\\n## Week 30 (July 26th - July 30th)\\n\\n- Source-git patch metadata: the `squash_commits` key is deprecated. Instead of using this,\\n set the same [`patch_name`](/development/patch-metadata#patch_name) in the commit\\n message of adjacent commits, which should end up in the same patch file.\\n ([packit#1309](https://github.com/packit/packit/pull/1309))\\n- `packit init` can now find a spec file inside of a git repository and set\\n it in `.packit.yaml`. ([packit#1313](https://github.com/packit/packit/pull/1313))\\n- A lot of work has been done on our dashboard:\\n - Status labels on dashboard have been reworked.\\n - New pipelines view for dashboard has been released, where you can see all builds and\\n tests that were recently run for your pull request, release or branch push. Each row\\n represents one pipeline of builds and tests from SRPM all the way to the Testing Farm. \\n ([dashboard#128](https://github.com/packit/dashboard/pull/128))\\n\\n## Week 31 (August 2nd - August 6th)\\n\\n- `sync_release` in API allows specifying a suffix for the newly created branch in a dist-git repo fork,\\n so that there can be more open update PRs for the same dist-git branch at the same time.\\n ([packit#1326](https://github.com/packit/packit/pull/1326))\\n- The behaviour of running tests triggered by `/packit test` comment was improved.\\n If there is no existing Copr build when the tests are triggered,\\n Packit service should now react and create a new build.\\n Also when the last Copr build status is failed,\\n tests are not submitted and users are informed about this.\\n ([packit-service#1188](https://github.com/packit/packit-service/pull/1188))\\n- You can use `oraclelinux-7`/`oraclelinux-8` chroots for build and test of your package on Oracle Linux.\\n ([packit-service#1186](https://github.com/packit/packit-service/pull/1186))\\n\\n## Week 32 (August 9th - August 13th)\\n\\n- `status` command of Packit\'s CLI has been refactored and now provides much cleaner output. ([packit#1329](https://github.com/packit/packit/pull/1329))\\n\\n## Week 33 (August 16th - August 20th)\\n\\n- When reacting to `/packit test`, Packit service sets a status before starting the job\\n to unify the behaviour with reacting to triggering builds. ([packit-service#1187](https://github.com/packit/packit-service/pull/1187))\\n- `packit validate-config` now checks also the value of the `specfile_path` configuration option\\n and shows warning if the specified file is not present in the repository. ([packit#1342](https://github.com/packit/packit/pull/1342))\\n\\n## Week 34 (August 23rd - August 27th)\\n\\n- Packit by default locally merges checked out pull requests into target branch.\\n Logging for checking out pull requests was improved to contain hashes and\\n summaries of last commit on both source and target branches.\\n ([packit#1344](https://github.com/packit/packit/pull/1344))\\n- Packit Service now runs Copr and Koji builds and following tests on Testing Farm\\n for pull requests on the code that would be a result of merging into the target branch.\\n In case merge conflicts occur during preparation of SRPM,\\n you can find more info in the SRPM logs.\\n ([packit-service#1206](https://github.com/packit/packit-service/pull/1206))\\n- Packit\'s CLI `source-git update-dist-git` now supports using Git trailers to define patch metadata,\\n which will control how patches are generated and added to the spec-file.\\n `source-git init` uses this format to capture patch metadata when setting up\\n a source-git repo, instead of the YAML one.\\n To maintain backwards compatibility, the YAML format is still parsed,\\n but only if none of the patches defines metadata using Git trailers.\\n ([packit#1336](https://github.com/packit/packit/pull/1336))\\n- These changes will be applied next week (not this week as usual).\\n\\n## Week 35 (August 30th - September 3rd)\\n\\n- A bug in Packit that caused purging or syncing upstream changelog\\n (when not configured) from specfile when running `propose-downstream` was fixed.\\n New behavior preserves downstream changelog and in case there are either\\n no entries or no %changelog section present, it is created with a new entry.\\n ([packit#1349](https://github.com/packit/packit/pull/1349))\\n\\n## Week 36 (September 6th - September 10th)\\n\\n- `packit source-git init` was updated to try to apply patches with `git am` first, and use `patch` only when this fails, in order to keep the commit message of Git-formatted (mbox) patch files in the source-git history. ([packit#1358](https://github.com/packit/packit/pull/1358))\\n\\n## Week 37 (September 13th - September 17th)\\n\\n- Now you can find URL pointing directly to testing farm results on GitHub Checks page. ([packit-service#1215](https://github.com/packit/packit-service/pull/1215))\\n- Ogr now supports reacting to the comment with a given reaction, getting them in list and deleting them (only when reaction is added by using ogr API). ([ogr#636](https://github.com/packit/ogr/pull/636))\\n- Packit now provides `PACKIT_RPMSPEC_RELEASE` environment variable in actions. ([packit#1363](https://github.com/packit/packit/pull/1363))\\n- Dashboard no longer shrinks Copr/Koji icons when being open in narrow view. ([dashboard#140](https://github.com/packit/dashboard/pull/140))\\n\\n## Week 38 (September 20th - September 24th)\\n\\n- [Dashboard](https://dashboard.packit.dev) now shows more readable format of time,\\n e.g. \\"just now\\", \\"a minute ago\\", etc. If you wish to see exact date-time of\\n the run, you can either hover over the time and tooltip with details appear.\\n In case of result pages more readable format is present in the tooltip rather\\n than by default. Also times are now shown in your local time zone. ([dashboard#142](https://github.com/packit/dashboard/pull/142))\\n- Packit can now read commit messages from a patch to support characters which cannot be encoded with UTF-8. ([packit#1372](https://github.com/packit/packit/pull/1372))\\n- EPEL targets are now being mapped to CentOS Linux inside the internal Testing Farm runs. ([packit-service#1225](https://github.com/packit/packit-service/pull/1225))\\n\\n## Week 39 (September 27th - October 1st)\\n\\n- Clicking on logo on [dashboard](https://dashboard.packit.dev/) no longer\\n opens a new page, but rather reloads the current one.\\n- We consider [Pipelines view](https://dashboard.packit.dev/pipelines) on\\n dashboard to be ready for production use. We\'re planning to improve the user\\n experience when using pipelines with easier navigation and filtering\\n options.\\n- Building the latest development versions of\\n [packit](https://github.com/packit/packit) and\\n [ogr](https://github.com/packit/ogr) was moved to the\\n [packit/packit-dev](https://copr.fedorainfracloud.org/coprs/packit/packit-dev/)\\n Copr repo.\\n\\n## Week 40 (October 4th - October 8th)\\n\\n- [A bug](https://github.com/packit/packit/issues/1255) in Packit causing\\n issues with local build when the branch was named with prefix `rpm` has been\\n fixed.\\n- To fulfill requests regarding updating targets on Copr repositories, Packit\\n Service will sync targets for the projects created by Packit Service (e.g.\\n pull requests, or non-set Copr repository for releases and branch builds)\\n and for Copr repositories **not owned by Packit** will try to extend the\\n list if necessary.\\n- If you trigger packit jobs with one of `/packit _` commands, our bot gives\\n you a \ud83d\udc4d reaction to let you know that we are working on it.\\n- Rerunning of failed tasks via GitHub Checks interface is now supported. You are now free to click those \\"Re-run\\" links.\\n- [ogr documentation](https://packit.github.io/ogr/) is converted to\\n Google-style docstrings. In case there are any discrepancies, missing docs\\n or docstrings in different format, please open an issue.\\n\\n## Week 41 (October 11th - October 15th)\\n\\n- We have added a new option to Packit CLI when creating Bodhi updates, you can\\n use `-b` or `--resolve- bugzillas` and specify IDs (separated by comma, e.g.\\n `-b 1` or `-b 1,2,3`) of bugzillas that are being closed by the update.\\n ([packit#1383](https://github.com/packit/packit/pull/1383))\\n- Packit will deduce the version for SRPM from the spec file, if there are no\\n git tags or action for acquiring current version defined.\\n ([packit#1388](https://github.com/packit/packit/pull/1388))\\n- It is possible to use `aarch64` architecture in the Testing Farm.\\n ([packit-service#1247](https://github.com/packit/packit-service/pull/1247))\\n- Running tests via Testing Farm now supports `centos-6` target.\\n ([packit-service#1244](https://github.com/packit/packit-service/pull/1244))\\n\\n## Week 42 (October 18th - October 22th)\\n\\n- We have introduced new options for generating SRPM packages:\\n ([packit#1396](https://github.com/packit/packit/pull/1396))\\n - `--no-bump` that prevents changing of the release in the SRPM,\\n which can be used for creating SRPMs on checked out tags/releases.\\n - `--release-suffix` that allows you to customize the suffix after the release number,\\n e.g. reference bugzilla or specific branch of the build.\\n- Copr build installation instructions now contain detailed info about\\n the built packages, so you can install the precise build from your pull request.\\n ([dashboard#149](https://github.com/packit/dashboard/pull/149))\\n\\n## Week 43 (October 25th - November 1st)\\n\\n- We have introduced a new configuration option `merge_pr_in_ci` that allows you to disable merging of PR into the base branch before creating SRPM in service. ([packit#1395](https://github.com/packit/packit/pull/1395), [packit-service#1261](https://github.com/packit/packit-service/pull/1261))\\n- If the upstream spec file is located in a subdirectory (such as\\n `packaging/fedora/pkg.spec`), it is now correctly synced to the root of\\n the downstream repository, since that\'s where rpmbuild will look\\n for it. ([packit#1402](https://github.com/packit/packit/pull/1402))\\n- The \\"Congratulations!\\" comment no longer has a disclaimer about our intentions to stop posting it by default. We have already made that move earlier this year, so the disclaimer is no longer relevant. ([packit-service#1260](https://github.com/packit/packit-service/pull/1260))\\n- Deprecated configuration options `current_version_command` and `create_tarball_command` have been removed and are no longer supported. They are superseded by actions `get-current-version` and `create-archive`. ([packit#1397](https://github.com/packit/packit/pull/1397))\\n\\n## Week 44 (November 1st - November 5th)\\n\\n- We have fixed several issues in packit when it\'s periodically checking\\n statuses of jobs. You should now reliably see up to date check statuses for\\n Copr RPM builds and Testing Farm runs.\\n ([packit-service#1267](https://github.com/packit/packit-service/pull/1267)),\\n ([packit-service#1265](https://github.com/packit/packit-service/pull/1265))\\n- Fixed an issue, which raised a `UnicodeEncodingError`, when working with\\n dist-git patch files with an encoding other than UTF-8.\\n ([packit#1406](https://github.com/packit/packit/pull/1406))\\n- Backup alias definitions now reflect the official release of Fedora 35.\\n ([packit#1405](https://github.com/packit/packit/pull/1405))\\n\\n## Week 45 (November 8th - November 12th)\\n\\n- You can now specify `skip_build` option in the test job metadata in the\\n Packit configuration file. This will cause no Copr build to be built and\\n installed into the testing environment, but only trigger the tests in\\n Testing Farm (the selected components to be installed should be part of the\\n TMT definitions).\\n ([packit-service#1256](https://github.com/packit/packit-service/pull/1256))\\n- Packit supports `changelog-entry` action that is used when creating SRPM.\\n The action is supposed to generate whole changelog entry (including `- ` at\\n the start of the lines) and has a priority over any other way we modify the\\n changelog with. ([packit#1367](https://github.com/packit/packit/pull/1367))\\n\\n## Week 46 (November 15th - November 19th)\\n\\n- A new `env` config option has been added for specifying environment variables,\\n which are then passed to Testing Farm along with some more pre-defined\\n variables (e.g. name of the project, URL, etc).\\n ([packit#1411](https://github.com/packit/packit/pull/1411))\\n ([packit-service#1275](https://github.com/packit/packit-service/pull/1275))\\n- The GitHub check run names are now shorter and easier to read.\\n ([packit-service#1281](https://github.com/packit/packit-service/pull/1281))\\n\\n## Week 47 (November 22th - November 26th)\\n\\n- You can set up a new `koji_build` job using the commit trigger to submit a\\n Koji build for a new commit in a dist-git branch. The configuration file\\n needs to be present in the dist-git for now\\n (the state for the new commit is used).\\n ([packit-service#1278](https://github.com/packit/packit-service/pull/1278))\\n\\n## Week 48 (November 29th - December 3rd)\\n\\n- External contributors can\'t trigger internal tests initially. Project\\n maintainers need to trigger the action via `/packit test` comment to run\\n the job.\\n ([packit-service#1302](https://github.com/packit/packit-service/pull/1302))\\n ([packit-service#1305](https://github.com/packit/packit-service/pull/1305))\\n- A new `packit prepare-sources` command has been implemented for preparing\\n sources for an SRPM build using the content of an upstream repository.\\n ([packit#1424](https://github.com/packit/packit/pull/1424))\\n- Packit now visibly informs about an ongoing cloning process to remove\\n potential confusion.\\n ([packit#1431](https://github.com/packit/packit/pull/1431))\\n- The `upstream_package_name` config option is now checked for illegal\\n characters and an error is thrown if it contains them.\\n ([packit#1434](https://github.com/packit/packit/pull/1434))\\n\\n## Week 49 (December 6th - December 12th)\\n\\n- Packit now correctly finds the release event if you don\'t use the version as a release title.\\n ([packit#1437](https://github.com/packit/packit/pull/1437))"},{"id":"/2020","metadata":{"permalink":"/posts/weekly/2020","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/2020.md","source":"@site/weekly/2020.md","title":"2020","description":"Let\'s see what happened in Packit in 2020.","date":"2022-01-04T00:00:00.000Z","formattedDate":"January 4, 2022","tags":[{"label":"2020","permalink":"/posts/weekly/tags/2020"}],"readingTime":22.565,"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"2020","date":"2022-01-04T00:00:00.000Z","tags":["2020"]},"prevItem":{"title":"2021","permalink":"/posts/weekly/2021"},"nextItem":{"title":"2019","permalink":"/posts/weekly/2019"}},"content":"Let\'s see what happened in Packit in 2020.\\n\\n\x3c!--truncate--\x3e\\n\\n## Week 1\\n\\n### packit\\n\\n- Correctly updates version on srpm build. ([#642](https://github.com/packit-service/packit/pull/642))\\n- Downloads all URL sources before srpm build. ([#643](https://github.com/packit-service/packit/pull/643))\\n\\n### packit service\\n\\n- Runs on Fedora 31. ([#303](https://github.com/packit-service/packit-service/pull/303), [#304](https://github.com/packit-service/packit-service/pull/304))\\n- Correctly checks list of whitelisted repositories when issue comment is added. ([#309](https://github.com/packit-service/packit-service/pull/309))\\n\\n## Week 2\\n\\n### packit\\n\\n- Incorporates lots of SRPM related improvements. ([#646](https://github.com/packit-service/packit/pull/646), [#650](https://github.com/packit-service/packit/pull/650), [#651](https://github.com/packit-service/packit/pull/651), [#652](https://github.com/packit-service/packit/pull/652), [#653](https://github.com/packit-service/packit/pull/653))\\n- Better handles when Copr owner is not set. ([#648](https://github.com/packit-service/packit/pull/648))\\n\\n### packit service\\n\\n- Fixes SRPM exceptions/errors handling. ([#311](https://github.com/packit-service/packit-service/pull/311), [#317](https://github.com/packit-service/packit-service/pull/317))\\n- Has loading of config fixed. ([#318](https://github.com/packit-service/packit-service/pull/318))\\n\\n## Week 3\\n\\n### packit\\n\\n- Uses [Marshmallow](https://pypi.org/project/marshmallow) for configuration schema. ([#657](https://github.com/packit-service/packit/pull/657))\\n- Is able to build in [Koji](https://koji.fedoraproject.org) from upstream/source-git. ([#658](https://github.com/packit-service/packit/pull/658))\\n- Doesn\'t download remote sources when \\"sources\\" path exists in upstream. ([#659](https://github.com/packit-service/packit/pull/659))\\n- Configuration file allows list syntax in action commands. ([#663](https://github.com/packit-service/packit/pull/663))\\n- Configuration can use a new option to exclude paths from patching. ([#666](https://github.com/packit-service/packit/pull/666))\\n- Has few less bugs. ([#660](https://github.com/packit-service/packit/pull/660), [#661](https://github.com/packit-service/packit/pull/661), [#664](https://github.com/packit-service/packit/pull/664), [#667](https://github.com/packit-service/packit/pull/667))\\n\\n### packit service\\n\\n- Uses [Marshmallow](https://pypi.org/project/marshmallow) for configuration schema. ([#320](https://github.com/packit-service/packit-service/pull/320))\\n- Runs build for test job even when it\'s not explicitly configured. ([#324](https://github.com/packit-service/packit-service/pull/324))\\n- Reports invalid or missing packit config. ([#328](https://github.com/packit-service/packit-service/pull/328))\\n- Status workflow has been changed and simplified. ([#338](https://github.com/packit-service/packit-service/pull/338))\\n- Minor fixes. ([#323](https://github.com/packit-service/packit-service/pull/323), [#326](https://github.com/packit-service/packit-service/pull/326), [#329](https://github.com/packit-service/packit-service/pull/329), [#331](https://github.com/packit-service/packit-service/pull/331), [#335](https://github.com/packit-service/packit-service/pull/335), [#336](https://github.com/packit-service/packit-service/pull/336))\\n\\n## Week 4\\n\\n### packit\\n\\n- [0.8.1](https://pypi.org/project/packitos/0.8.1/) has been released.\\n- CLI has bash auto completion. ([#654](https://github.com/packit-service/packit/pull/654))\\n- Few bugs have been squashed. ([#668](https://github.com/packit-service/packit/pull/668), [#670](https://github.com/packit-service/packit/pull/670), [#676](https://github.com/packit-service/packit/pull/676), [#677](https://github.com/packit-service/packit/pull/677), [#678](https://github.com/packit-service/packit/pull/678), [#680](https://github.com/packit-service/packit/pull/680), [#682](https://github.com/packit-service/packit/pull/682))\\n\\n### packit service\\n\\n- More checks messages have been unified. ([#355](https://github.com/packit-service/packit-service/pull/355))\\n- One more testing-farm status is now shown before the tests are submitted. ([#343](https://github.com/packit-service/packit-service/pull/343))\\n- No-fmf scenario has better messages. ([#362](https://github.com/packit-service/packit-service/pull/362))\\n- Minor fixes and improvements. ([#339](https://github.com/packit-service/packit-service/pull/339), [#340](https://github.com/packit-service/packit-service/pull/340), [#342](https://github.com/packit-service/packit-service/pull/342), [#345](https://github.com/packit-service/packit-service/pull/345), [#346](https://github.com/packit-service/packit-service/pull/346), [#347](https://github.com/packit-service/packit-service/pull/347), [#348](https://github.com/packit-service/packit-service/pull/348), [#352](https://github.com/packit-service/packit-service/pull/352), [#353](https://github.com/packit-service/packit-service/pull/353), [#350](https://github.com/packit-service/packit-service/pull/350), [#357](https://github.com/packit-service/packit-service/pull/357), [#358](https://github.com/packit-service/packit-service/pull/358), [#361](https://github.com/packit-service/packit-service/pull/361), [#364](https://github.com/packit-service/packit-service/pull/364))\\n\\n## Week 5\\n\\n### packit\\n\\n- CLI has a new command for local build. ([#687](https://github.com/packit-service/packit/pull/687))\\n- Logs less. ([#685](https://github.com/packit-service/packit/pull/685))\\n\\n### packit service\\n\\n- Minor fixes and improvements. ([#365](https://github.com/packit-service/packit-service/pull/365), [#371](https://github.com/packit-service/packit-service/pull/371), [#373](https://github.com/packit-service/packit-service/pull/373), [#376](https://github.com/packit-service/packit-service/pull/376))\\n\\n## Week 6\\n\\nBoth Packit and Packit Service pre-commit hooks [were][1] [updated][2] to include\\n[prettier] and [setup-cfg-fmt], in order to have a more consistent formatting of\\nmarkup, YAML, JSON and `setup.cfg` files.\\n\\nIt became easier for developers to [build the Packit base image] locally, and\\ntests in Zuul [were configured] to run on Fedora 31.\\n\\nPackit learned [how to look for RPM spec files on its own], so specifying\\n`specfile_path` in the configuration is not mandatory anymore. Packit will\\nrecursively search the tree and use the first spec file found.\\n\\nThe Redis pod in Packit Service uses an up to date image now, [based on Fedora 31].\\nKudos to [hhorak] for the help!\\n\\n[1]: https://github.com/packit-service/packit/pull/697\\n[2]: https://github.com/packit-service/packit-service/pull/383\\n[prettier]: https://github.com/prettier/prettier\\n[setup-cfg-fmt]: https://github.com/asottile/setup-cfg-fmt\\n[build the packit base image]: https://github.com/packit-service/packit/pull/695\\n[were configured]: https://github.com/packit-service/packit/pull/694\\n[how to look for rpm spec files on its own]: https://github.com/packit-service/packit/pull/634\\n[based on fedora 31]: https://github.com/packit-service/deployment/pull/51\\n[hhorak]: https://github.com/hhorak\\n\\n## Week 7\\n\\nThe default configuration generated by Packit has [test jobs enabled] from now\\non. This should simplify configuring Packit in new repositories.\\n\\n[Fixed a bug] which was causing SRPM-build failures in Packit Service for projects\\nwhich had their spec files stored in a subdirectory.\\n\\nAs a result of [keys.fedoraproject.org] being turned off, Packit now [tries] a\\nlist of GPG keyservers when downloading keys to check commit signatures.\\n\\nWhen enabling Packit Service for new GitHub repositories, instead of checking\\nif the requester is a Fedora packager, we\'ll check if they [signed the Fedora\\nProject Contributor Agreement].\\n\\nWhile proposing an update to Fedora, Packit Service will [report a failure] now\\nwhen there are no releases found in the upstream GitHub repository.\\n\\nTest results became [serializable], we will not block when [no test results\\nare received], and Packit Service received [some initial code] to enable using\\nPostgreSQL as a data backend.\\n\\n[test jobs enabled]: https://github.com/packit-service/packit/pull/703\\n[fixed a bug]: https://github.com/packit-service/packit/pull/698\\n[tries]: https://github.com/packit-service/packit/pull/699\\n[keys.fedoraproject.org]: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/COEYWJBQDAWRSYNQW7Y7TD2EKEGBWOAY/\\n[signed the fedora project contributor agreement]: https://github.com/packit-service/packit-service/pull/403\\n[no test results are received]: https://github.com/packit-service/packit-service/pull/388\\n[some initial code]: https://github.com/packit-service/packit-service/pull/319\\n[report a failure]: https://github.com/packit-service/packit-service/pull/399\\n[serializable]: https://github.com/packit-service/packit-service/pull/391\\n\\n## Week 8\\n\\nPostgresql database was introduced in production environment to improve performance and enable implementation\\nof new features, e.g. storing logs to reduce amount of messages sent directly to pull request [(#406)], [(#420)].\\n\\nCleanup in configuration files was performed, so no longer needed values were removed from .packit.yaml [(#709)].\\nUser experience was improved by adding new `--upstrem-ref` option to `copr-build` command in command-line interface [(#718)]\\nand making error reporting more robust by adding new fedpkg clones related error message [(#714)].\\n\\nFollowing bugs were fixed:\\n\\n- bug in copr-build command fixed [(#713)]\\n- get_local_package_config() duplicate entries in \'directories\' bug fixed [(#715)]\\n\\n[(#709)]: https://github.com/packit-service/packit/pull/709\\n[(#718)]: https://github.com/packit-service/packit/pull/718\\n[(#714)]: https://github.com/packit-service/packit/pull/714\\n[(#713)]: https://github.com/packit-service/packit/pull/713\\n[(#715)]: https://github.com/packit-service/packit/pull/715\\n[(#406)]: https://github.com/packit-service/packit-service/pull/406\\n[(#420)]: https://github.com/packit-service/packit-service/pull/420\\n\\n## Week 9\\n\\n### packit\\n\\n- Dist-git patches are now applied in source-git repos with `-p1` to resolve an issue when they are generated with git and patch program fails to apply them [(#730)].\\n- Fedora 32 was added to \'fedora-all\' and \'fedora-development\' aliases [(#731)].\\n- We have put more links to our documentation (README, deprecation warning in packit) so that people can easily correct their configuration files [(#726)].\\n\\n### packit-service\\n\\n- `targets` key in copr job definition in the packit.yaml is no longer a required field (it defaults to `fedora-stable`) [(#431)].\\n- Builds are now correctly linked to their actual GitHub projects (this can be seen in the logs view) [(#441)].\\n\\n[(#730)]: https://github.com/packit-service/packit/pull/730\\n[(#731)]: https://github.com/packit-service/packit/pull/731\\n[(#726)]: https://github.com/packit-service/packit/pull/726\\n[(#431)]: https://github.com/packit-service/packit-service/pull/431\\n[(#441)]: https://github.com/packit-service/packit-service/pull/441\\n\\n## Week 10 (March 2nd - March 6th)\\n\\n### packit\\n\\n- The generate command is now deprecated in favour of the init command\\n [(#728)], contributed by [@shreyaspapi](https://github.com/shreyaspapi).\\n\\n### packit-service\\n\\n- When a non-collaborator creates a PR, packit says that only \\"Collaborators\\n can trigger packit-service\\" - this message has been improved to better match\\n the reality [(#445)].\\n- Packit service no longer posts comments on pull requests when a SRPM can\'t be\\n created - the logs should be now aviable in the service\'s logs view available\\n when clocking on the commit status check URL [(#447)].\\n- Commands to control packit service can now be embedded in a comment\\n (previously, the whole comment was treated as a command) - hence you can now\\n create a comment to give an update and also trigger packit [(#433)],\\n contributed by [@IceWreck](https://github.com/IceWreck).\\n- We have improved monitoring of packit-service by using more sentry.io\'s\\n features [(#458)].\\n- You can now disable the functionality when packit service comments on a PR\\n when it gets built for the first time (`notifications: {pull_request: {successful_build:: false}}` in your packit.yaml), hi\\n [Lars](https://github.com/larskarlitski)! [(#455)].\\n\\n[(#728)]: https://github.com/packit-service/packit/pull/728\\n[(#445)]: https://github.com/packit-service/packit-service/pull/445\\n[(#447)]: https://github.com/packit-service/packit-service/pull/447\\n[(#433)]: https://github.com/packit-service/packit-service/pull/433\\n[(#458)]: https://github.com/packit-service/packit-service/pull/458\\n[(#455)]: https://github.com/packit-service/packit-service/pull/455\\n\\n## Week 11 (March 9th - March 13th)\\n\\n### packit\\n\\n- We have changed how packit treats version and release in the spec file [(#748)].\\n - We handle the `git-describe` output better which should help when tags\\n contain dashes [(#759)].\\n- When packit adds source-git patches into a spec file it adds them outside\\n of rpm macros now [(#760)].\\n- In pull request pipelines we run the packit-service tests so that we are sure we\\n do not break the service [(#752)].\\n\\n### packit-service\\n\\n- Comments from packit-service about successful `propose-update` in the issue\\n which triggered the update now include the URL of the new pull-request in Fedora [(#472)].\\n- We have done some major refactoring how jobs are processed\\n [(#476)], [(#746)], [(#453)].\\n- Development and debugging of the packit-service should be easier now, we\\n documented how to run packit-service locally [(#473)].\\n\\n[(#746)]: https://github.com/packit-service/packit/pull/746\\n[(#748)]: https://github.com/packit-service/packit/pull/748\\n[(#752)]: https://github.com/packit-service/packit/pull/752\\n[(#759)]: https://github.com/packit-service/packit/pull/759\\n[(#760)]: https://github.com/packit-service/packit/pull/760\\n[(#472)]: https://github.com/packit-service/packit-service/pull/472\\n[(#473)]: https://github.com/packit-service/packit-service/pull/473\\n[(#476)]: https://github.com/packit-service/packit-service/pull/476\\n[(#453)]: https://github.com/packit-service/packit-service/pull/453\\n\\n## Week 12 (March 16th - March 20th)\\n\\n### packit\\n\\n- When you are executing `copr-build` command, you do not\\n need to set the project name if this value is defined in\\n the `copr_build` job in the configuration file [(#763)].\\n- All patches generated from a source-git repo are now prefixed with a number\\n so they are easy to sort [(#765)].\\n- We improved the behaviour when loading the authentication in the config file -\\n users are warned only if deprecated keys are used, no more confusing messages when\\n you do not have `authentication` key in the configuration [(#754)].\\n\\n### packit-service\\n\\n- We periodically check the status of the copr-build so that we do not need to rely\\n on the Fedora message bus. This should avoid failures in build status reporting [(#490)].\\n- `Propose-update` triggered by comment in GitHub now recognizes also pre-releases [(#498)].\\n- Several bugs in how we report results from Testing farm have been fixed and Testing\\n farm results should now appear correctly in commit status checks\\n [(#496)], [(#505)], [(#510)], [(#513)].\\n\\n[(#765)]: https://github.com/packit-service/packit/pull/765\\n[(#754)]: https://github.com/packit-service/packit/pull/754\\n[(#763)]: https://github.com/packit-service/packit/pull/763\\n[(#490)]: https://github.com/packit-service/packit-service/pull/490\\n[(#498)]: https://github.com/packit-service/packit-service/pull/498\\n[(#497)]: https://github.com/packit-service/packit-service/pull/497\\n[(#496)]: https://github.com/packit-service/packit-service/pull/496\\n[(#505)]: https://github.com/packit-service/packit-service/pull/505\\n[(#510)]: https://github.com/packit-service/packit-service/pull/510\\n[(#513)]: https://github.com/packit-service/packit-service/pull/513\\n\\n## Week 13 (March 23th - March 27th)\\n\\n- New Packit version 0.9.0 was released.\\n- Packit Service now mostly uses PostgreSQL instead of Redis as a backend,\\n which will result in more responsive API and Dashboard.\\n\\n## Week 14 (March 30th - April 3rd)\\n\\n### packit\\n\\n- Fix web URLs for Copr builds owned by groups [(#778)].\\n- Create downstream spec if it\'s not there (propose-update) - this used to happen when using packit on a newly created package in Fedora which did not have spec fille added yet. [(#779)]\\n- Packit no longer inspects archive extension set in `Source` and creates `.tar.gz` by default - this should be more flexible and prevent issues for \\"non-standard\\" archive names. [(#781)]\\n\\n### packit-service\\n\\n- Several fixes and improvements after switching data store from Redis to PostgreSQL.\\n- Use the configured COPR project when triggering Testing Farm (tests no longer fail for projects which are built in their own COPR namespace) [(#524)].\\n\\n[(#778)]: https://github.com/packit-service/packit/pull/778\\n[(#779)]: https://github.com/packit-service/packit/pull/779\\n[(#781)]: https://github.com/packit-service/packit/pull/781\\n[(#524)]: https://github.com/packit-service/packit-service/pull/524\\n\\n## Week 15 (March 6th - April 9th)\\n\\n### packit\\n\\n- [Tom\xe1\u0161] finished teaching `packit srpm` to [linearise extremely complex Git\\n histories], in order to get patches that can be applied when building the\\n SRPM.\\n- [Jirka] made the schema validation code [Marshmallow3 compatible]. This\\n enables building `packit` in Fedora 32 and Rawhide.\\n\\n### packit-service\\n\\n- [Franta] fixed an issue with [parsing release events].\\n- [Jirka] made code [Marshmallow3] compatible in this project, too.\\n\\n[tom\xe1\u0161]: https://github.com/TomasTomecek\\n[jirka]: https://github.com/jpopelka\\n[franta]: https://github.com/lachmanfrantisek\\n[linearise extremely complex git histories]: https://github.com/packit-service/packit/pull/766\\n[marshmallow3 compatible]: https://github.com/packit-service/packit/pull/775\\n[marshmallow3]: https://github.com/packit-service/packit-service/pull/538\\n[parsing release events]: https://github.com/packit-service/packit-service/issues/536\\n\\n## Week 16 (April 14th - April 17th)\\n\\n### packit & packit-service\\n\\n- Job metadata field `dist-git-branch` is now marked as deprecated, to be\\n replaced by `dist_git_branches` to match the naming of other metadata fields\\n and to accept multiple branch names where Packit should work. ([#797],\\n [#788] and [#564]).\\n- A great deal of refactoring, CI work and general code improvements which\\n will make Packit and Packit Service run smoother and development easier.\\n\\n[#797]: https://github.com/packit-service/packit/pull/797\\n[#788]: https://github.com/packit-service/packit/pull/788\\n[#564]: https://github.com/packit-service/packit-service/pull/564\\n\\n## Week 17 (April 20th - April 24th)\\n\\n### packit-service\\n\\nIn this week we mostly focused on CentOS Stream and\\nsome under the hood improvements,\\nnone of which are available for GitHub projects.\\n\\n- [Jano] did a lot of work on [initial CentOS Stream integration].\\n- [Hunor] added a Pagure build status reporting.\\n- [Anchit] added first API tests and improved build statuses given by the API.\\n- [Laura] and [Rishav] improved how data about Copr builds are stored in our db.\\n\\n[anchit]: https://github.com/IceWreck\\n[hunor]: https://github.com/csomh\\n[jano]: https://github.com/sakalosj\\n[laura]: https://github.com/lbarcziova\\n[rishav]: https://github.com/rishavanand\\n[initial centos stream integration]: https://github.com/packit-service/packit-service/pull/515\\n\\n## Week 18 (April 27th - April 30th)\\n\\n### packit-service\\n\\n- [Franta] did a great deal of service & worker refactoring related to CentOS ([#586])\\n and to forks usage in GitHub. ([#589])\\n- [Hunor] fixed confusing GitHub status messages while building in Copr. ([#588])\\n\\n[#586]: https://github.com/packit-service/packit-service/pull/586\\n[#588]: https://github.com/packit-service/packit-service/pull/588\\n[#589]: https://github.com/packit-service/packit-service/pull/589\\n\\n## Week 19 (May 4th - May 6th)\\n\\n### packit\\n\\n- The image now uses ogr from git master instead of from Fedora stable RPM.\\n\\n### packit-service\\n\\n- [Franta] Fixed a previous week introduced bug, which prevented users from being whitelisted. ([#599])\\n- [Hunor] Made improvements to avoid a race condition in getting app access token. ([#601])\\n\\n[franta]: https://github.com/lachmanfrantisek\\n[hunor]: https://github.com/csomh\\n[#599]: https://github.com/packit-service/packit-service/pull/599\\n[#601]: https://github.com/packit-service/packit-service/pull/601\\n\\n## Week 20+21 (May 11th - May 22th)\\n\\n### packit\\n\\n- The debug logs in the CLI are now much more consistent. ([#824])\\n- A bug in the `propose-update` causing problems with the synchronization of the spec-file content was fixed. ([#830])\\n- You can now use `epel-all` alias in the arguments and also in the configuration. ([#835])\\n\\n### packit-service\\n\\n- In job definition for packit-service you can use `epel-all` alias as well. ([#835])\\n\\n[#824]: https://github.com/packit-service/packit/pull/824\\n[#830]: https://github.com/packit-service/packit/pull/830\\n[#835]: https://github.com/packit-service/packit/pull/835\\n\\n## Week 22 (May 25th - May 29th)\\n\\n### packit\\n\\n- [The problem with kerberos initialization](https://github.com/packit-service/packit/issues/837)\\n was fixed. ([#838])\\n- We released a new version of the packit package. ([release 0.11.0])\\n- We have been also working on some smaller issues and preparation steps for our future work.\\n ([#841], [#843], [#846], [#847])\\n\\n[#838]: https://github.com/packit-service/packit/pull/838\\n[#841]: https://github.com/packit-service/packit/pull/841\\n[#843]: https://github.com/packit-service/packit/pull/843\\n[#846]: https://github.com/packit-service/packit/pull/846\\n[#847]: https://github.com/packit-service/packit/pull/847\\n[release 0.11.0]: https://github.com/packit-service/packit/releases/tag/0.11.0\\n\\n### packit-service\\n\\n- [Jirka] implemented creating a new bug in Bugzilla for CentOS Stream pull-requests ([#627]).\\n This will be triggered when the label \\"accepted\\" is added to a PR in the (near) future.\\n- You will be able to use aliases also for koji builds. ([packit:#839], [#632])\\n- [Laura] fixed [a problem](https://github.com/packit-service/packit-service/issues/535)\\n with missing builds when triggering Packit Service with `/packit test`.\\n Now, we trigger the build first if there are no builds for the pull-request yet. ([#631])\\n\\n[jirka]: https://github.com/jpopelka\\n[laura]: https://github.com/lbarcziova\\n[#627]: https://github.com/packit-service/packit-service/pull/627\\n[packit:#839]: https://github.com/packit-service/packit/pull/839\\n[#632]: https://github.com/packit-service/packit-service/pull/632\\n[#631]: https://github.com/packit-service/packit-service/pull/631\\n\\n## Week 23 (June 1st - June 5th)\\n\\nHello everyone, during this week we didn\'t manage to implement any significant new features - most of the work happened under the hood.\\n\\n### packit\\n\\n- We have fixed a formatting issue when packit prints installation instructions for using builds from a copr repo (by [@lachmanfrantisek](https://github.com/lachmanfrantisek), [#852](https://github.com/packit-service/packit/pulls/852)).\\n- You are able to set up builds when you push to a branch, we have set this up for master branch of packit, feel free to get inspired (by [@lachmanfrantisek](https://github.com/lachmanfrantisek), [#851](https://github.com/packit-service/packit/pulls/851)).\\n\\n### packit-as-a-service\\n\\n- We have run into multiple problems when you set up jobs for PRs and branch pushes - there were multiple fixes for this, packit-service wasn\'t able to work well with the fact that there are multiple jobs defined for the same job type - e.g. build.\\n\\n## Week 24 (June 8th - June 11th)\\n\\n### packit\\n\\n- [Tomas](https://github.com/TomasTomecek) re-implemented overriding of package config per job. This will enable overriding configuration for builds and releases once the corresponding changes are merged in Packit-as-a-Service. ([#858](https://github.com/packit-service/packit/pull/858), [#859](https://github.com/packit-service/packit/pull/859)).\\n\\n### packit-as-a-service\\n\\n- We are now parsing events from Koji about the progress of the builds and report them (by [Franta](https://github.com/lachmanfrantisek/), [#657](https://github.com/packit-service/packit-service/pull/657)).\\n- We are now able to listen to Gitlab hooks and parse the (comment & push) events (by [Shreyas](https://github.com/shreyaspapi), [#629](https://github.com/packit-service/packit-service/pull/629), [#671](https://github.com/packit-service/packit-service/pull/671)).\\n- Log pages have been restructured by linking SRPM build logs instead of including them (by [Hunor](https://github.com/csomh), [#641](https://github.com/packit-service/packit-service/pull/641)).\\n\\n## Week 25 (June 15th - June 19th)\\n\\n### packit\\n\\n- Packit logs more information for RebaseHelper errors (by [@csomh](https://github.com/csomh), [#865](https://github.com/packit-service/packit/pull/865)).\\n\\n### packit-as-a-service\\n\\n- Obtaining builds via packit [API endpoint](https://prod.packit.dev/api/copr-builds) is now significantly quicker (by [@IceWreck](https://github.com/IceWreck), [#674](https://github.com/packit-service/packit-service/pull/674)).\\n- We now have an API endpoint for obtaining results from testing farm (by [@IceWreck](https://github.com/IceWreck), [#678](https://github.com/packit-service/packit-service/pull/678)).\\n- We finished the implementation of the trigger to create bugs in Bugzilla. Therefore packit is now able to create bugzilla for accepted PR\'s in CentOS (by [@jpopelka](https://github.com/jpopelka), [#662](https://github.com/packit-service/packit-service/pull/662)).\\n\\n## Week 26 (June 22th - June 26th)\\n\\n### packit\\n\\n- packit now supports using custom repositories and packages when building in Copr and has options to preserve the project and to list it in on the Copr home page [@lachmanfrantisek](https://github.com/lachmanfrantisek), [#872](https://github.com/packit-service/packit/pull/872).\\n- Custom commands defined by user in packit config now are run in the shell, no more `bash -c` required (by [@TomasTomecek](https://github.com/TomasTomecek), [#871](https://github.com/packit-service/packit/pull/871)).\\n- packit now includes pull request ID in version of rpm. (by [@sturivny](https://github.com/sturivny) and [@TomasTomecek](https://github.com/TomasTomecek), [#870](https://github.com/packit-service/packit/pull/870)).\\n\\n### packit-as-a-service\\n\\n- We added support for copr builds in gitlab (by [@shreyaspapi](https://github.com/shreyaspapi), [#683](https://github.com/packit-service/packit-service/pull/683)).\\n- packit-service utilizes the new options introduced in packit (by [@lachmanfrantisek](https://github.com/lachmanfrantisek), [#694](https://github.com/packit-service/packit-service/pull/694)).\\n\\n## Week 27 (June 29th - July 3rd)\\n\\n### packit\\n\\n- We introduced a new command `packit validate-config` which validates the contect of a package configuration file in your project\\n (contributed by [@TomasJani](https://github.com/TomasJani), [#826](https://github.com/packit-service/packit/pull/826)).\\n\\n### packit-as-a-service\\n\\n- You are now able to override configuration for builds, releases and other jobs (by [@TomasTomecek](https://github.com/TomasTomecek), [#676](https://github.com/packit-service/packit-service/pull/676)).\\n Read more about this feature [here](/docs/configuration/#overriding-global-parameters).\\n\\n## Week 28 (July 6th - July 10th)\\n\\n### packit\\n\\n- Command `validate-config` works properly now and does not produce odd error messages, by [@TomasTomecek](https://github.com/TomasTomecek) and [@csomh](https://github.com/csomh), [#894](https://github.com/packit-service/packit/pull/894) and [#895](https://github.com/packit-service/packit/pull/895)\\n- You will now properly see git-describe metadata in the `%release` field in spec file when using `srpm` command, by [@TomasTomecek](https://github.com/TomasTomecek), [#894](https://github.com/packit-service/packit/pull/894)\\n- git-log is being used to get a list of commits between HEAD and latest tag to pick up commit messages and add those to %changelog, by [@TomasTomecek](https://github.com/TomasTomecek), [#889](https://github.com/packit-service/packit/pull/889)\\n- packit is now able to load metadata from commits of a source-git repo and utilize them when creating patch files, by [@lachmanfrantisek](https://github.com/lachmanfrantisek), [#875](https://github.com/packit-service/packit/pull/875)\\n\\n### packit-as-a-service\\n\\n- We now have a new API endpoint: [`/api/projects/`](https://prod.packit.dev/api/projects), by [@IceWreck](https://github.com/IceWreck), [#716](https://github.com/packit-service/packit-service/pull/716)\\n- Over the last few weeks, [@lbarcziova](https://github.com/lbarcziova) was very busy with refactoring how jobs and tasks are being executed in packit-service. This work is now complete which allows us to scale the deployment up while giving us better introspection in what\'s happening inside, by [@lbarcziova](https://github.com/lbarcziova), [#704](https://github.com/packit-service/packit-service/pull/704)\\n\\n## Week 29 (July 13th - July 17th)\\n\\n![Tatranska Lomnica](img/tatranska-lomnica-dhodovsk.jpg) Copyright (c) Dominika Hodovska. This work is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).\\n\\n## Week 30 (July 20th - July 24th)\\n\\n- [Anchit] added [a few new API endpoints] to Packit-as-a-Service to retrieve\\n project information. This is used in the Dashboard, to provide [an overview\\n of the projects] served by Packit.\\n\\n[anchit]: https://github.com/IceWreck\\n[a few new api endpoints]: https://github.com/packit-service/packit-service/pull/746\\n[an overview of the projects]: https://dashboard.packit.dev/projects\\n\\n## Week 31 (July 27th - July 31st)\\n\\n- [Jano] did a lot of work on our deployment. The installation of all our dependencies is much simpler now.\\n ([packit-service#747](https://github.com/packit-service/packit-service/pull/747),\\n [packit-service#753](https://github.com/packit-service/packit-service/pull/753),\\n [packit-service#756](https://github.com/packit-service/packit-service/pull/756),\\n [packit-service#757](https://github.com/packit-service/packit-service/pull/757),\\n [packit#919](https://github.com/packit-service/packit/pull/919)),\\n- Packit now puts a link to our documentation in a pull request status when a contributor is not allowed to build the PR, thanks to [Tom\xe1\u0161].\\n ([packit-service#758](https://github.com/packit-service/packit-service/pull/758))\\n\\n[jano]: https://github.com/sakalosj\\n[tom\xe1\u0161]: https://github.com/TomasTomecek\\n\\n## Week 32 (August 3rd - August 7th) and 33 (August 10th - August 13th)\\n\\n- We renamed our GitHub organisation to `packit`.\\n That user had been inactive for a long time and [Hunor]\'s request was successful.\\n- The Copr project settings are now changed only if needed. If we can\'t edit the settings,\\n we ask for the admin access to the Copr project and the service shows you a table with\\n the changes if you want to do the edit manually.\\n ([packit#921](https://github.com/packit/packit/pull/921),\\n [packit-service#764](https://github.com/packit/packit-service/pull/764))\\n- [Matej] fixed an old bug with the custom command for creating archives.\\n The archive was not found when building SRPM because of the incorrect processing\\n of the paths from the command output.\\n ([packit#923](https://github.com/packit/packit/pull/923))\\n\\n[hunor]: https://github.com/csomh\\n[matej]: https://github.com/mfocko\\n\\n## Week 34 (August 17th - August 20th)\\n\\n- [Tomas] tought packit how to merge related commits, which were previously created\\n by git-am applying of a multiple commit patch. ([packit#933](https://github.com/packit/packit/pull/933))\\n- [Anchit] added new `/api/srpm-builds/` endpoint.\\n- Service now requests \'builder\' permission for custom projects if needed.\\n- [Franta] fixed a problem with only one job executed executed for 2 build definitions for the same trigger.\\n\\n[anchit]: https://github.com/IceWreck\\n[franta]: https://github.com/lachmanfrantisek\\n[tomas]: https://github.com/TomasTomecek\\n\\n## Week 35 (August 24th - August 28th)\\n\\n- [Tomas] improved logging of the Packit actions\' output. ([packit#950](https://github.com/packit/packit/pull/950))\\n- [Anchit] fixed and enhanced the `/api/srpm-builds` endpoint.\\n ([packit-service#788](https://github.com/packit/packit-service/pull/788))\\n\\n[tomas]: https://github.com/TomasTomecek\\n[anchit]: https://github.com/IceWreck\\n\\n## Week 36 (August 31th - September 4th)\\n\\n- We store the submission time of SRPM builds now ([packit-service#795](https://github.com/packit/packit-service/pull/795) by [Anchit]).\\n- [Shreyas] improved implementation of the build status reporting ([packit-service#740](https://github.com/packit/packit-service/pull/740)).\\n- [Anchit] enhanced the `/koji-builds` endpoint to be more consistent with `/copr-builds` endpoint ([packit-service#791](https://github.com/packit/packit-service/pull/791)).\\n\\n[anchit]: https://github.com/IceWreck\\n[shreyas]: https://github.com/shreyaspapi\\n\\n## Week 37 (September 7th - September 11th)\\n\\n- Stage now uses [Tokman](https://github.com/packit/tokman) to get access tokens for GitHub, which should resolve race condition when running parallel jobs\\n (Tokman by [Hunor], ogr integration by [Matej]).\\n- [Franta] has addressed problems with Testing-Farm cluster with custom response on PRs that links to more information ([pinned info](https://github.com/packit/packit-service/issues/803), [packit-service#798](https://github.com/packit/packit-service/pull/798)).\\n\\n[hunor]: https://github.com/csomh\\n[matej]: https://github.com/mfocko\\n[franta]: https://github.com/lachmanfrantisek\\n\\n## Week 38 (September 14th - September 18th)\\n\\n- The combination of the source-git patches with existing patches now works well\\n ([packit#963](https://github.com/packit/packit/pull/963)).\\n- Service now mostly supports also GitLab as you can see\\n [here](https://gitlab.com/packit-service/hello-world/-/merge_requests/10)\\n or [here](https://gitlab.com/packit-service/src/drpm/-/merge_requests/2).\\n A lot of small issues were fixed in the last week\\n ([packit-service#806](https://github.com/packit/packit-service/pull/806),\\n [packit-service#812](https://github.com/packit/packit-service/pull/812),\\n [packit-service#814](https://github.com/packit/packit-service/pull/814),\\n [packit-service#815](https://github.com/packit/packit-service/pull/815),\\n [packit-service#816](https://github.com/packit/packit-service/pull/816)\\n ).\\n- Created Copr projects are now prefixed with the hostname\\n for non-GitHub services and also support multipart namespaces\\n ([packit-service#819](https://github.com/packit/packit-service/pull/819)).\\n- [Laura] fixed two testing-farm related issues\\n ([packit-service#808](https://github.com/packit/packit-service/pull/808),\\n [packit-service#809](https://github.com/packit/packit-service/pull/809)).\\n You can now use `test` job also on Pagure and GitLab thanks to that.\\n\\n[laura]: https://github.com/lbarcziova\\n\\n## Week 39 (September 21st - September 25th)\\n\\n- Packit-service can be configured to work with private namespaces. This is plumbing work which we need right now for CentOS Stream. We are not planning to enable this for GitHub - packit-service will still work only for public repositories, private ones are ignored. [packit-service#831](https://github.com/packit/packit-service/pull/831)\\n- If git tag contains more information than just version (e.g. `pkg_name-v1.2.3`), it is possible to use upstream_tag_template to extract version from the tag, which will be used in a subsequent task. [doc](https://packit.dev/docs/configuration/#upstream_tag_template) [packit#959](https://github.com/packit/packit/pull/959)\\n- Added support for globbing pattern in upstream_ref. [doc](https://packit.dev/docs/configuration/#upstream_ref) [packit#960](https://github.com/packit/packit/pull/960)\\n- Packit `--remote` is global option now and available for all commands. Because of this `sync-from-downstream --remote` was renamed to `--remote-to-push`. Remote can now be specified in the user\'s config (via upstream_git_remote parameter). [packit#977](https://github.com/packit/packit/pull/977)\\n\\nFollowing bugs were fixed:\\n\\n- Packit dropping leading zeros in version. [packit#814](https://github.com/packit/packit/pull/814)\\n- Packit CLI issue caused by picking incorrect copr project name. [packit#971](https://github.com/packit/packit/pull/971)\\n\\n## Week 40 (September 28th - October 2nd)\\n\\n- Packit-service is now explicitly checking if requested copr-build targets exist and if not, the user is informed about it. [packit-service#835](https://github.com/packit/packit-service/pull/835)\\n- We have improved the way how packit updates `%setup` line in a spec file - you are now able to set content of `-n` option via archive_root_dir_template config option, it defaults to `{upstream-pkg-name}`. [doc](https://github.com/packit/packit.dev/pull/167) [packit#834](https://github.com/packit/packit-service/pull/834)\\n- Packit is able to generate a patch file with format-patch without leading a/ and b/ in the patch diff. Required for patches in dist-git which are applied with -p0.\\n- Contribution guidelines were updated, now we have one shared [link](https://github.com/packit/contributing).\\n\\n## Week 41 (October 5th - October 9th)\\n\\n- [franta] made triggering of jobs more reliable and in correct situations ([packit-service#837](https://github.com/packit/packit-service/pull/837))\\n\\n[franta]: https://github.com/lachmanfrantisek\\n\\n## Week 42 (October 12th - October 16th)\\n\\nNothing significant happened during this week. The only change was that Hunor\\n[resolved](https://github.com/packit/packit-service/pull/850) a problem when sentry client library ([the alert service](https://sentry.io/) we use) caused errors in stage\\nenvironment and hence the problem didn\'t make it to production.\\n\\nWe have also released a new version of packit: [0.18](https://github.com/packit/packit/releases/tag/0.18.0).\\n\\n## Week 43 (October 19th - October 24th)\\n\\nWe finally had a week with plenty updates!\\n\\n- We found out the hard way that one cannot build in [Fedora koji](https://koji.fedoraproject.org/koji/) directly\\n from SRPM unless it\'s a scratch build. The discussion with Fedora rel-eng is\\n happening at [pagure.io/releng/issue/9801](https://pagure.io/releng/issue/9801) and in the meantime, all koji builds\\n will be halted on our side since we know they cannot succeed. Do `scratch: true` for koji builds before this gets resolved.\\n- Packit creates a symlink for a generated archive at the root of the project.\\n So far it only did it from a relative path and now absolute paths are\\n supported as well. This is useful when your specfile is placed in a\\n subdirectory and rpmbuild can\'t find the archive.\\n- There is a new usability improvement to proposing a new downstream update. If\\n the PR is already created, packit won\'t create it again. You will no longer\\n receive duplicate downstream PRs in dist-git.\\n- When doing a new downstream update, packit doesn\'t sync %changelog since\\n those are usually out of sync between upstream and downstream. Packit creates\\n a new entry for the new release in the downstream. There is a new packit.yaml\\n configuration option `sync_changelog` which bypasses this behaviour and\\n copies the %changelog from upstream and overwrites the downstream changelog.\\n Please use this option only when your changelogs are in sync. [Documentation](https://packit.dev/docs/configuration/#sync_changelog)\\n\\n## Week 44 (October 26th - October 30th)\\n\\nNo user-facing changes in packit(-service) this week.\\n\\n## Week 45 (November 2nd - November 6th)\\n\\n- [Laura] implemented an option for packit to copy description from a release into\\n a changelog when running `propose-update`. Also the default message has been changed\\n to the list of commit messages from last release. ([packit#1004](https://github.com/packit/packit/pull/1004))\\n- [Jano] improved handling of build targets in packit. ([packit#986](https://github.com/packit/packit/pull/986))\\n- [Tomas] improved an experience of a contributor to source-git in case the contributor\\n doesn\'t follow git-am patches style that is used. ([packit#1000](https://github.com/packit/packit/pull/1000))\\n\\n## Week 46 (November 9th - November 13th)\\n\\n- [Tomas] improved the UX of logging in the CLI. ([packit#1014](https://github.com/packit/packit/pull/1014))\\n- [Jano] improved logic of acquiring current version in the CLI. ([packit#1013](https://github.com/packit/packit/pull/1013))\\n- We appreciate getting feedback from our users, if you could find some time to\\n do so, there is an [open issue](https://github.com/packit/packit-service/issues/859)\\n for it.\\n\\n## Week 47 (November 16th - November 20th)\\n\\n- ~~[Matej] fixed [an\\n issue](https://github.com/packit/packit-service/issues/774) with Packit CLI,\\n enabling recursive search for spec-files\\n ([packit#1005](https://github.com/packit/packit/pull/1005)).~~ It turned\\n out, this change made it very easy to [deplete GitHub API quota], so it was\\n reverted.\\n- [Laura] made Copr builds to be part of the default jobs. This will cause\\n build jobs to explicitly run, and display their own result flags in PRs,\\n next to the test results. We hope this to be a more friendly behaviour for\\n our new users ([packit#1024](https://github.com/packit/packit/pull/1024)).\\n\\n## Week 48 (November 23rd - November 27th)\\n\\n- [Laura] [fixed a bug], where Packit Service failed to trigger Copr builds\\n before triggering the tests in case triggering Copr builds was configured\\n for a different event.\\n- Thanks to [Matej], Packit Service will now [comment on commits] in case Copr\\n builds fail after a merge, in order to indicate the reason for the failure.\\n- Packit Service will soon stop commenting on PRs after the first successful\\n build. The installation instructions from these comments [were moved to the\\n result page] by [Laura], while [Matej] [added a warning] to inform users\\n about this upcoming change.\\n\\n[laura]: https://github.com/lbarcziova\\n[jano]: https://github.com/sakalosj\\n[tomas]: https://github.com/TomasTomecek\\n[matej]: https://github.com/mfocko\\n[deplete github api quota]: https://github.com/packit/packit-service/issues/876\\n[fixed a bug]: https://github.com/packit/packit-service/pull/888\\n[comment on commits]: https://github.com/packit/packit-service/pull/854\\n[added a warning]: https://github.com/packit/packit-service/pull/891\\n[were moved to the result page]: https://github.com/packit/packit-service/pull/877\\n\\n## Week 49 (November 30th - December 4th)\\n\\n- [Jano] fixed a bug in `sync_release` method of Packit API. ([packit#1043](https://github.com/packit/packit/pull/1043))\\n- [Jiri Konecny] contributed a fix for how Packit creates COPR urls. ([packit#1039](https://github.com/packit/packit/pull/1039))\\n- [Laura] updated instructions how to retrigger a job. ([packit-service#892](https://github.com/packit/packit-service/pull/892))\\n\\n[jano]: https://github.com/sakalosj\\n[jiri konecny]: https://github.com/jkonecny12\\n[laura]: https://github.com/lbarcziova\\n\\n## Week 50 (December 7th - December 11th)\\n\\n- [Tomas] implemented the `--upstream-url` option of `packit init` command. When specified,\\n `init` also sets up a source-git repository next to creating a configuration file.\\n\\n[tomas]: https://github.com/TomasTomecek\\n\\n## Week 51 (December 14th - December 18th)\\n\\n- Congratulations comments are now disabled by default, unless enabled in config.\\n- A bug, which prevented npm to be run during SRPM build, has been fixed. ([sandcastle#86](https://github.com/packit/sandcastle/pull/86))"},{"id":"/2019","metadata":{"permalink":"/posts/weekly/2019","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/2019.md","source":"@site/weekly/2019.md","title":"2019","description":"Let\'s see what happened in Packit in 2019.","date":"2021-01-07T00:00:00.000Z","formattedDate":"January 7, 2021","tags":[{"label":"2019","permalink":"/posts/weekly/tags/2019"}],"readingTime":15.625,"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"2019","date":"2021-01-07T00:00:00.000Z","tags":["2019"]},"prevItem":{"title":"2020","permalink":"/posts/weekly/2020"}},"content":"Let\'s see what happened in Packit in 2019.\\n\\n\x3c!--truncate--\x3e\\n\\n# Initial version 0.1.0 of packit is out! (2019-03-08)\\n\\nWe would like to announce general availability of the initial version of\\npackit, titled \'0.1.0\'.\\n\\nSince this is our first release, we would like to ask you to be patient if you\\nencounter any issues. We work hard on packit\'s usability. If you feel like that\\npackit is doing something weird or if anything is unclear, don\'t hesitate and\\nreach out to us by creating [a new GitHub\\nissue](https://github.com/packit-service/packit/issues/new).\\n\\nThe initial release contains two commands:\\n\\n- `packit propose-update` \u2014 Opens a pull request in dist-git for the latest\\n upstream release of a selected repository.\\n- `packit watch-releases` \u2014 Watches events for all the upstream releases and\\n performs `propose-update` for those who use packit.\\n\\n## Installation\\n\\n```\\n$ dnf install --enablerepo=updates-testing packit\\n```\\n\\nOr\\n\\n```\\n$ pip3 install --user packitos\\n```\\n\\nOr (if you\'re brave)\\n\\n```\\n$ pip3 install --user git+https://github.com/packit-service/packit\\n```\\n\\n## Requirements\\n\\nPresent features have strict requirements on the upstream projects:\\n\\n- You need to have a packit config file present in the upstream repo.\\n\\n- You need to have spec file present in the upstream repo.\\n\\nThis workflow is suitable for people who are both upstream and downstream\\nmaintainers of the particular project. If you don\'t fit into that bucket, then\\npackit might not be ready for you, yet. Please wait till we land more\\n[source-git](/source-git/)\\nrelated functionality into packit.\\n\\n## `propose-update`\\n\\nI\'m going to demonstrate this functionality on\\n[ogr](https://github.com/packit-service/ogr.git), our library for git forges,\\nwhich powers packit.\\n\\nIt was recently approved for Fedora, so we can use packit to bring the initial\\nversion of ogr into Fedora Rawhide, 30 and 29.\\n\\n### Do we have everything?\\n\\nLet\'s see [guide](/docs/cli/propose-downstream) for\\nthe `propose-update` command on what we need:\\n\\n#### 0. The upstream repository with a valid upstream release.\\n\\n```\\n$ git remote -v\\norigin git@github.com:TomasTomecek/ogr.git (fetch)\\norigin git@github.com:TomasTomecek/ogr.git (push)\\nupstream https://github.com/packit-service/ogr.git (fetch)\\nupstream https://github.com/packit-service/ogr.git (push)\\n```\\n\\nYup.\\n\\n```\\n$ git tag --list\\n0.0.1\\n0.0.2\\n0.0.3\\n\\n$ git checkout 0.0.3\\nNote: checking out \'0.0.3\'.\\n```\\n\\nAnd the tag name is matching the version in a spec file:\\n\\n```\\n$ grep Version python-ogr.spec\\nVersion: 0.0.3\\n```\\n\\n#### 1. Packit config file placed in the upstream repository.\\n\\n```\\n$ ll .packit.yaml\\n-rw-rw-r--. 1 tt tt 177 Mar 1 17:44 .packit.yaml\\n```\\n\\nCheck.\\n\\n#### 2. Spec file present in the upstream repository.\\n\\n```\\n$ ll python-ogr.spec\\n-rw-rw-r--. 1 tt tt 1.3K Mar 1 17:43 python-ogr.spec\\n```\\n\\n:+1:\\n\\n#### 3. Pagure API tokens for Fedora Dist-git.\\n\\n```\\n$ env | grep TOKEN\\nPAGURE_USER_TOKEN=will\\nPAGURE_FORK_TOKEN=not\\nGITHUB_TOKEN=share, sorry\\n```\\n\\n#### 4. Valid Fedora Kerberos ticket.\\n\\n```\\n$ kinit ttomecek@FEDORAPROJECT.ORG\\nPassword for ttomecek@FEDORAPROJECT.ORG:\\n\\n$ klist\\nTicket cache: KEYRING:persistent:1024:krb_ccache_g0t1Ty3Ah\\nDefault principal: ttomecek@FEDORAPROJECT.ORG\\n\\nValid starting Expires Service principal\\n03/01/2019 18:12:25 03/02/2019 18:12:19 krbtgt/FEDORAPROJECT.ORG@FEDORAPROJECT.ORG\\n renew until 03/08/2019 18:12:19\\n```\\n\\nWe\'re all set!\\n\\n### Time to shine\\n\\nWe are still in the \\"ogr\\" upstream git repository.\\n\\n```\\n$ packit propose-update\\nINFO: Running \'anitya\' versioneer\\nERROR: Failed to determine latest upstream version!\\nCheck that the package exists on https://release-monitoring.org.\\nusing \\"master\\" dist-git branch\\nsyncing ./python-ogr.spec\\nINFO: Downloading file from URL https://files.pythonhosted.org/packages/source/o/ogr/ogr-0.0.3.tar.gz\\n100%[=============================>] 17.95K eta 00:00:00\\ndownloaded archive: /tmp/tmp2e65b0xt/ogr-0.0.3.tar.gz\\nuploading to the lookaside cache\\nPR created: https://src.fedoraproject.org/rpms/python-ogr/pull-request/1\\n```\\n\\nMind-blowing, isn\'t it? Now we have latest python-ogr in Fedora Rawhide by\\nrunning only a single command.\\n\\nI have also [added](https://release-monitoring.org/project/18832/) ogr into release-monitoring as packit suggests.\\n\\nOnce we are okay with the changes, we have to [merge the pull\\nrequest](https://src.fedoraproject.org/rpms/python-ogr/pull-request/1). That\'s\\nour responsibility, as maintainers.\\n\\n### Building in koji\\n\\nTime to build the package (packit doesn\'t support building in koji, yet)\\n\\n```\\n$ fedpkg clone python-ogr\\nCloning into \'python-ogr\'...\\nremote: Counting objects: 8, done.\\nremote: Compressing objects: 100% (5/5), done.\\nremote: Total 8 (delta 0), reused 5 (delta 0)\\nReceiving objects: 100% (8/8), done.\\n\\n$ cd python-ogr\\n\\n$ git log\\ncommit c298df5e540ba1d010366e102c1c75d4f5b0b0cc (HEAD -> master, origin/master, origin/HEAD)\\nAuthor: Tomas Tomecek \\nDate: Fri Mar 1 18:15:00 2019 +0100\\n\\n [packit] 0.0.3 upstream release\\n\\n more info\\n\\n Signed-off-by: Tomas Tomecek \\n\\ncommit 7d5ab1471ca0ee2a6c0254410b83beaa83b80f0b\\nAuthor: Gwyn Ciesla \\nDate: Fri Mar 1 15:18:34 2019 +0000\\n\\n Added the README\\n```\\n\\nYup, that\'s our commit. `more info` was added there by accident, this is\\nalready fixed in packit.\\n\\n```\\n$ fedpkg build\\nBuilding python-ogr-0.0.3-1.fc31 for rawhide\\nCreated task: 33125435\\nTask info: https://koji.fedoraproject.org/koji/taskinfo?taskID=33125435\\nWatching tasks (this may be safely interrupted)...\\n33125435 build (rawhide, /rpms/python-ogr.git:c298df5e540ba1d010366e102c1c75d4f5b0b0cc): free\\n33125435 build (rawhide, /rpms/python-ogr.git:c298df5e540ba1d010366e102c1c75d4f5b0b0cc): free -> open (buildvm-14.phx2.fedoraproject.org)\\n 33125451 buildArch (python-ogr-0.0.3-1.fc31.src.rpm, noarch): open (buildvm-14.phx2.fedoraproject.org)\\n 33125436 buildSRPMFromSCM (/rpms/python-ogr.git:c298df5e540ba1d010366e102c1c75d4f5b0b0cc): closed\\n33125435 build (rawhide, /rpms/python-ogr.git:c298df5e540ba1d010366e102c1c75d4f5b0b0cc): open (buildvm-14.phx2.fedoraproject.org) -> closed\\n 0 free 1 open 2 done 0 failed\\n 33125464 tagBuild (noarch): closed\\n 33125451 buildArch (python-ogr-0.0.3-1.fc31.src.rpm, noarch): open (buildvm-14.phx2.fedoraproject.org) -> closed\\n 0 free 0 open 4 done 0 failed\\n\\n33125435 build (rawhide, /rpms/python-ogr.git:c298df5e540ba1d010366e102c1c75d4f5b0b0cc) completed successfully\\n```\\n\\nThat was rough, can\'t wait to do this with packit.\\n\\nLet\'s do Fedora 30 now:\\n\\n```\\n$ packit propose-update --dist-git-branch f30\\nINFO: Running \'anitya\' versioneer\\nusing \\"f30\\" dist-git branch\\nsyncing ./python-ogr.spec\\nINFO: Downloading file from URL https://files.pythonhosted.org/packages/source/o/ogr/ogr-0.0.3.tar.gz\\n100%[=============================>] 17.95K eta 00:00:00\\ndownloaded archive: /tmp/tmpl5xxq22x/ogr-0.0.3.tar.gz\\nuploading to the lookaside cache\\nPR created: https://src.fedoraproject.org/rpms/python-ogr/pull-request/3\\n```\\n\\nAnd so on...\\n\\n## Conclusion\\n\\nAs you can see, packit is useful for us right away.\\n\\nWe\'ll be delighted if you try it out and let us know what you think.\\n\\n# Packit 0.2.0 is here! (2019-03-19)\\n\\nOur sprint nears an end which means we have released [a new version of packit -\\n0.2.0](https://github.com/packit-service/packit/releases/tag/0.2.0)! You can\\nexpect a new release after every sprint (i.e. every 2 weeks).\\n\\nThe 0.2.0 version has a bunch of new features and improvements: you can find\\na complete list [in the\\nchangelog](https://github.com/packit-service/packit/blob/master/CHANGELOG.md#020).\\nWe also have a [detailed\\ndocumentation](https://github.com/packit-service/packit#workflows-covered-by-packit)\\nfor all the workflows packit covers.\\n\\nLet\'s get through what\'s new:\\n\\n1. We have decided to rename two keys in our config file so they are more\\n descriptive. Old names still work but they are deprecated:\\n - `package_name` \u2192 `downstream_package_name`\\n - `upstream_name` \u2192 `upstream_project_name`\\n2. You don\'t need to touch dist-git at all when getting your new upstream\\n release into Fedora, you can stay in your upstream repository and just fire\\n off a bunch of packit calls:\\n - `packit propose-update` to create a pull request in Fedora dist-git with\\n the selected upstream release\\n - `packit build` to build the new upstream release once the pull request is\\n merged\\n - and finally, `packit create-update` creates a new bodhi update (if you\\n chose a stable Fedora release)\\n3. Packit now has a `srpm` command which creates an SRPM out of the local\\n content of your upstream repository.\\n4. You can now use packit to sync files from your dist-git repo back into\\n upstream (mainly to keep spec files in sync). `sync-from-downstream` is the\\n command.\\n5. Command `propose-update` received numerous improvements:\\n - You can pick upstream version to use.\\n - Packit will NOT check out the git ref with the upstream release if you\\n specify `--local-content`\\n - It\'s possible to force packit to execute `fedpkg new-sources` using\\n `--force-new-sources` and bypass the caching mechanism.\\n\\n## Installation\\n\\nPlease make sure you are installing `0.2.0`:\\n\\n```\\n$ dnf install --enablerepo=updates-testing packit\\n```\\n\\nOr\\n\\n```\\n$ pip3 install --user packitos\\n```\\n\\nYou can also install packit from master branch, if you are brave enough:\\n\\n```\\n$ pip3 install --user git+https://github.com/packit-service/packit\\n```\\n\\n## How are we using packit?\\n\\nI\'d like to show you how we used packit to bring a new upstream\\nrelease of ogr into Fedora, a library which packit is using.\\n\\nOnce we have performed an upstream release of ogr, we can propose an update in\\ndist-git:\\n\\n```\\n$ git clone https://github.com/packit-service/ogr && cd ogr/\\n\\n$ packit propose-update\\nINFO: Running \'anitya\' versioneer\\nVersion in upstream registries is \'0.0.3\'.\\nVersion in spec file is \'0.0.3\'.\\nPicking version of the latest release from the upstream registry over spec file.\\nChecking out upstream version 0.0.3\\nUsing \'master\' dist-git branch\\nCloning repo: https://src.fedoraproject.org/rpms/python-ogr.git -> /tmp/tmpb9xlvdhj\\nSyncing /home/tt/g/user-cont/ogr/python-ogr.spec\\nArchive ogr-0.0.3.tar.gz found in lookaside cache (skipping upload).\\nERROR Cmd(\'git\') failed due to: exit code(1)\\n cmdline: git commit -s -m [packit] 0.0.3 upstream release -m Upstream tag: 0.0.3\\nUpstream commit: 059d21080a7849acff4626b6e0ec61830d537ac4\\n\\n stdout: \'On branch 0.0.3-master-update\\nnothing to commit, working tree clean\'\\n```\\n\\nWhoops, it seems that I have messed up, I forgot to bump the spec file in the\\nupstream repo when doing the release. I will bump it locally and utilize\\n`--local-content` argument:\\n\\n```\\n$ rpmdev-bumpspec -n 0.1.0 -c \'New upstream release: 0.1.0\' *.spec\\n\\n$ packit propose-update --local-content\\nINFO: Running \'anitya\' versioneer\\nVersion in upstream registries is \'0.0.3\'.\\nVersion in spec file is \'0.1.0\'.\\nPicking version of the latest release from the upstream registry over spec file.\\nUsing \'master\' dist-git branch\\nCloning repo: https://src.fedoraproject.org/rpms/python-ogr.git -> /tmp/tmpd9j4se27\\nSyncing /home/tt/g/user-cont/ogr/python-ogr.spec\\nArchive ogr-0.1.0.tar.gz found in lookaside cache (skipping upload).\\nINFO: Downloading file from URL https://files.pythonhosted.org/packages/source/o/ogr/ogr-0.1.0.tar.gz\\n100%[=============================>] 20.25K eta 00:00:00\\nDownloaded archive: \'/tmp/tmpd9j4se27/ogr-0.1.0.tar.gz\'\\nAbout to upload to lookaside cache\\nwon\'t be doing kinit, no credentials provided\\nPR created: https://src.fedoraproject.org/rpms/python-ogr/pull-request/6\\n```\\n\\nOnce the scratch build is done and tests passed we merged and built it:\\n\\n```\\n$ packit build\\nUsing \'master\' dist-git branch\\nCloning repo: https://src.fedoraproject.org/rpms/python-ogr.git -> /tmp/tmprp3cmdjy\\nBuilding python-ogr-0.1.0-1.fc31 for rawhide\\nCreated task: 33616980\\nTask info: https://koji.fedoraproject.org/koji/taskinfo?taskID=33616980\\n```\\n\\nWe have done the same for F30 and F29.\\n\\nThe previous commands were run in the directory of the upstream repository. Packit also accepts path to your upstream clone, or even URL. So let\'s create a bodhi update for python-ogr by specifying the upstream repo URL:\\n\\n```\\n$ cd $HOME\\n\\n$ packit create-update --dist-git-branch f29 https://github.com/packit-service/ogr\\nCloning repo: https://github.com/packit-service/ogr -> /tmp/tmpdkdadmn_\\nKoji builds for package python-ogr and koji tag f29-updates-candidate:\\n - python-ogr-0.1.0-1.fc29\\nCloning repo: https://src.fedoraproject.org/rpms/python-ogr.git -> /tmp/tmpn1809ec9\\nBodhi update FEDORA-2019-78948e62d2:\\n- https://bodhi.fedoraproject.org/updates/FEDORA-2019-78948e62d2\\n- stable_karma: 3\\n- unstable_karma: -3\\n- notes:\\nNew upstream release: 0.1.0\\n```\\n\\nAnd that\'s it, no need to access dist-git any more.\\n\\nPlease give packit a try and let us know what you think.\\n\\n# Packit 0.3.0 (2019-04-11)\\n\\nIn the previous post we promised to\\nprovide a new release every 2 weeks and we are already breaking this promise as\\nit\'s been 3 weeks since then. We decided to wait with the release to merge\\nseveral pull requests related to source-git support.\\n\\nNow the good news. You can find a complete list of new features and\\nimprovements of version\\n[0.3.0](https://github.com/packit-service/packit/releases/tag/0.3.0) in the\\n[changelog](https://github.com/packit-service/packit/blob/master/CHANGELOG.md#030).\\n\\n## Features\\n\\n- You can now specify your own hooks or actions to replace default packit\\n behaviour. (More information can be found [in the\\n documentation](/docs/configuration/actions/)).\\n- Packit supports pagure.io-based upstream projects.\\n- Commands `propose-update` and `sync-from-downstream` supports [copying\\n directories](/docs/configuration/#minimal-sample-config).\\n- A new command `status`! It displays useful upstream/downstream info.\\n- Packit now supports [Source-git](/source-git/). The\\n functionality is not available, yet - we will add a CLI interface for it in\\n the next release.\\n- You can now have a config file for packit in your home directory(`~/.config/packit.yaml`).\\n- Packit installed from an RPM now has manpages.\\n\\n### `packit status` example\\n\\n```bash\\n$ packit status\\nCloning repo: https://src.fedoraproject.org/rpms/packit.git -> /tmp/tmp84we_6n8\\nDownstream PRs: No open PRs.\\nf29: 0.2.0\\nf30: 0.2.0\\nmaster: 0.2.0\\n```\\n\\n# Packit 0.4.0 & 0.4.1 (2019-05-18)\\n\\nIt\'s been over a month since we released packit \\"0.3.0\\". Here comes packit 0.4.0 (and patch release 0.4.1) and as always they bring a lot of new features and improvements.\\n\\nYou can find a complete list in the\\n[changelog](https://github.com/packit-service/packit/blob/master/CHANGELOG.md#040).\\n\\n## Packit as a service\\n\\n- We have Packit as a service running in OpenShift and also a GitHub App, which uses it.\\n Unfortunately it\'s still not in the [Marketplace](https://github.com/marketplace),\\n so [we](https://github.com/packit-service) have been the only one using it so far.\\n The service/app submits builds in [copr](https://copr.fedorainfracloud.org/coprs/packit/) and\\n once they\'re done it adds a GitHub status and comment with instructions how to install the builds.\\n The service is now configurable via [jobs](/docs/configuration/#packit-service-jobs) defined\\n in configuration file.\\n- Packit is now able to check GPG signatures of the upstream commits against configured fingerprints.\\n\\n## CLI\\n\\n- `srpm` command now works also with [Source-git](/source-git/).\\n- `status` command now access remote APIs asynchronously in parallel, which should speed up\\n the execution.\\n- CLI has new `--dry-run` option to not perform any remote changes (pull requests or comments).\\n- Fedmsg parsing has been unified into a single `listen-to-fedmsg` command.\\n\\n# Packit 0.4.2 (2019-06-26)\\n\\nAnother relase after a month since [0.4.1](https://packit.dev/posts/packit-041/), this time mostly with bug fixes.\\n\\nWe\'ve been busy polishing our [GitHub App](https://packit.dev/packit-as-a-service/) recently, therefore we had no resources for new features.\\n\\nSee [CHANGELOG](https://github.com/packit-service/packit/blob/master/CHANGELOG.md#042) for more details.\\n\\n# September 2020\\n\\n## Week 36 (August 31th - September 4th)\\n\\n- We store the submission time of SRPM builds now ([packit-service#795](https://github.com/packit/packit-service/pull/795) by [Anchit]).\\n- [Shreyas] improved implementation of the build status reporting ([packit-service#740](https://github.com/packit/packit-service/pull/740)).\\n- [Anchit] enhanced the `/koji-builds` endpoint to be more consistent with `/copr-builds` endpoint ([packit-service#791](https://github.com/packit/packit-service/pull/791)).\\n\\n[anchit]: https://github.com/IceWreck\\n[shreyas]: https://github.com/shreyaspapi\\n\\n## Week 37 (September 7th - September 11th)\\n\\n- Stage now uses [Tokman](https://github.com/packit/tokman) to get access tokens for GitHub, which should resolve race condition when running parallel jobs\\n (Tokman by [Hunor], ogr integration by [Matej]).\\n- [Franta] has addressed problems with Testing-Farm cluster with custom response on PRs that links to more information ([pinned info](https://github.com/packit/packit-service/issues/803), [packit-service#798](https://github.com/packit/packit-service/pull/798)).\\n\\n[hunor]: https://github.com/csomh\\n[matej]: https://github.com/mfocko\\n[franta]: https://github.com/lachmanfrantisek\\n\\n## Week 38 (September 14th - September 18th)\\n\\n- The combination of the source-git patches with existing patches now works well\\n ([packit#963](https://github.com/packit/packit/pull/963)).\\n- Service now mostly supports also GitLab as you can see\\n [here](https://gitlab.com/packit-service/hello-world/-/merge_requests/10)\\n or [here](https://gitlab.com/packit-service/src/drpm/-/merge_requests/2).\\n A lot of small issues were fixed in the last week\\n ([packit-service#806](https://github.com/packit/packit-service/pull/806),\\n [packit-service#812](https://github.com/packit/packit-service/pull/812),\\n [packit-service#814](https://github.com/packit/packit-service/pull/814),\\n [packit-service#815](https://github.com/packit/packit-service/pull/815),\\n [packit-service#816](https://github.com/packit/packit-service/pull/816)\\n ).\\n- Created Copr projects are now prefixed with the hostname\\n for non-GitHub services and also support multipart namespaces\\n ([packit-service#819](https://github.com/packit/packit-service/pull/819)).\\n- [Laura] fixed two testing-farm related issues\\n ([packit-service#808](https://github.com/packit/packit-service/pull/808),\\n [packit-service#809](https://github.com/packit/packit-service/pull/809)).\\n You can now use `test` job also on Pagure and GitLab thanks to that.\\n\\n[laura]: https://github.com/lbarcziova\\n\\n## Week 39 (September 21st - September 25th)\\n\\n- Packit-service can be configured to work with private namespaces. This is plumbing work which we need right now for CentOS Stream. We are not planning to enable this for GitHub - packit-service will still work only for public repositories, private ones are ignored. [packit-service#831](https://github.com/packit/packit-service/pull/831)\\n- If git tag contains more information than just version (e.g. `pkg_name-v1.2.3`), it is possible to use upstream_tag_template to extract version from the tag, which will be used in a subsequent task. [doc](https://packit.dev/docs/configuration/#upstream_tag_template) [packit#959](https://github.com/packit/packit/pull/959)\\n- Added support for globbing pattern in upstream_ref. [doc](https://packit.dev/docs/configuration/#upstream_ref) [packit#960](https://github.com/packit/packit/pull/960)\\n- Packit `--remote` is global option now and available for all commands. Because of this `sync-from-downstream --remote` was renamed to `--remote-to-push`. Remote can now be specified in the user\'s config (via upstream_git_remote parameter). [packit#977](https://github.com/packit/packit/pull/977)\\n\\nFollowing bugs were fixed:\\n\\n- Packit dropping leading zeros in version. [packit#814](https://github.com/packit/packit/pull/814)\\n- Packit CLI issue caused by picking incorrect copr project name. [packit#971](https://github.com/packit/packit/pull/971)\\n\\n## Week 40 (September 28th - October 2nd)\\n\\n- Packit-service is now explicitly checking if requested copr-build targets exist and if not, the user is informed about it. [packit-service#835](https://github.com/packit/packit-service/pull/835)\\n- We have improved the way how packit updates `%setup` line in a spec file - you are now able to set content of `-n` option via archive_root_dir_template config option, it defaults to `{upstream-pkg-name}`. [doc](https://github.com/packit/packit.dev/pull/167) [packit#834](https://github.com/packit/packit-service/pull/834)\\n- Packit is able to generate a patch file with format-patch without leading a/ and b/ in the patch diff. Required for patches in dist-git which are applied with -p0.\\n- Contribution guidelines were updated, now we have one shared [link](https://github.com/packit/contributing).\\n\\n# Week 44-48 (November) 2019\\n\\nWith this blog post we\'d like to continue with the idea of openly communicating changes in Packit.\\nSince most of the developers use Packit as the [GitHub App](https://packit.dev/packit-as-a-service) (which uses code from [this repository - Packit Service](https://github.com/packit-service/packit-service)), this blog will be about changes in all the parts, i.e. the GitHub App, the Packit Service and Packit itself.\\n\\n## Continuous Deployment (CD)\\n\\nAt the moment the workflow is that one of us manually triggers production container image build at the end of a week.\\nThis image is then automatically deployed into our production instance of the service over a weekend (Sun/Mon night) so that everyone can start a week with all the amazing stuff we added the previous week.\\nIn case an issue makes it through our staging instance into production uncaught, we can easily rollback on Monday.\\nThe same person also writes down what\'s changed in Packit (service/app) since previous deployment.\\n\\n## Changes in production (since the end of November)\\n\\nPrevious post is almost half a year old so we won\'t list all the changes since then, but only since last deployment, i.e. since end of December.\\n\\n### Packit\\n\\nPrevious deployment was running [packit-0.7.1](https://pypi.org/project/packitos/0.7.1/).\\nWe haven\'t released a newer version since then, but in the service we install Packit from the Git repository (we have a separate `stable` git branch for our production deployment).\\nFrom the most visible changes, Packit now:\\n\\n- better handles Create-archive action\\n- is able to work in a repo with detached head\\n- logs output from subprocesses in realtime\\n- syncs config file and spec file by default in Propose-update action\\n- hadles patches with undecodable chars\\n\\n### Packit Service\\n\\nNow:\\n\\n- better reports Copr builds\\n - uses separate commit status for srpm build and every chroot\\n - clears test farm commit statuses when new build is triggered\\n - better handles failed Copr builds\\n- gracefully handles no config file in the repo\\n- better handles when no (copr build) targets are specified in config file\\n- better checks whitelist of users\\n- does not create duplicate tickets in our [notification repo](https://github.com/packit-service/notifications) when a new user install the app\\n\\nChanges not visible to end users:\\n\\n- using [Requre](https://github.com/packit-service/requre) for integration/E2E tests\\n- Fedora messaging consumer part of the service has been improved and moved to separate [repo/image](https://github.com/packit-service/packit-service-fedmsg)\\n- using FAS instead of Fedora Badges for checking whether a user is Fedora packager\\n- many improved logs\\n- many bugs squashed\\n- lot\'s of code refactored\\n\\n# December 2019\\n\\n## Week 49\\n\\n### ogr & packit\\n\\n- ogr-0.9.0 has been released greatly restructured. ([#291](https://github.com/packit-service/ogr/pull/291/files))\\n- `packit status` (CLI) now shows also latest Copr builds. ([#579](https://github.com/packit-service/packit/pull/579))\\n- Target aliases (currently `fedora-development`, `fedora-stable`, `fedora-all`) can now be used in the packit config file. ([#619](https://github.com/packit-service/packit/pull/619))\\n- When doing a new update in Fedora dist-git, packit now by default creates a new pull request instead of pushing directly to dist-git. ([#622](https://github.com/packit-service/packit/pull/622))\\n\\n### packit service\\n\\n- Does not set test checks when tests are not configured. ([#275](https://github.com/packit-service/packit-service/pull/275))\\n- Supports target aliases and dist-git branches aliases. ([#277](https://github.com/packit-service/packit-service/pull/277), [#285](https://github.com/packit-service/packit-service/pull/285))\\n- Nicely formats errors from OpenShift API. ([#283](https://github.com/packit-service/packit-service/pull/283))\\n- Runs Copr build when user adds a `/packit build` comment into a PR. ([#290](https://github.com/packit-service/packit-service/pull/290))\\n\\n## Week 50\\n\\n### packit\\n\\n- If there is no `upstream_package_name`/`downstream_package_name` given in `.packit.yaml`, they now default to the name of the GitHub repo. ([#624](https://github.com/packit-service/packit/pull/624))\\n- If no `jobs` are defined in `.packit.yaml` packit by default runs `build` job on `fedora-stable` targets and `propose_downstream` on `fedora-all` branches. ([#625](https://github.com/packit-service/packit/pull/625))\\n- `build` command has nicer output. ([#630](https://github.com/packit-service/packit/pull/630))\\n- Smaller fixes. ([#630](https://github.com/packit-service/packit/pull/630), [#636](https://github.com/packit-service/packit/pull/636))\\n\\n### packit service\\n\\n- Creates a new issue when `propose-update` fails. ([#300](https://github.com/packit-service/packit-service/pull/300))\\n- Better reports failed submitting of a Copr build. ([#301](https://github.com/packit-service/packit-service/pull/301))"}]}')}}]); \ No newline at end of file diff --git a/assets/js/e6722c50.fe24b714.js b/assets/js/e6722c50.fe24b714.js deleted file mode 100644 index a0a66754c..000000000 --- a/assets/js/e6722c50.fe24b714.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[5624],{38516:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2023/08/14/","metadata":{"permalink":"/posts/weekly/2023/08/14/","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/2023/08/14.md","source":"@site/weekly/2023/08/14.md","title":"Week 32 in Packit","description":"Week 32 (August 8th \u2013 August 14th)","date":"2023-08-14T00:00:00.000Z","formattedDate":"August 14, 2023","tags":[{"label":"2023-August","permalink":"/posts/weekly/tags/2023-august"},{"label":"2023","permalink":"/posts/weekly/tags/2023"},{"label":"August","permalink":"/posts/weekly/tags/august"}],"readingTime":0.42,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"Week 32 in Packit","date":"2023-08-14T00:00:00.000Z","tags":["2023-August","2023","August"]},"nextItem":{"title":"Week 31 in Packit","permalink":"/posts/weekly/2023/08/07/"}},"content":"## Week 32 (August 8th \u2013 August 14th)\\n\\n- Two new configuration options for filtering when getting latest upstream release tag were introduced: `upstream_tag_include` and `upstream_tag_exclude`. They should contain a Python regex that can be used as an argument in `re.match`. ([packit#2030](https://github.com/packit/packit/pull/2030), [packit-service#2138](https://github.com/packit/packit-service/pull/2138))\\n- Retriggering of `pull-from-upstream` via a comment will now use the correct configuration file from the default dist-git branch. ([packit-service#2140](https://github.com/packit/packit-service/pull/2140))\\n- The `pull-from-upstream` job can now be used with upstream repos that are not hosted on a supported git forge. ([packit-service#2137](https://github.com/packit/packit-service/pull/2137))"},{"id":"/2023/08/07/","metadata":{"permalink":"/posts/weekly/2023/08/07/","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/2023/08/07.md","source":"@site/weekly/2023/08/07.md","title":"Week 31 in Packit","description":"- Licenses in Packit specfiles are now confirmed to be SPDX-compatible. (example PR: packit#2026)","date":"2023-08-07T00:00:00.000Z","formattedDate":"August 7, 2023","tags":[{"label":"2023-August","permalink":"/posts/weekly/tags/2023-august"},{"label":"2023","permalink":"/posts/weekly/tags/2023"},{"label":"August","permalink":"/posts/weekly/tags/august"}],"readingTime":0.145,"hasTruncateMarker":false,"authors":[{"name":"Matej Focko","email":"mfocko@redhat.com","url":"https://github.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mfocko"}],"frontMatter":{"title":"Week 31 in Packit","date":"2023-08-07T00:00:00.000Z","authors":"mfocko","tags":["2023-August","2023","August"]},"prevItem":{"title":"Week 32 in Packit","permalink":"/posts/weekly/2023/08/14/"},"nextItem":{"title":"July 2023","permalink":"/posts/weekly/July-2023"}},"content":"- Licenses in Packit specfiles are now confirmed to be SPDX-compatible. (example PR: [packit#2026](https://github.com/packit/packit/pull/2026))\\n If you are interested in more details, see a [talk](https://www.youtube.com/watch?v=Hjhe6jtx3Zw&t=8651s) from Flock 2023 by Mirek."},{"id":"/July-2023","metadata":{"permalink":"/posts/weekly/July-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/July-2023.md","source":"@site/weekly/July-2023.md","title":"July 2023","description":"Week 27 (July 4th \u2013 July 10th)","date":"2023-07-10T13:49:53.000Z","formattedDate":"July 10, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":0.81,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"July 2023","date":"2023-07-10T13:49:53.000Z","tags":["2023"]},"prevItem":{"title":"Week 31 in Packit","permalink":"/posts/weekly/2023/08/07/"},"nextItem":{"title":"June 2023","permalink":"/posts/weekly/June-2023"}},"content":"## Week 27 (July 4th \u2013 July 10th)\\n\\n- Packit now correctly reloads upstream specfile after running `pre-sync` action. ([packit#2006](https://github.com/packit/packit/pull/2006))\\n\\n## Week 28 (July 11th \u2013 July 17th)\\n\\n- Packit now includes instructions on how to checkout the dist-git PR locally when syncing the release.\\n ([packit-service#2116](https://github.com/packit/packit-service/pull/2116))\\n- We have fixed a bug in processing options of `%prep` macros in our `specfile` library. For instance, when a quoted\\n string appeared inside an expression expansion, it could lead to improper parsing, rendering the spec file invalid\\n after accessing the options. ([specfile#253](https://github.com/packit/specfile/pull/253))\\n- packit.dev has a new format! As the content has expanded a lot in the recent year, we decided to switch to using\\n [Docosaurus](https://docusaurus.io/):\\n now all the documentation is in one place and this format also enables additional features for our blog posts.\\n ([packit.dev#694](https://github.com/packit/packit.dev/pull/694))\\n\\n## Weeks 29\u201330 (July 18th \u2013 July 31st)\\n\\n- With plenty of team members on vacation, we didn\'t manage to implement any significant new features during these two weeks."},{"id":"/June-2023","metadata":{"permalink":"/posts/weekly/June-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/June-2023.md","source":"@site/weekly/June-2023.md","title":"June 2023","description":"Week 22 (May 30th \u2013 June 5th)","date":"2023-06-05T22:18:53.000Z","formattedDate":"June 5, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":1.87,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"June 2023","date":"2023-06-05T22:18:53.000Z","tags":["2023"]},"prevItem":{"title":"July 2023","permalink":"/posts/weekly/July-2023"},"nextItem":{"title":"May 2023","permalink":"/posts/weekly/May-2023"}},"content":"## Week 22 (May 30th \u2013 June 5th)\\n\\n- Packit will now filter the pull requests based on the target branch if the `branch` is specified in the particular job configuration. ([packit-service#2074](https://github.com/packit/packit-service/pull/2074))\\n- Packit now supports `manual_trigger` in the configuration that allows you to make jobs run only when explicitly triggered by a comment. ([packit-service#2069](https://github.com/packit/packit-service/pull/2069))\\n\\n## Week 23 (June 6th \u2013 June 12th)\\n\\n- Our dashboard now shows projects in a table instead of the cards.\\n ([dashboard#267](https://github.com/packit/dashboard/pull/267))\\n- `/packit test` command has two new options:\\n\\n With `--identifier` option, Testing Farm will trigger only jobs with that identifier.\\n ([packit-service#2079](https://github.com/packit/packit-service/pull/2079))\\n\\n Also, it is now possible to specify labels for a job and trigger tests based on labels\\n using a `--labels` option of the `/packit test` command.\\n ([packit#1988](https://github.com/packit/packit/pull/1988),\\n [packit-service#2088](https://github.com/packit/packit-service/pull/2088))\\n\\n- If the `vm_image_build job` doesn\'t have Copr project/owner configured,\\n Copr project used for the latest Copr build of the pull request will be now used.\\n ([packit-service#2080](https://github.com/packit/packit-service/pull/2080))\\n- Fixed filters in `files_to_sync` not being applied properly.\\n ([packit#1977](https://github.com/packit/packit/pull/1977))\\n- The issue that could\'ve caused inconsistencies when tests from a PR\\n were supposed to be merged during the test runs on the Testing Farm has been fixed.\\n ([packit-service#2090](https://github.com/packit/packit-service/pull/2090))\\n\\n## Week 24 (June 13th \u2013 June 19th)\\n\\n- Packit now includes dist-git branch in the title of the PRs for `propose-downstream` and `pull-from-upstream`.\\n ([packit#1996](https://github.com/packit/packit/pull/1996))\\n\\n- Many dashboard issues have been fixed during the\\n [Contribute to an Open Source Service](https://sched.co/1MvMM)\\n workshop at [DevConf.CZ](https://www.devconf.info/cz/).\\n [Stef Walter](https://github.com/stefwalter),\\n [Erik Gustavsson](https://github.com/SpyTec),\\n [Roman Braunstingl](https://github.com/RFJBraunstingl),\\n [Jaroslav Reznik](https://github.com/jreznik),\\n [Christophe de Dinechin](https://github.com/c3d),\\n [Gris Ge](https://github.com/cathay4t)\\n and [David Duncan](https://github.com/davdunc),\\n thank you for your contribution!\\n ([dashboard#291](https://github.com/packit/dashboard/pull/291),\\n [dashboard#292](https://github.com/packit/dashboard/pull/292),\\n [dashboard#293](https://github.com/packit/dashboard/pull/293),\\n [dashboard#294](https://github.com/packit/dashboard/pull/294),\\n [dashboard#295](https://github.com/packit/dashboard/pull/295))\\n\\n## Week 25 (June 21st \u2013 June 27th)\\n\\n- If you are interested about the manual triggering deployed two weeks ago, David Kornel and Jakub Stejskal published [a blog post](https://fedoramagazine.org/how-to-use-testing-farm-outside-of-rhel/) about this on fedoramagazine.org.\\n- Copr builds configured as a monorepo job will now be built in one Copr project together. The bug with overwriting the statuses for monorepo jobs has been fixed as well. ([packit-service#2097](https://github.com/packit/packit-service/pull/2097))\\n\\n## Week 26 (June 27th \u2013 July 3rd)\\n\\n- The bug which prevented errors on Testing Farm request submission from being\\n correctly propagated to the user was fixed.\\n ([packit-service#2103](https://github.com/packit/packit-service/pull/2103))\\n- `pull_from_upstream` jobs can now be retriggered with a comment\\n `/packit pull-from-upstream` in a dist-git pull request.\\n ([packit-service#2087](https://github.com/packit/packit-service/pull/2087))"},{"id":"/May-2023","metadata":{"permalink":"/posts/weekly/May-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/May-2023.md","source":"@site/weekly/May-2023.md","title":"May 2023","description":"Week 18 (May 4th - May 9th)","date":"2023-05-10T06:41:12.000Z","formattedDate":"May 10, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":1.51,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"May 2023","date":"2023-05-10T06:41:12.000Z","tags":["2023"]},"prevItem":{"title":"June 2023","permalink":"/posts/weekly/June-2023"},"nextItem":{"title":"April 2023","permalink":"/posts/weekly/April-2023"}},"content":"## Week 18 (May 4th - May 9th)\\n\\nWe have experienced issues with automatic Bodhi updates that we are investigating.\\nIn case you miss a Bodhi update, you can\\n[retrigger the job](https://packit.dev/docs/fedora-releases-guide/#retriggering-2) via `/packit create-update`\\ncomment in a dist-git pull request.\\nBesides that, during this short week (another Czech Republic public holiday) we didn\'t manage to implement\\nany significant new features.\\n\\n## Week 19 (May 9th \u2013 May 15th)\\n\\n- Packit now doesn\'t react to its own comments on Pagure and GitLab (on GitHub, this was already implemented).\\n ([packit-service#2048](https://github.com/packit/packit-service/pull/2048))\\n\\n## Week 20 (May 16th \u2013 May 22nd)\\n\\n- We have implemented a denylisting mechanism allowing us to denylist namespaces/projects to prevent misuse of our service. ([packit-service#2046](https://github.com/packit/packit-service/pull/2046))\\n- Packit will now additionally require for each test job requiring build a build job definition to be present in the Packit configuration file. ([packit-service#2012](https://github.com/packit/packit-service/pull/2012))\\n- Packit now checks whether the configured architecture for the test target is supported by Testing Farm and in case it\'s not supported, Packit doesn\'t submit these test requests. ([packit-service#2053](https://github.com/packit/packit-service/pull/2053))\\n\\n## Week 21 (May 23rd \u2013 May 29th)\\n\\n- Unsuccessful Image Builder requests now provide error details so you can fix the Image configuration. ([packit#1981](https://github.com/packit/packit/pull/1981))\\n- Copr projects created by Packit will not follow the Fedora branching from now. This decision has been made to lower the load on Copr from the temporary Copr projects created, mainly, for the PR builds. If you are releasing your packages to the Copr, please use the new setting `follow_fedora_branching`.\\n Already existing projects are not affected by this change and it is also not enforced with the custom Copr repositories. ([packit#1970](https://github.com/packit/packit/pull/1970))\\n- Additional artifact(s) passed as `artifacts` in the `tf_extra_params` dictionary will be now combined with the artifact passed by Packit instead of rewriting it. ([packit-service#2056](https://github.com/packit/packit-service/pull/2056))\\n- Specfile library now handles multiple `%changelog` sections. ([specfile#230](https://github.com/packit/specfile/pull/230))"},{"id":"/April-2023","metadata":{"permalink":"/posts/weekly/April-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/April-2023.md","source":"@site/weekly/April-2023.md","title":"April 2023","description":"Weeks 14\u201315 (April 3rd \u2013 April 17th)","date":"2023-04-17T14:00:00.000Z","formattedDate":"April 17, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":1.65,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"April 2023","date":"2023-04-17T14:00:00.000Z","tags":["2023"]},"prevItem":{"title":"May 2023","permalink":"/posts/weekly/May-2023"},"nextItem":{"title":"March 2023","permalink":"/posts/weekly/March-2023"}},"content":"## Weeks 14\u201315 (April 3rd \u2013 April 17th)\\n\\n- `packit source-git` related commands can skip dist-git repos, where the git trailer is not found, when looking for the right dist-git dir where to work. ([packit#1938](https://github.com/packit/packit/pull/1938))\\n- Tmt tests can now be run with fmf root outside of git root ([packit#1936](https://github.com/packit/packit/pull/1936))\\n- Commits created by Packit no longer contain the \\"Signed-off-by\\" tag. ([packit#1934](https://github.com/packit/packit/pull/1934))\\n- Packit\'s source_git functionality installs/loads the `_packitpatch` script in a more reliable manner that doesn\'t rely on deprecated setuptools functionality. ([packit#1926](https://github.com/packit/packit/pull/1926))\\n- Packit now supports monorepo configuration in CLI ([packit#1864](https://github.com/packit/packit/pull/1864))\\n- Packit should now correctly catch the logs if any of the user actions fail during `propose_downstream`. ([packit#1939](https://github.com/packit/packit/pull/1939))\\n- Packit now resets `Release` field in dist-git spec file to 1 when the version in upstream spec file is not up-to-date with the release that triggered `propose_downstream`. ([packit#1940](https://github.com/packit/packit/pull/1940))\\n\\n## Week 16 (April 18th \u2013 April 24th)\\n\\n- Packit now complies with [PEP 621](https://peps.python.org/pep-0621/) and stores project metadata in `pyproject.toml`. ([packit#1913](https://github.com/packit/packit/pull/1913))\\n- Packit now properly respects `upstream_ref` for tags that start with \\"a\\", \\"b\\", \\"c\\", \\"e\\", \\"n\\", \\"r\\", \\"s\\". ([packit#1943](https://github.com/packit/packit/pull/1943))\\n- Packit Service now supports multi package configuration (a.k.a. monorepo configuration). ([packit-service#1982](https://github.com/packit/packit-service/pull/1982))\\n\\n## Week 17-18 (April 25th \u2013 May 3rd)\\n\\n- Detection of `%autorelease` usage in dist-git spec file during `propose-downstream` and `pull-from-upstream` has been improved and Packit will always preserve it. ([packit#1949](https://github.com/packit/packit/pull/1949))\\n- We have fixed an issue that prevented you from building in Copr and Koji on release in the GitLab upstream. ([packit-service#2027](https://github.com/packit/packit-service/pull/2027))\\n- TMT tests can now be run with FMF root outside of git root. ([packit-service#2007](https://github.com/packit/packit-service/pull/2007))\\n- When reacting to branch pushes, Packit now correctly checks whether the branch name matches the configuration for the test jobs with configured `commit` trigger. ([packit-service#2015](https://github.com/packit/packit-service/pull/2015))\\n- The `propose-downstream` job triggered by an issue comment now correctly loads the configuration from the upstream repository. ([packit-service#2021](https://github.com/packit/packit-service/pull/2021))\\n- Packit is newly on Mastodon. Or, more specifically, on Fosstodon.\\n Follow [@packit@fosstodon.org](https://fosstodon.org/@packit) and be one of the first to know about all the news!"},{"id":"/March-2023","metadata":{"permalink":"/posts/weekly/March-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/March-2023.md","source":"@site/weekly/March-2023.md","title":"March 2023","description":"Week 10 (March 7th \u2013 March 13th)","date":"2023-03-13T14:00:00.000Z","formattedDate":"March 13, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":0.755,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"March 2023","date":"2023-03-13T14:00:00.000Z","tags":["2023"]},"prevItem":{"title":"April 2023","permalink":"/posts/weekly/April-2023"},"nextItem":{"title":"February 2023","permalink":"/posts/weekly/February-2023"}},"content":"## Week 10 (March 7th \u2013 March 13th)\\n\\n- Parsing the spec file by RPM is now performed only if really necessary, greatly improving performance in certain scenarios. ([specfile#212](https://github.com/packit/specfile/pull/212))\\n\\n## Week 11 (March 14th \u2013 March 20th)\\n\\n- Packit now uses the `get_current_version` action defined by the user to retrieve version before updating the specfile %setup macro (if any). ([packit#1886](https://github.com/packit/packit/pull/1886))\\n\\n## Week 12 (March 21st \u2013 March 27th)\\n\\n- \'upstream_tag_template\' is now also used when looking for the latest version tag in Git.\\n This allows upstream repositories to mix different tag-patterns in the same repository,\\n but consider only one to tell the latest version.\\n ([packit#1891](https://github.com/packit/packit/pull/1891))\\n\\n## Week 13 (March 28th \u2013 April 3rd)\\n\\n- Packit now preserves `%autorelease` during `propose_downstream` and `pull_from_upstream`. ([packit#1904](https://github.com/packit/packit/pull/1904))\\n- Since in GitLab, it is not possible to overwrite the pending statuses, Packit now provides more generic descriptions and URLs when setting the first pending status. ([packit-service#1975](https://github.com/packit/packit-service/pull/1975))"},{"id":"/February-2023","metadata":{"permalink":"/posts/weekly/February-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/February-2023.md","source":"@site/weekly/February-2023.md","title":"February 2023","description":"Weeks 5\u20136 (February 1st \u2013 February 13th)","date":"2023-02-13T14:00:00.000Z","formattedDate":"February 13, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":2.255,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"February 2023","date":"2023-02-13T14:00:00.000Z","tags":["2023"]},"prevItem":{"title":"March 2023","permalink":"/posts/weekly/March-2023"},"nextItem":{"title":"January 2023","permalink":"/posts/weekly/January-2023"}},"content":"## Weeks 5\u20136 (February 1st \u2013 February 13th)\\n\\n- You can now use `--srpm` option with the `packit build locally` CLI command. ([packit#1810](https://github.com/packit/packit/pull/1810))\\n- You will newly see news about Packit as a footer of the GitHub check runs summary. ([packit-service#1881](https://github.com/packit/packit-service/pull/1881))\\n- Packit now groups related builds and test runs (e.g. triggered by the same event, just different chroots) together. In the future, this will allow better presentation of the overall pipelines (e.g. in the dashboard). We now also create database entries before sending requests to external service (e.g. Testing Farm), therefore failures will be more visible in the dashboard. ([packit-service#1787](https://github.com/packit/packit-service/pull/1787))\\n\\n## Week 7 (February 14th \u2013 February 20th)\\n\\n- Packit now provides `PACKIT_PROJECT_VERSION` environment variable when running `changelog-entry` action. ([packit#1853](https://github.com/packit/packit/pull/1853))\\n- Packit CLI now requires bodhi in version 7.0.0 at minimum. ([packit#1844](https://github.com/packit/packit/pull/1844))\\n- You can now specify branches for a job triggered by a commit with a regex. ([packit-service#1909](https://github.com/packit/packit-service/pull/1909))\\n\\n## Week 8 (February 21st \u2013 February 27th)\\n\\n- `packit validate-config` CLI command now provides details about errors when it cannot parse the config file. ([packit#1861](https://github.com/packit/packit/pull/1861))\\n- `--update-release`/`--no-update-release` CLI flag now affects only `Release`, not `Version`. ([packit#1857](https://github.com/packit/packit/pull/1857))\\n- Packit does fewer API calls when searching for the package configuration file in remote repositories. ([packit#1846](https://github.com/packit/packit/pull/1846))\\n- Commit statuses/check names will now contain the name of the branch or release for the build and test jobs with `commit` or `release` trigger.\\n This will prevent the collision of the names. ([packit-service#1920](https://github.com/packit/packit-service/pull/1920))\\n\\n## Week 9 (February 28th \u2013 March 6th)\\n\\n- Aliases logic was updated to account for the upcoming Fedora release (Bodhi now marks such release as `frozen`). From now on, Fedora 38 updates will be created even when the release is frozen. ([packit#1863](https://github.com/packit/packit/pull/1863))\\n- `packit validate-config` now correctly checks glob-patterns in \'files_to_sync\' ([packit#1865](https://github.com/packit/packit/pull/1865)) and provides details about errors when it cannot parse a config file. ([packit#1861](https://github.com/packit/packit/pull/1861))\\n- Pull-from-upstream jobs are now displayed on our dashboard \ud83e\udd73 https://dashboard.packit.dev/jobs/pull-from-upstreams ([packit-service#1951](https://github.com/packit/packit-service/pull/1951), [packit-service#1939](https://github.com/packit/packit-service/pull/1939))\\n- Packit will no longer automatically request access to the forks on GitLab. This will prevent us from spamming one-time contributors with requesting the access, whereas the regular contributors can add Packit following the instructions from the comments on the MRs, so they can receive the results of Packit pipeline right from the commit statuses. ([packit-service#1946](https://github.com/packit/packit-service/pull/1946))\\n- Packit will retry tasks that are interrupted by a worker shutdown. This should improve throughput and reduce cases where there is no outcome, i.e. \\"builds should have been done but nothing happened\\". ([packit-service#1935](https://github.com/packit/packit-service/pull/1935))\\n- OGR now understands a few community-hosted GitLab instances that could not be determined automatically from the hostname. Thanks to that, you don\'t need to hardcode these instances to be mapped correctly. ([ogr#775](https://github.com/packit/ogr/pull/775))\\n\\nThank you, [@SpyTec](https://github.com/SpyTec) for so many [wonderful changes in our dasbhoard](https://github.com/packit/dashboard/pulls?q=is%3Apr+author%3ASpyTec)."},{"id":"/January-2023","metadata":{"permalink":"/posts/weekly/January-2023","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/January-2023.md","source":"@site/weekly/January-2023.md","title":"January 2023","description":"Week 0 \ud83c\udf04 (December 20th 2022 \u2013 January 2nd 2023)","date":"2023-01-02T14:00:00.000Z","formattedDate":"January 2, 2023","tags":[{"label":"2023","permalink":"/posts/weekly/tags/2023"}],"readingTime":2.175,"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"January 2023","date":"2023-01-02T14:00:00.000Z","tags":["2023"]},"prevItem":{"title":"February 2023","permalink":"/posts/weekly/February-2023"},"nextItem":{"title":"2022","permalink":"/posts/weekly/2022"}},"content":"## Week 0 \ud83c\udf04 (December 20th 2022 \u2013 January 2nd 2023)\\n\\n- ogr now raises `GitForgeInternalError` rather than `PagureAPIException` when\\n getting 50x response from the Pagure API. This should increase usability as\\n those tasks will be retried.\\n ([ogr#762](https://github.com/packit/ogr/pull/762))\\n- Packit now puts the correct release number into the changelog when the\\n Release tag is reset during propose-downstream.\\n ([packit#1816](https://github.com/packit/packit/pull/1816)))\\n\\n## Week 1 (January 3rd \u2013 January 9th)\\n\\n- SRPMs for projects that installed the GitHub App before September 6th and\\n don\'t have `srpm_build_deps` defined are now built in Copr as well.\\n ([packit-service#1822](https://github.com/packit/packit-service/pull/1822))\\n- We have fixed a bug in dashboard that linked `null` as a Copr build for\\n Testing Farm runs that do not require any Copr build.\\n ([dashboard#200](https://github.com/packit/dashboard/pull/200))\\n- All classes including `Specfile` itself can now be copied using the standard\\n `copy()` and `deepcopy()` functions from `copy` module.\\n ([specfile#176](https://github.com/packit/specfile/pull/176))\\n\\n## Week 2 (January 10th \u2013 January 16th)\\n\\n- When configuring Copr chroot (target in Packit terminology) specific configuration, make sure to specify additional_modules as a string: module names separated with a comma, example: \\"httpd:2.4,python:4\\". ([packit#1826](https://github.com/packit/packit/pull/1826))\\n- We have fixed a bug which caused long Copr build end reporting time on a few occurrences. ([packit-service#1838](https://github.com/packit/packit-service/pull/1838))\\n- A few fixes has been implemented to make it possible to use [`propose-downstream` job](https://packit.dev/docs/configuration/#propose_downstream) on GitLab. ([packit-service#1842](https://github.com/packit/packit-service/pull/1842), [packit-service#1844](https://github.com/packit/packit-service/pull/1844), [packit-service#1845](https://github.com/packit/packit-service/pull/1845), [packit-service#1846](https://github.com/packit/packit-service/pull/1846))\\n\\n## Week 3 + 4 (January 17th \u2013 January 30th)\\n\\n- Users can now re-trigger _bodhi_update_ and _koji_build_ jobs by `/packit create-update`\\n and `/packit koji-update` comments in an issue opened by Packit in the configured `issue_repository` if anything\\n went wrong during these jobs. ([packit-service#1796](https://github.com/packit/packit-service/pull/1796))\\n- All Copr projects created by Packit now default to `enable_net=False`: our documentation stated this, but it\\n wasn\'t the case. This is now corrected. ([packit#1825](https://github.com/packit/packit/pull/1825))\\n- You can now specify `update_release: false` in the configuration to tell Packit not to change the Version and\\n Release in the spec file. It works the same as `--no-update-release` (renamed from now deprecated `--no-bump`) in\\n the CLI. ([packit#1827](https://github.com/packit/packit/pull/1827))\\n- Packit now supports setting `module_hotfixes` for Copr projects.\\n ([packit#1829](https://github.com/packit/packit/pull/1829))\\n- Packit now also allows passing in free-form parameters to Testing Farm in order to support all of its\\n options immediately once they are added. The parameters can be passed through the `tf_extra_params` config option.\\n The free-form dictionary must follow the structure of Testing Farm POST requests. See [our documentation](https://packit.dev/docs/testing-farm/)\\n and examples for more information. ([packit-service#1853](https://github.com/packit/packit-service/pull/1853))\\n- Fixed a bug in section parsing that caused sections to be ignored when there were macro definitions spread\\n across the spec file and not cumulated at the top. ([specfile#191](https://github.com/packit/specfile/pull/191))\\n- Also fixed the infinite loop that occurred when section options were followed by whitespace.\\n ([specfile#197](https://github.com/packit/specfile/pull/197))"},{"id":"/2022","metadata":{"permalink":"/posts/weekly/2022","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/2022.md","source":"@site/weekly/2022.md","title":"2022","description":"Let\'s see what happened in Packit in 2022.","date":"2023-01-01T00:00:00.000Z","formattedDate":"January 1, 2023","tags":[{"label":"2022","permalink":"/posts/weekly/tags/2022"}],"readingTime":24.99,"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"2022","date":"2023-01-01T00:00:00.000Z","aliases":["/posts/weekly/january-2022","/posts/weekly/february-2022","/posts/weekly/march-2022","/posts/weekly/april-2022","/posts/weekly/may-2022","/posts/weekly/june-2022","/posts/weekly/july-2022","/posts/weekly/august-2022","/posts/weekly/september-2022","/posts/weekly/october-2022","/posts/weekly/november-2022","/posts/weekly/december-2022"],"tags":["2022"]},"prevItem":{"title":"January 2023","permalink":"/posts/weekly/January-2023"},"nextItem":{"title":"2021","permalink":"/posts/weekly/2021"}},"content":"Let\'s see what happened in Packit in 2022.\\n\\n\x3c!--truncate--\x3e\\n\\n## Week 0 (December 13th - January 2nd)\\n\\n- Dashboard shows a message when the SRPM build logs are not present instead of\\n an empty page that might suggest logs are being loaded.\\n ([packit/dashboard#158](https://github.com/packit/dashboard/pull/158))\\n\\n## Week 1 (January 3rd - January 7th)\\n\\n- Packit service now discards old (currently, this means 3 months) SRPM builds logs.\\n ([packit/packit-service#1315](https://github.com/packit/packit-service/pull/1315))\\n- We have added `target_branch_head_commit` property to the `PullRequest` class in ogr that allows\\n you to get commit hash of the HEAD of the target branch (i.e. base, where the changes are merged to).\\n ([packit/ogr#671](https://github.com/packit/ogr/pull/671))\\n- Service now passes `PACKIT_TARGET_SHA` variable, which holds commit hash of the HEAD of the target\\n branch where the changes are supposed to be merged, to the Testing Farm environment. This should\\n help solving the issue of running tests from non-merged codebase on the Testing Farm side.\\n ([packit/packit-service#1319](https://github.com/packit/packit-service/pull/1319))\\n\\n## Week 2 (January 10th - January 14th)\\n\\n- Packit no longer ignores `--no-bump` and `--release-suffix` options for\\n source-git repos.\\n [packit/packit#1452](https://github.com/packit/packit/pull/1452)\\n- Packit now names local branch `pr/{pr_id}` when checking out a PR, even when\\n it\'s not being merged with the target branch. This results into NVR of the\\n build containing `pr{pr_id}` instead of `pr.changes{pr_id}`.\\n [packit/packit#1445](https://github.com/packit/packit/pull/1445)\\n\\n## Week 3 (January 17th - January 21st)\\n\\n- `%changelog` sections in dist-git using the `%autochangelog` macro [are\\n preserved](https://github.com/packit/packit/pull/1453) when running\\n `propose-downstream`, except when `sync_changelog` is set to `true`.\\n- When checking if directories hold a Git-tree, Packit now also allows [`.git`\\n to be a file with a `gitdir`](https://github.com/packit/packit/pull/1458)\\n reference, not only a directory.\\n\\n## Week 4 (January 25th - January 28th)\\n\\n- SRPM build view contains info about build start and finished time.\\n [packit/dashboard#163](https://github.com/packit/dashboard/pull/163)\\n- When submitting a distgit PR during `propose-downstream` job, we create\\n a `README.packit` file with some info about the sync the packit version used.\\n To avoid this you can add `create_sync_note: false` to conig file.\\n [packit/packit#1465](https://github.com/packit/packit/pull/1465)\\n\\n## Week 5 (January 31th - February 7th)\\n\\n- A new option `--no-require-autosetup` for `source-git init` command has been\\n introduced. Please note that source-git repositories not using `%autosetup` may\\n not be properly initialized. ([packit#1470](https://github.com/packit/packit/pull/1470))\\n- Packit-service now supports re-triggering against failed task using comment on\\n pull request `/packit rebuild-failed` and similarly for testing farm: `/packit retest-failed`.\\n ([packit-service#1303](https://github.com/packit/packit-service/pull/1303))\\n\\n## Week 6 (February 8th - February 14th)\\n\\n- Packit now correctly handles colons in git trailer values in source-git commits.\\n ([packit#1478](https://github.com/packit/packit/pull/1478))\\n\\n## Week 7 (February 14th\u2764\ufe0f - February 18th)\\n\\n- Synchronization of default files can now be disabled using a new config\\n `files_to_sync`. Key `sync_files` is now deprecated.\\n ([packit#1483](https://github.com/packit/packit/pull/1483))\\n ([packit.dev#390](https://github.com/packit/packit.dev/pull/390))\\n- `python3-setuptools_scm` is now available by default in the sandbox.\\n\\n## Week 8 (February 18th - February 28th)\\n\\n- Packit now allows specifying more test distros for one build target\\n to test on in Testing Farm in the configuration. The checks for the\\n test job will also contain the name of the actual test distro\\n (and not the build target as previously).\\n- A new option, `srpm_build_deps`, in the packit configuration file \\n can be used. Which is a list of RPM dependencies that are needed for\\n the actions to be run when building SRPM and is an indicator to build\\n the SRPMs in Copr.\\n\\n## Week 9 (March 1st - March 7th)\\n\\n- When a specfile is being generated, and both `specfile_path` and\\n `downstream_package_name` are not set, Packit now correctly resolves this\\n situation and sets `specfile_path` to the name of the upstream repo suffixed\\n with `\\".spec\\"`.\\n ([packit#1499](https://github.com/packit/packit/pull/1499))\\n- A new command `packit source-git status` has been introduced for checking\\n the synchronization of a source-git and a dist-git repository based on the\\n used git trailers. The command outputs a range of commits which need to be\\n synchronized from dist-git to source-git or the other way around. If possible,\\n the command also provides instructions on how to synchronize the repositories.\\n ([packit#1500](https://github.com/packit/packit/pull/1500))\\n- We have added a new `enable_net` configuration option for Copr builds that\\n allows you to disable network access during Copr builds. It is also complemented\\n by `--enable-net`/`--disable-net` CLI options if you use Packit locally.\\n ([packit#1504](https://github.com/packit/packit/pull/1504))\\n- Packit now adds \ud83d\udc40 instead of \ud83d\udc4d as a reaction to `/packit command`\\n ([packit-service#1372](https://github.com/packit/packit-service/pull/1372))\\n- Progress of propose-downstream is now saved in the database and is available\\n via API. Visualization in the dashboard is to follow next week, stay tuned.\\n ([packit-service#1292](https://github.com/packit/packit-service/pull/1292))\\n- When running tests for the pull-request job, we now expose environment\\n variables for commit hash, branch and URL both for pull-request source and\\n target. In the test environment, you can use the following variables:\\n `PACKIT_SOURCE_SHA`, `PACKIT_TARGET_SHA`, `PACKIT_SOURCE_BRANCH`,\\n `PACKIT_TARGET_BRANCH`, `PACKIT_SOURCE_URL` and `PACKIT_TARGET_URL`.\\n These variables are not set for test runs of releases and branch pushes.\\n ([packit-service#1382](https://github.com/packit/packit-service/pull/1382))\\n\\n## Week 10 (March 8th - March 14th)\\n\\n- You can view information about ongoing propose-downstream jobs via our dashboard.\\n ([dashboard#168](https://github.com/packit/dashboard/pull/168))\\n- We have switched the cache for dist-git branches and Copr targets to TTL cache\\n that gets discarded once in 12 hours, in case there is a change in targets, the\\n changes shall propagate to both of our deployments without the need to redeploy\\n within 12 hours. ([packit#1513](https://github.com/packit/packit/pull/1513))\\n- Packit now comments when it fails to find Copr project specified in the config.\\n ([packit#1395](https://github.com/packit/packit-service/pull/1395))\\n- Packit now reacts to dist-git pushes to either `rawhide` or `main` when configured\\n to do Koji builds for `rawhide`.\\n ([packit#1393](https://github.com/packit/packit-service/pull/1393))\\n- You can specify an identifier for your job to be able to configure one job multiple times.\\n For example, you can build multiple projects from one repository (known as monorepo concept)\\n or try multiple build options. Using identifiers allows Packit to avoid naming collisions\\n in commit statuses and default Copr project names.\\n ([packit-service#1385](https://github.com/packit/packit-service/pull/1385))\\n- Packit no longer provides a misleading comment when it fails to update a set of\\n targets on its own Copr projects.\\n ([packit-service#1397](https://github.com/packit/packit-service/pull/1397))\\n\\n## Week 11 (March 15th - March 21st)\\n\\n- When using Packit CLI for creating Bodhi updates,\\n you can now set `fas_username` and `fas_password` in your Packit user config\\n to not be asked about that when the command is executed.\\n Also, this allows Packit GitHub application to use this as well\\n so you can look forward to Bodhi updates created by Packit\\n (will be announced and described in a dedicated post).\\n ([packit#1517](https://github.com/packit/packit/pull/1517))\\n\\n## Week 12 (March 22nd - March 28th)\\n\\n- We have updated contact information to `Packit `.\\n ([packit-service#1410](https://github.com/packit/packit-service/pull/1410))\\n- Interactions with Bodhi should be now more reliable when creating Bodhi updates.\\n ([packit#1528](https://github.com/packit/packit/pull/1528))\\n- Packit will no longer error out when trying to create a new Copr repository\\n when it is already present.\\n ([packit#1527](https://github.com/packit/packit/pull/1527))\\n- There is a new `packit_instances` key that you can use to specify the Packit\\n instances you want to use for working on your jobs. Nothing will change for our\\n production users, but users of our stage instance need to use this key to\\n preserve the support of the stage instance -- they can set both stg and prod in\\n the `packit_instances` list to use both, or use just one. Just be careful with\\n the downstream jobs where both instances work with the same services.\\n This new option works like other Packit options so you can set it on the top\\n level and/or (re)define it on the job level.\\n More information about our staging instance can be found here:\\n [packit#1530](https://github.com/packit/packit/discussions/1530).\\n ([packit#1417](https://github.com/packit/packit-service/pull/1417))\\n\\n## Week 13 (March 29th - April 4th)\\n\\n- We have implemented `get_contributors` function in ogr that can be used for getting contributors to the project on GitHub (set of logins) and GitLab (set of authors).\\n ([ogr#692](https://github.com/packit/ogr/pull/692))\\n- When multiple propose downstream attempts for the same PR fail, the error messages are sent to to the same issue (as comments), instead of creating multiple new issues.\\n ([packit#1427](https://github.com/packit/packit-service/pull/1427))\\n- Downstream synchronization of the Packit configuration file (aka `packit.yaml`) is now working properly again.\\n ([packit#1532](https://github.com/packit/packit/pull/1532))\\n- `packit source-git update-dist-git` and `packit source-git update-source-git` now check the synchronization of source-git and dist-git repositories prior to doing the update. If the update can\'t be done, for example, because the histories have diverged, the command provides instructions on how to synchronize the repositories.\\n A `--force` option is available to try to update the destination repository anyway.\\n ([packit#1534](https://github.com/packit/packit/pull/1534))\\n- When using `post_upstream_clone` to generate your spec-file,\\n Packit now correctly checks out a release before the action is run.\\n ([packit#1542](https://github.com/packit/packit/pull/1542))\\n\\n## Week 14 (April 5th - April 11th)\\n\\n- We have introduced two new build and test target aliases: `fedora-latest-stable` resolves to the latest stable Fedora\\n Linux release, while `fedora-branched` resolves to all branched releases (all Fedora Linux release, except `rawhide`).\\n ([packit#1546](https://github.com/packit/packit/pull/1546))\\n- We have reverted the functionality of Packit that allowed you to have set **only** specific targets for Copr repositories.\\n This functionality was introduced a while ago and was found to be not very beneficial in cases of differently\\n configured Copr jobs building in parallel in the same Copr repository. This is an implementation detail in the end,\\n but Copr project chroots are now only added and never subtracted\\n (every build has precisely specified targets based on the copr_build job definition).\\n ([packit#1551](https://github.com/packit/packit/pull/1551))\\n- If you are using our stage instance, we make it listen only on `/packit-stg` comment commands so you can now differentiate\\n between the instances when commanding Packit via pull-request or issue comments.\\n For the production instance, you can continue using `/packit` prefix as you are used to.\\n ([packit-service#1432](https://github.com/packit/packit-service/pull/1432))\\n- A new configuration option `downstream_branch_name` has been added, which is meant to be used in source-git projects\\n and allows users to customize the name of the branch in dist-git which corresponds to the current source-git branch.\\n ([packit#1555](https://github.com/packit/packit/pull/1555))\\n- `revision-range` argument of the source-git `update-source-git` command is now optional. If not specified,\\n dist-git commits with no counterpart in source-git are synchronized.\\n ([packit#1547](https://github.com/packit/packit/pull/1547))\\n\\n## Week 15 (April 12th - April 14th)\\n\\n- We have implemented reporting of status for the propose-downstream job which means that you can now\\n see the progress of the job via check runs/commit statuses on the particular release commits.\\n ([packit-service#1435](https://github.com/packit/packit-service/pull/1435))\\n\\n## Week 16 (April 19th - April 25th)\\n\\n- The bug in our service about not setting GitHub and Gitlab statuses in case of lack of permissions was fixed.\\n ([packit/packit-service#1457](https://github.com/packit/packit-service/pull/1457))\\n- Packit\'s CLI `source-git update-*` commands now check whether the target repository is pristine and in case not raise an error.\\n ([packit/packit#1562](https://github.com/packit/packit/pull/1562))\\n\\n## Week 17 (April 26th - May 2th)\\n\\n- We have fixed an issue affecting Pipelines view on Dashboard. Currently you should be able to see pipelines again; we are also working on fixing empty rows for `propose-downstream` jobs.\\n ([packit-service#1461](https://github.com/packit/packit-service/pull/1461))\\n- Packit now shows the specific info when it does not have permissions to create a Bodhi update of your package.\\n When you configure `issue_repository` in your Packit config file, Packit will create an issue in that project and link the dist-git page where you can give _Packit FAS user_ the correct permissions.\\n ([packit-service#1465](https://github.com/packit/packit-service/pull/1465))\\n- Packit now exports `PACKIT_PR_ID` environment variable to the Testing Farm.\\n ([packit-service#1467](https://github.com/packit/packit-service/pull/1467))\\n- The bug in the Copr permission request is now fixed. (After the release of a new Copr client, Packit didn\'t catch that permission problem and didn\'t request the permissions to build in a custom Copr project.)\\n ([packit-service#1472](https://github.com/packit/packit-service/pull/1472))\\n- We have fixed a bug that caused Packit to fail when submitting Testing Farm on `commit` trigger.\\n ([packit-service#1474](https://github.com/packit/packit-service/pull/1472))\\n- Packit now builds RPMs in Copr triggered by `release` event with correct NVR (without the artificial release suffix). You can use it for distributing RPM packages via Copr. \\n ([packit-service#1478](https://github.com/packit/packit-service/pull/1478))\\n- From the security perspective, we have decided to disable the `create_pr` option for our service, from now on Packit will unconditionally create PRs when running `propose-downstream`.\\n We have also updated the `propose-downstream` CLI such that it is possible to use `create_pr` from configuration **or** override it via `--pr/--no-pr` options.\\n ([packit#1563](https://github.com/packit/packit/pull/1563))\\n- Packit now supports `release_suffix` configuration option that allows you to override the long release string provided by Packit that is used to ensure correct ordering and uniqueness of RPMs built in Copr.\\n ([packit#1568](https://github.com/packit/packit/pull/1568))\\n\\n## Week 18 (May 3rd - May 9th)\\n\\n- `packit source-git` commands learnt to replace [Git-trailers in commit messages](https://packit.dev/source-git/work-with-source-git/control-patch-generation/) if they already exist. ([packit#1577](https://github.com/packit/packit/pull/1577))\\n- When initializing source-git repos, the author of downstream commits created from patch files which are not in a git-am format is set to the original author of the patch-file in dist-git, instead of using the locally configured Git author. ([packit#1575](https://github.com/packit/packit/pull/1575))\\n- Packit now correctly inform users about downstream errors only on the last try. (Previously, Packit informed for all tries even the last try succeded.) ([packit-service#1485](https://github.com/packit/packit-service/pull/1485))\\n- Dashboard now also shows propose-downstream jobs in pipelines view. We have also merged all jobs to one column to minimize dead space on the page. ([dashboard#178](https://github.com/packit/dashboard/pull/178))\\n\\n## Week 19 (May 10th - May 16th)\\n\\n- Metadata dictionary is no longer required when specifying a job. Keys which used to belong to the yaml metadata dictionary are now keys of the job dictionary itself. ([packit#1569](https://github.com/packit/packit/pull/1569))\\n- Packit now correctly removes patches during `packit source-git init` when the preamble does not contain blank lines. ([packit#1582](https://github.com/packit/packit/pull/1582))\\n- Packit now supports `--release-suffix` parameter in all of the related CLI commands. Also we have added a support for the `release_suffix` option from configuration to the CLI. With regards to that we have introduced a new CLI switch `--default-release-suffix` that allows you to override the configuration option to Packit-generated default option that ensures correct NVR ordering of the RPMs. ([packit#1586](https://github.com/packit/packit/pull/1586))\\n- Resolved an SRPM build problem caused by a new version of git that refuses to fetch in a git repo when it\'s owned on the OS level by someone else. ([packit#1497](https://github.com/packit/packit-service/pull/1497))\\n- Packit now passes `PACKIT_COPR_PROJECT` and `PACKIT_COPR_RPMS` variables to the Testing Farm. `PACKIT_COPR_PROJECT` holds Copr project in format owner/project and `PACKIT_COPR_RPMS` space-separated RPMs that were built in Copr. ([packit-service#1486](https://github.com/packit/packit-service/pull/1486))\\n- Packit now builds only its own dist-git commits. Other commits are not being acted upon. For reasoning, see [packit-service#1490](https://github.com/packit/packit-service/issues/1490). ([packit-service#1498](https://github.com/packit/packit-service/pull/1498))\\n- We have automated our allowlisting process via a new Packit comment command `/packit verify-fas`. You can find more info in [our requirements](https://packit.dev/docs/guide/#2-approval). ([packit-service#1487](https://github.com/packit/packit-service/pull/1487))\\n\\n## Week 20 (May 17th - May 23rd)\\n\\n- We have fixed an issue with the handling of messages from Copr on release builds, which has resulted in not setting the correct statuses on commits. ([packit-service#1513](https://github.com/packit/packit-service/pull/1513))\\n- When doing an automatic FAS account verification, Packit now suggests the URL where the GitHub account needs to be set. ([packit-service#1508](https://github.com/packit/packit-service/pull/1508))\\n\\n## Week 21 (May 24th - May 30th)\\n\\n- Packit will not raise an exception anymore when creating a SRPM with dangling symlinks. ([packit#1592](https://github.com/packit/packit/pull/1592))\\n- You can now override which dist-git commits will be built in Koji by specifying FAS accounts of authors and committers using\\n `allowed_pr_authors` or `allowed_committers` in the job metadata (see [the documentation](https://packit.dev/docs/configuration/#koji_build)). ([packit-service#1520](https://github.com/packit/packit-service/pull/1520))\\n\\n## Week 22 (May 31st - June 6th)\\n\\n- Packit shows basic information about allowlisting in the status description\\n when your namespace is not allowed.\\n ([packit-service#1533](https://github.com/packit/packit-service/pull/1533))\\n\\n## Week 23 (June 7th - June 13th)\\n\\n- The creation of Bodhi updates should not time out anymore, because we no longer get the latest build of a package via Bodhi.\\n ([packit#1612](https://github.com/packit/packit/pull/1612))\\n- We have fixed a regression where string values for the `targets` and `dist_git_branches` configuration keys were not accepted.\\n ([packit#1608](https://github.com/packit/packit/pull/1608))\\n- We improved the reporting for the test job if we are not able to find any FMF metadata and the `skip_build` option is enabled.\\n ([packit-service#1539](https://github.com/packit/packit-service/pull/1539))\\n\\n## Week 24 (June 14th - June 21st)\\n\\n- Git ref name that Packit works with during `propose-downstream` is now made more obvious in logs.\\n ([packit#1626](https://github.com/packit/packit/pull/1626))\\n- Packit now correctly handles creation of custom archives in root while a specfile is in a subdirectory.\\n ([packit#1622](https://github.com/packit/packit/pull/1622))\\n- There is a new check for git projects that are allowed to use a custom Copr project.\\n There will be a better integration in the form of a new config field in Copr settings that Packit can use.\\n In the meantime, the mapping is defined and maintained by the Packit team.\\n Let us know if you need a project to be allowed.\\n ([packit-service#1556](https://github.com/packit/packit-service/pull/1556))\\n- A link to Copr build logs was updated: it now points to a place where logs are available once a build starts.\\n ([packit-service#1554](https://github.com/packit/packit-service/pull/1554))\\n\\n## Week 25 (June 21st - June 27th)\\n\\n- Packit Bash completion file is no longer needlessly executable. ([packit#1634](https://github.com/packit/packit/pull/1634))\\n- Packit now works with Bodhi 5 and Bodhi 6 authentication mechanism. ([packit#1629](https://github.com/packit/packit/pull/1629))\\n- Git ref name that Packit works with during `propose-downstream` is now made more obvious in logs. ([packit#1626](https://github.com/packit/packit/pull/1626))\\n- We have fixed the incorrect displaying of `propose downstream` results in our dashboard. ([packit-service#1553](https://github.com/packit/packit-service/pull/1553))\\n\\n## Weeks 26\u201327 (June 27th\u2013July 11th)\\n\\n- We adjusted the way we check the author of the PR for PRs related to\\n dist-git commits that trigger Koji build jobs. This should fix the race\\n condition causing not creating Koji builds in some cases.\\n ([packit-service#1573](https://github.com/packit/packit-service/pull/1573))\\n- Results from Testing Farm are now correctly reported when multiple jobs with\\n different identifier are defined.\\n ([packit-service#1565](https://github.com/packit/packit-service/pull/1565))\\n- On a Bodhi authentication error, Packit will retry the task multiple times\\n in ten-minute intervals to be able to fix the issue in the meantime.\\n ([packit-service#1564](https://github.com/packit/packit-service/pull/1564))\\n\\n## Week 28 (July 12th\u2013July 18th)\\n\\n- Packit now guides everyone better when a FAS account is private\\n and updates the internal information about installations correctly\\n when the app is reinstalled.\\n ([packit-service#1575](https://github.com/packit/packit-service/pull/1575))\\n- Packit can now correctly create Bodhi updates using the new Bodhi 6 client.\\n ([packit#1651](https://github.com/packit/packit/pull/1651))\\n- RPM build commands of Packit CLI have been merged into one build subcommand,\\n for more information see the updated [documentation](https://packit.dev/docs/cli/build/).\\n We have also introduced a new --srpm option to the new build subcommand\\n that can be used to trigger local, Copr or Koji build from an already built\\n SRPM rather than the one implicitly created by Packit.\\n ([packit#1611](https://github.com/packit/packit/pull/1611))\\n\\n## Week 29 (July 19th\u2013July 25th)\\n\\n- Packit now correctly supports `tmt_plan` and `tf_post_install_script` in the\\n configuration. ([packit#1659](https://github.com/packit/packit/pull/1659))\\n- We have reverted to Bodhi 5 client since Packit couldn\'t create bodhi updates\\n with the new version 6 client: [fedora-infra/bodhi#4660](https://github.com/fedora-infra/bodhi/issues/4660)\\n ([packit-service#1590](https://github.com/packit/packit-service/pull/1590)).\\n Packit also provides a more helpful error message when it hits this.\\n ([packit#1660](https://github.com/packit/packit/pull/1660))\\n- During creating Copr builds, on Copr errors, Packit will retry the task\\n multiple times in case there is a Copr outage.\\n ([packit-service#1579](https://github.com/packit/packit-service/pull/1579))\\n\\n## Week 30 (July 26th\u2013August 1st)\\n\\n- Packit has switched to `python-specfile` library for handling spec files. This may cause some issues to pop up. ([packit#1588](https://github.com/packit/packit/pull/1588))\\n- Packit CLI can now build RPMs in mock. For more information see https://packit.dev/docs/cli/build/mock ([packit#1662](https://github.com/packit/packit/pull/1662))\\n- When using Packit before being allowed, Packit newly links an approval issue where the self-approval can be performed. ([packit-service#1596](https://github.com/packit/packit-service/pull/1596))\\n- A downstream koji-build can now be re-triggered by adding a comment containing `/packit koji-build` into a dist-git pull request with target branch corresponding to the branch the build should be acted upon. ([packit-service#1586](https://github.com/packit/packit-service/pull/1586))\\n\\n## Week 31 (August 2nd \u2013 August 8th)\\n\\n- Action `fix_spec_file` can change a spec file - Packit now preserves that change.\\n ([packit#1679](https://github.com/packit/packit/pull/1679))\\n- BREAKING CHANGE: fixed an issue where the repo was searched for the specfile\\n before checking if `downstream_package_name` is set, and\\n `.spec` can be used as the `specfile_path`.\\n ([packit#1663](https://github.com/packit/packit/pull/1663))\\n\\n## Week 32 (August 9th \u2013 August 15th)\\n\\n- We have fixed an issue when propose downstream didn\'t retry to download sources that were not yet available at the time of the first attempt. ([packit-service#1609](https://github.com/packit/packit-service/pull/1609))\\n- When creating Copr builds, Packit will now retry multiple times in case there is a GitHub outage or an internal error. ([packit-service#1589](https://github.com/packit/packit-service/pull/1589))\\n\\n## Week 33 (August 16th \u2013 August 22nd)\\n\\n- Packit CLI can now submit VM images in [Red Hat Image Builder](https://console.redhat.com/insights/image-builder).\\n All build-related commands have now consistent `--wait` / `--no-wait` options.\\n ([packit#1666](https://github.com/packit/packit/pull/1666))\\n- Packit `prepare-sources` command now has a `--create-symlinks` / `--no-create-symlinks` option,\\n which enables copying the archive instead of symlinking. This will be used in the Copr environment,\\n where symlinking the archive previously caused issues.\\n ([packit#1682](https://github.com/packit/packit/pull/1682))\\n- We have fixed the handling of the situation when Packit lacks permission to update a Copr project.\\n ([packit#1684](https://github.com/packit/packit/pull/1684))\\n- Dashboard should now load data for [jobs](https://dashboard.packit.dev/jobs) faster because\\n the database querying has been improved and also queries are done only when needed.\\n ([packit-service#1617](https://github.com/packit/packit-service/pull/1617),\\n [dashboard#189](https://github.com/packit/dashboard/pull/189))\\n\\n## Week 34 (August 23rd \u2013 August 29th)\\n\\n- `packit propose-downstream` is now more informative when sources cannot be\\n downloaded. ([packit#1698](https://github.com/packit/packit/pull/1698))\\n- No more annoying issues will be created after a successful _propose\\n downstream_. ([packit#1693](https://github.com/packit/packit/pull/1693))\\n- We have fixed an issue with reporting results when multiple Testing Farm\\n jobs with identifiers are configured.\\n ([packit-service#1634](https://github.com/packit/packit-service/pull/1634))\\n\\n## Week 35 (August 30th \u2013 September 5th)\\n\\n- SRPMs for Copr builds are built in Copr by default for Packit GitHub app installations since September 6, 2022.\\n For older installations, you can set the `srpm_build_deps` config option to use Copr as a builder.\\n Let us know if you hit any issue with the new implementation. We are going to slowly decommission the old implementation\\n and are happy to help with the transition. ([packit-service#1636](https://github.com/packit/packit-service/pull/1636))\\n- More indexes added to the database have further improved API/dashboard response times. ([packit-service#1639](https://github.com/packit/packit-service/pull/1639))\\n- When submitting Testing Farm tests, Packit will now retry multiple times in case there is a failure.\\n ([packit-service#1605](https://github.com/packit/packit-service/pull/1605))\\n- We have implemented checking the available composes before submitting the tests for both internal and public Testing\\n Farm. ([packit-service#1628](https://github.com/packit/packit-service/pull/1628))\\n\\n## Week 36 (September 6th \u2013 September 12th)\\n\\n- When querying Bodhi for information about Fedora/EPEL releases to resolve aliases,\\n packit now correctly handles pagination of API results. This resolves an issue that caused\\n Fedora 37 not to be pointed to from any alias.\\n ([packit#1704](https://github.com/packit/packit/pull/1704))\\n\\n## Week 37 (September 13th \u2013 September 19th)\\n\\n- Added support for filenames specified in source URL fragments, for example: `https://example.com/foo/1.0/download.cgi#/%{name}-%{version}.tar.gz` ([specfile#100](https://github.com/packit/specfile/pull/100))\\n- Some more underlying improvements to our libraries and deployment.\\n\\n## Week 38 (September 20th \u2013 September 26th)\\n\\n- Propose downstream job now pushes changes even when it\'s not creating a new pull request. This allows updating existing pull requests. ([packit#1725](https://github.com/packit/packit/pull/1725))\\n- Packit now deduces Copr targets for Copr builds when you have set your custom Copr project to be used. ([packit-service#1673](https://github.com/packit/packit-service/pull/1673))\\n- Retriggering tasks via re-run button in Github commit checks when there are configured identifiers for jobs should now work correctly. ([packit-service#1671](https://github.com/packit/packit-service/pull/1671))\\n- Packit now reports a pending state rather than an error on Testing Farm runs in case the related copr build has not finished yet. ([packit-service#1669](https://github.com/packit/packit-service/pull/1669))\\n- Users can now **allow** building in a custom Copr project from a _git-forge_ project.\\n User has to add manually the _git-forge_ project reference to the Copr project settings.\\n As an example, we should add _github.com/packit/ogr_ to the list named _Packit forge project allowed_ in our _packit-dev_ Copr project settings: https://copr.fedorainfracloud.org/coprs/packit/packit-dev/edit#packit_forge_projects_allowed. ([packit-service#1638](https://github.com/packit/packit-service/pull/1638))\\n\\n## Week 39 (September 27th \u2013 October 3rd)\\n\\n- We have improved mapping of Testing Farm Composes, if you have set your own custom mapping and the TF Compose is available, it will be used as is without any additional modifications we do (version, etc.). ([packit-service#1675](https://github.com/packit/packit-service/pull/1675))\\n- We have added support for running the tests with Copr builds built by Packit in another pull request (in a different repository). You can read more about this feature in [our documentation](https://packit.dev/docs/testing-farm/#running-tests-with-builds-from-another-pull-request). ([packit-service#1658](https://github.com/packit/packit-service/pull/1658))\\n\\n## Week 40 (October 4th \u2013 October 10th)\\n\\n- Packit now correctly selects a Testing Farm compose when it\'s specified correctly in the configuration without an architecture suffix. ([packit-service#1689](https://github.com/packit/packit-service/pull/1689))\\n- We have fixed an issue that prevented Packit to work correctly on merge requests on GitLab instances. ([packit-service#1683](https://github.com/packit/packit-service/pull/1683))\\n- Packit Service will now replace invalid characters for the Copr projects using the default naming scheme. ([packit-service#1684](https://github.com/packit/packit-service/pull/1684))\\n- When we report to set `Packit allowed forge projects` in the Copr projects, the link for the group projects is now correct. ([packit-service#1680](https://github.com/packit/packit-service/pull/1680))\\n- It is now possible to filter changelog entries by specifying lower bound EVR, upper bound EVR or both. ([specfile#104](https://github.com/packit/specfile/pull/104))\\n\\n## Week 41 (October 11th \u2013 October 17th)\\n\\n- Packit now correctly authenticates with Bodhi 6 and therefore creates Bodhi updates. \ud83d\ude80 ([packit#1746](https://github.com/packit/packit/pull/1746), [packit-service#1704](https://github.com/packit/packit-service/pull/1704))\\n- There are two changes in the naming of the service jobs:\\n The `build` job type name has been deprecated. It aimed to be an alias when Packit supported just one build type.\\n There are currently more types of builds and just `build` can be misleading. Please, be explicit and use `copr_build` instead.\\n The `production_build` name for upstream Koji build is misleading because it is not used to run production/non-scratch\\n builds and because it can be confused with the `koji_build` job that is triggered for dist-git commits.\\n (The `koji_build` job can trigger both scratch and non-scratch/production builds.)\\n To be explicit, use `upstream_koji_build` for builds triggered in upstream and `koji_build` for builds triggered in downstream.\\n Users will get a neutral status describing the change when the old names are in use. The status will become a warning\\n starting in November and the old names will be removed by the end of the year. ([packit-service#1656](https://github.com/packit/packit-service/pull/1656))\\n- We\'ve fixed the Markdown table format in the GitHub checks page, which was broken when the user\'s repo was not allowed to use Packit. ([packit-service#1688](https://github.com/packit/packit-service/pull/1688))\\n\\n## Week 42 (October 17th \u2013 October 23rd)\\n\\n- Packit now won\'t repeatedly comment in pull requests about the need to migrate configuration of allowed forge projects to Copr. ([packit-service#1716](https://github.com/packit/packit-service/pull/1716))\\n\\n## Week 43 (October 25th \u2013 October 31th)\\n\\n- Fixed an issue with version and release in a spec file being updated even if `--no-bump` flag was specified.\\n Also fixed an issue when `None` appeared in release instead of a number.\\n ([packit#1753](https://github.com/packit/packit/pull/1753))\\n- We have improved the handling of test jobs which should fix related issues with reporting and triggering\\n that occurred when multiple test jobs were configured.\\n ([packit-service#1717](https://github.com/packit/packit-service/pull/1717))\\n\\n## Week 44 (November 1st \u2013 November 7th)\\n\\n- Fixed an issue due to which the repository was never searched for a specfile if `specfile_path` was not specified, and `specfile_path` was always set to `.spec`. ([packit#1758](https://github.com/packit/packit/pull/1758))\\n- Packit is now able to generate automatic Bodhi update notes including a changelog diff since the latest stable build of a package. ([packit#1747](https://github.com/packit/packit/pull/1747))\\n- Description of Bodhi updates now contains a changelog diff. ([packit-service#1713](https://github.com/packit/packit-service/pull/1713))\\n\\n## Week 45 (November 8th \u2013 November 14th)\\n\\n- You can re-trigger a Bodhi update via dist-git PR comment `/packit create-update`. ([packit-service#1729](https://github.com/packit/packit-service/pull/1729))\\n- Packit now correctly finds an SRPM when rpmbuild reports warnings while it parses a spec file. ([packit#1772](https://github.com/packit/packit/pull/1772))\\n- When packit.yaml is present in the repo but is empty, Packit now produces a better error message instead of an internal Python exception. ([packit#1769](https://github.com/packit/packit/pull/1769))\\n- Retriggering of tests when there is a build job and a test job with an identifier configured was fixed. ([packit-service#1731](https://github.com/packit/packit-service/pull/1731))\\n- Packit GitHub app will not modify a package version when `release_suffix` configuration option is empty. ([packit-service#1738](https://github.com/packit/packit-service/pull/1738))\\n- Our `specfile` parser now supports localized tags (e.g. `Summary(fr)`) and tags with qualifiers (e.g. `Requires(post)`). ([specfile#132](https://github.com/packit/specfile/pull/132))\\n- SRPM build logs are now deleted after 30 days instead of 90 days. This doesn\'t apply to SRPM builds done in Copr, which deletes the logs after 14 days. ([packit/packit-service#1745](https://github.com/packit/packit-service/pull/1745))\\n\\n## Week 46 (November 15th \u2013 November 21st)\\n\\n- `srpm_build_deps` can be now configured also on the job configuration level. ([packit-service#1757](https://github.com/packit/packit-service/pull/1757))\\n\\n## Week 47 (November 22nd \u2013 November 28th)\\n\\n- We have changed the limit for our [SLO1](https://packit.dev/docs/service-level-objectives/#slo1-changes-to-github-prs-receive-a-status-update-within-15-seconds-in-99-of-cases): it was increased from 15s to 30s to account for setting all statuses. ([packit-service#1776](https://github.com/packit/packit-service/pull/1776))\\n- The job names deprecated in October (`build` alias of `copr_build` and `production_build` replaced by `upstream_koji_build`) newly lead to an error state (was `neutral` ) of the deprecated status created by Packit.\\n The old names will be removed by the end of the year. ([packit-service#1777](https://github.com/packit/packit-service/pull/1777))\\n- The Copr build logs URL now points to logs that are available even while building. ([packit-service#1767](https://github.com/packit/packit-service/pull/1767))\\n- Fixed an issue that caused empty lines originally inside changelog entries to appear at the end. ([specfile#140](https://github.com/packit/specfile/pull/140))\\n\\n## Week 48 (November 29th \u2013 December 5th)\\n\\n- `packit propose-downstream` now uploads all remote sources (those specified as URLs) and the\\n source specified by `spec_source_id` (whether remote or not) to lookaside. Previously, only Source0\\n was uploaded. Source0 is no longer treated specially, but as `spec_source_id` is `Source0` by default,\\n Source0 is still being uploaded by default unless `spec_source_id` is overriden.\\n ([packit#1778](https://github.com/packit/packit/pull/1778))\\n- [A VM image build](/docs/configuration/upstream/vm_image_build) can be triggered inside a PR via a comment\\n command `/packit vm-image-build` (the job needs to be defined in the configuration).\\n This feature is experimental and is still being tested.\\n ([packit-service#1761](https://github.com/packit/packit-service/pull/1761))\\n- `Section` and `Tag` objects in `specfile` library now have `normalized_name` property for more convenient comparison.\\n There is a new method, `Specfile.get_active_macros()`, to get active macros in the context of the spec file.\\n The underlying `rpm.spec` instance is now exposed as `Specfile.rpm_spec` property.\\n There is a new utility class for parsing NEVRA strings. ([specfile#141](https://github.com/packit/specfile/pull/141))\\n\\n## Week 49 (December 6th \u2013 December 12th)\\n\\n- Packit now correctly handles a race condition when it tries to create bodhi\\n updates for builds that are not yet tagged properly. CLI exprience was also\\n improved for this case.\\n ([packit#1803](https://github.com/packit/packit/pull/1803))\\n- Packit now resets the `Release` tag during `propose-downstream` if the version\\n is updated and the `Release` tag has not explicitly been overridden in the\\n upstream specfile.\\n ([packit#1801](https://github.com/packit/packit/pull/1801))\\n- If you still don\'t build SRPMs in Copr you\'ll get a warning status that you\\n should use `srpm_build_deps` to be sure that we don\'t break your workflow once\\n we switch to building all SRPMs in Copr in January.\\n ([packit-service#1804](https://github.com/packit/packit-service/pull/1804))\\n- We\'ve increased internal task retry backoff time in Packit GitHub app from 3 to\\n 7 seconds. We hope this will increase success for network flakes and _random_\\n infrastructure issues. Creation of bodhi updates should be now more reliable too\\n as Packit will try more times (from 2 to 5).\\n ([packit-service#1800](https://github.com/packit/packit-service/pull/1800))\\n- Tags enclosed in conditional macro expansions are not ignored anymore.\\n ([specfile#156](https://github.com/packit/specfile/pull/156))\\n- Context managers (`Specfile.sections()`, `Specfile.tags()` etc.) can now be nested\\n and combined together (with one exception - `Specfile.macro_definitions()`), and\\n it is also possible to use tag properties (e.g. `Specfile.version`, `Specfile.license`)\\n inside them. It is also possible to access the data directly, avoiding the `with`\\n statement, by using the `content` property (e.g. `Specfile.tags().content`), but\\n be aware that no modifications done to such data will be preserved. You must use\\n `with` to make changes.\\n ([specfile#153](https://github.com/packit/specfile/pull/153))\\n\\n## Week 50 (December 13th \u2013 December 19th)\\n\\n- Context managers are no longer shared between `Specfile` instances, making it possible\\n to work with more than one `Specfile` instance at a time.\\n ([specfile#157](https://github.com/packit/specfile/pull/157))"},{"id":"/2021","metadata":{"permalink":"/posts/weekly/2021","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/2021.md","source":"@site/weekly/2021.md","title":"2021","description":"Let\'s see what happened in Packit in 2021.","date":"2022-05-16T00:00:00.000Z","formattedDate":"May 16, 2022","tags":[{"label":"2021","permalink":"/posts/weekly/tags/2021"}],"readingTime":18.03,"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"2021","date":"2022-05-16T00:00:00.000Z","tags":["2021"]},"prevItem":{"title":"2022","permalink":"/posts/weekly/2022"},"nextItem":{"title":"2020","permalink":"/posts/weekly/2020"}},"content":"Let\'s see what happened in Packit in 2021.\\n\\n\x3c!--truncate--\x3e\\n\\n## Week 1 (January 4th - January 8th)\\n\\n- Name of the job/command/comment to propose update of downstream package has been synced\\n between CLI and service to `propose-downstream`.\\n `propose-update` is now deprecated. ([packit#1065](https://github.com/packit-service/packit/pull/1065), [packit-service#913](https://github.com/packit/packit-service/pull/913))\\n\\n## Week 2 (January 11th - January 15th)\\n\\n- Branch deletions are now correctly ignored. ([packit-service#919](https://github.com/packit/packit-service/pull/919))\\n- Multiple internal improvements have been done.\\n ([packit#1072](https://github.com/packit/packit/pull/1072),\\n [packit-service#922](https://github.com/packit/packit-service/pull/922),\\n [packit-service#923](https://github.com/packit/packit-service/pull/923))\\n\\n## Week 3 (January 18th - January 22th)\\n\\n- We have temporarily disabled the testing-farm support because the cluster with old runner has died and the new runner is not ready.\\n The tests are now skipped and you get `Testing farm is temporarily disabled.` status until we have the new runner available.\\n ([packit-service#929](https://github.com/packit/packit-service/pull/929))\\n\\n## Week 4 (January 25th - January 29th)\\n\\n- The CLI and the service now detect name of the default branch of a repository\\n instead of assuming it to be called `master`.\\n ([packit#1074](https://github.com/packit/packit/pull/1074),\\n [packit-service#924](https://github.com/packit/packit-service/pull/924))\\n- Build status page now points to the built SRPM uploaded to COPR.\\n ([packit-service#889](https://github.com/packit/packit-service/pull/889))\\n- `propose-downstream` on source-git repositories now always uses `--local-content`.\\n ([packit#1093](https://github.com/packit/packit/pull/1093))\\n- Hunor fixed bug [packit#1089](https://github.com/packit/packit/pull/1089)\\n which caused a wrong revision to be used for certain jobs in Packit Service.\\n- Tomas improved the reliability of our sandboxing service.\\n ([sandcastle#95](https://github.com/packit/sandcastle/pull/95))\\n- Default branches in all [our repositories](https://github.com/packit)\\n have been renamed from `master` to `main`.\\n\\n## Week 5 (February 1st - February 5th)\\n\\n- The service uses new Testing Farm ([API](https://testing-farm.gitlab.io/api/)).\\n We are still working on better user experience and fixing bugs.\\n ([packit-service#875](https://github.com/packit/packit-service/pull/875))\\n- MatejF refactored permission system on pull requests and issues comments and\\n renamed whitelist to allowlist. ([packit-service#936](https://github.com/packit/packit-service/pull/936))\\n- The service now retries failed tasks.\\n ([packit-service#931](https://github.com/packit/packit-service/pull/931))\\n- `--koji-target` option of the CLI\'s `build` command now accepts aliases.\\n ([packit#1052](https://github.com/packit/packit/pull/1052))\\n- The service runs on Fedora 33 now.\\n\\n## Week 6 (February 8th - February 12th)\\n\\n- `--dist-git-branches` option in the CLI\'s `propose-downstream` command was\\n fixed, it now respects set branches.\\n ([packit#1094](https://github.com/packit/packit/pull/1094))\\n- The way Packit adds patches to spec-file in source-git repo was improved, now\\n it shouldn\'t fail if patches are sparsely numbered.\\n ([packit#1100](https://github.com/packit/packit/pull/1100))\\n\\n## Week 7 (February 15th - February 19th)\\n\\n- The service now handles issue/MR comments on Gitlab.\\n ([packit-service#985](https://github.com/packit/packit-service/pull/985))\\n- `packit init` command now works with CentOS packages.\\n ([packit#1106](https://github.com/packit/packit/pull/1106))\\n\\n## Week 8 (February 22th - February 25th)\\n\\n- Sandcastle can run multiple commands in one sandbox, kudos to Tomas.\\n ([sandcastle#93](https://github.com/packit/sandcastle/pull/93))\\n- MatejF & MatejM improved CLI\'s `create-update` to work with EPEL and add password prompt.\\n ([packit#1122](https://github.com/packit/packit/pull/1122),\\n [packit#1127](https://github.com/packit/packit/pull/1127))\\n- Service runs builds for targets from `build` + `test` jobs, kudos to Laura.\\n ([packit-service#996](https://github.com/packit/packit-service/pull/996))\\n- MatejF did a lot of small fixes and improvements of packit-service.\\n ([packit-service#989](https://github.com/packit/packit-service/pull/989),\\n [packit-service#993](https://github.com/packit/packit-service/pull/993),\\n [packit-service#994](https://github.com/packit/packit-service/pull/994))\\n\\n## Week 9 (March 1st - March 5th)\\n\\n- Tomas improved the performance of sandcastle, all the user-defined actions now run in one sandbox.\\n This should also speed up the SRPM builds. ([packit#1129](https://github.com/packit/packit/pull/1129))\\n- You can view the results of jobs directly in our dashboard, kudos to Anchit. ([dashboard#73](https://github.com/packit/dashboard/pull/73))\\n- Jirka implemented setting of the [environment context](https://tmt.readthedocs.io/en/latest/spec/context.html)\\n when running the Testing farm tests. ([packit-service#1008](https://github.com/packit/packit-service/pull/1008))\\n- In Packit there is a new configuration option `sources` which overrides the URLs defined in specfiles.\\n ([packit#1131](https://github.com/packit/packit/pull/1131), [packit#1143](https://github.com/packit/packit/pull/1143))\\n\\n## Week 10 (March 8th - March 12th)\\n\\n- Jirka worked on setting up GitHub Workflows across all of the Packit\\n repositories to build the container images for Packit Service and push them\\n to Quay.io.\\n- Tom\xe1\u0161 fixed a bug in the linearization mechanism used when generating patch\\n files from a series of Git commits. ([packit#1144](https://github.com/packit/packit/pull/1144))\\n- Hunor implemented a way for `packit` to detect if patch-files generated from\\n Git are identical with the ones already in dist-git. This should help\\n avoiding superfluous changes done by `propose-downstream`. ([packit#1133](https://github.com/packit/packit/pull/1133))\\n- Jirka increased the delay (to 3 minutes in total) for Packit Service when\\n retrying downloading the sources during a `propose-downstream` job. This\\n should give more time for the sources to become available after a release is\\n created. ([packit-service#1019](https://github.com/packit/packit-service/pull/1019))\\n- Mat\u011bj fixed an ugly bug which caused Packit Service not to react to\\n installation events. ([packit-service#1018](https://github.com/packit/packit-service/pull/1018))\\n\\n## Week 11 (March 15th - March 19th)\\n\\n- Laura fixed a bug in the processing of GitHub App installations.\\n ([packit-service#1020](https://github.com/packit/packit-service/pull/1020))\\n- Jirka fixed a bug that caused improper numbering of patches for source-git.\\n ([packit#1164](https://github.com/packit/packit/pull/1164))\\n\\n## Week 12 (March 22th - March 26th)\\n\\n- Franta improved database schema. It will help us match builds and tests together more easily and solve some UX problems.\\n ([packit-service#954](https://github.com/packit/packit-service/pull/954))\\n- `packit init` CLI command has been updated to\\n - place downstream packaging files in a subdirectory `.distro` instead of `fedora`.\\n ([packit#1165](https://github.com/packit/packit/pull/1165))\\n - enable using Stream 9 dist-git as a source.\\n ([packit#1177](https://github.com/packit/packit/pull/1177))\\n- Laura reworked how specfiles are being synced from downstream dist-git repositories and we are running a PoC for packit\'s projects to test the new approach.\\n ([packit-service#1023](https://github.com/packit/packit-service/pull/1023))\\n- It\'s possible to specify a distinct test repository for tests in a test job.\\n ([packit#1155](https://github.com/packit/packit/pull/1155))\\n ([packit-service#1021](https://github.com/packit/packit-service/pull/1021))\\n- `centos-stream` target is temporarily resolved to `centos-stream-8` to reflect a change in Copr.\\n ([packit#1167](https://github.com/packit/packit/pull/1167))\\n\\n## Week 13 (March 29th - April 1st)\\n\\n- Jirka fixed a bug in `packit push-update`\\n ([packit#1191](https://github.com/packit/packit/pull/1191)).\\n- Mat\u011bj introduced the `fedora-latest` alias for build and test targets, which\\n resolves to the latest _branched_ Fedora Linux\\n ([packit#1187](https://github.com/packit/packit/pull/1187)).\\n- A custom path for the package config (aka `packit.yaml`) can be specified\\n using a new, top-level `-c, --config` option\\n ([packit#1184](https://github.com/packit/packit/pull/1184)).\\n\\n## Week 14 (April 4th - April 9th)\\n\\n- Honza converted packit\'s test suite from STI to FMF and configured packit to\\n synchronize the suite to Fedora dist-git\\n ([packit#1192](https://github.com/packit/packit/pull/1192)).\\n- Franta fixed a bug in packit which kept only appending targets to an existing\\n COPR project which is no longer a case - dropped targets are now being\\n removed\\n ([packit#1197](https://github.com/packit/packit/pull/1197)).\\n\\n## Week 15 (April 12th - April 16th)\\n\\n- Tom\xe1\u0161 fixed an issue in chaining variable definitions in the RPM macros used\\n to set up source-git repositories with `packit init`\\n ([packit#1206](https://github.com/packit/packit/pull/1206)).\\n- Jirka improved the error message Packit Service emits when the request to\\n start a test in Testing Farm fails\\n ([packit-service#1055](https://github.com/packit/packit-service/pull/1055)).\\n- Laura made Packit Service to set a status for jobs as soon as the requests\\n are received, and before starting any of the jobs\\n ([packit-service#1046](https://github.com/packit/packit-service/pull/1046)).\\n This way users will receive a more immediate feedback about the Service\\n handling their requests.\\n\\n## Week 16 (April 19th - April 23th)\\n\\n- The `current_version_command` and `create_tarball_command` config options are being deprecated\\n in favour of [actions](https://packit.dev/docs/configuration/actions/).\\n An issue will be created in the affected repositories if we find those options in use.\\n ([packit-service#1064](https://github.com/packit/packit-service/pull/1064))\\n- The result pages have been replaced by the views on our dashboard.\\n Let us know what do you think about that and what information do you want to see there.\\n You can expect more changes on this field.\\n - The result views have been implemented by [@IceWreck](https://github.com/IceWreck)\\n ([dashboard#73](https://github.com/packit/dashboard/pull/73)).\\n - The integration on packit-service side has been done by [Ma\u0165o](https://github.com/mfocko)\\n ([packit-service#1056](https://github.com/packit/packit-service/pull/1056),\\n [dashboard#95](https://github.com/packit/dashboard/pull/95)).\\n\\n## Week 17 (April 26th - April 30th)\\n\\n- When initiating a new source-git repo, packit adds info about sources to packit.yaml.\\n Also dist-git sources from the lookaside cache are not commited.\\n ([packit#1208](https://github.com/packit/packit/pull/1208),\\n [packit#1216](https://github.com/packit/packit/pull/1216)).\\n- Franta added support for git repository cache into packit. The service part is yet to be done\\n ([packit#1214](https://github.com/packit/packit/pull/1214)).\\n- Service reacts to `/packit` commands only when they appear alone on a line\\n ([packit-service#1065](https://github.com/packit/packit-service/pull/1065),\\n [packit-service#1083](https://github.com/packit/packit-service/pull/1083)).\\n- Service doesn\'t create duplicate issues when configuration is invalid\\n ([packit-service#1075](https://github.com/packit/packit-service/pull/1075)).\\n- We deprecated `current_version_command` and `create_tarball_command` in packit config\\n ([packit#1212](https://github.com/packit/packit/pull/1212)).\\n\\n## Week 18 (May 3rd - May 7th)\\n\\n- Laura fixed the problem with `fedora-latest` alias\\n ([packit#1222](https://github.com/packit/packit/pull/1222)).\\n- We now have separate workers for short and long running tasks. This should\\n lead to better responsiveness\\n ([packit-service#1059](https://github.com/packit/packit-service/pull/1059),\\n [deployment#202](https://github.com/packit/deployment/pull/202)).\\n\\n## Week 19 (May 10th - May 14th)\\n\\n- Jirka added support for creating Bugzilla bugs for newly created MRs on GitLab\\n ([packit-service#1087](https://github.com/packit/packit-service/pull/1087)).\\n- The installation instructions for failed or unfinished COPR builds are not\\n displayed on the results page ([dashboard#104](https://github.com/packit/dashboard/pull/104)).\\n\\n## Week 20 (May 17th - May 21st)\\n\\n- Hunor created an update-dist-git command\\n ([packit#1228](https://github.com/packit/packit/pull/1228)).\\n- Jan: use packit config as a place to create reference to tests\\n ([packit#1245](https://github.com/packit/packit/pull/1245)).\\n\\n## Week 21 (May 24th - May 28th)\\n\\n- Jirka added attribute for `update-dist-git` command to specify the packaging tool (e.g. `centpkg`).\\n By default, `fedpkg` is used.\\n ([packit#1257](https://github.com/packit/packit/pull/1257),\\n [packit-service#1105](https://github.com/packit/packit-service/pull/1105)).\\n- Tom\xe1\u0161 added support for `patch_id` in the metadata of source-git commits.\\n ([packit#1252](https://github.com/packit/packit/pull/1252))\\n- Hunor improved the strategy of checking Copr results\\n when we don\'t receive that information over message-bus.\\n ([packit-service#1104](https://github.com/packit/packit-service/pull/1104))\\n\\n## Week 22 (May 31st - June 4th)\\n\\n- We have a new [status page](https://status.packit.dev), kudos to Jirka!\\n- Franta fixed a bug that if some action during `propose-downstream` caused an upstream git repository to be dirty,\\n the sync for other branches failed. ([packit-service#1111](https://github.com/packit/packit-service/pull/1111))\\n- `packit generate` is not supported anymore. ([packit#1269](https://github.com/packit/packit/pull/1269))\\n- Tom\xe1\u0161 improved the patch ordering. ([packit#1263](https://github.com/packit/packit/pull/1263))\\n\\n## Week 23 (June 7th - June 11th)\\n\\n- Tom\xe1\u0161 improved the way changelog is passed from source-git repo to dist-git.\\n ([packit#1265](https://github.com/packit/packit/pull/1265))\\n- Hunor created a new subcommand `source-git` to group source-git related commands\\n `init` and `update-dist-git`. ([packit#1273](https://github.com/packit/packit/pull/1273))\\n- Franti\u0161ek improved API by adding `submitted_time` to the test result.\\n ([packit-service#1113](https://github.com/packit/packit-service/pull/1113))\\n\\n## Week 24 (June 14th - June 19th)\\n\\n- Franta started working on packit-service being able to submit test jobs to\\n internal testing farm so teams can test upstream changes against RHEL.\\n ([packit-service#1124](https://github.com/packit/packit-service/pull/1124)\\n [packit#1280](https://github.com/packit/packit/pull/1280))\\n- Hunor continues working on `packit source-git init`: CLI is now more\\n streamlined and simplified, and the command produces source-git repos\\n matching [our documentation]({{< ref \\"create-source-git.md\\" >}}).\\n ([packit#1277](https://github.com/packit/packit/pull/1277))\\n- Ma\u0165o Focko finished his refactoring of the `Upstream` class - should not have\\n impact on our users, but make the code easier to work with.\\n ([packit#1157](https://github.com/packit/packit/pull/1157))\\n\\n## Week 25 (June 21st - June 26th)\\n\\n- Hunor made several improvements to `source-git init`\'s CLI.\\n ([packit#1284](https://github.com/packit/packit/pull/1284))\\n- Thanks to Frantisek there is now one COPR project/repo used for all releases.\\n ([packit-service#1128](https://github.com/packit/packit-service/pull/1128))\\n- Laura fixed a bug in syncing downstream to upstream.\\n ([packit#1285](https://github.com/packit/packit/pull/1285))\\n\\n## Week 26+27 (June 28th - July 9th)\\n\\nSummer is here and vacations with it. Most of the work done in this sprint\\nis either internal (not user facing) or not finished yet.\\n\\n- Thanks to Ma\u0165ejM Packit Service now triggers a new Copr build if no\\n suitable build has been found. That fixes an issue that the service sometimes\\n did not react to `/packit test`.\\n ([packit-service#1132](https://github.com/packit/packit-service/pull/1132))\\n\\n## Week 28 (July 12th - July 16th)\\n\\n- We have a new API endpoint for obtaining projects of a given forge.\\n ([packit-service#1159](https://github.com/packit/packit-service/pull/1159))\\n- The bug causing that some projects couldn\'t be loaded in our dashboard was fixed.\\n ([packit-service#1161](https://github.com/packit/packit-service/pull/1161))\\n\\n## Week 29 (July 19th - July 23th)\\n\\n- Various improvements on our dashboard were done; mainly:\\n - Projects can be filtered by a forge.\\n ([dashboard#124](https://github.com/packit/dashboard/pull/124))\\n - Table with jobs was unified and cleaned.\\n ([dashboard#121](https://github.com/packit/dashboard/pull/121))\\n- Newly, we use the [Checks API](https://docs.github.com/en/rest/reference/checks) to show results on GitHub.\\n You can still see the results on the bottom of the pull-request page,\\n but also in the `Checks` tab.\\n This gives us more options like status with a neutral state\\n (e.g. currently, for permission errors) or a place for showing more details.\\n Don\'t forget to give our GitHub application permissions to use it.\\n You can expect more improvements in this field.\\n ([packit-service#1167](https://github.com/packit/packit-service/pull/1167))\\n\\n## Week 30 (July 26th - July 30th)\\n\\n- Source-git patch metadata: the `squash_commits` key is deprecated. Instead of using this,\\n set the same [`patch_name`](/development/patch-metadata#patch_name) in the commit\\n message of adjacent commits, which should end up in the same patch file.\\n ([packit#1309](https://github.com/packit/packit/pull/1309))\\n- `packit init` can now find a spec file inside of a git repository and set\\n it in `.packit.yaml`. ([packit#1313](https://github.com/packit/packit/pull/1313))\\n- A lot of work has been done on our dashboard:\\n - Status labels on dashboard have been reworked.\\n - New pipelines view for dashboard has been released, where you can see all builds and\\n tests that were recently run for your pull request, release or branch push. Each row\\n represents one pipeline of builds and tests from SRPM all the way to the Testing Farm. \\n ([dashboard#128](https://github.com/packit/dashboard/pull/128))\\n\\n## Week 31 (August 2nd - August 6th)\\n\\n- `sync_release` in API allows specifying a suffix for the newly created branch in a dist-git repo fork,\\n so that there can be more open update PRs for the same dist-git branch at the same time.\\n ([packit#1326](https://github.com/packit/packit/pull/1326))\\n- The behaviour of running tests triggered by `/packit test` comment was improved.\\n If there is no existing Copr build when the tests are triggered,\\n Packit service should now react and create a new build.\\n Also when the last Copr build status is failed,\\n tests are not submitted and users are informed about this.\\n ([packit-service#1188](https://github.com/packit/packit-service/pull/1188))\\n- You can use `oraclelinux-7`/`oraclelinux-8` chroots for build and test of your package on Oracle Linux.\\n ([packit-service#1186](https://github.com/packit/packit-service/pull/1186))\\n\\n## Week 32 (August 9th - August 13th)\\n\\n- `status` command of Packit\'s CLI has been refactored and now provides much cleaner output. ([packit#1329](https://github.com/packit/packit/pull/1329))\\n\\n## Week 33 (August 16th - August 20th)\\n\\n- When reacting to `/packit test`, Packit service sets a status before starting the job\\n to unify the behaviour with reacting to triggering builds. ([packit-service#1187](https://github.com/packit/packit-service/pull/1187))\\n- `packit validate-config` now checks also the value of the `specfile_path` configuration option\\n and shows warning if the specified file is not present in the repository. ([packit#1342](https://github.com/packit/packit/pull/1342))\\n\\n## Week 34 (August 23rd - August 27th)\\n\\n- Packit by default locally merges checked out pull requests into target branch.\\n Logging for checking out pull requests was improved to contain hashes and\\n summaries of last commit on both source and target branches.\\n ([packit#1344](https://github.com/packit/packit/pull/1344))\\n- Packit Service now runs Copr and Koji builds and following tests on Testing Farm\\n for pull requests on the code that would be a result of merging into the target branch.\\n In case merge conflicts occur during preparation of SRPM,\\n you can find more info in the SRPM logs.\\n ([packit-service#1206](https://github.com/packit/packit-service/pull/1206))\\n- Packit\'s CLI `source-git update-dist-git` now supports using Git trailers to define patch metadata,\\n which will control how patches are generated and added to the spec-file.\\n `source-git init` uses this format to capture patch metadata when setting up\\n a source-git repo, instead of the YAML one.\\n To maintain backwards compatibility, the YAML format is still parsed,\\n but only if none of the patches defines metadata using Git trailers.\\n ([packit#1336](https://github.com/packit/packit/pull/1336))\\n- These changes will be applied next week (not this week as usual).\\n\\n## Week 35 (August 30th - September 3rd)\\n\\n- A bug in Packit that caused purging or syncing upstream changelog\\n (when not configured) from specfile when running `propose-downstream` was fixed.\\n New behavior preserves downstream changelog and in case there are either\\n no entries or no %changelog section present, it is created with a new entry.\\n ([packit#1349](https://github.com/packit/packit/pull/1349))\\n\\n## Week 36 (September 6th - September 10th)\\n\\n- `packit source-git init` was updated to try to apply patches with `git am` first, and use `patch` only when this fails, in order to keep the commit message of Git-formatted (mbox) patch files in the source-git history. ([packit#1358](https://github.com/packit/packit/pull/1358))\\n\\n## Week 37 (September 13th - September 17th)\\n\\n- Now you can find URL pointing directly to testing farm results on GitHub Checks page. ([packit-service#1215](https://github.com/packit/packit-service/pull/1215))\\n- Ogr now supports reacting to the comment with a given reaction, getting them in list and deleting them (only when reaction is added by using ogr API). ([ogr#636](https://github.com/packit/ogr/pull/636))\\n- Packit now provides `PACKIT_RPMSPEC_RELEASE` environment variable in actions. ([packit#1363](https://github.com/packit/packit/pull/1363))\\n- Dashboard no longer shrinks Copr/Koji icons when being open in narrow view. ([dashboard#140](https://github.com/packit/dashboard/pull/140))\\n\\n## Week 38 (September 20th - September 24th)\\n\\n- [Dashboard](https://dashboard.packit.dev) now shows more readable format of time,\\n e.g. \\"just now\\", \\"a minute ago\\", etc. If you wish to see exact date-time of\\n the run, you can either hover over the time and tooltip with details appear.\\n In case of result pages more readable format is present in the tooltip rather\\n than by default. Also times are now shown in your local time zone. ([dashboard#142](https://github.com/packit/dashboard/pull/142))\\n- Packit can now read commit messages from a patch to support characters which cannot be encoded with UTF-8. ([packit#1372](https://github.com/packit/packit/pull/1372))\\n- EPEL targets are now being mapped to CentOS Linux inside the internal Testing Farm runs. ([packit-service#1225](https://github.com/packit/packit-service/pull/1225))\\n\\n## Week 39 (September 27th - October 1st)\\n\\n- Clicking on logo on [dashboard](https://dashboard.packit.dev/) no longer\\n opens a new page, but rather reloads the current one.\\n- We consider [Pipelines view](https://dashboard.packit.dev/pipelines) on\\n dashboard to be ready for production use. We\'re planning to improve the user\\n experience when using pipelines with easier navigation and filtering\\n options.\\n- Building the latest development versions of\\n [packit](https://github.com/packit/packit) and\\n [ogr](https://github.com/packit/ogr) was moved to the\\n [packit/packit-dev](https://copr.fedorainfracloud.org/coprs/packit/packit-dev/)\\n Copr repo.\\n\\n## Week 40 (October 4th - October 8th)\\n\\n- [A bug](https://github.com/packit/packit/issues/1255) in Packit causing\\n issues with local build when the branch was named with prefix `rpm` has been\\n fixed.\\n- To fulfill requests regarding updating targets on Copr repositories, Packit\\n Service will sync targets for the projects created by Packit Service (e.g.\\n pull requests, or non-set Copr repository for releases and branch builds)\\n and for Copr repositories **not owned by Packit** will try to extend the\\n list if necessary.\\n- If you trigger packit jobs with one of `/packit _` commands, our bot gives\\n you a \ud83d\udc4d reaction to let you know that we are working on it.\\n- Rerunning of failed tasks via GitHub Checks interface is now supported. You are now free to click those \\"Re-run\\" links.\\n- [ogr documentation](https://packit.github.io/ogr/) is converted to\\n Google-style docstrings. In case there are any discrepancies, missing docs\\n or docstrings in different format, please open an issue.\\n\\n## Week 41 (October 11th - October 15th)\\n\\n- We have added a new option to Packit CLI when creating Bodhi updates, you can\\n use `-b` or `--resolve- bugzillas` and specify IDs (separated by comma, e.g.\\n `-b 1` or `-b 1,2,3`) of bugzillas that are being closed by the update.\\n ([packit#1383](https://github.com/packit/packit/pull/1383))\\n- Packit will deduce the version for SRPM from the spec file, if there are no\\n git tags or action for acquiring current version defined.\\n ([packit#1388](https://github.com/packit/packit/pull/1388))\\n- It is possible to use `aarch64` architecture in the Testing Farm.\\n ([packit-service#1247](https://github.com/packit/packit-service/pull/1247))\\n- Running tests via Testing Farm now supports `centos-6` target.\\n ([packit-service#1244](https://github.com/packit/packit-service/pull/1244))\\n\\n## Week 42 (October 18th - October 22th)\\n\\n- We have introduced new options for generating SRPM packages:\\n ([packit#1396](https://github.com/packit/packit/pull/1396))\\n - `--no-bump` that prevents changing of the release in the SRPM,\\n which can be used for creating SRPMs on checked out tags/releases.\\n - `--release-suffix` that allows you to customize the suffix after the release number,\\n e.g. reference bugzilla or specific branch of the build.\\n- Copr build installation instructions now contain detailed info about\\n the built packages, so you can install the precise build from your pull request.\\n ([dashboard#149](https://github.com/packit/dashboard/pull/149))\\n\\n## Week 43 (October 25th - November 1st)\\n\\n- We have introduced a new configuration option `merge_pr_in_ci` that allows you to disable merging of PR into the base branch before creating SRPM in service. ([packit#1395](https://github.com/packit/packit/pull/1395), [packit-service#1261](https://github.com/packit/packit-service/pull/1261))\\n- If the upstream spec file is located in a subdirectory (such as\\n `packaging/fedora/pkg.spec`), it is now correctly synced to the root of\\n the downstream repository, since that\'s where rpmbuild will look\\n for it. ([packit#1402](https://github.com/packit/packit/pull/1402))\\n- The \\"Congratulations!\\" comment no longer has a disclaimer about our intentions to stop posting it by default. We have already made that move earlier this year, so the disclaimer is no longer relevant. ([packit-service#1260](https://github.com/packit/packit-service/pull/1260))\\n- Deprecated configuration options `current_version_command` and `create_tarball_command` have been removed and are no longer supported. They are superseded by actions `get-current-version` and `create-archive`. ([packit#1397](https://github.com/packit/packit/pull/1397))\\n\\n## Week 44 (November 1st - November 5th)\\n\\n- We have fixed several issues in packit when it\'s periodically checking\\n statuses of jobs. You should now reliably see up to date check statuses for\\n Copr RPM builds and Testing Farm runs.\\n ([packit-service#1267](https://github.com/packit/packit-service/pull/1267)),\\n ([packit-service#1265](https://github.com/packit/packit-service/pull/1265))\\n- Fixed an issue, which raised a `UnicodeEncodingError`, when working with\\n dist-git patch files with an encoding other than UTF-8.\\n ([packit#1406](https://github.com/packit/packit/pull/1406))\\n- Backup alias definitions now reflect the official release of Fedora 35.\\n ([packit#1405](https://github.com/packit/packit/pull/1405))\\n\\n## Week 45 (November 8th - November 12th)\\n\\n- You can now specify `skip_build` option in the test job metadata in the\\n Packit configuration file. This will cause no Copr build to be built and\\n installed into the testing environment, but only trigger the tests in\\n Testing Farm (the selected components to be installed should be part of the\\n TMT definitions).\\n ([packit-service#1256](https://github.com/packit/packit-service/pull/1256))\\n- Packit supports `changelog-entry` action that is used when creating SRPM.\\n The action is supposed to generate whole changelog entry (including `- ` at\\n the start of the lines) and has a priority over any other way we modify the\\n changelog with. ([packit#1367](https://github.com/packit/packit/pull/1367))\\n\\n## Week 46 (November 15th - November 19th)\\n\\n- A new `env` config option has been added for specifying environment variables,\\n which are then passed to Testing Farm along with some more pre-defined\\n variables (e.g. name of the project, URL, etc).\\n ([packit#1411](https://github.com/packit/packit/pull/1411))\\n ([packit-service#1275](https://github.com/packit/packit-service/pull/1275))\\n- The GitHub check run names are now shorter and easier to read.\\n ([packit-service#1281](https://github.com/packit/packit-service/pull/1281))\\n\\n## Week 47 (November 22th - November 26th)\\n\\n- You can set up a new `koji_build` job using the commit trigger to submit a\\n Koji build for a new commit in a dist-git branch. The configuration file\\n needs to be present in the dist-git for now\\n (the state for the new commit is used).\\n ([packit-service#1278](https://github.com/packit/packit-service/pull/1278))\\n\\n## Week 48 (November 29th - December 3rd)\\n\\n- External contributors can\'t trigger internal tests initially. Project\\n maintainers need to trigger the action via `/packit test` comment to run\\n the job.\\n ([packit-service#1302](https://github.com/packit/packit-service/pull/1302))\\n ([packit-service#1305](https://github.com/packit/packit-service/pull/1305))\\n- A new `packit prepare-sources` command has been implemented for preparing\\n sources for an SRPM build using the content of an upstream repository.\\n ([packit#1424](https://github.com/packit/packit/pull/1424))\\n- Packit now visibly informs about an ongoing cloning process to remove\\n potential confusion.\\n ([packit#1431](https://github.com/packit/packit/pull/1431))\\n- The `upstream_package_name` config option is now checked for illegal\\n characters and an error is thrown if it contains them.\\n ([packit#1434](https://github.com/packit/packit/pull/1434))\\n\\n## Week 49 (December 6th - December 12th)\\n\\n- Packit now correctly finds the release event if you don\'t use the version as a release title.\\n ([packit#1437](https://github.com/packit/packit/pull/1437))"},{"id":"/2020","metadata":{"permalink":"/posts/weekly/2020","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/2020.md","source":"@site/weekly/2020.md","title":"2020","description":"Let\'s see what happened in Packit in 2020.","date":"2022-01-04T00:00:00.000Z","formattedDate":"January 4, 2022","tags":[{"label":"2020","permalink":"/posts/weekly/tags/2020"}],"readingTime":22.565,"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"2020","date":"2022-01-04T00:00:00.000Z","tags":["2020"]},"prevItem":{"title":"2021","permalink":"/posts/weekly/2021"},"nextItem":{"title":"2019","permalink":"/posts/weekly/2019"}},"content":"Let\'s see what happened in Packit in 2020.\\n\\n\x3c!--truncate--\x3e\\n\\n## Week 1\\n\\n### packit\\n\\n- Correctly updates version on srpm build. ([#642](https://github.com/packit-service/packit/pull/642))\\n- Downloads all URL sources before srpm build. ([#643](https://github.com/packit-service/packit/pull/643))\\n\\n### packit service\\n\\n- Runs on Fedora 31. ([#303](https://github.com/packit-service/packit-service/pull/303), [#304](https://github.com/packit-service/packit-service/pull/304))\\n- Correctly checks list of whitelisted repositories when issue comment is added. ([#309](https://github.com/packit-service/packit-service/pull/309))\\n\\n## Week 2\\n\\n### packit\\n\\n- Incorporates lots of SRPM related improvements. ([#646](https://github.com/packit-service/packit/pull/646), [#650](https://github.com/packit-service/packit/pull/650), [#651](https://github.com/packit-service/packit/pull/651), [#652](https://github.com/packit-service/packit/pull/652), [#653](https://github.com/packit-service/packit/pull/653))\\n- Better handles when Copr owner is not set. ([#648](https://github.com/packit-service/packit/pull/648))\\n\\n### packit service\\n\\n- Fixes SRPM exceptions/errors handling. ([#311](https://github.com/packit-service/packit-service/pull/311), [#317](https://github.com/packit-service/packit-service/pull/317))\\n- Has loading of config fixed. ([#318](https://github.com/packit-service/packit-service/pull/318))\\n\\n## Week 3\\n\\n### packit\\n\\n- Uses [Marshmallow](https://pypi.org/project/marshmallow) for configuration schema. ([#657](https://github.com/packit-service/packit/pull/657))\\n- Is able to build in [Koji](https://koji.fedoraproject.org) from upstream/source-git. ([#658](https://github.com/packit-service/packit/pull/658))\\n- Doesn\'t download remote sources when \\"sources\\" path exists in upstream. ([#659](https://github.com/packit-service/packit/pull/659))\\n- Configuration file allows list syntax in action commands. ([#663](https://github.com/packit-service/packit/pull/663))\\n- Configuration can use a new option to exclude paths from patching. ([#666](https://github.com/packit-service/packit/pull/666))\\n- Has few less bugs. ([#660](https://github.com/packit-service/packit/pull/660), [#661](https://github.com/packit-service/packit/pull/661), [#664](https://github.com/packit-service/packit/pull/664), [#667](https://github.com/packit-service/packit/pull/667))\\n\\n### packit service\\n\\n- Uses [Marshmallow](https://pypi.org/project/marshmallow) for configuration schema. ([#320](https://github.com/packit-service/packit-service/pull/320))\\n- Runs build for test job even when it\'s not explicitly configured. ([#324](https://github.com/packit-service/packit-service/pull/324))\\n- Reports invalid or missing packit config. ([#328](https://github.com/packit-service/packit-service/pull/328))\\n- Status workflow has been changed and simplified. ([#338](https://github.com/packit-service/packit-service/pull/338))\\n- Minor fixes. ([#323](https://github.com/packit-service/packit-service/pull/323), [#326](https://github.com/packit-service/packit-service/pull/326), [#329](https://github.com/packit-service/packit-service/pull/329), [#331](https://github.com/packit-service/packit-service/pull/331), [#335](https://github.com/packit-service/packit-service/pull/335), [#336](https://github.com/packit-service/packit-service/pull/336))\\n\\n## Week 4\\n\\n### packit\\n\\n- [0.8.1](https://pypi.org/project/packitos/0.8.1/) has been released.\\n- CLI has bash auto completion. ([#654](https://github.com/packit-service/packit/pull/654))\\n- Few bugs have been squashed. ([#668](https://github.com/packit-service/packit/pull/668), [#670](https://github.com/packit-service/packit/pull/670), [#676](https://github.com/packit-service/packit/pull/676), [#677](https://github.com/packit-service/packit/pull/677), [#678](https://github.com/packit-service/packit/pull/678), [#680](https://github.com/packit-service/packit/pull/680), [#682](https://github.com/packit-service/packit/pull/682))\\n\\n### packit service\\n\\n- More checks messages have been unified. ([#355](https://github.com/packit-service/packit-service/pull/355))\\n- One more testing-farm status is now shown before the tests are submitted. ([#343](https://github.com/packit-service/packit-service/pull/343))\\n- No-fmf scenario has better messages. ([#362](https://github.com/packit-service/packit-service/pull/362))\\n- Minor fixes and improvements. ([#339](https://github.com/packit-service/packit-service/pull/339), [#340](https://github.com/packit-service/packit-service/pull/340), [#342](https://github.com/packit-service/packit-service/pull/342), [#345](https://github.com/packit-service/packit-service/pull/345), [#346](https://github.com/packit-service/packit-service/pull/346), [#347](https://github.com/packit-service/packit-service/pull/347), [#348](https://github.com/packit-service/packit-service/pull/348), [#352](https://github.com/packit-service/packit-service/pull/352), [#353](https://github.com/packit-service/packit-service/pull/353), [#350](https://github.com/packit-service/packit-service/pull/350), [#357](https://github.com/packit-service/packit-service/pull/357), [#358](https://github.com/packit-service/packit-service/pull/358), [#361](https://github.com/packit-service/packit-service/pull/361), [#364](https://github.com/packit-service/packit-service/pull/364))\\n\\n## Week 5\\n\\n### packit\\n\\n- CLI has a new command for local build. ([#687](https://github.com/packit-service/packit/pull/687))\\n- Logs less. ([#685](https://github.com/packit-service/packit/pull/685))\\n\\n### packit service\\n\\n- Minor fixes and improvements. ([#365](https://github.com/packit-service/packit-service/pull/365), [#371](https://github.com/packit-service/packit-service/pull/371), [#373](https://github.com/packit-service/packit-service/pull/373), [#376](https://github.com/packit-service/packit-service/pull/376))\\n\\n## Week 6\\n\\nBoth Packit and Packit Service pre-commit hooks [were][1] [updated][2] to include\\n[prettier] and [setup-cfg-fmt], in order to have a more consistent formatting of\\nmarkup, YAML, JSON and `setup.cfg` files.\\n\\nIt became easier for developers to [build the Packit base image] locally, and\\ntests in Zuul [were configured] to run on Fedora 31.\\n\\nPackit learned [how to look for RPM spec files on its own], so specifying\\n`specfile_path` in the configuration is not mandatory anymore. Packit will\\nrecursively search the tree and use the first spec file found.\\n\\nThe Redis pod in Packit Service uses an up to date image now, [based on Fedora 31].\\nKudos to [hhorak] for the help!\\n\\n[1]: https://github.com/packit-service/packit/pull/697\\n[2]: https://github.com/packit-service/packit-service/pull/383\\n[prettier]: https://github.com/prettier/prettier\\n[setup-cfg-fmt]: https://github.com/asottile/setup-cfg-fmt\\n[build the packit base image]: https://github.com/packit-service/packit/pull/695\\n[were configured]: https://github.com/packit-service/packit/pull/694\\n[how to look for rpm spec files on its own]: https://github.com/packit-service/packit/pull/634\\n[based on fedora 31]: https://github.com/packit-service/deployment/pull/51\\n[hhorak]: https://github.com/hhorak\\n\\n## Week 7\\n\\nThe default configuration generated by Packit has [test jobs enabled] from now\\non. This should simplify configuring Packit in new repositories.\\n\\n[Fixed a bug] which was causing SRPM-build failures in Packit Service for projects\\nwhich had their spec files stored in a subdirectory.\\n\\nAs a result of [keys.fedoraproject.org] being turned off, Packit now [tries] a\\nlist of GPG keyservers when downloading keys to check commit signatures.\\n\\nWhen enabling Packit Service for new GitHub repositories, instead of checking\\nif the requester is a Fedora packager, we\'ll check if they [signed the Fedora\\nProject Contributor Agreement].\\n\\nWhile proposing an update to Fedora, Packit Service will [report a failure] now\\nwhen there are no releases found in the upstream GitHub repository.\\n\\nTest results became [serializable], we will not block when [no test results\\nare received], and Packit Service received [some initial code] to enable using\\nPostgreSQL as a data backend.\\n\\n[test jobs enabled]: https://github.com/packit-service/packit/pull/703\\n[fixed a bug]: https://github.com/packit-service/packit/pull/698\\n[tries]: https://github.com/packit-service/packit/pull/699\\n[keys.fedoraproject.org]: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/COEYWJBQDAWRSYNQW7Y7TD2EKEGBWOAY/\\n[signed the fedora project contributor agreement]: https://github.com/packit-service/packit-service/pull/403\\n[no test results are received]: https://github.com/packit-service/packit-service/pull/388\\n[some initial code]: https://github.com/packit-service/packit-service/pull/319\\n[report a failure]: https://github.com/packit-service/packit-service/pull/399\\n[serializable]: https://github.com/packit-service/packit-service/pull/391\\n\\n## Week 8\\n\\nPostgresql database was introduced in production environment to improve performance and enable implementation\\nof new features, e.g. storing logs to reduce amount of messages sent directly to pull request [(#406)], [(#420)].\\n\\nCleanup in configuration files was performed, so no longer needed values were removed from .packit.yaml [(#709)].\\nUser experience was improved by adding new `--upstrem-ref` option to `copr-build` command in command-line interface [(#718)]\\nand making error reporting more robust by adding new fedpkg clones related error message [(#714)].\\n\\nFollowing bugs were fixed:\\n\\n- bug in copr-build command fixed [(#713)]\\n- get_local_package_config() duplicate entries in \'directories\' bug fixed [(#715)]\\n\\n[(#709)]: https://github.com/packit-service/packit/pull/709\\n[(#718)]: https://github.com/packit-service/packit/pull/718\\n[(#714)]: https://github.com/packit-service/packit/pull/714\\n[(#713)]: https://github.com/packit-service/packit/pull/713\\n[(#715)]: https://github.com/packit-service/packit/pull/715\\n[(#406)]: https://github.com/packit-service/packit-service/pull/406\\n[(#420)]: https://github.com/packit-service/packit-service/pull/420\\n\\n## Week 9\\n\\n### packit\\n\\n- Dist-git patches are now applied in source-git repos with `-p1` to resolve an issue when they are generated with git and patch program fails to apply them [(#730)].\\n- Fedora 32 was added to \'fedora-all\' and \'fedora-development\' aliases [(#731)].\\n- We have put more links to our documentation (README, deprecation warning in packit) so that people can easily correct their configuration files [(#726)].\\n\\n### packit-service\\n\\n- `targets` key in copr job definition in the packit.yaml is no longer a required field (it defaults to `fedora-stable`) [(#431)].\\n- Builds are now correctly linked to their actual GitHub projects (this can be seen in the logs view) [(#441)].\\n\\n[(#730)]: https://github.com/packit-service/packit/pull/730\\n[(#731)]: https://github.com/packit-service/packit/pull/731\\n[(#726)]: https://github.com/packit-service/packit/pull/726\\n[(#431)]: https://github.com/packit-service/packit-service/pull/431\\n[(#441)]: https://github.com/packit-service/packit-service/pull/441\\n\\n## Week 10 (March 2nd - March 6th)\\n\\n### packit\\n\\n- The generate command is now deprecated in favour of the init command\\n [(#728)], contributed by [@shreyaspapi](https://github.com/shreyaspapi).\\n\\n### packit-service\\n\\n- When a non-collaborator creates a PR, packit says that only \\"Collaborators\\n can trigger packit-service\\" - this message has been improved to better match\\n the reality [(#445)].\\n- Packit service no longer posts comments on pull requests when a SRPM can\'t be\\n created - the logs should be now aviable in the service\'s logs view available\\n when clocking on the commit status check URL [(#447)].\\n- Commands to control packit service can now be embedded in a comment\\n (previously, the whole comment was treated as a command) - hence you can now\\n create a comment to give an update and also trigger packit [(#433)],\\n contributed by [@IceWreck](https://github.com/IceWreck).\\n- We have improved monitoring of packit-service by using more sentry.io\'s\\n features [(#458)].\\n- You can now disable the functionality when packit service comments on a PR\\n when it gets built for the first time (`notifications: {pull_request: {successful_build:: false}}` in your packit.yaml), hi\\n [Lars](https://github.com/larskarlitski)! [(#455)].\\n\\n[(#728)]: https://github.com/packit-service/packit/pull/728\\n[(#445)]: https://github.com/packit-service/packit-service/pull/445\\n[(#447)]: https://github.com/packit-service/packit-service/pull/447\\n[(#433)]: https://github.com/packit-service/packit-service/pull/433\\n[(#458)]: https://github.com/packit-service/packit-service/pull/458\\n[(#455)]: https://github.com/packit-service/packit-service/pull/455\\n\\n## Week 11 (March 9th - March 13th)\\n\\n### packit\\n\\n- We have changed how packit treats version and release in the spec file [(#748)].\\n - We handle the `git-describe` output better which should help when tags\\n contain dashes [(#759)].\\n- When packit adds source-git patches into a spec file it adds them outside\\n of rpm macros now [(#760)].\\n- In pull request pipelines we run the packit-service tests so that we are sure we\\n do not break the service [(#752)].\\n\\n### packit-service\\n\\n- Comments from packit-service about successful `propose-update` in the issue\\n which triggered the update now include the URL of the new pull-request in Fedora [(#472)].\\n- We have done some major refactoring how jobs are processed\\n [(#476)], [(#746)], [(#453)].\\n- Development and debugging of the packit-service should be easier now, we\\n documented how to run packit-service locally [(#473)].\\n\\n[(#746)]: https://github.com/packit-service/packit/pull/746\\n[(#748)]: https://github.com/packit-service/packit/pull/748\\n[(#752)]: https://github.com/packit-service/packit/pull/752\\n[(#759)]: https://github.com/packit-service/packit/pull/759\\n[(#760)]: https://github.com/packit-service/packit/pull/760\\n[(#472)]: https://github.com/packit-service/packit-service/pull/472\\n[(#473)]: https://github.com/packit-service/packit-service/pull/473\\n[(#476)]: https://github.com/packit-service/packit-service/pull/476\\n[(#453)]: https://github.com/packit-service/packit-service/pull/453\\n\\n## Week 12 (March 16th - March 20th)\\n\\n### packit\\n\\n- When you are executing `copr-build` command, you do not\\n need to set the project name if this value is defined in\\n the `copr_build` job in the configuration file [(#763)].\\n- All patches generated from a source-git repo are now prefixed with a number\\n so they are easy to sort [(#765)].\\n- We improved the behaviour when loading the authentication in the config file -\\n users are warned only if deprecated keys are used, no more confusing messages when\\n you do not have `authentication` key in the configuration [(#754)].\\n\\n### packit-service\\n\\n- We periodically check the status of the copr-build so that we do not need to rely\\n on the Fedora message bus. This should avoid failures in build status reporting [(#490)].\\n- `Propose-update` triggered by comment in GitHub now recognizes also pre-releases [(#498)].\\n- Several bugs in how we report results from Testing farm have been fixed and Testing\\n farm results should now appear correctly in commit status checks\\n [(#496)], [(#505)], [(#510)], [(#513)].\\n\\n[(#765)]: https://github.com/packit-service/packit/pull/765\\n[(#754)]: https://github.com/packit-service/packit/pull/754\\n[(#763)]: https://github.com/packit-service/packit/pull/763\\n[(#490)]: https://github.com/packit-service/packit-service/pull/490\\n[(#498)]: https://github.com/packit-service/packit-service/pull/498\\n[(#497)]: https://github.com/packit-service/packit-service/pull/497\\n[(#496)]: https://github.com/packit-service/packit-service/pull/496\\n[(#505)]: https://github.com/packit-service/packit-service/pull/505\\n[(#510)]: https://github.com/packit-service/packit-service/pull/510\\n[(#513)]: https://github.com/packit-service/packit-service/pull/513\\n\\n## Week 13 (March 23th - March 27th)\\n\\n- New Packit version 0.9.0 was released.\\n- Packit Service now mostly uses PostgreSQL instead of Redis as a backend,\\n which will result in more responsive API and Dashboard.\\n\\n## Week 14 (March 30th - April 3rd)\\n\\n### packit\\n\\n- Fix web URLs for Copr builds owned by groups [(#778)].\\n- Create downstream spec if it\'s not there (propose-update) - this used to happen when using packit on a newly created package in Fedora which did not have spec fille added yet. [(#779)]\\n- Packit no longer inspects archive extension set in `Source` and creates `.tar.gz` by default - this should be more flexible and prevent issues for \\"non-standard\\" archive names. [(#781)]\\n\\n### packit-service\\n\\n- Several fixes and improvements after switching data store from Redis to PostgreSQL.\\n- Use the configured COPR project when triggering Testing Farm (tests no longer fail for projects which are built in their own COPR namespace) [(#524)].\\n\\n[(#778)]: https://github.com/packit-service/packit/pull/778\\n[(#779)]: https://github.com/packit-service/packit/pull/779\\n[(#781)]: https://github.com/packit-service/packit/pull/781\\n[(#524)]: https://github.com/packit-service/packit-service/pull/524\\n\\n## Week 15 (March 6th - April 9th)\\n\\n### packit\\n\\n- [Tom\xe1\u0161] finished teaching `packit srpm` to [linearise extremely complex Git\\n histories], in order to get patches that can be applied when building the\\n SRPM.\\n- [Jirka] made the schema validation code [Marshmallow3 compatible]. This\\n enables building `packit` in Fedora 32 and Rawhide.\\n\\n### packit-service\\n\\n- [Franta] fixed an issue with [parsing release events].\\n- [Jirka] made code [Marshmallow3] compatible in this project, too.\\n\\n[tom\xe1\u0161]: https://github.com/TomasTomecek\\n[jirka]: https://github.com/jpopelka\\n[franta]: https://github.com/lachmanfrantisek\\n[linearise extremely complex git histories]: https://github.com/packit-service/packit/pull/766\\n[marshmallow3 compatible]: https://github.com/packit-service/packit/pull/775\\n[marshmallow3]: https://github.com/packit-service/packit-service/pull/538\\n[parsing release events]: https://github.com/packit-service/packit-service/issues/536\\n\\n## Week 16 (April 14th - April 17th)\\n\\n### packit & packit-service\\n\\n- Job metadata field `dist-git-branch` is now marked as deprecated, to be\\n replaced by `dist_git_branches` to match the naming of other metadata fields\\n and to accept multiple branch names where Packit should work. ([#797],\\n [#788] and [#564]).\\n- A great deal of refactoring, CI work and general code improvements which\\n will make Packit and Packit Service run smoother and development easier.\\n\\n[#797]: https://github.com/packit-service/packit/pull/797\\n[#788]: https://github.com/packit-service/packit/pull/788\\n[#564]: https://github.com/packit-service/packit-service/pull/564\\n\\n## Week 17 (April 20th - April 24th)\\n\\n### packit-service\\n\\nIn this week we mostly focused on CentOS Stream and\\nsome under the hood improvements,\\nnone of which are available for GitHub projects.\\n\\n- [Jano] did a lot of work on [initial CentOS Stream integration].\\n- [Hunor] added a Pagure build status reporting.\\n- [Anchit] added first API tests and improved build statuses given by the API.\\n- [Laura] and [Rishav] improved how data about Copr builds are stored in our db.\\n\\n[anchit]: https://github.com/IceWreck\\n[hunor]: https://github.com/csomh\\n[jano]: https://github.com/sakalosj\\n[laura]: https://github.com/lbarcziova\\n[rishav]: https://github.com/rishavanand\\n[initial centos stream integration]: https://github.com/packit-service/packit-service/pull/515\\n\\n## Week 18 (April 27th - April 30th)\\n\\n### packit-service\\n\\n- [Franta] did a great deal of service & worker refactoring related to CentOS ([#586])\\n and to forks usage in GitHub. ([#589])\\n- [Hunor] fixed confusing GitHub status messages while building in Copr. ([#588])\\n\\n[#586]: https://github.com/packit-service/packit-service/pull/586\\n[#588]: https://github.com/packit-service/packit-service/pull/588\\n[#589]: https://github.com/packit-service/packit-service/pull/589\\n\\n## Week 19 (May 4th - May 6th)\\n\\n### packit\\n\\n- The image now uses ogr from git master instead of from Fedora stable RPM.\\n\\n### packit-service\\n\\n- [Franta] Fixed a previous week introduced bug, which prevented users from being whitelisted. ([#599])\\n- [Hunor] Made improvements to avoid a race condition in getting app access token. ([#601])\\n\\n[franta]: https://github.com/lachmanfrantisek\\n[hunor]: https://github.com/csomh\\n[#599]: https://github.com/packit-service/packit-service/pull/599\\n[#601]: https://github.com/packit-service/packit-service/pull/601\\n\\n## Week 20+21 (May 11th - May 22th)\\n\\n### packit\\n\\n- The debug logs in the CLI are now much more consistent. ([#824])\\n- A bug in the `propose-update` causing problems with the synchronization of the spec-file content was fixed. ([#830])\\n- You can now use `epel-all` alias in the arguments and also in the configuration. ([#835])\\n\\n### packit-service\\n\\n- In job definition for packit-service you can use `epel-all` alias as well. ([#835])\\n\\n[#824]: https://github.com/packit-service/packit/pull/824\\n[#830]: https://github.com/packit-service/packit/pull/830\\n[#835]: https://github.com/packit-service/packit/pull/835\\n\\n## Week 22 (May 25th - May 29th)\\n\\n### packit\\n\\n- [The problem with kerberos initialization](https://github.com/packit-service/packit/issues/837)\\n was fixed. ([#838])\\n- We released a new version of the packit package. ([release 0.11.0])\\n- We have been also working on some smaller issues and preparation steps for our future work.\\n ([#841], [#843], [#846], [#847])\\n\\n[#838]: https://github.com/packit-service/packit/pull/838\\n[#841]: https://github.com/packit-service/packit/pull/841\\n[#843]: https://github.com/packit-service/packit/pull/843\\n[#846]: https://github.com/packit-service/packit/pull/846\\n[#847]: https://github.com/packit-service/packit/pull/847\\n[release 0.11.0]: https://github.com/packit-service/packit/releases/tag/0.11.0\\n\\n### packit-service\\n\\n- [Jirka] implemented creating a new bug in Bugzilla for CentOS Stream pull-requests ([#627]).\\n This will be triggered when the label \\"accepted\\" is added to a PR in the (near) future.\\n- You will be able to use aliases also for koji builds. ([packit:#839], [#632])\\n- [Laura] fixed [a problem](https://github.com/packit-service/packit-service/issues/535)\\n with missing builds when triggering Packit Service with `/packit test`.\\n Now, we trigger the build first if there are no builds for the pull-request yet. ([#631])\\n\\n[jirka]: https://github.com/jpopelka\\n[laura]: https://github.com/lbarcziova\\n[#627]: https://github.com/packit-service/packit-service/pull/627\\n[packit:#839]: https://github.com/packit-service/packit/pull/839\\n[#632]: https://github.com/packit-service/packit-service/pull/632\\n[#631]: https://github.com/packit-service/packit-service/pull/631\\n\\n## Week 23 (June 1st - June 5th)\\n\\nHello everyone, during this week we didn\'t manage to implement any significant new features - most of the work happened under the hood.\\n\\n### packit\\n\\n- We have fixed a formatting issue when packit prints installation instructions for using builds from a copr repo (by [@lachmanfrantisek](https://github.com/lachmanfrantisek), [#852](https://github.com/packit-service/packit/pulls/852)).\\n- You are able to set up builds when you push to a branch, we have set this up for master branch of packit, feel free to get inspired (by [@lachmanfrantisek](https://github.com/lachmanfrantisek), [#851](https://github.com/packit-service/packit/pulls/851)).\\n\\n### packit-as-a-service\\n\\n- We have run into multiple problems when you set up jobs for PRs and branch pushes - there were multiple fixes for this, packit-service wasn\'t able to work well with the fact that there are multiple jobs defined for the same job type - e.g. build.\\n\\n## Week 24 (June 8th - June 11th)\\n\\n### packit\\n\\n- [Tomas](https://github.com/TomasTomecek) re-implemented overriding of package config per job. This will enable overriding configuration for builds and releases once the corresponding changes are merged in Packit-as-a-Service. ([#858](https://github.com/packit-service/packit/pull/858), [#859](https://github.com/packit-service/packit/pull/859)).\\n\\n### packit-as-a-service\\n\\n- We are now parsing events from Koji about the progress of the builds and report them (by [Franta](https://github.com/lachmanfrantisek/), [#657](https://github.com/packit-service/packit-service/pull/657)).\\n- We are now able to listen to Gitlab hooks and parse the (comment & push) events (by [Shreyas](https://github.com/shreyaspapi), [#629](https://github.com/packit-service/packit-service/pull/629), [#671](https://github.com/packit-service/packit-service/pull/671)).\\n- Log pages have been restructured by linking SRPM build logs instead of including them (by [Hunor](https://github.com/csomh), [#641](https://github.com/packit-service/packit-service/pull/641)).\\n\\n## Week 25 (June 15th - June 19th)\\n\\n### packit\\n\\n- Packit logs more information for RebaseHelper errors (by [@csomh](https://github.com/csomh), [#865](https://github.com/packit-service/packit/pull/865)).\\n\\n### packit-as-a-service\\n\\n- Obtaining builds via packit [API endpoint](https://prod.packit.dev/api/copr-builds) is now significantly quicker (by [@IceWreck](https://github.com/IceWreck), [#674](https://github.com/packit-service/packit-service/pull/674)).\\n- We now have an API endpoint for obtaining results from testing farm (by [@IceWreck](https://github.com/IceWreck), [#678](https://github.com/packit-service/packit-service/pull/678)).\\n- We finished the implementation of the trigger to create bugs in Bugzilla. Therefore packit is now able to create bugzilla for accepted PR\'s in CentOS (by [@jpopelka](https://github.com/jpopelka), [#662](https://github.com/packit-service/packit-service/pull/662)).\\n\\n## Week 26 (June 22th - June 26th)\\n\\n### packit\\n\\n- packit now supports using custom repositories and packages when building in Copr and has options to preserve the project and to list it in on the Copr home page [@lachmanfrantisek](https://github.com/lachmanfrantisek), [#872](https://github.com/packit-service/packit/pull/872).\\n- Custom commands defined by user in packit config now are run in the shell, no more `bash -c` required (by [@TomasTomecek](https://github.com/TomasTomecek), [#871](https://github.com/packit-service/packit/pull/871)).\\n- packit now includes pull request ID in version of rpm. (by [@sturivny](https://github.com/sturivny) and [@TomasTomecek](https://github.com/TomasTomecek), [#870](https://github.com/packit-service/packit/pull/870)).\\n\\n### packit-as-a-service\\n\\n- We added support for copr builds in gitlab (by [@shreyaspapi](https://github.com/shreyaspapi), [#683](https://github.com/packit-service/packit-service/pull/683)).\\n- packit-service utilizes the new options introduced in packit (by [@lachmanfrantisek](https://github.com/lachmanfrantisek), [#694](https://github.com/packit-service/packit-service/pull/694)).\\n\\n## Week 27 (June 29th - July 3rd)\\n\\n### packit\\n\\n- We introduced a new command `packit validate-config` which validates the contect of a package configuration file in your project\\n (contributed by [@TomasJani](https://github.com/TomasJani), [#826](https://github.com/packit-service/packit/pull/826)).\\n\\n### packit-as-a-service\\n\\n- You are now able to override configuration for builds, releases and other jobs (by [@TomasTomecek](https://github.com/TomasTomecek), [#676](https://github.com/packit-service/packit-service/pull/676)).\\n Read more about this feature [here](/docs/configuration/#overriding-global-parameters).\\n\\n## Week 28 (July 6th - July 10th)\\n\\n### packit\\n\\n- Command `validate-config` works properly now and does not produce odd error messages, by [@TomasTomecek](https://github.com/TomasTomecek) and [@csomh](https://github.com/csomh), [#894](https://github.com/packit-service/packit/pull/894) and [#895](https://github.com/packit-service/packit/pull/895)\\n- You will now properly see git-describe metadata in the `%release` field in spec file when using `srpm` command, by [@TomasTomecek](https://github.com/TomasTomecek), [#894](https://github.com/packit-service/packit/pull/894)\\n- git-log is being used to get a list of commits between HEAD and latest tag to pick up commit messages and add those to %changelog, by [@TomasTomecek](https://github.com/TomasTomecek), [#889](https://github.com/packit-service/packit/pull/889)\\n- packit is now able to load metadata from commits of a source-git repo and utilize them when creating patch files, by [@lachmanfrantisek](https://github.com/lachmanfrantisek), [#875](https://github.com/packit-service/packit/pull/875)\\n\\n### packit-as-a-service\\n\\n- We now have a new API endpoint: [`/api/projects/`](https://prod.packit.dev/api/projects), by [@IceWreck](https://github.com/IceWreck), [#716](https://github.com/packit-service/packit-service/pull/716)\\n- Over the last few weeks, [@lbarcziova](https://github.com/lbarcziova) was very busy with refactoring how jobs and tasks are being executed in packit-service. This work is now complete which allows us to scale the deployment up while giving us better introspection in what\'s happening inside, by [@lbarcziova](https://github.com/lbarcziova), [#704](https://github.com/packit-service/packit-service/pull/704)\\n\\n## Week 29 (July 13th - July 17th)\\n\\n![Tatranska Lomnica](img/tatranska-lomnica-dhodovsk.jpg) Copyright (c) Dominika Hodovska. This work is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).\\n\\n## Week 30 (July 20th - July 24th)\\n\\n- [Anchit] added [a few new API endpoints] to Packit-as-a-Service to retrieve\\n project information. This is used in the Dashboard, to provide [an overview\\n of the projects] served by Packit.\\n\\n[anchit]: https://github.com/IceWreck\\n[a few new api endpoints]: https://github.com/packit-service/packit-service/pull/746\\n[an overview of the projects]: https://dashboard.packit.dev/projects\\n\\n## Week 31 (July 27th - July 31st)\\n\\n- [Jano] did a lot of work on our deployment. The installation of all our dependencies is much simpler now.\\n ([packit-service#747](https://github.com/packit-service/packit-service/pull/747),\\n [packit-service#753](https://github.com/packit-service/packit-service/pull/753),\\n [packit-service#756](https://github.com/packit-service/packit-service/pull/756),\\n [packit-service#757](https://github.com/packit-service/packit-service/pull/757),\\n [packit#919](https://github.com/packit-service/packit/pull/919)),\\n- Packit now puts a link to our documentation in a pull request status when a contributor is not allowed to build the PR, thanks to [Tom\xe1\u0161].\\n ([packit-service#758](https://github.com/packit-service/packit-service/pull/758))\\n\\n[jano]: https://github.com/sakalosj\\n[tom\xe1\u0161]: https://github.com/TomasTomecek\\n\\n## Week 32 (August 3rd - August 7th) and 33 (August 10th - August 13th)\\n\\n- We renamed our GitHub organisation to `packit`.\\n That user had been inactive for a long time and [Hunor]\'s request was successful.\\n- The Copr project settings are now changed only if needed. If we can\'t edit the settings,\\n we ask for the admin access to the Copr project and the service shows you a table with\\n the changes if you want to do the edit manually.\\n ([packit#921](https://github.com/packit/packit/pull/921),\\n [packit-service#764](https://github.com/packit/packit-service/pull/764))\\n- [Matej] fixed an old bug with the custom command for creating archives.\\n The archive was not found when building SRPM because of the incorrect processing\\n of the paths from the command output.\\n ([packit#923](https://github.com/packit/packit/pull/923))\\n\\n[hunor]: https://github.com/csomh\\n[matej]: https://github.com/mfocko\\n\\n## Week 34 (August 17th - August 20th)\\n\\n- [Tomas] tought packit how to merge related commits, which were previously created\\n by git-am applying of a multiple commit patch. ([packit#933](https://github.com/packit/packit/pull/933))\\n- [Anchit] added new `/api/srpm-builds/` endpoint.\\n- Service now requests \'builder\' permission for custom projects if needed.\\n- [Franta] fixed a problem with only one job executed executed for 2 build definitions for the same trigger.\\n\\n[anchit]: https://github.com/IceWreck\\n[franta]: https://github.com/lachmanfrantisek\\n[tomas]: https://github.com/TomasTomecek\\n\\n## Week 35 (August 24th - August 28th)\\n\\n- [Tomas] improved logging of the Packit actions\' output. ([packit#950](https://github.com/packit/packit/pull/950))\\n- [Anchit] fixed and enhanced the `/api/srpm-builds` endpoint.\\n ([packit-service#788](https://github.com/packit/packit-service/pull/788))\\n\\n[tomas]: https://github.com/TomasTomecek\\n[anchit]: https://github.com/IceWreck\\n\\n## Week 36 (August 31th - September 4th)\\n\\n- We store the submission time of SRPM builds now ([packit-service#795](https://github.com/packit/packit-service/pull/795) by [Anchit]).\\n- [Shreyas] improved implementation of the build status reporting ([packit-service#740](https://github.com/packit/packit-service/pull/740)).\\n- [Anchit] enhanced the `/koji-builds` endpoint to be more consistent with `/copr-builds` endpoint ([packit-service#791](https://github.com/packit/packit-service/pull/791)).\\n\\n[anchit]: https://github.com/IceWreck\\n[shreyas]: https://github.com/shreyaspapi\\n\\n## Week 37 (September 7th - September 11th)\\n\\n- Stage now uses [Tokman](https://github.com/packit/tokman) to get access tokens for GitHub, which should resolve race condition when running parallel jobs\\n (Tokman by [Hunor], ogr integration by [Matej]).\\n- [Franta] has addressed problems with Testing-Farm cluster with custom response on PRs that links to more information ([pinned info](https://github.com/packit/packit-service/issues/803), [packit-service#798](https://github.com/packit/packit-service/pull/798)).\\n\\n[hunor]: https://github.com/csomh\\n[matej]: https://github.com/mfocko\\n[franta]: https://github.com/lachmanfrantisek\\n\\n## Week 38 (September 14th - September 18th)\\n\\n- The combination of the source-git patches with existing patches now works well\\n ([packit#963](https://github.com/packit/packit/pull/963)).\\n- Service now mostly supports also GitLab as you can see\\n [here](https://gitlab.com/packit-service/hello-world/-/merge_requests/10)\\n or [here](https://gitlab.com/packit-service/src/drpm/-/merge_requests/2).\\n A lot of small issues were fixed in the last week\\n ([packit-service#806](https://github.com/packit/packit-service/pull/806),\\n [packit-service#812](https://github.com/packit/packit-service/pull/812),\\n [packit-service#814](https://github.com/packit/packit-service/pull/814),\\n [packit-service#815](https://github.com/packit/packit-service/pull/815),\\n [packit-service#816](https://github.com/packit/packit-service/pull/816)\\n ).\\n- Created Copr projects are now prefixed with the hostname\\n for non-GitHub services and also support multipart namespaces\\n ([packit-service#819](https://github.com/packit/packit-service/pull/819)).\\n- [Laura] fixed two testing-farm related issues\\n ([packit-service#808](https://github.com/packit/packit-service/pull/808),\\n [packit-service#809](https://github.com/packit/packit-service/pull/809)).\\n You can now use `test` job also on Pagure and GitLab thanks to that.\\n\\n[laura]: https://github.com/lbarcziova\\n\\n## Week 39 (September 21st - September 25th)\\n\\n- Packit-service can be configured to work with private namespaces. This is plumbing work which we need right now for CentOS Stream. We are not planning to enable this for GitHub - packit-service will still work only for public repositories, private ones are ignored. [packit-service#831](https://github.com/packit/packit-service/pull/831)\\n- If git tag contains more information than just version (e.g. `pkg_name-v1.2.3`), it is possible to use upstream_tag_template to extract version from the tag, which will be used in a subsequent task. [doc](https://packit.dev/docs/configuration/#upstream_tag_template) [packit#959](https://github.com/packit/packit/pull/959)\\n- Added support for globbing pattern in upstream_ref. [doc](https://packit.dev/docs/configuration/#upstream_ref) [packit#960](https://github.com/packit/packit/pull/960)\\n- Packit `--remote` is global option now and available for all commands. Because of this `sync-from-downstream --remote` was renamed to `--remote-to-push`. Remote can now be specified in the user\'s config (via upstream_git_remote parameter). [packit#977](https://github.com/packit/packit/pull/977)\\n\\nFollowing bugs were fixed:\\n\\n- Packit dropping leading zeros in version. [packit#814](https://github.com/packit/packit/pull/814)\\n- Packit CLI issue caused by picking incorrect copr project name. [packit#971](https://github.com/packit/packit/pull/971)\\n\\n## Week 40 (September 28th - October 2nd)\\n\\n- Packit-service is now explicitly checking if requested copr-build targets exist and if not, the user is informed about it. [packit-service#835](https://github.com/packit/packit-service/pull/835)\\n- We have improved the way how packit updates `%setup` line in a spec file - you are now able to set content of `-n` option via archive_root_dir_template config option, it defaults to `{upstream-pkg-name}`. [doc](https://github.com/packit/packit.dev/pull/167) [packit#834](https://github.com/packit/packit-service/pull/834)\\n- Packit is able to generate a patch file with format-patch without leading a/ and b/ in the patch diff. Required for patches in dist-git which are applied with -p0.\\n- Contribution guidelines were updated, now we have one shared [link](https://github.com/packit/contributing).\\n\\n## Week 41 (October 5th - October 9th)\\n\\n- [franta] made triggering of jobs more reliable and in correct situations ([packit-service#837](https://github.com/packit/packit-service/pull/837))\\n\\n[franta]: https://github.com/lachmanfrantisek\\n\\n## Week 42 (October 12th - October 16th)\\n\\nNothing significant happened during this week. The only change was that Hunor\\n[resolved](https://github.com/packit/packit-service/pull/850) a problem when sentry client library ([the alert service](https://sentry.io/) we use) caused errors in stage\\nenvironment and hence the problem didn\'t make it to production.\\n\\nWe have also released a new version of packit: [0.18](https://github.com/packit/packit/releases/tag/0.18.0).\\n\\n## Week 43 (October 19th - October 24th)\\n\\nWe finally had a week with plenty updates!\\n\\n- We found out the hard way that one cannot build in [Fedora koji](https://koji.fedoraproject.org/koji/) directly\\n from SRPM unless it\'s a scratch build. The discussion with Fedora rel-eng is\\n happening at [pagure.io/releng/issue/9801](https://pagure.io/releng/issue/9801) and in the meantime, all koji builds\\n will be halted on our side since we know they cannot succeed. Do `scratch: true` for koji builds before this gets resolved.\\n- Packit creates a symlink for a generated archive at the root of the project.\\n So far it only did it from a relative path and now absolute paths are\\n supported as well. This is useful when your specfile is placed in a\\n subdirectory and rpmbuild can\'t find the archive.\\n- There is a new usability improvement to proposing a new downstream update. If\\n the PR is already created, packit won\'t create it again. You will no longer\\n receive duplicate downstream PRs in dist-git.\\n- When doing a new downstream update, packit doesn\'t sync %changelog since\\n those are usually out of sync between upstream and downstream. Packit creates\\n a new entry for the new release in the downstream. There is a new packit.yaml\\n configuration option `sync_changelog` which bypasses this behaviour and\\n copies the %changelog from upstream and overwrites the downstream changelog.\\n Please use this option only when your changelogs are in sync. [Documentation](https://packit.dev/docs/configuration/#sync_changelog)\\n\\n## Week 44 (October 26th - October 30th)\\n\\nNo user-facing changes in packit(-service) this week.\\n\\n## Week 45 (November 2nd - November 6th)\\n\\n- [Laura] implemented an option for packit to copy description from a release into\\n a changelog when running `propose-update`. Also the default message has been changed\\n to the list of commit messages from last release. ([packit#1004](https://github.com/packit/packit/pull/1004))\\n- [Jano] improved handling of build targets in packit. ([packit#986](https://github.com/packit/packit/pull/986))\\n- [Tomas] improved an experience of a contributor to source-git in case the contributor\\n doesn\'t follow git-am patches style that is used. ([packit#1000](https://github.com/packit/packit/pull/1000))\\n\\n## Week 46 (November 9th - November 13th)\\n\\n- [Tomas] improved the UX of logging in the CLI. ([packit#1014](https://github.com/packit/packit/pull/1014))\\n- [Jano] improved logic of acquiring current version in the CLI. ([packit#1013](https://github.com/packit/packit/pull/1013))\\n- We appreciate getting feedback from our users, if you could find some time to\\n do so, there is an [open issue](https://github.com/packit/packit-service/issues/859)\\n for it.\\n\\n## Week 47 (November 16th - November 20th)\\n\\n- ~~[Matej] fixed [an\\n issue](https://github.com/packit/packit-service/issues/774) with Packit CLI,\\n enabling recursive search for spec-files\\n ([packit#1005](https://github.com/packit/packit/pull/1005)).~~ It turned\\n out, this change made it very easy to [deplete GitHub API quota], so it was\\n reverted.\\n- [Laura] made Copr builds to be part of the default jobs. This will cause\\n build jobs to explicitly run, and display their own result flags in PRs,\\n next to the test results. We hope this to be a more friendly behaviour for\\n our new users ([packit#1024](https://github.com/packit/packit/pull/1024)).\\n\\n## Week 48 (November 23rd - November 27th)\\n\\n- [Laura] [fixed a bug], where Packit Service failed to trigger Copr builds\\n before triggering the tests in case triggering Copr builds was configured\\n for a different event.\\n- Thanks to [Matej], Packit Service will now [comment on commits] in case Copr\\n builds fail after a merge, in order to indicate the reason for the failure.\\n- Packit Service will soon stop commenting on PRs after the first successful\\n build. The installation instructions from these comments [were moved to the\\n result page] by [Laura], while [Matej] [added a warning] to inform users\\n about this upcoming change.\\n\\n[laura]: https://github.com/lbarcziova\\n[jano]: https://github.com/sakalosj\\n[tomas]: https://github.com/TomasTomecek\\n[matej]: https://github.com/mfocko\\n[deplete github api quota]: https://github.com/packit/packit-service/issues/876\\n[fixed a bug]: https://github.com/packit/packit-service/pull/888\\n[comment on commits]: https://github.com/packit/packit-service/pull/854\\n[added a warning]: https://github.com/packit/packit-service/pull/891\\n[were moved to the result page]: https://github.com/packit/packit-service/pull/877\\n\\n## Week 49 (November 30th - December 4th)\\n\\n- [Jano] fixed a bug in `sync_release` method of Packit API. ([packit#1043](https://github.com/packit/packit/pull/1043))\\n- [Jiri Konecny] contributed a fix for how Packit creates COPR urls. ([packit#1039](https://github.com/packit/packit/pull/1039))\\n- [Laura] updated instructions how to retrigger a job. ([packit-service#892](https://github.com/packit/packit-service/pull/892))\\n\\n[jano]: https://github.com/sakalosj\\n[jiri konecny]: https://github.com/jkonecny12\\n[laura]: https://github.com/lbarcziova\\n\\n## Week 50 (December 7th - December 11th)\\n\\n- [Tomas] implemented the `--upstream-url` option of `packit init` command. When specified,\\n `init` also sets up a source-git repository next to creating a configuration file.\\n\\n[tomas]: https://github.com/TomasTomecek\\n\\n## Week 51 (December 14th - December 18th)\\n\\n- Congratulations comments are now disabled by default, unless enabled in config.\\n- A bug, which prevented npm to be run during SRPM build, has been fixed. ([sandcastle#86](https://github.com/packit/sandcastle/pull/86))"},{"id":"/2019","metadata":{"permalink":"/posts/weekly/2019","editUrl":"https://github.com/packit/packit.dev/tree/main/weekly/2019.md","source":"@site/weekly/2019.md","title":"2019","description":"Let\'s see what happened in Packit in 2019.","date":"2021-01-07T00:00:00.000Z","formattedDate":"January 7, 2021","tags":[{"label":"2019","permalink":"/posts/weekly/tags/2019"}],"readingTime":15.625,"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"2019","date":"2021-01-07T00:00:00.000Z","tags":["2019"]},"prevItem":{"title":"2020","permalink":"/posts/weekly/2020"}},"content":"Let\'s see what happened in Packit in 2019.\\n\\n\x3c!--truncate--\x3e\\n\\n# Initial version 0.1.0 of packit is out! (2019-03-08)\\n\\nWe would like to announce general availability of the initial version of\\npackit, titled \'0.1.0\'.\\n\\nSince this is our first release, we would like to ask you to be patient if you\\nencounter any issues. We work hard on packit\'s usability. If you feel like that\\npackit is doing something weird or if anything is unclear, don\'t hesitate and\\nreach out to us by creating [a new GitHub\\nissue](https://github.com/packit-service/packit/issues/new).\\n\\nThe initial release contains two commands:\\n\\n- `packit propose-update` \u2014 Opens a pull request in dist-git for the latest\\n upstream release of a selected repository.\\n- `packit watch-releases` \u2014 Watches events for all the upstream releases and\\n performs `propose-update` for those who use packit.\\n\\n## Installation\\n\\n```\\n$ dnf install --enablerepo=updates-testing packit\\n```\\n\\nOr\\n\\n```\\n$ pip3 install --user packitos\\n```\\n\\nOr (if you\'re brave)\\n\\n```\\n$ pip3 install --user git+https://github.com/packit-service/packit\\n```\\n\\n## Requirements\\n\\nPresent features have strict requirements on the upstream projects:\\n\\n- You need to have a packit config file present in the upstream repo.\\n\\n- You need to have spec file present in the upstream repo.\\n\\nThis workflow is suitable for people who are both upstream and downstream\\nmaintainers of the particular project. If you don\'t fit into that bucket, then\\npackit might not be ready for you, yet. Please wait till we land more\\n[source-git](/source-git/)\\nrelated functionality into packit.\\n\\n## `propose-update`\\n\\nI\'m going to demonstrate this functionality on\\n[ogr](https://github.com/packit-service/ogr.git), our library for git forges,\\nwhich powers packit.\\n\\nIt was recently approved for Fedora, so we can use packit to bring the initial\\nversion of ogr into Fedora Rawhide, 30 and 29.\\n\\n### Do we have everything?\\n\\nLet\'s see [guide](/docs/cli/propose-downstream) for\\nthe `propose-update` command on what we need:\\n\\n#### 0. The upstream repository with a valid upstream release.\\n\\n```\\n$ git remote -v\\norigin git@github.com:TomasTomecek/ogr.git (fetch)\\norigin git@github.com:TomasTomecek/ogr.git (push)\\nupstream https://github.com/packit-service/ogr.git (fetch)\\nupstream https://github.com/packit-service/ogr.git (push)\\n```\\n\\nYup.\\n\\n```\\n$ git tag --list\\n0.0.1\\n0.0.2\\n0.0.3\\n\\n$ git checkout 0.0.3\\nNote: checking out \'0.0.3\'.\\n```\\n\\nAnd the tag name is matching the version in a spec file:\\n\\n```\\n$ grep Version python-ogr.spec\\nVersion: 0.0.3\\n```\\n\\n#### 1. Packit config file placed in the upstream repository.\\n\\n```\\n$ ll .packit.yaml\\n-rw-rw-r--. 1 tt tt 177 Mar 1 17:44 .packit.yaml\\n```\\n\\nCheck.\\n\\n#### 2. Spec file present in the upstream repository.\\n\\n```\\n$ ll python-ogr.spec\\n-rw-rw-r--. 1 tt tt 1.3K Mar 1 17:43 python-ogr.spec\\n```\\n\\n:+1:\\n\\n#### 3. Pagure API tokens for Fedora Dist-git.\\n\\n```\\n$ env | grep TOKEN\\nPAGURE_USER_TOKEN=will\\nPAGURE_FORK_TOKEN=not\\nGITHUB_TOKEN=share, sorry\\n```\\n\\n#### 4. Valid Fedora Kerberos ticket.\\n\\n```\\n$ kinit ttomecek@FEDORAPROJECT.ORG\\nPassword for ttomecek@FEDORAPROJECT.ORG:\\n\\n$ klist\\nTicket cache: KEYRING:persistent:1024:krb_ccache_g0t1Ty3Ah\\nDefault principal: ttomecek@FEDORAPROJECT.ORG\\n\\nValid starting Expires Service principal\\n03/01/2019 18:12:25 03/02/2019 18:12:19 krbtgt/FEDORAPROJECT.ORG@FEDORAPROJECT.ORG\\n renew until 03/08/2019 18:12:19\\n```\\n\\nWe\'re all set!\\n\\n### Time to shine\\n\\nWe are still in the \\"ogr\\" upstream git repository.\\n\\n```\\n$ packit propose-update\\nINFO: Running \'anitya\' versioneer\\nERROR: Failed to determine latest upstream version!\\nCheck that the package exists on https://release-monitoring.org.\\nusing \\"master\\" dist-git branch\\nsyncing ./python-ogr.spec\\nINFO: Downloading file from URL https://files.pythonhosted.org/packages/source/o/ogr/ogr-0.0.3.tar.gz\\n100%[=============================>] 17.95K eta 00:00:00\\ndownloaded archive: /tmp/tmp2e65b0xt/ogr-0.0.3.tar.gz\\nuploading to the lookaside cache\\nPR created: https://src.fedoraproject.org/rpms/python-ogr/pull-request/1\\n```\\n\\nMind-blowing, isn\'t it? Now we have latest python-ogr in Fedora Rawhide by\\nrunning only a single command.\\n\\nI have also [added](https://release-monitoring.org/project/18832/) ogr into release-monitoring as packit suggests.\\n\\nOnce we are okay with the changes, we have to [merge the pull\\nrequest](https://src.fedoraproject.org/rpms/python-ogr/pull-request/1). That\'s\\nour responsibility, as maintainers.\\n\\n### Building in koji\\n\\nTime to build the package (packit doesn\'t support building in koji, yet)\\n\\n```\\n$ fedpkg clone python-ogr\\nCloning into \'python-ogr\'...\\nremote: Counting objects: 8, done.\\nremote: Compressing objects: 100% (5/5), done.\\nremote: Total 8 (delta 0), reused 5 (delta 0)\\nReceiving objects: 100% (8/8), done.\\n\\n$ cd python-ogr\\n\\n$ git log\\ncommit c298df5e540ba1d010366e102c1c75d4f5b0b0cc (HEAD -> master, origin/master, origin/HEAD)\\nAuthor: Tomas Tomecek \\nDate: Fri Mar 1 18:15:00 2019 +0100\\n\\n [packit] 0.0.3 upstream release\\n\\n more info\\n\\n Signed-off-by: Tomas Tomecek \\n\\ncommit 7d5ab1471ca0ee2a6c0254410b83beaa83b80f0b\\nAuthor: Gwyn Ciesla \\nDate: Fri Mar 1 15:18:34 2019 +0000\\n\\n Added the README\\n```\\n\\nYup, that\'s our commit. `more info` was added there by accident, this is\\nalready fixed in packit.\\n\\n```\\n$ fedpkg build\\nBuilding python-ogr-0.0.3-1.fc31 for rawhide\\nCreated task: 33125435\\nTask info: https://koji.fedoraproject.org/koji/taskinfo?taskID=33125435\\nWatching tasks (this may be safely interrupted)...\\n33125435 build (rawhide, /rpms/python-ogr.git:c298df5e540ba1d010366e102c1c75d4f5b0b0cc): free\\n33125435 build (rawhide, /rpms/python-ogr.git:c298df5e540ba1d010366e102c1c75d4f5b0b0cc): free -> open (buildvm-14.phx2.fedoraproject.org)\\n 33125451 buildArch (python-ogr-0.0.3-1.fc31.src.rpm, noarch): open (buildvm-14.phx2.fedoraproject.org)\\n 33125436 buildSRPMFromSCM (/rpms/python-ogr.git:c298df5e540ba1d010366e102c1c75d4f5b0b0cc): closed\\n33125435 build (rawhide, /rpms/python-ogr.git:c298df5e540ba1d010366e102c1c75d4f5b0b0cc): open (buildvm-14.phx2.fedoraproject.org) -> closed\\n 0 free 1 open 2 done 0 failed\\n 33125464 tagBuild (noarch): closed\\n 33125451 buildArch (python-ogr-0.0.3-1.fc31.src.rpm, noarch): open (buildvm-14.phx2.fedoraproject.org) -> closed\\n 0 free 0 open 4 done 0 failed\\n\\n33125435 build (rawhide, /rpms/python-ogr.git:c298df5e540ba1d010366e102c1c75d4f5b0b0cc) completed successfully\\n```\\n\\nThat was rough, can\'t wait to do this with packit.\\n\\nLet\'s do Fedora 30 now:\\n\\n```\\n$ packit propose-update --dist-git-branch f30\\nINFO: Running \'anitya\' versioneer\\nusing \\"f30\\" dist-git branch\\nsyncing ./python-ogr.spec\\nINFO: Downloading file from URL https://files.pythonhosted.org/packages/source/o/ogr/ogr-0.0.3.tar.gz\\n100%[=============================>] 17.95K eta 00:00:00\\ndownloaded archive: /tmp/tmpl5xxq22x/ogr-0.0.3.tar.gz\\nuploading to the lookaside cache\\nPR created: https://src.fedoraproject.org/rpms/python-ogr/pull-request/3\\n```\\n\\nAnd so on...\\n\\n## Conclusion\\n\\nAs you can see, packit is useful for us right away.\\n\\nWe\'ll be delighted if you try it out and let us know what you think.\\n\\n# Packit 0.2.0 is here! (2019-03-19)\\n\\nOur sprint nears an end which means we have released [a new version of packit -\\n0.2.0](https://github.com/packit-service/packit/releases/tag/0.2.0)! You can\\nexpect a new release after every sprint (i.e. every 2 weeks).\\n\\nThe 0.2.0 version has a bunch of new features and improvements: you can find\\na complete list [in the\\nchangelog](https://github.com/packit-service/packit/blob/master/CHANGELOG.md#020).\\nWe also have a [detailed\\ndocumentation](https://github.com/packit-service/packit#workflows-covered-by-packit)\\nfor all the workflows packit covers.\\n\\nLet\'s get through what\'s new:\\n\\n1. We have decided to rename two keys in our config file so they are more\\n descriptive. Old names still work but they are deprecated:\\n - `package_name` \u2192 `downstream_package_name`\\n - `upstream_name` \u2192 `upstream_project_name`\\n2. You don\'t need to touch dist-git at all when getting your new upstream\\n release into Fedora, you can stay in your upstream repository and just fire\\n off a bunch of packit calls:\\n - `packit propose-update` to create a pull request in Fedora dist-git with\\n the selected upstream release\\n - `packit build` to build the new upstream release once the pull request is\\n merged\\n - and finally, `packit create-update` creates a new bodhi update (if you\\n chose a stable Fedora release)\\n3. Packit now has a `srpm` command which creates an SRPM out of the local\\n content of your upstream repository.\\n4. You can now use packit to sync files from your dist-git repo back into\\n upstream (mainly to keep spec files in sync). `sync-from-downstream` is the\\n command.\\n5. Command `propose-update` received numerous improvements:\\n - You can pick upstream version to use.\\n - Packit will NOT check out the git ref with the upstream release if you\\n specify `--local-content`\\n - It\'s possible to force packit to execute `fedpkg new-sources` using\\n `--force-new-sources` and bypass the caching mechanism.\\n\\n## Installation\\n\\nPlease make sure you are installing `0.2.0`:\\n\\n```\\n$ dnf install --enablerepo=updates-testing packit\\n```\\n\\nOr\\n\\n```\\n$ pip3 install --user packitos\\n```\\n\\nYou can also install packit from master branch, if you are brave enough:\\n\\n```\\n$ pip3 install --user git+https://github.com/packit-service/packit\\n```\\n\\n## How are we using packit?\\n\\nI\'d like to show you how we used packit to bring a new upstream\\nrelease of ogr into Fedora, a library which packit is using.\\n\\nOnce we have performed an upstream release of ogr, we can propose an update in\\ndist-git:\\n\\n```\\n$ git clone https://github.com/packit-service/ogr && cd ogr/\\n\\n$ packit propose-update\\nINFO: Running \'anitya\' versioneer\\nVersion in upstream registries is \'0.0.3\'.\\nVersion in spec file is \'0.0.3\'.\\nPicking version of the latest release from the upstream registry over spec file.\\nChecking out upstream version 0.0.3\\nUsing \'master\' dist-git branch\\nCloning repo: https://src.fedoraproject.org/rpms/python-ogr.git -> /tmp/tmpb9xlvdhj\\nSyncing /home/tt/g/user-cont/ogr/python-ogr.spec\\nArchive ogr-0.0.3.tar.gz found in lookaside cache (skipping upload).\\nERROR Cmd(\'git\') failed due to: exit code(1)\\n cmdline: git commit -s -m [packit] 0.0.3 upstream release -m Upstream tag: 0.0.3\\nUpstream commit: 059d21080a7849acff4626b6e0ec61830d537ac4\\n\\n stdout: \'On branch 0.0.3-master-update\\nnothing to commit, working tree clean\'\\n```\\n\\nWhoops, it seems that I have messed up, I forgot to bump the spec file in the\\nupstream repo when doing the release. I will bump it locally and utilize\\n`--local-content` argument:\\n\\n```\\n$ rpmdev-bumpspec -n 0.1.0 -c \'New upstream release: 0.1.0\' *.spec\\n\\n$ packit propose-update --local-content\\nINFO: Running \'anitya\' versioneer\\nVersion in upstream registries is \'0.0.3\'.\\nVersion in spec file is \'0.1.0\'.\\nPicking version of the latest release from the upstream registry over spec file.\\nUsing \'master\' dist-git branch\\nCloning repo: https://src.fedoraproject.org/rpms/python-ogr.git -> /tmp/tmpd9j4se27\\nSyncing /home/tt/g/user-cont/ogr/python-ogr.spec\\nArchive ogr-0.1.0.tar.gz found in lookaside cache (skipping upload).\\nINFO: Downloading file from URL https://files.pythonhosted.org/packages/source/o/ogr/ogr-0.1.0.tar.gz\\n100%[=============================>] 20.25K eta 00:00:00\\nDownloaded archive: \'/tmp/tmpd9j4se27/ogr-0.1.0.tar.gz\'\\nAbout to upload to lookaside cache\\nwon\'t be doing kinit, no credentials provided\\nPR created: https://src.fedoraproject.org/rpms/python-ogr/pull-request/6\\n```\\n\\nOnce the scratch build is done and tests passed we merged and built it:\\n\\n```\\n$ packit build\\nUsing \'master\' dist-git branch\\nCloning repo: https://src.fedoraproject.org/rpms/python-ogr.git -> /tmp/tmprp3cmdjy\\nBuilding python-ogr-0.1.0-1.fc31 for rawhide\\nCreated task: 33616980\\nTask info: https://koji.fedoraproject.org/koji/taskinfo?taskID=33616980\\n```\\n\\nWe have done the same for F30 and F29.\\n\\nThe previous commands were run in the directory of the upstream repository. Packit also accepts path to your upstream clone, or even URL. So let\'s create a bodhi update for python-ogr by specifying the upstream repo URL:\\n\\n```\\n$ cd $HOME\\n\\n$ packit create-update --dist-git-branch f29 https://github.com/packit-service/ogr\\nCloning repo: https://github.com/packit-service/ogr -> /tmp/tmpdkdadmn_\\nKoji builds for package python-ogr and koji tag f29-updates-candidate:\\n - python-ogr-0.1.0-1.fc29\\nCloning repo: https://src.fedoraproject.org/rpms/python-ogr.git -> /tmp/tmpn1809ec9\\nBodhi update FEDORA-2019-78948e62d2:\\n- https://bodhi.fedoraproject.org/updates/FEDORA-2019-78948e62d2\\n- stable_karma: 3\\n- unstable_karma: -3\\n- notes:\\nNew upstream release: 0.1.0\\n```\\n\\nAnd that\'s it, no need to access dist-git any more.\\n\\nPlease give packit a try and let us know what you think.\\n\\n# Packit 0.3.0 (2019-04-11)\\n\\nIn the previous post we promised to\\nprovide a new release every 2 weeks and we are already breaking this promise as\\nit\'s been 3 weeks since then. We decided to wait with the release to merge\\nseveral pull requests related to source-git support.\\n\\nNow the good news. You can find a complete list of new features and\\nimprovements of version\\n[0.3.0](https://github.com/packit-service/packit/releases/tag/0.3.0) in the\\n[changelog](https://github.com/packit-service/packit/blob/master/CHANGELOG.md#030).\\n\\n## Features\\n\\n- You can now specify your own hooks or actions to replace default packit\\n behaviour. (More information can be found [in the\\n documentation](/docs/configuration/actions/)).\\n- Packit supports pagure.io-based upstream projects.\\n- Commands `propose-update` and `sync-from-downstream` supports [copying\\n directories](/docs/configuration/#minimal-sample-config).\\n- A new command `status`! It displays useful upstream/downstream info.\\n- Packit now supports [Source-git](/source-git/). The\\n functionality is not available, yet - we will add a CLI interface for it in\\n the next release.\\n- You can now have a config file for packit in your home directory(`~/.config/packit.yaml`).\\n- Packit installed from an RPM now has manpages.\\n\\n### `packit status` example\\n\\n```bash\\n$ packit status\\nCloning repo: https://src.fedoraproject.org/rpms/packit.git -> /tmp/tmp84we_6n8\\nDownstream PRs: No open PRs.\\nf29: 0.2.0\\nf30: 0.2.0\\nmaster: 0.2.0\\n```\\n\\n# Packit 0.4.0 & 0.4.1 (2019-05-18)\\n\\nIt\'s been over a month since we released packit \\"0.3.0\\". Here comes packit 0.4.0 (and patch release 0.4.1) and as always they bring a lot of new features and improvements.\\n\\nYou can find a complete list in the\\n[changelog](https://github.com/packit-service/packit/blob/master/CHANGELOG.md#040).\\n\\n## Packit as a service\\n\\n- We have Packit as a service running in OpenShift and also a GitHub App, which uses it.\\n Unfortunately it\'s still not in the [Marketplace](https://github.com/marketplace),\\n so [we](https://github.com/packit-service) have been the only one using it so far.\\n The service/app submits builds in [copr](https://copr.fedorainfracloud.org/coprs/packit/) and\\n once they\'re done it adds a GitHub status and comment with instructions how to install the builds.\\n The service is now configurable via [jobs](/docs/configuration/#packit-service-jobs) defined\\n in configuration file.\\n- Packit is now able to check GPG signatures of the upstream commits against configured fingerprints.\\n\\n## CLI\\n\\n- `srpm` command now works also with [Source-git](/source-git/).\\n- `status` command now access remote APIs asynchronously in parallel, which should speed up\\n the execution.\\n- CLI has new `--dry-run` option to not perform any remote changes (pull requests or comments).\\n- Fedmsg parsing has been unified into a single `listen-to-fedmsg` command.\\n\\n# Packit 0.4.2 (2019-06-26)\\n\\nAnother relase after a month since [0.4.1](https://packit.dev/posts/packit-041/), this time mostly with bug fixes.\\n\\nWe\'ve been busy polishing our [GitHub App](https://packit.dev/packit-as-a-service/) recently, therefore we had no resources for new features.\\n\\nSee [CHANGELOG](https://github.com/packit-service/packit/blob/master/CHANGELOG.md#042) for more details.\\n\\n# September 2020\\n\\n## Week 36 (August 31th - September 4th)\\n\\n- We store the submission time of SRPM builds now ([packit-service#795](https://github.com/packit/packit-service/pull/795) by [Anchit]).\\n- [Shreyas] improved implementation of the build status reporting ([packit-service#740](https://github.com/packit/packit-service/pull/740)).\\n- [Anchit] enhanced the `/koji-builds` endpoint to be more consistent with `/copr-builds` endpoint ([packit-service#791](https://github.com/packit/packit-service/pull/791)).\\n\\n[anchit]: https://github.com/IceWreck\\n[shreyas]: https://github.com/shreyaspapi\\n\\n## Week 37 (September 7th - September 11th)\\n\\n- Stage now uses [Tokman](https://github.com/packit/tokman) to get access tokens for GitHub, which should resolve race condition when running parallel jobs\\n (Tokman by [Hunor], ogr integration by [Matej]).\\n- [Franta] has addressed problems with Testing-Farm cluster with custom response on PRs that links to more information ([pinned info](https://github.com/packit/packit-service/issues/803), [packit-service#798](https://github.com/packit/packit-service/pull/798)).\\n\\n[hunor]: https://github.com/csomh\\n[matej]: https://github.com/mfocko\\n[franta]: https://github.com/lachmanfrantisek\\n\\n## Week 38 (September 14th - September 18th)\\n\\n- The combination of the source-git patches with existing patches now works well\\n ([packit#963](https://github.com/packit/packit/pull/963)).\\n- Service now mostly supports also GitLab as you can see\\n [here](https://gitlab.com/packit-service/hello-world/-/merge_requests/10)\\n or [here](https://gitlab.com/packit-service/src/drpm/-/merge_requests/2).\\n A lot of small issues were fixed in the last week\\n ([packit-service#806](https://github.com/packit/packit-service/pull/806),\\n [packit-service#812](https://github.com/packit/packit-service/pull/812),\\n [packit-service#814](https://github.com/packit/packit-service/pull/814),\\n [packit-service#815](https://github.com/packit/packit-service/pull/815),\\n [packit-service#816](https://github.com/packit/packit-service/pull/816)\\n ).\\n- Created Copr projects are now prefixed with the hostname\\n for non-GitHub services and also support multipart namespaces\\n ([packit-service#819](https://github.com/packit/packit-service/pull/819)).\\n- [Laura] fixed two testing-farm related issues\\n ([packit-service#808](https://github.com/packit/packit-service/pull/808),\\n [packit-service#809](https://github.com/packit/packit-service/pull/809)).\\n You can now use `test` job also on Pagure and GitLab thanks to that.\\n\\n[laura]: https://github.com/lbarcziova\\n\\n## Week 39 (September 21st - September 25th)\\n\\n- Packit-service can be configured to work with private namespaces. This is plumbing work which we need right now for CentOS Stream. We are not planning to enable this for GitHub - packit-service will still work only for public repositories, private ones are ignored. [packit-service#831](https://github.com/packit/packit-service/pull/831)\\n- If git tag contains more information than just version (e.g. `pkg_name-v1.2.3`), it is possible to use upstream_tag_template to extract version from the tag, which will be used in a subsequent task. [doc](https://packit.dev/docs/configuration/#upstream_tag_template) [packit#959](https://github.com/packit/packit/pull/959)\\n- Added support for globbing pattern in upstream_ref. [doc](https://packit.dev/docs/configuration/#upstream_ref) [packit#960](https://github.com/packit/packit/pull/960)\\n- Packit `--remote` is global option now and available for all commands. Because of this `sync-from-downstream --remote` was renamed to `--remote-to-push`. Remote can now be specified in the user\'s config (via upstream_git_remote parameter). [packit#977](https://github.com/packit/packit/pull/977)\\n\\nFollowing bugs were fixed:\\n\\n- Packit dropping leading zeros in version. [packit#814](https://github.com/packit/packit/pull/814)\\n- Packit CLI issue caused by picking incorrect copr project name. [packit#971](https://github.com/packit/packit/pull/971)\\n\\n## Week 40 (September 28th - October 2nd)\\n\\n- Packit-service is now explicitly checking if requested copr-build targets exist and if not, the user is informed about it. [packit-service#835](https://github.com/packit/packit-service/pull/835)\\n- We have improved the way how packit updates `%setup` line in a spec file - you are now able to set content of `-n` option via archive_root_dir_template config option, it defaults to `{upstream-pkg-name}`. [doc](https://github.com/packit/packit.dev/pull/167) [packit#834](https://github.com/packit/packit-service/pull/834)\\n- Packit is able to generate a patch file with format-patch without leading a/ and b/ in the patch diff. Required for patches in dist-git which are applied with -p0.\\n- Contribution guidelines were updated, now we have one shared [link](https://github.com/packit/contributing).\\n\\n# Week 44-48 (November) 2019\\n\\nWith this blog post we\'d like to continue with the idea of openly communicating changes in Packit.\\nSince most of the developers use Packit as the [GitHub App](https://packit.dev/packit-as-a-service) (which uses code from [this repository - Packit Service](https://github.com/packit-service/packit-service)), this blog will be about changes in all the parts, i.e. the GitHub App, the Packit Service and Packit itself.\\n\\n## Continuous Deployment (CD)\\n\\nAt the moment the workflow is that one of us manually triggers production container image build at the end of a week.\\nThis image is then automatically deployed into our production instance of the service over a weekend (Sun/Mon night) so that everyone can start a week with all the amazing stuff we added the previous week.\\nIn case an issue makes it through our staging instance into production uncaught, we can easily rollback on Monday.\\nThe same person also writes down what\'s changed in Packit (service/app) since previous deployment.\\n\\n## Changes in production (since the end of November)\\n\\nPrevious post is almost half a year old so we won\'t list all the changes since then, but only since last deployment, i.e. since end of December.\\n\\n### Packit\\n\\nPrevious deployment was running [packit-0.7.1](https://pypi.org/project/packitos/0.7.1/).\\nWe haven\'t released a newer version since then, but in the service we install Packit from the Git repository (we have a separate `stable` git branch for our production deployment).\\nFrom the most visible changes, Packit now:\\n\\n- better handles Create-archive action\\n- is able to work in a repo with detached head\\n- logs output from subprocesses in realtime\\n- syncs config file and spec file by default in Propose-update action\\n- hadles patches with undecodable chars\\n\\n### Packit Service\\n\\nNow:\\n\\n- better reports Copr builds\\n - uses separate commit status for srpm build and every chroot\\n - clears test farm commit statuses when new build is triggered\\n - better handles failed Copr builds\\n- gracefully handles no config file in the repo\\n- better handles when no (copr build) targets are specified in config file\\n- better checks whitelist of users\\n- does not create duplicate tickets in our [notification repo](https://github.com/packit-service/notifications) when a new user install the app\\n\\nChanges not visible to end users:\\n\\n- using [Requre](https://github.com/packit-service/requre) for integration/E2E tests\\n- Fedora messaging consumer part of the service has been improved and moved to separate [repo/image](https://github.com/packit-service/packit-service-fedmsg)\\n- using FAS instead of Fedora Badges for checking whether a user is Fedora packager\\n- many improved logs\\n- many bugs squashed\\n- lot\'s of code refactored\\n\\n# December 2019\\n\\n## Week 49\\n\\n### ogr & packit\\n\\n- ogr-0.9.0 has been released greatly restructured. ([#291](https://github.com/packit-service/ogr/pull/291/files))\\n- `packit status` (CLI) now shows also latest Copr builds. ([#579](https://github.com/packit-service/packit/pull/579))\\n- Target aliases (currently `fedora-development`, `fedora-stable`, `fedora-all`) can now be used in the packit config file. ([#619](https://github.com/packit-service/packit/pull/619))\\n- When doing a new update in Fedora dist-git, packit now by default creates a new pull request instead of pushing directly to dist-git. ([#622](https://github.com/packit-service/packit/pull/622))\\n\\n### packit service\\n\\n- Does not set test checks when tests are not configured. ([#275](https://github.com/packit-service/packit-service/pull/275))\\n- Supports target aliases and dist-git branches aliases. ([#277](https://github.com/packit-service/packit-service/pull/277), [#285](https://github.com/packit-service/packit-service/pull/285))\\n- Nicely formats errors from OpenShift API. ([#283](https://github.com/packit-service/packit-service/pull/283))\\n- Runs Copr build when user adds a `/packit build` comment into a PR. ([#290](https://github.com/packit-service/packit-service/pull/290))\\n\\n## Week 50\\n\\n### packit\\n\\n- If there is no `upstream_package_name`/`downstream_package_name` given in `.packit.yaml`, they now default to the name of the GitHub repo. ([#624](https://github.com/packit-service/packit/pull/624))\\n- If no `jobs` are defined in `.packit.yaml` packit by default runs `build` job on `fedora-stable` targets and `propose_downstream` on `fedora-all` branches. ([#625](https://github.com/packit-service/packit/pull/625))\\n- `build` command has nicer output. ([#630](https://github.com/packit-service/packit/pull/630))\\n- Smaller fixes. ([#630](https://github.com/packit-service/packit/pull/630), [#636](https://github.com/packit-service/packit/pull/636))\\n\\n### packit service\\n\\n- Creates a new issue when `propose-update` fails. ([#300](https://github.com/packit-service/packit-service/pull/300))\\n- Better reports failed submitting of a Copr build. ([#301](https://github.com/packit-service/packit-service/pull/301))"}]}')}}]); \ No newline at end of file diff --git a/assets/js/ed1016b5.834e2fd6.js b/assets/js/ed1016b5.834e2fd6.js new file mode 100644 index 000000000..fbf90e63f --- /dev/null +++ b/assets/js/ed1016b5.834e2fd6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[8569],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>k});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=a,k=u["".concat(l,".").concat(f)]||u[f]||m[f]||o;return r?n.createElement(k,i(i({ref:t},s),{},{components:r})):n.createElement(k,i({ref:t},s))}));function k(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:a,i[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var n=r(87462),a=(r(67294),r(3905));const o={title:"Week 31 in Packit",date:new Date("2023-08-07T00:00:00.000Z"),authors:"mfocko",tags:["2023-August",2023,"August"]},i="Week 31 (August 1st \u2013 August 7th)",c={permalink:"/posts/weekly/2023/week-31",editUrl:"https://github.com/packit/packit.dev/tree/main/weekly/2023/week-31.md",source:"@site/weekly/2023/week-31.md",title:"Week 31 in Packit",description:"- Licenses in Packit specfiles are now confirmed to be SPDX-compatible. (example PR: packit#2026)",date:"2023-08-07T00:00:00.000Z",formattedDate:"August 7, 2023",tags:[{label:"2023-August",permalink:"/posts/weekly/tags/2023-august"},{label:"2023",permalink:"/posts/weekly/tags/2023"},{label:"August",permalink:"/posts/weekly/tags/august"}],readingTime:.145,hasTruncateMarker:!1,authors:[{name:"Matej Focko",email:"mfocko@redhat.com",url:"https://github.com/mfocko",imageURL:"https://github.com/mfocko.png",key:"mfocko"}],frontMatter:{title:"Week 31 in Packit",date:"2023-08-07T00:00:00.000Z",authors:"mfocko",tags:["2023-August","2023","August"]},prevItem:{title:"Week 32 in Packit",permalink:"/posts/weekly/2023/week-32"},nextItem:{title:"July 2023",permalink:"/posts/weekly/July-2023"}},l={authorsImageUrls:[void 0]},p=[],s={toc:p},u="wrapper";function m(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Licenses in Packit specfiles are now confirmed to be SPDX-compatible. (example PR: ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/packit/packit/pull/2026"},"packit#2026"),")\nIf you are interested in more details, see a ",(0,a.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=Hjhe6jtx3Zw&t=8651s"},"talk")," from Flock 2023 by Mirek.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.2ce33fcb.js b/assets/js/main.2ce33fcb.js deleted file mode 100644 index 8c39a5089..000000000 --- a/assets/js/main.2ce33fcb.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.2ce33fcb.js.LICENSE.txt */ -(self.webpackChunkpackit_dev=self.webpackChunkpackit_dev||[]).push([[179],{20830:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var r=n(67294);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(67294),a=n(87462),o=n(68356),i=n.n(o),s=n(16887);const l={"01926b26":[()=>n.e(7111).then(n.bind(n,45758)),"@site/posts/fas-verification-automation/index.md",45758],"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,91223)),"@theme/BlogTagsListPage",91223],"0431a02f":[()=>n.e(6847).then(n.bind(n,70826)),"@site/weekly/January-2023.md?truncated=true",70826],"04495dc7":[()=>n.e(3513).then(n.bind(n,61846)),"@site/research/making-decisions/index.md",61846],"0480b142":[()=>n.e(836).then(n.bind(n,11771)),"@site/docs/faq.md",11771],"04935377":[()=>n.e(5189).then(n.bind(n,75392)),"@site/posts/pre-commit-hooks/index.md",75392],"054d415a":[()=>n.e(2570).then(n.bind(n,65681)),"@site/docs/fedora-releases-guide.md",65681],"05535d53":[()=>n.e(457).then(n.bind(n,34832)),"@site/docs/reproduce-locally.md",34832],"05a87762":[()=>n.e(1863).then(n.bind(n,90559)),"@site/research/ui/dashboard/index.md",90559],"061fa4b9":[()=>n.e(71).then(n.bind(n,32396)),"@site/research/source-git/split-the-stream.md",32396],"06d675e9":[()=>n.e(3964).then(n.bind(n,36110)),"@site/docs/cli/validate-config.md",36110],"074db93b":[()=>n.e(3909).then(n.t.bind(n,73599,19)),"~docs/docs/category-docs-autogenerated-category-downstream-jobs-dea.json",73599],"07a60307":[()=>n.e(3418).then(n.t.bind(n,88430,19)),"~blog/posts/posts-b4e.json",88430],"07ce80b1":[()=>n.e(6026).then(n.bind(n,64185)),"@site/source-git/index.md",64185],"07d9bf67":[()=>n.e(5068).then(n.bind(n,47228)),"@site/docs/cli/sync-from-downstream.md",47228],"07ff0001":[()=>n.e(4328).then(n.bind(n,14424)),"@site/weekly/2023/08/14.md",14424],"08373b81":[()=>n.e(623).then(n.t.bind(n,17697,19)),"~blog/weekly/posts-weekly-tags-august-dad.json",17697],"093cf48e":[()=>n.e(3264).then(n.bind(n,95672)),"@site/research/monitoring/adoption-metrics/implementation.md",95672],"099c9d19":[()=>n.e(3059).then(n.bind(n,99009)),"@site/research/user-stories/python_project_from_scratch.md",99009],"09c5b42f":[()=>n.e(600).then(n.bind(n,17288)),"@site/research/specfiles/library-requirements.md",17288],"0b387740":[()=>n.e(8467).then(n.t.bind(n,69676,19)),"~docs/docs/version-current-metadata-prop-751.json",69676],"0d1f0907":[()=>n.e(3056).then(n.t.bind(n,9054,19)),"~blog/posts/posts-tags-copr-7ad.json",9054],"0d6f3ed0":[()=>n.e(4885).then(n.bind(n,24908)),"@site/deployment/logs.md",24908],"0e5f325a":[()=>n.e(5171).then(n.bind(n,34600)),"@site/docs/cli/source-git/init.md",34600],"1008b54f":[()=>n.e(2699).then(n.bind(n,87434)),"@site/research/database/whats-in-production-database.md",87434],"10a78dc7":[()=>n.e(2767).then(n.bind(n,50527)),"@site/weekly/2023/08/07.md?truncated=true",50527],"10db9446":[()=>n.e(8823).then(n.bind(n,62566)),"@site/docs/configuration/downstream/pull_from_upstream.md",62566],"1243a642":[()=>n.e(4786).then(n.t.bind(n,40146,19)),"~blog/posts/posts-tags-monorepos-ced.json",40146],"12cdc6e3":[()=>n.e(1849).then(n.bind(n,82002)),"@site/deployment/specifics/fedora-source-git.md",82002],"13cb03dc":[()=>n.e(7734).then(n.bind(n,97718)),"@site/research/testing/openshift-to-podman-kube-play.md",97718],"1421d519":[()=>n.e(5496).then(n.bind(n,24869)),"@site/docs/configuration/examples.md",24869],"14eb3368":[()=>Promise.all([n.e(532),n.e(9817)]).then(n.bind(n,34228)),"@theme/DocCategoryGeneratedIndexPage",34228],"1583d6b9":[()=>n.e(5144).then(n.bind(n,44927)),"@site/docs/cli/create-update.md",44927],"1631e7cd":[()=>n.e(171).then(n.t.bind(n,17540,19)),"/home/runner/work/packit.dev/packit.dev/.docusaurus/docusaurus-plugin-content-docs/source-git/plugin-route-context-module-100.json",17540],16333274:[()=>n.e(3199).then(n.t.bind(n,15745,19)),"/home/runner/work/packit.dev/packit.dev/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",15745],"17480b6d":[()=>n.e(9261).then(n.t.bind(n,37371,19)),"/home/runner/work/packit.dev/packit.dev/.docusaurus/docusaurus-plugin-content-docs/docs/plugin-route-context-module-100.json",37371],17896441:[()=>Promise.all([n.e(532),n.e(8954),n.e(7918)]).then(n.bind(n,15154)),"@theme/DocItem",15154],"17cd4ac7":[()=>n.e(8262).then(n.t.bind(n,44275,19)),"~docs/research/category-research-autogenerated-category-deployment-e54.json",44275],"17f63c9e":[()=>n.e(1301).then(n.bind(n,3811)),"@site/weekly/2023/08/14.md?truncated=true",3811],"196b8894":[()=>n.e(7840).then(n.bind(n,63418)),"@site/deployment/continuous-deployment.md",63418],"19d5a286":[()=>n.e(5780).then(n.bind(n,35210)),"@site/deployment/postgresql.md",35210],"1a297f3b":[()=>n.e(8452).then(n.bind(n,47382)),"@site/posts/testing-farm-triggering/index.md",47382],"1a4e3797":[()=>Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,39172)),"@theme/SearchPage",39172],"1b34ddc9":[()=>n.e(3611).then(n.bind(n,25096)),"@site/weekly/2022.md",25096],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,19963)),"@theme/DocPage",19963],"1caf0a5a":[()=>n.e(8800).then(n.bind(n,77280)),"@site/research/monitoring/error-budgets/SLOs-SLIs.md",77280],"1d4d83b3":[()=>n.e(242).then(n.bind(n,90979)),"@site/research/internal-automation/sync2jira.md",90979],"1d7e8137":[()=>n.e(5963).then(n.bind(n,66671)),"@site/research/user-stories/tests-builds-from-more-prs.md",66671],"1df93b7f":[()=>Promise.all([n.e(532),n.e(3237)]).then(n.bind(n,78391)),"@site/src/pages/index.tsx",78391],"1e1536ef":[()=>n.e(4351).then(n.t.bind(n,80781,19)),"~blog/posts/posts-tags-configuration-2cd-list.json",80781],"1e2970af":[()=>n.e(7574).then(n.t.bind(n,9891,19)),"~blog/weekly/posts-weekly-tags-tags-852.json",9891],"1f6a6b55":[()=>n.e(5040).then(n.bind(n,35516)),"@site/research/ux/configuration-versioning.md",35516],"1feca888":[()=>n.e(5728).then(n.bind(n,17587)),"@site/research/celery/task-workflow-refactor.md",17587],"20b5692c":[()=>n.e(2218).then(n.bind(n,88814)),"@site/docs/cli/status.md",88814],"21779a86":[()=>n.e(4488).then(n.bind(n,4200)),"@site/research/deployment/deploy-packit-pr.md",4200],23709317:[()=>n.e(1820).then(n.bind(n,97871)),"@site/source-git/work-with-source-git/build-locally.md",97871],"23a2f3ae":[()=>n.e(2511).then(n.bind(n,89762)),"@site/deployment/tls-certs.md",89762],"273d2bad":[()=>n.e(3735).then(n.t.bind(n,93272,19)),"~blog/posts/posts-tags-propose-downstream-19f.json",93272],"2760f50c":[()=>n.e(2926).then(n.bind(n,37374)),"@site/research/deployment/automotive-rosa.md",37374],"281b958a":[()=>n.e(2846).then(n.bind(n,74509)),"@site/research/deployment/workers-scaling.md",74509],"28d93f7e":[()=>n.e(7855).then(n.bind(n,23581)),"@site/source-git/work-with-source-git/propose-to-dist-git.md",23581],"295a855e":[()=>n.e(8435).then(n.t.bind(n,96082,19)),"~docs/research/category-research-autogenerated-category-user-interface-d06.json",96082],"29f68dba":[()=>n.e(6672).then(n.t.bind(n,43344,19)),"~blog/posts/blog-post-list-prop-posts.json",43344],"2a530d92":[()=>n.e(8372).then(n.bind(n,2303)),"@site/research/integrations/building-srpm-in-copr/september-2022.md",2303],"2b1dd54b":[()=>n.e(6008).then(n.bind(n,43010)),"@site/weekly/February-2023.md",43010],"2cddb6e8":[()=>n.e(7557).then(n.bind(n,95940)),"@site/src/pages/usage.tsx",95940],"2f57843d":[()=>n.e(4518).then(n.bind(n,61620)),"@site/posts/fedora-eln/index.md?truncated=true",61620],"3033bc75":[()=>n.e(3328).then(n.bind(n,57039)),"@site/research/git-notes/index.md",57039],"304350ac":[()=>n.e(7109).then(n.bind(n,27031)),"@site/docs/cli/srpm.md",27031],"3088e41b":[()=>n.e(5349).then(n.bind(n,41730)),"@site/source-git/work-with-source-git/create-source-git.md",41730],"30a5a511":[()=>n.e(2996).then(n.bind(n,87605)),"@site/source-git/work-with-source-git/index.md",87605],31640710:[()=>n.e(9486).then(n.bind(n,23617)),"@site/research/automation-tools/rdopkg.md",23617],"31f13df0":[()=>n.e(4673).then(n.t.bind(n,15956,19)),"/home/runner/work/packit.dev/packit.dev/.docusaurus/docusaurus-plugin-content-docs/deployment/plugin-route-context-module-100.json",15956],"32a4c819":[()=>n.e(6144).then(n.bind(n,65485)),"@site/research/deployment/distributed-workers/index.md",65485],"33dd0779":[()=>n.e(9026).then(n.bind(n,29515)),"@site/research/monitoring/error-budgets/index.md",29515],"34aa6077":[()=>n.e(9256).then(n.bind(n,44429)),"@site/docs/service-level-objectives.md",44429],"35c7dc37":[()=>n.e(2966).then(n.bind(n,63993)),"@site/development/patch-metadata.md",63993],36889891:[()=>n.e(4702).then(n.bind(n,76967)),"@site/research/internal-automation/onboard/index.md",76967],"3733844b":[()=>n.e(1452).then(n.bind(n,55089)),"@site/research/monitoring/index.md",55089],"37ebd97f":[()=>n.e(4132).then(n.bind(n,29487)),"@site/research/specfiles/packages-with-patches/index.md",29487],"391047cf":[()=>n.e(8663).then(n.bind(n,45417)),"@site/research/user-stories/index.md",45417],"39785c65":[()=>n.e(1108).then(n.bind(n,13889)),"@site/research/source-git/dist-git-to-src-git/updates.md",13889],"3bc64c3d":[()=>n.e(8213).then(n.bind(n,37790)),"@site/posts/monorepos/index.md?truncated=true",37790],"3bd03a06":[()=>n.e(2248).then(n.bind(n,58472)),"@site/research/monorepo-support/refactoring.md",58472],"3c24ef76":[()=>n.e(3287).then(n.bind(n,67902)),"@site/weekly/2019.md?truncated=true",67902],"3c25ca84":[()=>n.e(5817).then(n.t.bind(n,71594,19)),"~docs/deployment/version-current-metadata-prop-751.json",71594],"3d8d21df":[()=>n.e(6535).then(n.bind(n,5411)),"@site/docs/about.md",5411],"3de95d1b":[()=>n.e(9448).then(n.bind(n,36245)),"@site/deployment/testing-changes.md",36245],"3ea18bca":[()=>n.e(3235).then(n.bind(n,22884)),"@site/docs/cli/build/local.md",22884],"41a599a1":[()=>n.e(8636).then(n.t.bind(n,93558,19)),"~docs/source-git/version-current-metadata-prop-751.json",93558],"432195cb":[()=>n.e(5248).then(n.bind(n,1763)),"@site/weekly/March-2023.md?truncated=true",1763],"4389629a":[()=>n.e(9984).then(n.t.bind(n,33512,19)),"~blog/weekly/posts-weekly-tags-2023-august-571-list.json",33512],"43ea9c74":[()=>n.e(8845).then(n.bind(n,58163)),"@site/docs/cli/init.md",58163],"4519bae3":[()=>n.e(2224).then(n.bind(n,67965)),"@site/research/deployment/verification.md",67965],"4785b4eb":[()=>n.e(4526).then(n.bind(n,69846)),"@site/research/database/postgres-views/index.md",69846],"4828e39a":[()=>n.e(2993).then(n.bind(n,69722)),"@site/research/source-git/on-pagure.md",69722],"492e9aa4":[()=>n.e(8313).then(n.t.bind(n,66235,19)),"~blog/posts/posts-tags-downstream-247-list.json",66235],"49c953f2":[()=>n.e(6423).then(n.bind(n,21665)),"@site/research/automation-tools/rpkg-util.md",21665],"4a859e77":[()=>n.e(9478).then(n.bind(n,94200)),"@site/research/database/composite-types.md",94200],"4bc529c7":[()=>n.e(9730).then(n.bind(n,56212)),"@site/weekly/January-2023.md",56212],"4cafa77a":[()=>n.e(9140).then(n.bind(n,91397)),"@site/posts/downstream-automation/index.md?truncated=true",91397],"4d03f5fa":[()=>n.e(4455).then(n.bind(n,97918)),"@site/research/monitoring/metrics.md",97918],"4da0ab7d":[()=>n.e(7742).then(n.bind(n,72733)),"@site/docs/cli/build/in-image-builder.md",72733],"50232afd":[()=>n.e(9788).then(n.bind(n,32547)),"@site/deployment/scripts.md",32547],"5043a3ef":[()=>n.e(9023).then(n.bind(n,49859)),"@site/development/how-open-is-this-service.md",49859],"5054467f":[()=>n.e(8314).then(n.t.bind(n,91578,19)),"~blog/weekly/posts-weekly-4b8.json",91578],"50b9f00e":[()=>n.e(7425).then(n.bind(n,62119)),"@site/posts/testing-farm-triggering/index.md?truncated=true",62119],"50ed3ab9":[()=>n.e(534).then(n.t.bind(n,70253,19)),"~docs/docs/category-docs-autogenerated-category-upstream-jobs-c6d.json",70253],"5213a2a3":[()=>n.e(5255).then(n.t.bind(n,32370,19)),"~blog/weekly/posts-weekly-tags-2023-august-571.json",32370],"522bc265":[()=>n.e(7492).then(n.bind(n,4828)),"@site/weekly/May-2023.md?truncated=true",4828],"5331db7a":[()=>n.e(7943).then(n.bind(n,91406)),"@site/weekly/May-2023.md",91406],"55b22ef9":[()=>n.e(5988).then(n.t.bind(n,13921,19)),"~docs/research/category-research-autogenerated-category-integrations-b7a.json",13921],56005495:[()=>n.e(9738).then(n.bind(n,13447)),"@site/docs/cli/build/index.md",13447],56384167:[()=>n.e(860).then(n.t.bind(n,7085,19)),"/home/runner/work/packit.dev/packit.dev/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",7085],"566dc98d":[()=>n.e(3469).then(n.bind(n,23782)),"@site/posts/pull-from-upstream/index.md",23782],56774503:[()=>n.e(485).then(n.bind(n,45159)),"@site/research/celery/tasks-prioritizing.md",45159],"5817dc2c":[()=>n.e(1724).then(n.bind(n,66412)),"@site/posts/2022-features/index.md?truncated=true",66412],"58daa998":[()=>n.e(447).then(n.t.bind(n,3746,19)),"~docs/research/version-current-metadata-prop-751.json",3746],"58deca8d":[()=>n.e(5955).then(n.t.bind(n,63291,19)),"~blog/weekly/posts-weekly-tags-2021-d53-list.json",63291],"598a2fdb":[()=>n.e(4162).then(n.bind(n,85389)),"@site/deployment/index.md",85389],"59e5d3c1":[()=>n.e(7248).then(n.bind(n,83558)),"@site/research/source-git/index.md",83558],"5c560e88":[()=>n.e(1492).then(n.bind(n,47391)),"@site/weekly/April-2023.md?truncated=true",47391],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,36809)),"@generated/docusaurus.config",36809],"5ebbaa88":[()=>n.e(8521).then(n.bind(n,42181)),"@site/deployment/specifics/packit-service.md",42181],"624f6bbf":[()=>n.e(8009).then(n.bind(n,80417)),"@site/weekly/2020.md",80417],"6316283b":[()=>n.e(9209).then(n.t.bind(n,1585,19)),"/home/runner/work/packit.dev/packit.dev/.docusaurus/docusaurus-plugin-content-blog/posts/plugin-route-context-module-100.json",1585],"643da868":[()=>n.e(2888).then(n.bind(n,31298)),"@site/docs/cli/source-git/update-source-git.md",31298],"656ba791":[()=>n.e(7753).then(n.bind(n,21282)),"@site/research/outages/reporting.md",21282],"67ec9723":[()=>n.e(7299).then(n.bind(n,21691)),"@site/posts/manual-triggering/index.md?truncated=true",21691],"6851a236":[()=>n.e(5681).then(n.t.bind(n,27831,19)),"~blog/posts/posts-tags-specfile-0c6.json",27831],"6875c492":[()=>Promise.all([n.e(532),n.e(8954),n.e(6048),n.e(8610)]).then(n.bind(n,41714)),"@theme/BlogTagsPostsPage",41714],"68e6cea6":[()=>n.e(618).then(n.bind(n,86978)),"@site/research/celery/temporal.md",86978],"691ef3b6":[()=>n.e(6720).then(n.t.bind(n,51463,19)),"~docs/research/category-research-autogenerated-category-user-experience-c5c.json",51463],"6a238fac":[()=>n.e(6012).then(n.bind(n,67264)),"@site/posts/copr-srpms/index.md",67264],"6b9c3960":[()=>n.e(8482).then(n.bind(n,42357)),"@site/research/database/data-stores.md",42357],"6cb2d84e":[()=>n.e(1126).then(n.bind(n,98662)),"@site/research/monitoring/github-api-call-inventory/index.md",98662],"6cb47a98":[()=>n.e(8588).then(n.t.bind(n,11696,19)),"~blog/weekly/posts-weekly-tags-august-dad-list.json",11696],"6e047ae3":[()=>n.e(489).then(n.t.bind(n,18847,19)),"~blog/posts/posts-page-2-c5d.json",18847],"6ffa8a82":[()=>n.e(5058).then(n.t.bind(n,91168,19)),"~docs/research/category-research-autogenerated-category-automation-of-internal-processes-f47.json",91168],"709b2afb":[()=>n.e(9022).then(n.bind(n,9034)),"@site/research/automation-tools/tito.md",9034],"72e9ee25":[()=>n.e(589).then(n.t.bind(n,14128,19)),"~blog/posts/posts-tags-copr-7ad-list.json",14128],"72fa94c8":[()=>n.e(6034).then(n.bind(n,24103)),"@site/docs/configuration/actions.md",24103],"74953bbe":[()=>n.e(279).then(n.bind(n,72757)),"@site/weekly/March-2023.md",72757],"763f3776":[()=>n.e(4505).then(n.bind(n,59928)),"@site/research/integrations/downstream/index.md",59928],"7760e989":[()=>n.e(1060).then(n.bind(n,65944)),"@site/docs/cli/index.md",65944],"79686d8b":[()=>n.e(9128).then(n.bind(n,36375)),"@site/source-git/design.md",36375],"7a524534":[()=>n.e(1967).then(n.bind(n,1410)),"@site/posts/2021-features/index.md",1410],"7ae439d7":[()=>n.e(6623).then(n.bind(n,1278)),"@site/source-git/work-with-source-git/update-spec.md",1278],"7ae56ea1":[()=>n.e(3216).then(n.t.bind(n,55014,19)),"~blog/posts/posts-tags-yearly-features-34f.json",55014],"7e7109f9":[()=>n.e(8047).then(n.t.bind(n,93849,19)),"~blog/weekly/posts-weekly-page-2-c85.json",93849],"80c1bd4f":[()=>n.e(1150).then(n.t.bind(n,64320,19)),"~blog/posts/posts-archive-049.json",64320],"814d92e8":[()=>n.e(2861).then(n.bind(n,42536)),"@site/research/ux/improve-service-processing.md",42536],"81a6fbb3":[()=>n.e(6949).then(n.bind(n,497)),"@site/research/ui/dashboard/dashboard-improvements.md",497],"8228eeeb":[()=>n.e(5716).then(n.t.bind(n,70155,19)),"~blog/posts/posts-tags-workflow-5f6.json",70155],"82bb726c":[()=>n.e(9647).then(n.bind(n,3941)),"@site/source-git/status.md",3941],"82d0bde2":[()=>n.e(8088).then(n.bind(n,49099)),"@site/docs/configuration/jobs.md",49099],"840b9c4d":[()=>n.e(4e3).then(n.bind(n,1088)),"@site/docs/cli/propose-downstream.md",1088],"86d5a44a":[()=>n.e(4308).then(n.t.bind(n,47725,19)),"~blog/posts/posts-tags-2021-0c8.json",47725],"886d1372":[()=>n.e(349).then(n.t.bind(n,2988,19)),"~docs/research/category-research-autogenerated-category-database-41c.json",2988],"8875e568":[()=>n.e(6522).then(n.t.bind(n,34584,19)),"~blog/posts/posts-tags-fas-5af-list.json",34584],"8a5fb69f":[()=>n.e(4635).then(n.bind(n,39255)),"@site/research/integrations/console.md",39255],"8a70a7c4":[()=>n.e(5860).then(n.bind(n,61614)),"@site/posts/2022-features/index.md",61614],"8b11c2ab":[()=>n.e(9400).then(n.bind(n,48954)),"@site/docs/cli/build/copr.md",48954],"8b7a4a46":[()=>n.e(3502).then(n.bind(n,23263)),"@site/development/index.md",23263],"8da84e9e":[()=>n.e(284).then(n.t.bind(n,89794,19)),"~blog/posts/posts-tags-2022-5d4-list.json",89794],"8e3fb1e1":[()=>n.e(4550).then(n.bind(n,92673)),"@site/research/ui/website-improvements.md",92673],"8f901ad7":[()=>n.e(7751).then(n.bind(n,8294)),"@site/weekly/2022.md?truncated=true",8294],"900bc352":[()=>n.e(9158).then(n.bind(n,70639)),"@site/deployment/secrets.md",70639],90686207:[()=>n.e(466).then(n.bind(n,54717)),"@site/research/deployment/automation-for-stable-branches.md",54717],"9205cbf2":[()=>n.e(9618).then(n.bind(n,48091)),"@site/research/database/refresh.md",48091],"92dc2473":[()=>n.e(4183).then(n.bind(n,29259)),"@site/docs/configuration/upstream/upstream_koji_build.md",29259],"934c94c3":[()=>n.e(243).then(n.t.bind(n,40536,19)),"~blog/posts/posts-tags-yearly-features-34f-list.json",40536],"943c4455":[()=>n.e(3709).then(n.bind(n,34124)),"@site/posts/pull-from-upstream/index.md?truncated=true",34124],"94b15e4a":[()=>n.e(9359).then(n.bind(n,98399)),"@site/weekly/2020.md?truncated=true",98399],"9600e9a0":[()=>n.e(698).then(n.bind(n,29625)),"@site/weekly/2023/08/07.md",29625],"96c88a1c":[()=>n.e(1073).then(n.t.bind(n,46383,19)),"~blog/weekly/posts-weekly-tags-2023-203.json",46383],"97b08134":[()=>n.e(7520).then(n.bind(n,10241)),"@site/weekly/July-2023.md",10241],"98073b56":[()=>n.e(3156).then(n.t.bind(n,80402,19)),"/home/runner/work/packit.dev/packit.dev/.docusaurus/docusaurus-plugin-content-blog/weekly/plugin-route-context-module-100.json",80402],"98e91f35":[()=>n.e(5779).then(n.t.bind(n,93027,19)),"~blog/posts/posts-tags-propose-downstream-19f-list.json",93027],"99354cae":[()=>n.e(6952).then(n.t.bind(n,34195,19)),"~blog/posts/posts-tags-downstream-247.json",34195],99497812:[()=>n.e(8887).then(n.t.bind(n,80570,19)),"~blog/posts/posts-tags-srpm-071.json",80570],"99aea035":[()=>n.e(7485).then(n.bind(n,52236)),"@site/research/ux/automatic-config-updates.md",52236],"99b62762":[()=>n.e(5695).then(n.bind(n,2093)),"@site/research/monitoring/logs-aggregation/index.md",2093],"9a87c403":[()=>n.e(2).then(n.t.bind(n,94923,19)),"~docs/research/category-research-autogenerated-category-specfiles-f99.json",94923],"9ae5889b":[()=>n.e(7457).then(n.bind(n,20033)),"@site/source-git/work-with-source-git/sync-from-dist-git.md",20033],"9e4087bc":[()=>n.e(3608).then(n.bind(n,63169)),"@theme/BlogArchivePage",63169],a2275ab1:[()=>n.e(3805).then(n.t.bind(n,53385,19)),"~docs/research/category-research-autogenerated-category-testing-759.json",53385],a25cd4f7:[()=>n.e(9024).then(n.bind(n,58546)),"@site/research/ui/dashboard/oauth.md",58546],a2cb0f32:[()=>n.e(9118).then(n.bind(n,47044)),"@site/posts/monorepos/index.md",47044],a2ef09a9:[()=>n.e(7924).then(n.t.bind(n,1951,19)),"~docs/development/version-current-metadata-prop-751.json",1951],a3e02e67:[()=>n.e(825).then(n.t.bind(n,94224,19)),"~blog/weekly/posts-weekly-tags-2022-47e.json",94224],a45a012c:[()=>n.e(5510).then(n.bind(n,1426)),"@site/posts/2021-in-numbers/index.md",1426],a462cc58:[()=>n.e(8061).then(n.bind(n,36598)),"@site/development/creating-stream-9-repos.md",36598],a4bf7db1:[()=>n.e(9146).then(n.t.bind(n,39557,19)),"~blog/posts/posts-tags-summary-862.json",39557],a6752ca1:[()=>n.e(3593).then(n.bind(n,19335)),"@site/posts/fedora-eln/index.md",19335],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(8954),n.e(6048),n.e(3089)]).then(n.bind(n,80046)),"@theme/BlogListPage",80046],a8bb5334:[()=>n.e(8756).then(n.bind(n,36350)),"@site/docs/guide.md",36350],a93f7cfd:[()=>n.e(1644).then(n.bind(n,20561)),"@site/posts/release-field-handling/index.md",20561],ab033af0:[()=>n.e(4251).then(n.bind(n,25558)),"@site/deployment/monitoring.md",25558],ab0407bd:[()=>n.e(7782).then(n.bind(n,95845)),"@site/research/integrations/gitlab/index.md",95845],ac452aa3:[()=>n.e(6314).then(n.t.bind(n,20313,19)),"~blog/posts/posts-tags-configuration-2cd.json",20313],ad33aa20:[()=>n.e(9401).then(n.bind(n,35458)),"@site/docs/cli/source-git/status.md",35458],ae308360:[()=>n.e(6520).then(n.bind(n,27432)),"@site/source-git/work-with-source-git/fix-diverged-history.md",27432],ae6cf626:[()=>n.e(6215).then(n.bind(n,41597)),"@site/docs/cli/prepare-sources.md",41597],aecbbd87:[()=>n.e(8084).then(n.bind(n,78288)),"@site/docs/cli/build/mock.md",78288],af90649c:[()=>n.e(1705).then(n.bind(n,65483)),"@site/research/source-git/sync-status.md",65483],afb295bf:[()=>n.e(5584).then(n.t.bind(n,54075,19)),"~blog/weekly/posts-weekly-tags-2020-8c7.json",54075],b0081a5c:[()=>n.e(9672).then(n.bind(n,9618)),"@site/deployment/vars.md",9618],b1a90e65:[()=>n.e(5940).then(n.bind(n,10637)),"@site/weekly/February-2023.md?truncated=true",10637],b3b08e1f:[()=>n.e(1615).then(n.bind(n,52419)),"@site/research/deployment/distributed-workers/AWS-SQS-RDS.md",52419],b7176c34:[()=>n.e(802).then(n.t.bind(n,8083,19)),"~blog/posts/posts-tags-fas-5af.json",8083],b7d0514c:[()=>n.e(1853).then(n.bind(n,7504)),"@site/posts/downstream-automation/index.md",7504],b8330396:[()=>n.e(4773).then(n.bind(n,41843)),"@site/deployment/specifics/centos-stream-source-git.md",41843],b8a09bca:[()=>n.e(8235).then(n.t.bind(n,65402,19)),"~blog/posts/posts-tags-2021-0c8-list.json",65402],b8c1fd37:[()=>n.e(6767).then(n.bind(n,51537)),"@site/weekly/2021.md",51537],b94605fa:[()=>n.e(7480).then(n.bind(n,38667)),"@site/source-git/work-with-source-git/control-patch-generation.md",38667],b9da35a4:[()=>n.e(6682).then(n.bind(n,25263)),"@site/docs/configuration/upstream/tests.md",25263],be3a2dac:[()=>n.e(8240).then(n.t.bind(n,91371,19)),"~blog/posts/posts-tags-workflow-5f6-list.json",91371],bec3799f:[()=>n.e(7572).then(n.bind(n,16136)),"@site/research/integrations/building-srpm-in-copr/index.md",16136],bf7a3826:[()=>n.e(6318).then(n.bind(n,22967)),"@site/research/user-stories/summit-demo.md",22967],bfdf3364:[()=>n.e(2909).then(n.bind(n,32201)),"@site/research/source-git/fedora-spec-files/index.md",32201],c06492b1:[()=>n.e(8195).then(n.bind(n,60120)),"@site/research/internal-automation/cert-management.md",60120],c14519d6:[()=>n.e(3591).then(n.bind(n,82109)),"@site/docs/cross-project-testing.md",82109],c17489ce:[()=>n.e(391).then(n.bind(n,99358)),"@site/research/monorepo-support/index.md",99358],c1e4ae13:[()=>n.e(9190).then(n.t.bind(n,19267,19)),"~blog/posts/posts-tags-testing-farm-08a-list.json",19267],c21ae192:[()=>n.e(7006).then(n.bind(n,22766)),"@site/research/automation-tools/dlrn.md",22766],c364bf00:[()=>n.e(5061).then(n.bind(n,87736)),"@site/docs/cli/push-updates.md",87736],c377a04b:[()=>n.e(6971).then(n.bind(n,15156)),"@site/docs/index.md",15156],c3aaf83c:[()=>n.e(4175).then(n.bind(n,36862)),"@site/research/automation-tools/rpkg.md",36862],c5ab1ae4:[()=>n.e(7159).then(n.bind(n,98202)),"@site/weekly/June-2023.md",98202],c79e53b3:[()=>n.e(5980).then(n.t.bind(n,35073,19)),"~blog/weekly/posts-weekly-tags-2020-8c7-list.json",35073],ca801a32:[()=>n.e(4412).then(n.bind(n,27205)),"@site/research/index.md",27205],ccc49370:[()=>Promise.all([n.e(532),n.e(8954),n.e(6048),n.e(6103)]).then(n.bind(n,65203)),"@theme/BlogPostPage",65203],cd86d947:[()=>n.e(5919).then(n.bind(n,35541)),"@site/posts/2021-features/index.md?truncated=true",35541],cd954261:[()=>n.e(4159).then(n.bind(n,85296)),"@site/research/outages/index.md",85296],ce3551f9:[()=>n.e(4798).then(n.bind(n,11074)),"@site/research/source-git/in-zuul.md",11074],d164bb8d:[()=>n.e(3510).then(n.t.bind(n,9323,19)),"~blog/weekly/posts-weekly-tags-2023-203-list.json",9323],d1b800f6:[()=>n.e(4849).then(n.t.bind(n,1281,19)),"~docs/deployment/category-deployment-autogenerated-category-deployment-specifics-b06.json",1281],d2883f60:[()=>n.e(8703).then(n.bind(n,77572)),"@site/research/monitoring/error-budgets/users-expectations.md",77572],d33bea9b:[()=>n.e(9418).then(n.bind(n,4507)),"@site/posts/fas-verification-automation/index.md?truncated=true",4507],d34552b2:[()=>n.e(2466).then(n.bind(n,45067)),"@site/docs/configuration/upstream/vm_image_build.md",45067],d3cd371b:[()=>n.e(1906).then(n.bind(n,99348)),"@site/docs/archive-not-matching-git.md",99348],d47d5584:[()=>n.e(3908).then(n.bind(n,49262)),"@site/docs/configuration/downstream/bodhi_update.md",49262],d4906370:[()=>n.e(4554).then(n.t.bind(n,85494,19)),"~blog/posts/posts-tags-monorepos-ced-list.json",85494],d4b098fe:[()=>n.e(9759).then(n.bind(n,23371)),"@site/research/source-git/update.md",23371],d56dea34:[()=>n.e(9792).then(n.bind(n,11293)),"@site/research/internal-automation/onboard/status.md",11293],d5eb4a77:[()=>n.e(8024).then(n.bind(n,47897)),"@site/weekly/April-2023.md",47897],d66c5321:[()=>n.e(6151).then(n.bind(n,45641)),"@site/posts/copr-srpms/index.md?truncated=true",45641],d6a3d420:[()=>n.e(8514).then(n.t.bind(n,53688,19)),"~blog/posts/posts-tags-yearly-numbers-207-list.json",53688],d6ff966b:[()=>n.e(5647).then(n.bind(n,96673)),"@site/docs/configuration/upstream/copr_build.md",96673],d7ccb4c2:[()=>n.e(2442).then(n.t.bind(n,97560,19)),"/home/runner/work/packit.dev/packit.dev/.docusaurus/docusaurus-plugin-content-docs/research/plugin-route-context-module-100.json",97560],d7fc2346:[()=>n.e(7825).then(n.t.bind(n,46949,19)),"~blog/posts/posts-tags-2022-5d4.json",46949],db47a84f:[()=>n.e(721).then(n.bind(n,53215)),"@site/docs/cli/build/koji.md",53215],dbfa3dd6:[()=>n.e(1651).then(n.bind(n,37380)),"@site/posts/pre-commit-hooks/index.md?truncated=true",37380],dce9b99e:[()=>n.e(1873).then(n.bind(n,69845)),"@site/docs/cli/source-git/update-dist-git.md",69845],de459308:[()=>n.e(9432).then(n.bind(n,23309)),"@site/research/source-git/customize-update-dist-git.md",23309],e0c41194:[()=>n.e(3443).then(n.bind(n,38852)),"@site/posts/2021-in-numbers/index.md?truncated=true",38852],e21f8356:[()=>n.e(5646).then(n.bind(n,29256)),"@site/weekly/2019.md",29256],e22550d2:[()=>n.e(9176).then(n.bind(n,76765)),"@site/weekly/July-2023.md?truncated=true",76765],e273a171:[()=>n.e(6982).then(n.bind(n,54345)),"@site/docs/configuration/downstream/koji_build.md",54345],e3603f1c:[()=>n.e(4302).then(n.t.bind(n,45461,19)),"~docs/docs/category-docs-autogenerated-category-source-git-4d4.json",45461],e4074705:[()=>n.e(8781).then(n.bind(n,88500)),"@site/weekly/June-2023.md?truncated=true",88500],e43e771c:[()=>n.e(3383).then(n.t.bind(n,70016,19)),"~blog/weekly/posts-weekly-tags-2019-495.json",70016],e4febce7:[()=>n.e(4836).then(n.bind(n,83867)),"@site/posts/manual-triggering/index.md",83867],e6339af7:[()=>n.e(1907).then(n.t.bind(n,15062,19)),"~blog/weekly/blog-post-list-prop-weekly.json",15062],e648938d:[()=>n.e(747).then(n.bind(n,91446)),"@site/source-git/work-with-source-git/pull-upstream-fixes.md",91446],e6722c50:[()=>n.e(5624).then(n.t.bind(n,38516,19)),"~blog/weekly/posts-weekly-archive-9a4.json",38516],e7dac2d9:[()=>n.e(7653).then(n.bind(n,22102)),"@site/research/integrations/image-builder/index.md",22102],e7dd9cc3:[()=>n.e(1923).then(n.bind(n,56750)),"@site/research/deployment/deployment-improvements/index.md",56750],e8269cea:[()=>n.e(8208).then(n.t.bind(n,88735,19)),"~blog/weekly/posts-weekly-tags-2021-d53.json",88735],e8dac370:[()=>n.e(7446).then(n.t.bind(n,79431,19)),"~blog/posts/posts-tags-tags-3de.json",79431],eb517363:[()=>n.e(292).then(n.bind(n,78375)),"@site/research/monitoring/adoption-metrics/index.md",78375],ebfc212e:[()=>n.e(7061).then(n.t.bind(n,5348,19)),"~blog/posts/posts-tags-testing-farm-08a.json",5348],ec27e18d:[()=>n.e(3780).then(n.bind(n,35387)),"@site/research/source-git/dist-git-to-src-git/index.md",35387],ecc63bc3:[()=>n.e(7366).then(n.bind(n,52445)),"@site/weekly/2021.md?truncated=true",52445],ed5b6b44:[()=>n.e(5206).then(n.t.bind(n,29292,19)),"~blog/posts/posts-tags-specfile-0c6-list.json",29292],f070b3d4:[()=>n.e(2372).then(n.bind(n,28007)),"@site/docs/configuration/upstream/propose_downstream.md",28007],f1552835:[()=>n.e(1730).then(n.t.bind(n,45343,19)),"/home/runner/work/packit.dev/packit.dev/.docusaurus/docusaurus-plugin-content-docs/development/plugin-route-context-module-100.json",45343],f26768b8:[()=>n.e(2152).then(n.t.bind(n,31137,19)),"~blog/weekly/posts-weekly-tags-2022-47e-list.json",31137],f303156d:[()=>n.e(8257).then(n.bind(n,372)),"@site/deployment/images.md",372],f3ec6093:[()=>n.e(3257).then(n.bind(n,46279)),"@site/deployment/internal_tf.md",46279],f4486898:[()=>n.e(317).then(n.t.bind(n,22622,19)),"~docs/research/category-research-autogenerated-category-celery-921.json",22622],f5d908f4:[()=>n.e(9843).then(n.t.bind(n,26376,19)),"~blog/posts/posts-tags-srpm-071-list.json",26376],f6d78023:[()=>n.e(9016).then(n.bind(n,91551)),"@site/docs/configuration/index.md",91551],f80516b8:[()=>n.e(4114).then(n.t.bind(n,98372,19)),"~blog/posts/posts-tags-summary-862-list.json",98372],f8a37000:[()=>n.e(9564).then(n.bind(n,6200)),"@site/posts/release-field-handling/index.md?truncated=true",6200],f8d02322:[()=>n.e(898).then(n.bind(n,86730)),"@site/research/deprecation/index.md",86730],fa89d654:[()=>n.e(4411).then(n.t.bind(n,95819,19)),"~blog/posts/posts-tags-yearly-numbers-207.json",95819],fb94c13d:[()=>n.e(8500).then(n.bind(n,87597)),"@site/research/monitoring/adoption-metrics/define-adoption-metrics.md",87597],fc539523:[()=>n.e(1434).then(n.bind(n,15332)),"@site/research/testing/zuul.md",15332],fd5dbc67:[()=>n.e(2256).then(n.t.bind(n,17111,19)),"~blog/weekly/posts-weekly-tags-2019-495-list.json",17111],ffae348c:[()=>n.e(1260).then(n.bind(n,55091)),"@site/research/testing/external-testing.md",55091],ffe09f92:[()=>n.e(1614).then(n.bind(n,66885)),"@site/research/automation-tools/index.md",66885]};function c(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var u=n(99670),d=n(30226);function p(e,t){if("*"===e)return i()({loading:c,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=s[`${e}-${t}`],p={},f=[],m=[],g=(0,u.Z)(o);return Object.entries(g).forEach((e=>{let[t,n]=e;const r=l[n];r&&(p[t]=r[0],f.push(r[1]),m.push(r[2]))})),i().Map({loading:c,loader:p,modules:f,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const s=n.split(".");s.slice(0,-1).forEach((e=>{o=o[e]})),o[s[s.length-1]]=a}));const s=i.__comp;delete i.__comp;const l=i.__context;return delete i.__context,r.createElement(d.z,{value:l},r.createElement(s,(0,a.Z)({},i,n)))}})}const f=[{path:"/posts",component:p("/posts","1ff"),exact:!0},{path:"/posts/2021-features",component:p("/posts/2021-features","648"),exact:!0},{path:"/posts/2021-in-numbers",component:p("/posts/2021-in-numbers","dd2"),exact:!0},{path:"/posts/2022-features",component:p("/posts/2022-features","3ec"),exact:!0},{path:"/posts/archive",component:p("/posts/archive","90b"),exact:!0},{path:"/posts/copr-srpms",component:p("/posts/copr-srpms","a6c"),exact:!0},{path:"/posts/downstream-automation",component:p("/posts/downstream-automation","a93"),exact:!0},{path:"/posts/fas-verification-automation",component:p("/posts/fas-verification-automation","bcf"),exact:!0},{path:"/posts/fedora-eln",component:p("/posts/fedora-eln","0e1"),exact:!0},{path:"/posts/manual-triggering",component:p("/posts/manual-triggering","27d"),exact:!0},{path:"/posts/monorepos",component:p("/posts/monorepos","db3"),exact:!0},{path:"/posts/page/2",component:p("/posts/page/2","a1e"),exact:!0},{path:"/posts/pre-commit-hooks",component:p("/posts/pre-commit-hooks","0ca"),exact:!0},{path:"/posts/pull-from-upstream",component:p("/posts/pull-from-upstream","904"),exact:!0},{path:"/posts/release-field-handling",component:p("/posts/release-field-handling","fef"),exact:!0},{path:"/posts/tags",component:p("/posts/tags","3ad"),exact:!0},{path:"/posts/tags/2021",component:p("/posts/tags/2021","a42"),exact:!0},{path:"/posts/tags/2022",component:p("/posts/tags/2022","d6c"),exact:!0},{path:"/posts/tags/configuration",component:p("/posts/tags/configuration","e6a"),exact:!0},{path:"/posts/tags/copr",component:p("/posts/tags/copr","691"),exact:!0},{path:"/posts/tags/downstream",component:p("/posts/tags/downstream","9f4"),exact:!0},{path:"/posts/tags/fas",component:p("/posts/tags/fas","195"),exact:!0},{path:"/posts/tags/monorepos",component:p("/posts/tags/monorepos","901"),exact:!0},{path:"/posts/tags/propose-downstream",component:p("/posts/tags/propose-downstream","4d7"),exact:!0},{path:"/posts/tags/specfile",component:p("/posts/tags/specfile","168"),exact:!0},{path:"/posts/tags/srpm",component:p("/posts/tags/srpm","baf"),exact:!0},{path:"/posts/tags/summary",component:p("/posts/tags/summary","5fa"),exact:!0},{path:"/posts/tags/testing-farm",component:p("/posts/tags/testing-farm","2b1"),exact:!0},{path:"/posts/tags/workflow",component:p("/posts/tags/workflow","9b6"),exact:!0},{path:"/posts/tags/yearly-features",component:p("/posts/tags/yearly-features","1e1"),exact:!0},{path:"/posts/tags/yearly-numbers",component:p("/posts/tags/yearly-numbers","30c"),exact:!0},{path:"/posts/testing-farm-triggering",component:p("/posts/testing-farm-triggering","916"),exact:!0},{path:"/posts/weekly",component:p("/posts/weekly","3f4"),exact:!0},{path:"/posts/weekly/2019",component:p("/posts/weekly/2019","b64"),exact:!0},{path:"/posts/weekly/2020",component:p("/posts/weekly/2020","8aa"),exact:!0},{path:"/posts/weekly/2021",component:p("/posts/weekly/2021","2e2"),exact:!0},{path:"/posts/weekly/2022",component:p("/posts/weekly/2022","a10"),exact:!0},{path:"/posts/weekly/2023/08/07",component:p("/posts/weekly/2023/08/07","af9"),exact:!0},{path:"/posts/weekly/2023/08/14",component:p("/posts/weekly/2023/08/14","a46"),exact:!0},{path:"/posts/weekly/April-2023",component:p("/posts/weekly/April-2023","bbe"),exact:!0},{path:"/posts/weekly/archive",component:p("/posts/weekly/archive","6ab"),exact:!0},{path:"/posts/weekly/February-2023",component:p("/posts/weekly/February-2023","606"),exact:!0},{path:"/posts/weekly/January-2023",component:p("/posts/weekly/January-2023","80a"),exact:!0},{path:"/posts/weekly/July-2023",component:p("/posts/weekly/July-2023","f47"),exact:!0},{path:"/posts/weekly/June-2023",component:p("/posts/weekly/June-2023","b0e"),exact:!0},{path:"/posts/weekly/March-2023",component:p("/posts/weekly/March-2023","c0d"),exact:!0},{path:"/posts/weekly/May-2023",component:p("/posts/weekly/May-2023","755"),exact:!0},{path:"/posts/weekly/page/2",component:p("/posts/weekly/page/2","63e"),exact:!0},{path:"/posts/weekly/tags",component:p("/posts/weekly/tags","ad3"),exact:!0},{path:"/posts/weekly/tags/2019",component:p("/posts/weekly/tags/2019","ac2"),exact:!0},{path:"/posts/weekly/tags/2020",component:p("/posts/weekly/tags/2020","dc2"),exact:!0},{path:"/posts/weekly/tags/2021",component:p("/posts/weekly/tags/2021","361"),exact:!0},{path:"/posts/weekly/tags/2022",component:p("/posts/weekly/tags/2022","00e"),exact:!0},{path:"/posts/weekly/tags/2023",component:p("/posts/weekly/tags/2023","c3f"),exact:!0},{path:"/posts/weekly/tags/2023-august",component:p("/posts/weekly/tags/2023-august","655"),exact:!0},{path:"/posts/weekly/tags/august",component:p("/posts/weekly/tags/august","b7b"),exact:!0},{path:"/search",component:p("/search","a40"),exact:!0},{path:"/usage",component:p("/usage","e6d"),exact:!0},{path:"/deployment",component:p("/deployment","c1a"),routes:[{path:"/deployment",component:p("/deployment","905"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/category/deployment-specifics",component:p("/deployment/category/deployment-specifics","144"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/continuous-deployment",component:p("/deployment/continuous-deployment","63e"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/images",component:p("/deployment/images","9e8"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/internal_tf",component:p("/deployment/internal_tf","0fa"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/logs",component:p("/deployment/logs","e17"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/monitoring",component:p("/deployment/monitoring","de7"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/postgresql",component:p("/deployment/postgresql","815"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/scripts",component:p("/deployment/scripts","b62"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/secrets",component:p("/deployment/secrets","bdf"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/specifics/centos-stream-source-git",component:p("/deployment/specifics/centos-stream-source-git","2a2"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/specifics/fedora-source-git",component:p("/deployment/specifics/fedora-source-git","e16"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/specifics/packit-service",component:p("/deployment/specifics/packit-service","d84"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/testing-changes",component:p("/deployment/testing-changes","65b"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/tls-certs",component:p("/deployment/tls-certs","cd0"),exact:!0,sidebar:"autogenerated"},{path:"/deployment/vars",component:p("/deployment/vars","799"),exact:!0,sidebar:"autogenerated"}]},{path:"/development",component:p("/development","b6a"),routes:[{path:"/development",component:p("/development","ce2"),exact:!0,sidebar:"autogenerated"},{path:"/development/creating-stream-9-repos",component:p("/development/creating-stream-9-repos","17d"),exact:!0,sidebar:"autogenerated"},{path:"/development/how-open-is-this-service",component:p("/development/how-open-is-this-service","ff0"),exact:!0,sidebar:"autogenerated"},{path:"/development/patch-metadata",component:p("/development/patch-metadata","eb2"),exact:!0,sidebar:"autogenerated"}]},{path:"/docs",component:p("/docs","fa3"),routes:[{path:"/docs",component:p("/docs","e83"),exact:!0,sidebar:"autogenerated"},{path:"/docs/about",component:p("/docs/about","db0"),exact:!0,sidebar:"autogenerated"},{path:"/docs/archive-not-matching-git",component:p("/docs/archive-not-matching-git","de1"),exact:!0,sidebar:"autogenerated"},{path:"/docs/category/downstream-jobs",component:p("/docs/category/downstream-jobs","dc0"),exact:!0,sidebar:"autogenerated"},{path:"/docs/category/source-git",component:p("/docs/category/source-git","854"),exact:!0,sidebar:"autogenerated"},{path:"/docs/category/upstream-jobs",component:p("/docs/category/upstream-jobs","afa"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli",component:p("/docs/cli","52c"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/build",component:p("/docs/cli/build","a28"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/build/copr",component:p("/docs/cli/build/copr","c3b"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/build/in-image-builder",component:p("/docs/cli/build/in-image-builder","cd6"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/build/koji",component:p("/docs/cli/build/koji","5a6"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/build/local",component:p("/docs/cli/build/local","7aa"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/build/mock",component:p("/docs/cli/build/mock","ede"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/create-update",component:p("/docs/cli/create-update","e84"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/init",component:p("/docs/cli/init","ec0"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/prepare-sources",component:p("/docs/cli/prepare-sources","4d7"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/propose-downstream",component:p("/docs/cli/propose-downstream","7c9"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/push-updates",component:p("/docs/cli/push-updates","fe6"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/source-git/init",component:p("/docs/cli/source-git/init","fbf"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/source-git/status",component:p("/docs/cli/source-git/status","447"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/source-git/update-dist-git",component:p("/docs/cli/source-git/update-dist-git","54a"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/source-git/update-source-git",component:p("/docs/cli/source-git/update-source-git","715"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/srpm",component:p("/docs/cli/srpm","708"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/status",component:p("/docs/cli/status","c40"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/sync-from-downstream",component:p("/docs/cli/sync-from-downstream","135"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cli/validate-config",component:p("/docs/cli/validate-config","5e9"),exact:!0,sidebar:"autogenerated"},{path:"/docs/configuration",component:p("/docs/configuration","399"),exact:!0,sidebar:"autogenerated"},{path:"/docs/configuration/actions",component:p("/docs/configuration/actions","fba"),exact:!0,sidebar:"autogenerated"},{path:"/docs/configuration/downstream/bodhi_update",component:p("/docs/configuration/downstream/bodhi_update","3c9"),exact:!0,sidebar:"autogenerated"},{path:"/docs/configuration/downstream/koji_build",component:p("/docs/configuration/downstream/koji_build","2e5"),exact:!0,sidebar:"autogenerated"},{path:"/docs/configuration/downstream/pull_from_upstream",component:p("/docs/configuration/downstream/pull_from_upstream","6af"),exact:!0,sidebar:"autogenerated"},{path:"/docs/configuration/examples",component:p("/docs/configuration/examples","801"),exact:!0,sidebar:"autogenerated"},{path:"/docs/configuration/jobs",component:p("/docs/configuration/jobs","439"),exact:!0,sidebar:"autogenerated"},{path:"/docs/configuration/upstream/copr_build",component:p("/docs/configuration/upstream/copr_build","a9e"),exact:!0,sidebar:"autogenerated"},{path:"/docs/configuration/upstream/propose_downstream",component:p("/docs/configuration/upstream/propose_downstream","778"),exact:!0,sidebar:"autogenerated"},{path:"/docs/configuration/upstream/tests",component:p("/docs/configuration/upstream/tests","9a7"),exact:!0,sidebar:"autogenerated"},{path:"/docs/configuration/upstream/upstream_koji_build",component:p("/docs/configuration/upstream/upstream_koji_build","5b2"),exact:!0,sidebar:"autogenerated"},{path:"/docs/configuration/upstream/vm_image_build",component:p("/docs/configuration/upstream/vm_image_build","bb3"),exact:!0,sidebar:"autogenerated"},{path:"/docs/cross-project-testing",component:p("/docs/cross-project-testing","422"),exact:!0,sidebar:"autogenerated"},{path:"/docs/faq",component:p("/docs/faq","aa9"),exact:!0,sidebar:"autogenerated"},{path:"/docs/fedora-releases-guide",component:p("/docs/fedora-releases-guide","a44"),exact:!0,sidebar:"autogenerated"},{path:"/docs/guide",component:p("/docs/guide","647"),exact:!0,sidebar:"autogenerated"},{path:"/docs/reproduce-locally",component:p("/docs/reproduce-locally","58c"),exact:!0,sidebar:"autogenerated"},{path:"/docs/service-level-objectives",component:p("/docs/service-level-objectives","086"),exact:!0,sidebar:"autogenerated"}]},{path:"/research",component:p("/research","843"),routes:[{path:"/research",component:p("/research","0a8"),exact:!0,sidebar:"autogenerated"},{path:"/research/automation-tools",component:p("/research/automation-tools","15b"),exact:!0,sidebar:"autogenerated"},{path:"/research/automation-tools/dlrn",component:p("/research/automation-tools/dlrn","5be"),exact:!0,sidebar:"autogenerated"},{path:"/research/automation-tools/rdopkg",component:p("/research/automation-tools/rdopkg","436"),exact:!0,sidebar:"autogenerated"},{path:"/research/automation-tools/rpkg",component:p("/research/automation-tools/rpkg","221"),exact:!0,sidebar:"autogenerated"},{path:"/research/automation-tools/rpkg-util",component:p("/research/automation-tools/rpkg-util","fa6"),exact:!0,sidebar:"autogenerated"},{path:"/research/automation-tools/tito",component:p("/research/automation-tools/tito","15c"),exact:!0,sidebar:"autogenerated"},{path:"/research/category/automation-of-internal-processes",component:p("/research/category/automation-of-internal-processes","ce2"),exact:!0,sidebar:"autogenerated"},{path:"/research/category/celery",component:p("/research/category/celery","70f"),exact:!0,sidebar:"autogenerated"},{path:"/research/category/database",component:p("/research/category/database","bc2"),exact:!0,sidebar:"autogenerated"},{path:"/research/category/deployment",component:p("/research/category/deployment","cf2"),exact:!0,sidebar:"autogenerated"},{path:"/research/category/integrations",component:p("/research/category/integrations","832"),exact:!0,sidebar:"autogenerated"},{path:"/research/category/specfiles",component:p("/research/category/specfiles","080"),exact:!0,sidebar:"autogenerated"},{path:"/research/category/testing",component:p("/research/category/testing","1c6"),exact:!0,sidebar:"autogenerated"},{path:"/research/category/user-experience",component:p("/research/category/user-experience","e80"),exact:!0,sidebar:"autogenerated"},{path:"/research/category/user-interface",component:p("/research/category/user-interface","66e"),exact:!0,sidebar:"autogenerated"},{path:"/research/celery/task-workflow-refactor",component:p("/research/celery/task-workflow-refactor","5fe"),exact:!0,sidebar:"autogenerated"},{path:"/research/celery/tasks-prioritizing",component:p("/research/celery/tasks-prioritizing","dab"),exact:!0,sidebar:"autogenerated"},{path:"/research/celery/temporal",component:p("/research/celery/temporal","c3c"),exact:!0,sidebar:"autogenerated"},{path:"/research/database/composite-types",component:p("/research/database/composite-types","638"),exact:!0,sidebar:"autogenerated"},{path:"/research/database/data-stores",component:p("/research/database/data-stores","1ce"),exact:!0,sidebar:"autogenerated"},{path:"/research/database/postgres-views",component:p("/research/database/postgres-views","cb4"),exact:!0,sidebar:"autogenerated"},{path:"/research/database/refresh",component:p("/research/database/refresh","b0d"),exact:!0,sidebar:"autogenerated"},{path:"/research/database/whats-in-production-database",component:p("/research/database/whats-in-production-database","f9c"),exact:!0,sidebar:"autogenerated"},{path:"/research/deployment/automation-for-stable-branches",component:p("/research/deployment/automation-for-stable-branches","951"),exact:!0,sidebar:"autogenerated"},{path:"/research/deployment/automotive-rosa",component:p("/research/deployment/automotive-rosa","756"),exact:!0,sidebar:"autogenerated"},{path:"/research/deployment/deploy-packit-pr",component:p("/research/deployment/deploy-packit-pr","1c8"),exact:!0,sidebar:"autogenerated"},{path:"/research/deployment/deployment-improvements",component:p("/research/deployment/deployment-improvements","baa"),exact:!0,sidebar:"autogenerated"},{path:"/research/deployment/distributed-workers",component:p("/research/deployment/distributed-workers","235"),exact:!0,sidebar:"autogenerated"},{path:"/research/deployment/distributed-workers/AWS-SQS-RDS",component:p("/research/deployment/distributed-workers/AWS-SQS-RDS","e84"),exact:!0,sidebar:"autogenerated"},{path:"/research/deployment/verification",component:p("/research/deployment/verification","eb0"),exact:!0,sidebar:"autogenerated"},{path:"/research/deployment/workers-scaling",component:p("/research/deployment/workers-scaling","832"),exact:!0,sidebar:"autogenerated"},{path:"/research/deprecation",component:p("/research/deprecation","9d3"),exact:!0,sidebar:"autogenerated"},{path:"/research/git-notes",component:p("/research/git-notes","fe9"),exact:!0,sidebar:"autogenerated"},{path:"/research/integrations/building-srpm-in-copr",component:p("/research/integrations/building-srpm-in-copr","1e9"),exact:!0,sidebar:"autogenerated"},{path:"/research/integrations/building-srpm-in-copr/september-2022",component:p("/research/integrations/building-srpm-in-copr/september-2022","35b"),exact:!0,sidebar:"autogenerated"},{path:"/research/integrations/console",component:p("/research/integrations/console","2f8"),exact:!0,sidebar:"autogenerated"},{path:"/research/integrations/downstream",component:p("/research/integrations/downstream","bdb"),exact:!0,sidebar:"autogenerated"},{path:"/research/integrations/gitlab",component:p("/research/integrations/gitlab","bb6"),exact:!0,sidebar:"autogenerated"},{path:"/research/integrations/image-builder",component:p("/research/integrations/image-builder","4d2"),exact:!0,sidebar:"autogenerated"},{path:"/research/internal-automation/cert-management",component:p("/research/internal-automation/cert-management","2b5"),exact:!0,sidebar:"autogenerated"},{path:"/research/internal-automation/onboard",component:p("/research/internal-automation/onboard","b6c"),exact:!0,sidebar:"autogenerated"},{path:"/research/internal-automation/onboard/status",component:p("/research/internal-automation/onboard/status","3c5"),exact:!0,sidebar:"autogenerated"},{path:"/research/internal-automation/sync2jira",component:p("/research/internal-automation/sync2jira","59f"),exact:!0,sidebar:"autogenerated"},{path:"/research/making-decisions",component:p("/research/making-decisions","ef6"),exact:!0,sidebar:"autogenerated"},{path:"/research/monitoring",component:p("/research/monitoring","a55"),exact:!0,sidebar:"autogenerated"},{path:"/research/monitoring/adoption-metrics",component:p("/research/monitoring/adoption-metrics","8ba"),exact:!0,sidebar:"autogenerated"},{path:"/research/monitoring/adoption-metrics/define-adoption-metrics",component:p("/research/monitoring/adoption-metrics/define-adoption-metrics","0a8"),exact:!0,sidebar:"autogenerated"},{path:"/research/monitoring/adoption-metrics/implementation",component:p("/research/monitoring/adoption-metrics/implementation","d5e"),exact:!0,sidebar:"autogenerated"},{path:"/research/monitoring/error-budgets",component:p("/research/monitoring/error-budgets","326"),exact:!0,sidebar:"autogenerated"},{path:"/research/monitoring/error-budgets/SLOs-SLIs",component:p("/research/monitoring/error-budgets/SLOs-SLIs","34b"),exact:!0,sidebar:"autogenerated"},{path:"/research/monitoring/error-budgets/users-expectations",component:p("/research/monitoring/error-budgets/users-expectations","5f0"),exact:!0,sidebar:"autogenerated"},{path:"/research/monitoring/github-api-call-inventory",component:p("/research/monitoring/github-api-call-inventory","0f3"),exact:!0,sidebar:"autogenerated"},{path:"/research/monitoring/logs-aggregation",component:p("/research/monitoring/logs-aggregation","83b"),exact:!0,sidebar:"autogenerated"},{path:"/research/monitoring/metrics",component:p("/research/monitoring/metrics","af4"),exact:!0,sidebar:"autogenerated"},{path:"/research/monorepo-support",component:p("/research/monorepo-support","0ec"),exact:!0,sidebar:"autogenerated"},{path:"/research/monorepo-support/refactoring",component:p("/research/monorepo-support/refactoring","408"),exact:!0,sidebar:"autogenerated"},{path:"/research/outages",component:p("/research/outages","119"),exact:!0,sidebar:"autogenerated"},{path:"/research/outages/reporting",component:p("/research/outages/reporting","b14"),exact:!0,sidebar:"autogenerated"},{path:"/research/source-git",component:p("/research/source-git","d03"),exact:!0,sidebar:"autogenerated"},{path:"/research/source-git/customize-update-dist-git",component:p("/research/source-git/customize-update-dist-git","96b"),exact:!0,sidebar:"autogenerated"},{path:"/research/source-git/dist-git-to-src-git",component:p("/research/source-git/dist-git-to-src-git","bae"),exact:!0,sidebar:"autogenerated"},{path:"/research/source-git/dist-git-to-src-git/updates",component:p("/research/source-git/dist-git-to-src-git/updates","8be"),exact:!0,sidebar:"autogenerated"},{path:"/research/source-git/fedora-spec-files",component:p("/research/source-git/fedora-spec-files","cd7"),exact:!0,sidebar:"autogenerated"},{path:"/research/source-git/in-zuul",component:p("/research/source-git/in-zuul","0ad"),exact:!0,sidebar:"autogenerated"},{path:"/research/source-git/on-pagure",component:p("/research/source-git/on-pagure","11a"),exact:!0,sidebar:"autogenerated"},{path:"/research/source-git/split-the-stream",component:p("/research/source-git/split-the-stream","7b0"),exact:!0,sidebar:"autogenerated"},{path:"/research/source-git/sync-status",component:p("/research/source-git/sync-status","7c2"),exact:!0,sidebar:"autogenerated"},{path:"/research/source-git/update",component:p("/research/source-git/update","01b"),exact:!0,sidebar:"autogenerated"},{path:"/research/specfiles/library-requirements",component:p("/research/specfiles/library-requirements","2b9"),exact:!0,sidebar:"autogenerated"},{path:"/research/specfiles/packages-with-patches",component:p("/research/specfiles/packages-with-patches","ac7"),exact:!0,sidebar:"autogenerated"},{path:"/research/testing/external-testing",component:p("/research/testing/external-testing","eb2"),exact:!0,sidebar:"autogenerated"},{path:"/research/testing/openshift-to-podman-kube-play",component:p("/research/testing/openshift-to-podman-kube-play","aab"),exact:!0,sidebar:"autogenerated"},{path:"/research/testing/zuul",component:p("/research/testing/zuul","5ec"),exact:!0,sidebar:"autogenerated"},{path:"/research/ui/dashboard",component:p("/research/ui/dashboard","99a"),exact:!0,sidebar:"autogenerated"},{path:"/research/ui/dashboard/dashboard-improvements",component:p("/research/ui/dashboard/dashboard-improvements","257"),exact:!0,sidebar:"autogenerated"},{path:"/research/ui/dashboard/oauth",component:p("/research/ui/dashboard/oauth","de4"),exact:!0,sidebar:"autogenerated"},{path:"/research/ui/website-improvements",component:p("/research/ui/website-improvements","492"),exact:!0,sidebar:"autogenerated"},{path:"/research/user-stories",component:p("/research/user-stories","998"),exact:!0,sidebar:"autogenerated"},{path:"/research/user-stories/python_project_from_scratch",component:p("/research/user-stories/python_project_from_scratch","1d0"),exact:!0,sidebar:"autogenerated"},{path:"/research/user-stories/summit-demo",component:p("/research/user-stories/summit-demo","ec7"),exact:!0,sidebar:"autogenerated"},{path:"/research/user-stories/tests-builds-from-more-prs",component:p("/research/user-stories/tests-builds-from-more-prs","125"),exact:!0,sidebar:"autogenerated"},{path:"/research/ux/automatic-config-updates",component:p("/research/ux/automatic-config-updates","491"),exact:!0,sidebar:"autogenerated"},{path:"/research/ux/configuration-versioning",component:p("/research/ux/configuration-versioning","211"),exact:!0,sidebar:"autogenerated"},{path:"/research/ux/improve-service-processing",component:p("/research/ux/improve-service-processing","361"),exact:!0,sidebar:"autogenerated"}]},{path:"/source-git",component:p("/source-git","837"),routes:[{path:"/source-git",component:p("/source-git","baa"),exact:!0,sidebar:"autogenerated"},{path:"/source-git/design",component:p("/source-git/design","4f6"),exact:!0,sidebar:"autogenerated"},{path:"/source-git/status",component:p("/source-git/status","aa6"),exact:!0,sidebar:"autogenerated"},{path:"/source-git/work-with-source-git",component:p("/source-git/work-with-source-git","ce0"),exact:!0,sidebar:"autogenerated"},{path:"/source-git/work-with-source-git/build-locally",component:p("/source-git/work-with-source-git/build-locally","765"),exact:!0,sidebar:"autogenerated"},{path:"/source-git/work-with-source-git/control-patch-generation",component:p("/source-git/work-with-source-git/control-patch-generation","330"),exact:!0,sidebar:"autogenerated"},{path:"/source-git/work-with-source-git/create-source-git",component:p("/source-git/work-with-source-git/create-source-git","561"),exact:!0,sidebar:"autogenerated"},{path:"/source-git/work-with-source-git/fix-diverged-history",component:p("/source-git/work-with-source-git/fix-diverged-history","adc"),exact:!0,sidebar:"autogenerated"},{path:"/source-git/work-with-source-git/propose-to-dist-git",component:p("/source-git/work-with-source-git/propose-to-dist-git","462"),exact:!0,sidebar:"autogenerated"},{path:"/source-git/work-with-source-git/pull-upstream-fixes",component:p("/source-git/work-with-source-git/pull-upstream-fixes","9f7"),exact:!0,sidebar:"autogenerated"},{path:"/source-git/work-with-source-git/sync-from-dist-git",component:p("/source-git/work-with-source-git/sync-from-dist-git","fab"),exact:!0,sidebar:"autogenerated"},{path:"/source-git/work-with-source-git/update-spec",component:p("/source-git/work-with-source-git/update-spec","044"),exact:!0,sidebar:"autogenerated"}]},{path:"/",component:p("/","6cd"),exact:!0},{path:"*",component:p("*")}]},98934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(67294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},49383:(e,t,n)=>{"use strict";var r=n(67294),a=n(73935),o=n(73727),i=n(70405),s=n(10412);const l=[n(32497),n(3310),n(18320),n(52295)];var c=n(723),u=n(16550),d=n(18790);function p(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var f=n(87462),m=n(35742),g=n(52263),h=n(44996),b=n(86668),y=n(10833),v=n(94711),w=n(19727),k=n(43320),_=n(90197);function x(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,g.Z)(),n=(0,v.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.Z)(),a=function(){const{siteConfig:{url:e}}=(0,g.Z)(),{pathname:t}=(0,u.TH)();return e+(0,h.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function S(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,b.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(y.d,{image:n}),r.createElement(E,null),r.createElement(x,null),r.createElement(_.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,f.Z)({key:t},e))))))}const C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var A=n(98934),L=n(58940);function R(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),R("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function N(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class O extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?R("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),N(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(P,{previousLocation:this.previousLocation,location:t},r.createElement(u.AW,{location:t,render:()=>e}))}}const I=O,D="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",j="__docusaurus-base-url-issue-banner-suggestion-container",B="__DOCUSAURUS_INSERT_BASEURL_BANNER";function F(e){return`\nwindow['${B}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${B}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${D}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{window[B]=!1}),[]),r.createElement(r.Fragment,null,!s.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,F(e))),r.createElement("div",{id:D}))}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,g.Z)(),{pathname:n}=(0,u.TH)();return t&&n===e?r.createElement(z,null):null}function $(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,g.Z)(),i=(0,h.Z)(e),{htmlLang:s,direction:l}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:s,dir:l}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var q=n(44763);function G(){const e=(0,d.H)(c.Z),t=(0,u.TH)();return r.createElement(q.Z,null,r.createElement(L.M,null,r.createElement(A.t,null,r.createElement(p,null,r.createElement($,null),r.createElement(S,null),r.createElement(U,null),r.createElement(I,{location:T(t)},e)))))}var H=n(16887);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var V=n(99670);const W=new Set,K=new Set,Y=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,Q={prefetch(e){if(!(e=>!Y()&&!K.has(e)&&!W.has(e))(e))return!1;W.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(H).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,V.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!Y()&&!K.has(e))(e)&&(K.add(e),N(e))},X=Object.freeze(Q);if(s.Z.canUseDOM){window.docusaurus=X;const e=a.hydrate;N(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(G,null))),document.getElementById("__docusaurus"))}))}},58940:(e,t,n)=>{"use strict";n.d(t,{_:()=>u,M:()=>d});var r=n(67294),a=n(36809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"docs":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"index","docs":[{"id":"about","path":"/docs/about","sidebar":"autogenerated"},{"id":"archive-not-matching-git","path":"/docs/archive-not-matching-git","sidebar":"autogenerated"},{"id":"cli/build/copr","path":"/docs/cli/build/copr","sidebar":"autogenerated"},{"id":"cli/build/in-image-builder","path":"/docs/cli/build/in-image-builder","sidebar":"autogenerated"},{"id":"cli/build/index","path":"/docs/cli/build/","sidebar":"autogenerated"},{"id":"cli/build/koji","path":"/docs/cli/build/koji","sidebar":"autogenerated"},{"id":"cli/build/local","path":"/docs/cli/build/local","sidebar":"autogenerated"},{"id":"cli/build/mock","path":"/docs/cli/build/mock","sidebar":"autogenerated"},{"id":"cli/create-update","path":"/docs/cli/create-update","sidebar":"autogenerated"},{"id":"cli/index","path":"/docs/cli/","sidebar":"autogenerated"},{"id":"cli/init","path":"/docs/cli/init","sidebar":"autogenerated"},{"id":"cli/prepare-sources","path":"/docs/cli/prepare-sources","sidebar":"autogenerated"},{"id":"cli/propose-downstream","path":"/docs/cli/propose-downstream","sidebar":"autogenerated"},{"id":"cli/push-updates","path":"/docs/cli/push-updates","sidebar":"autogenerated"},{"id":"cli/source-git/init","path":"/docs/cli/source-git/init","sidebar":"autogenerated"},{"id":"cli/source-git/status","path":"/docs/cli/source-git/status","sidebar":"autogenerated"},{"id":"cli/source-git/update-dist-git","path":"/docs/cli/source-git/update-dist-git","sidebar":"autogenerated"},{"id":"cli/source-git/update-source-git","path":"/docs/cli/source-git/update-source-git","sidebar":"autogenerated"},{"id":"cli/srpm","path":"/docs/cli/srpm","sidebar":"autogenerated"},{"id":"cli/status","path":"/docs/cli/status","sidebar":"autogenerated"},{"id":"cli/sync-from-downstream","path":"/docs/cli/sync-from-downstream","sidebar":"autogenerated"},{"id":"cli/validate-config","path":"/docs/cli/validate-config","sidebar":"autogenerated"},{"id":"configuration/actions","path":"/docs/configuration/actions","sidebar":"autogenerated"},{"id":"configuration/downstream/bodhi_update","path":"/docs/configuration/downstream/bodhi_update","sidebar":"autogenerated"},{"id":"configuration/downstream/koji_build","path":"/docs/configuration/downstream/koji_build","sidebar":"autogenerated"},{"id":"configuration/downstream/pull_from_upstream","path":"/docs/configuration/downstream/pull_from_upstream","sidebar":"autogenerated"},{"id":"configuration/examples","path":"/docs/configuration/examples","sidebar":"autogenerated"},{"id":"configuration/index","path":"/docs/configuration/","sidebar":"autogenerated"},{"id":"configuration/jobs","path":"/docs/configuration/jobs","sidebar":"autogenerated"},{"id":"configuration/upstream/copr_build","path":"/docs/configuration/upstream/copr_build","sidebar":"autogenerated"},{"id":"configuration/upstream/propose_downstream","path":"/docs/configuration/upstream/propose_downstream","sidebar":"autogenerated"},{"id":"configuration/upstream/tests","path":"/docs/configuration/upstream/tests","sidebar":"autogenerated"},{"id":"configuration/upstream/upstream_koji_build","path":"/docs/configuration/upstream/upstream_koji_build","sidebar":"autogenerated"},{"id":"configuration/upstream/vm_image_build","path":"/docs/configuration/upstream/vm_image_build","sidebar":"autogenerated"},{"id":"cross-project-testing","path":"/docs/cross-project-testing","sidebar":"autogenerated"},{"id":"faq","path":"/docs/faq","sidebar":"autogenerated"},{"id":"fedora-releases-guide","path":"/docs/fedora-releases-guide","sidebar":"autogenerated"},{"id":"guide","path":"/docs/guide","sidebar":"autogenerated"},{"id":"index","path":"/docs/","sidebar":"autogenerated"},{"id":"reproduce-locally","path":"/docs/reproduce-locally","sidebar":"autogenerated"},{"id":"service-level-objectives","path":"/docs/service-level-objectives","sidebar":"autogenerated"},{"id":"/category/upstream-jobs","path":"/docs/category/upstream-jobs","sidebar":"autogenerated"},{"id":"/category/downstream-jobs","path":"/docs/category/downstream-jobs","sidebar":"autogenerated"},{"id":"/category/source-git","path":"/docs/category/source-git","sidebar":"autogenerated"}],"draftIds":[],"sidebars":{"autogenerated":{"link":{"path":"/docs/","label":"index"}}}}],"breadcrumbs":true},"source-git":{"path":"/source-git","versions":[{"name":"current","label":"Next","isLast":true,"path":"/source-git","mainDocId":"index","docs":[{"id":"design","path":"/source-git/design","sidebar":"autogenerated"},{"id":"index","path":"/source-git/","sidebar":"autogenerated"},{"id":"status","path":"/source-git/status","sidebar":"autogenerated"},{"id":"work-with-source-git/build-locally","path":"/source-git/work-with-source-git/build-locally","sidebar":"autogenerated"},{"id":"work-with-source-git/control-patch-generation","path":"/source-git/work-with-source-git/control-patch-generation","sidebar":"autogenerated"},{"id":"work-with-source-git/create-source-git","path":"/source-git/work-with-source-git/create-source-git","sidebar":"autogenerated"},{"id":"work-with-source-git/fix-diverged-history","path":"/source-git/work-with-source-git/fix-diverged-history","sidebar":"autogenerated"},{"id":"work-with-source-git/index","path":"/source-git/work-with-source-git/","sidebar":"autogenerated"},{"id":"work-with-source-git/propose-to-dist-git","path":"/source-git/work-with-source-git/propose-to-dist-git","sidebar":"autogenerated"},{"id":"work-with-source-git/pull-upstream-fixes","path":"/source-git/work-with-source-git/pull-upstream-fixes","sidebar":"autogenerated"},{"id":"work-with-source-git/sync-from-dist-git","path":"/source-git/work-with-source-git/sync-from-dist-git","sidebar":"autogenerated"},{"id":"work-with-source-git/update-spec","path":"/source-git/work-with-source-git/update-spec","sidebar":"autogenerated"}],"draftIds":[],"sidebars":{"autogenerated":{"link":{"path":"/source-git/","label":"index"}}}}],"breadcrumbs":true},"development":{"path":"/development","versions":[{"name":"current","label":"Next","isLast":true,"path":"/development","mainDocId":"index","docs":[{"id":"creating-stream-9-repos","path":"/development/creating-stream-9-repos","sidebar":"autogenerated"},{"id":"how-open-is-this-service","path":"/development/how-open-is-this-service","sidebar":"autogenerated"},{"id":"index","path":"/development/","sidebar":"autogenerated"},{"id":"patch-metadata","path":"/development/patch-metadata","sidebar":"autogenerated"}],"draftIds":[],"sidebars":{"autogenerated":{"link":{"path":"/development/","label":"index"}}}}],"breadcrumbs":true},"deployment":{"path":"/deployment","versions":[{"name":"current","label":"Next","isLast":true,"path":"/deployment","mainDocId":"index","docs":[{"id":"continuous-deployment","path":"/deployment/continuous-deployment","sidebar":"autogenerated"},{"id":"images","path":"/deployment/images","sidebar":"autogenerated"},{"id":"index","path":"/deployment/","sidebar":"autogenerated"},{"id":"internal_tf","path":"/deployment/internal_tf","sidebar":"autogenerated"},{"id":"logs","path":"/deployment/logs","sidebar":"autogenerated"},{"id":"monitoring","path":"/deployment/monitoring","sidebar":"autogenerated"},{"id":"postgresql","path":"/deployment/postgresql","sidebar":"autogenerated"},{"id":"scripts","path":"/deployment/scripts","sidebar":"autogenerated"},{"id":"secrets","path":"/deployment/secrets","sidebar":"autogenerated"},{"id":"specifics/centos-stream-source-git","path":"/deployment/specifics/centos-stream-source-git","sidebar":"autogenerated"},{"id":"specifics/fedora-source-git","path":"/deployment/specifics/fedora-source-git","sidebar":"autogenerated"},{"id":"specifics/packit-service","path":"/deployment/specifics/packit-service","sidebar":"autogenerated"},{"id":"testing-changes","path":"/deployment/testing-changes","sidebar":"autogenerated"},{"id":"tls-certs","path":"/deployment/tls-certs","sidebar":"autogenerated"},{"id":"vars","path":"/deployment/vars","sidebar":"autogenerated"},{"id":"/category/deployment-specifics","path":"/deployment/category/deployment-specifics","sidebar":"autogenerated"}],"draftIds":[],"sidebars":{"autogenerated":{"link":{"path":"/deployment/","label":"index"}}}}],"breadcrumbs":true},"research":{"path":"/research","versions":[{"name":"current","label":"Next","isLast":true,"path":"/research","mainDocId":"index","docs":[{"id":"automation-tools/dlrn","path":"/research/automation-tools/dlrn","sidebar":"autogenerated"},{"id":"automation-tools/index","path":"/research/automation-tools/","sidebar":"autogenerated"},{"id":"automation-tools/rdopkg","path":"/research/automation-tools/rdopkg","sidebar":"autogenerated"},{"id":"automation-tools/rpkg","path":"/research/automation-tools/rpkg","sidebar":"autogenerated"},{"id":"automation-tools/rpkg-util","path":"/research/automation-tools/rpkg-util","sidebar":"autogenerated"},{"id":"automation-tools/tito","path":"/research/automation-tools/tito","sidebar":"autogenerated"},{"id":"celery/task-workflow-refactor","path":"/research/celery/task-workflow-refactor","sidebar":"autogenerated"},{"id":"celery/tasks-prioritizing","path":"/research/celery/tasks-prioritizing","sidebar":"autogenerated"},{"id":"celery/temporal","path":"/research/celery/temporal","sidebar":"autogenerated"},{"id":"database/composite-types","path":"/research/database/composite-types","sidebar":"autogenerated"},{"id":"database/data-stores","path":"/research/database/data-stores","sidebar":"autogenerated"},{"id":"database/postgres-views/index","path":"/research/database/postgres-views/","sidebar":"autogenerated"},{"id":"database/refresh","path":"/research/database/refresh","sidebar":"autogenerated"},{"id":"database/whats-in-production-database","path":"/research/database/whats-in-production-database","sidebar":"autogenerated"},{"id":"deployment/automation-for-stable-branches","path":"/research/deployment/automation-for-stable-branches","sidebar":"autogenerated"},{"id":"deployment/automotive-rosa","path":"/research/deployment/automotive-rosa","sidebar":"autogenerated"},{"id":"deployment/deploy-packit-pr","path":"/research/deployment/deploy-packit-pr","sidebar":"autogenerated"},{"id":"deployment/deployment-improvements/index","path":"/research/deployment/deployment-improvements/","sidebar":"autogenerated"},{"id":"deployment/distributed-workers/AWS-SQS-RDS","path":"/research/deployment/distributed-workers/AWS-SQS-RDS","sidebar":"autogenerated"},{"id":"deployment/distributed-workers/index","path":"/research/deployment/distributed-workers/","sidebar":"autogenerated"},{"id":"deployment/verification","path":"/research/deployment/verification","sidebar":"autogenerated"},{"id":"deployment/workers-scaling","path":"/research/deployment/workers-scaling","sidebar":"autogenerated"},{"id":"deprecation/index","path":"/research/deprecation/","sidebar":"autogenerated"},{"id":"git-notes/index","path":"/research/git-notes/","sidebar":"autogenerated"},{"id":"index","path":"/research/","sidebar":"autogenerated"},{"id":"integrations/building-srpm-in-copr/index","path":"/research/integrations/building-srpm-in-copr/","sidebar":"autogenerated"},{"id":"integrations/building-srpm-in-copr/september-2022","path":"/research/integrations/building-srpm-in-copr/september-2022","sidebar":"autogenerated"},{"id":"integrations/console","path":"/research/integrations/console","sidebar":"autogenerated"},{"id":"integrations/downstream/index","path":"/research/integrations/downstream/","sidebar":"autogenerated"},{"id":"integrations/gitlab/index","path":"/research/integrations/gitlab/","sidebar":"autogenerated"},{"id":"integrations/image-builder/index","path":"/research/integrations/image-builder/","sidebar":"autogenerated"},{"id":"internal-automation/cert-management","path":"/research/internal-automation/cert-management","sidebar":"autogenerated"},{"id":"internal-automation/onboard/index","path":"/research/internal-automation/onboard/","sidebar":"autogenerated"},{"id":"internal-automation/onboard/status","path":"/research/internal-automation/onboard/status","sidebar":"autogenerated"},{"id":"internal-automation/sync2jira","path":"/research/internal-automation/sync2jira","sidebar":"autogenerated"},{"id":"making-decisions/index","path":"/research/making-decisions/","sidebar":"autogenerated"},{"id":"monitoring/adoption-metrics/define-adoption-metrics","path":"/research/monitoring/adoption-metrics/define-adoption-metrics","sidebar":"autogenerated"},{"id":"monitoring/adoption-metrics/implementation","path":"/research/monitoring/adoption-metrics/implementation","sidebar":"autogenerated"},{"id":"monitoring/adoption-metrics/index","path":"/research/monitoring/adoption-metrics/","sidebar":"autogenerated"},{"id":"monitoring/error-budgets/index","path":"/research/monitoring/error-budgets/","sidebar":"autogenerated"},{"id":"monitoring/error-budgets/SLOs-SLIs","path":"/research/monitoring/error-budgets/SLOs-SLIs","sidebar":"autogenerated"},{"id":"monitoring/error-budgets/users-expectations","path":"/research/monitoring/error-budgets/users-expectations","sidebar":"autogenerated"},{"id":"monitoring/github-api-call-inventory/index","path":"/research/monitoring/github-api-call-inventory/","sidebar":"autogenerated"},{"id":"monitoring/index","path":"/research/monitoring/","sidebar":"autogenerated"},{"id":"monitoring/logs-aggregation/index","path":"/research/monitoring/logs-aggregation/","sidebar":"autogenerated"},{"id":"monitoring/metrics","path":"/research/monitoring/metrics","sidebar":"autogenerated"},{"id":"monorepo-support/index","path":"/research/monorepo-support/","sidebar":"autogenerated"},{"id":"monorepo-support/refactoring","path":"/research/monorepo-support/refactoring","sidebar":"autogenerated"},{"id":"outages/index","path":"/research/outages/","sidebar":"autogenerated"},{"id":"outages/reporting","path":"/research/outages/reporting","sidebar":"autogenerated"},{"id":"source-git/customize-update-dist-git","path":"/research/source-git/customize-update-dist-git","sidebar":"autogenerated"},{"id":"source-git/dist-git-to-src-git/index","path":"/research/source-git/dist-git-to-src-git/","sidebar":"autogenerated"},{"id":"source-git/dist-git-to-src-git/updates","path":"/research/source-git/dist-git-to-src-git/updates","sidebar":"autogenerated"},{"id":"source-git/fedora-spec-files/index","path":"/research/source-git/fedora-spec-files/","sidebar":"autogenerated"},{"id":"source-git/in-zuul","path":"/research/source-git/in-zuul","sidebar":"autogenerated"},{"id":"source-git/index","path":"/research/source-git/","sidebar":"autogenerated"},{"id":"source-git/on-pagure","path":"/research/source-git/on-pagure","sidebar":"autogenerated"},{"id":"source-git/split-the-stream","path":"/research/source-git/split-the-stream","sidebar":"autogenerated"},{"id":"source-git/sync-status","path":"/research/source-git/sync-status","sidebar":"autogenerated"},{"id":"source-git/update","path":"/research/source-git/update","sidebar":"autogenerated"},{"id":"specfiles/library-requirements","path":"/research/specfiles/library-requirements","sidebar":"autogenerated"},{"id":"specfiles/packages-with-patches/index","path":"/research/specfiles/packages-with-patches/","sidebar":"autogenerated"},{"id":"testing/external-testing","path":"/research/testing/external-testing","sidebar":"autogenerated"},{"id":"testing/openshift-to-podman-kube-play","path":"/research/testing/openshift-to-podman-kube-play","sidebar":"autogenerated"},{"id":"testing/zuul","path":"/research/testing/zuul","sidebar":"autogenerated"},{"id":"ui/dashboard/dashboard-improvements","path":"/research/ui/dashboard/dashboard-improvements","sidebar":"autogenerated"},{"id":"ui/dashboard/index","path":"/research/ui/dashboard/","sidebar":"autogenerated"},{"id":"ui/dashboard/oauth","path":"/research/ui/dashboard/oauth","sidebar":"autogenerated"},{"id":"ui/website-improvements","path":"/research/ui/website-improvements","sidebar":"autogenerated"},{"id":"user-stories/index","path":"/research/user-stories/","sidebar":"autogenerated"},{"id":"user-stories/python_project_from_scratch","path":"/research/user-stories/python_project_from_scratch","sidebar":"autogenerated"},{"id":"user-stories/summit-demo","path":"/research/user-stories/summit-demo","sidebar":"autogenerated"},{"id":"user-stories/tests-builds-from-more-prs","path":"/research/user-stories/tests-builds-from-more-prs","sidebar":"autogenerated"},{"id":"ux/automatic-config-updates","path":"/research/ux/automatic-config-updates","sidebar":"autogenerated"},{"id":"ux/configuration-versioning","path":"/research/ux/configuration-versioning","sidebar":"autogenerated"},{"id":"ux/improve-service-processing","path":"/research/ux/improve-service-processing","sidebar":"autogenerated"},{"id":"/category/celery","path":"/research/category/celery","sidebar":"autogenerated"},{"id":"/category/database","path":"/research/category/database","sidebar":"autogenerated"},{"id":"/category/deployment","path":"/research/category/deployment","sidebar":"autogenerated"},{"id":"/category/integrations","path":"/research/category/integrations","sidebar":"autogenerated"},{"id":"/category/automation-of-internal-processes","path":"/research/category/automation-of-internal-processes","sidebar":"autogenerated"},{"id":"/category/specfiles","path":"/research/category/specfiles","sidebar":"autogenerated"},{"id":"/category/testing","path":"/research/category/testing","sidebar":"autogenerated"},{"id":"/category/user-interface","path":"/research/category/user-interface","sidebar":"autogenerated"},{"id":"/category/user-experience","path":"/research/category/user-experience","sidebar":"autogenerated"}],"draftIds":[],"sidebars":{"autogenerated":{"link":{"path":"/research/","label":"index"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(57529);const l=JSON.parse('{"docusaurusVersion":"2.4.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.1"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"2.4.1"},"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.1"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"2.4.1"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"2.4.1"}}}'),c={siteConfig:a.default,siteMetadata:l,globalData:o,i18n:i,codeTranslations:s},u=r.createContext(c);function d(e){let{children:t}=e;return r.createElement(u.Provider,{value:c},t)}},44763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(67294),a=n(10412),o=n(35742),i=n(18780),s=n(7452);function l(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(c,{error:t}))}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function u(e){let{error:t,tryAgain:n}=e;return r.createElement(p,{fallback:()=>r.createElement(l,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(s.Z,null,r.createElement(l,{error:t,tryAgain:n})))}const d=e=>r.createElement(u,e);class p extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},10412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},35742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(70405);function o(e){return r.createElement(a.ql,e)}},39960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(87462),a=n(67294),o=n(73727),i=n(18780),s=n(52263),l=n(13919),c=n(10412);const u=a.createContext({collectLink:()=>{}});var d=n(44996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:b=!0,...y}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,s.Z)(),{withBaseUrl:k}=(0,d.C)(),_=(0,a.useContext)(u),x=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>x.current));const E=p||f;const S=(0,l.Z)(E),C=E?.replace("pathname://","");let T=void 0!==C?(A=C,b&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&S&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:v,baseUrl:w}));const L=(0,a.useRef)(!1),R=n?o.OL:o.rU,P=c.Z.canUseIntersectionObserver,N=(0,a.useRef)(),O=()=>{L.current||null==T||(window.docusaurus.preload(T),L.current=!0)};(0,a.useEffect)((()=>(!P&&S&&null!=T&&window.docusaurus.prefetch(T),()=>{P&&N.current&&N.current.disconnect()})),[N,T,P,S]);const I=T?.startsWith("#")??!1,D=!T||!S||I;return D||h||_.collectLink(T),D?a.createElement("a",(0,r.Z)({ref:x,href:T},E&&!S&&{target:"_blank",rel:"noopener noreferrer"},y)):a.createElement(R,(0,r.Z)({},y,{onMouseEnter:O,onTouchStart:O,innerRef:e=>{x.current=e,P&&e&&S&&(N.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(N.current.unobserve(e),N.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),N.current.observe(e))},to:T},n&&{isActive:g,activeClassName:m}))}const f=a.forwardRef(p)},95999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l,I:()=>s});var r=n(67294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(57529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function l(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const s=i({message:t,id:n});return r.createElement(r.Fragment,null,a(s,o))}},29935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},13919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},44996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>s});var r=n(67294),a=n(52263),o=n(13919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},52263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(58940);function o(){return(0,r.useContext)(a._)}},72389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(98934);function o(){return(0,r.useContext)(a._)}},99670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const s=a?`${a}.${o}`:o;r(i)?e(i,s):t[s]=i}))}(e),t}},30226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(67294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},80143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>b,gA:()=>f,WS:()=>m,_r:()=>d,Jo:()=>y,zh:()=>p,yW:()=>h,gB:()=>g});var r=n(16550),a=n(52263),o=n(29935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function c(e,t){const n=l(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},d=()=>i("docusaurus-plugin-content-docs")??u,p=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function m(e){void 0===e&&(e={});const t=f(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:l(t.pluginData,n)}}function g(e){return p(e).versions}function h(e){const t=p(e);return s(t)}function b(e){const t=p(e),{pathname:n}=(0,r.TH)();return c(t,n)}function y(e){const t=p(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=s(e);return{latestDocSuggestion:c(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},18320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(74865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(87410),a=n(36809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},39471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},7452:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Rt});var r=n(67294),a=n(86010),o=n(44763),i=n(10833),s=n(87462),l=n(16550),c=n(95999),u=n(85936);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,c.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??m,{containerRef:n,onClick:a}=f();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,s.Z)({},e,{href:`#${d}`,onClick:a}),t))}var h=n(35281),b=n(19727);const y={skipToContent:"skipToContent_fXgn"};function v(){return r.createElement(g,{className:y.skipToContent})}var w=n(86668),k=n(59689);function _(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...l}=e;return r.createElement("svg",(0,s.Z)({viewBox:"0 0 15 15",width:t,height:n},l),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const x={closeButton:"closeButton_CVFx"};function E(e){return r.createElement("button",(0,s.Z)({type:"button","aria-label":(0,c.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",x.closeButton,e.className)}),r.createElement(_,{width:14,height:14,strokeWidth:3.1}))}const S={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,s.Z)({},e,{className:(0,a.Z)(S.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:T.announcementBarPlaceholder}),r.createElement(C,{className:T.announcementBarContent}),i&&r.createElement(E,{onClick:n,className:T.announcementBarClose}))}var L=n(93163),R=n(12466);var P=n(902),N=n(13102);const O=r.createContext(null);function I(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,N.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,P.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(O.Provider,{value:n},t)}function D(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(O);if(!e)throw new P.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,N.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:D(o)})),[a,o,t])}function j(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var B=n(92949),F=n(72389);function z(e){return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function U(e){return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const s=(0,F.Z)(),l=(0,c.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,c.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,c.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)($.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",$.toggleButton,!s&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!s,title:l,"aria-label":l,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,a.Z)($.toggleIcon,$.darkToggleIcon)})))}const G=r.memo(q),H={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,B.I)();return a?null:r.createElement(G,{className:t,buttonClassName:"dark"===n?H.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var V=n(21327);function W(){return r.createElement(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,L.e)();return r.createElement("button",{type:"button","aria-label":(0,c.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(_,{color:"var(--ifm-color-emphasis-600)"}))}function Y(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(W,null),r.createElement(Z,{className:"margin-right--md"}),r.createElement(K,null))}var Q=n(39960),X=n(44996),J=n(13919),ee=n(98022),te=n(39471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:l,isDropdownLink:c,prependBaseUrlToHref:u,...d}=e;const p=(0,X.Z)(a),f=(0,X.Z)(t),m=(0,X.Z)(o,{forcePrependBaseUrl:!0}),g=i&&o&&!(0,J.Z)(o),h=l?{dangerouslySetInnerHTML:{__html:l}}:{children:r.createElement(r.Fragment,null,i,g&&r.createElement(te.Z,c&&{width:12,height:12}))};return o?r.createElement(Q.Z,(0,s.Z)({href:u?m:o},d,h)):r.createElement(Q.Z,(0,s.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?(0,ee.F)(n,t.pathname):t.pathname.startsWith(f)},d,h))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,s.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,s.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,s.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(86043),se=n(48596),le=n(52263);function ce(e,t){return e.some((e=>function(e,t){return!!(0,se.Mg)(e.to,t)||!!(0,ee.F)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ue(e){let{items:t,position:n,className:o,onClick:i,...l}=e;const c=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{c.current&&!c.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[c]),r.createElement("div",{ref:c,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u})},r.createElement(ne,(0,s.Z)({"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},l,{onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))}}),l.children??l.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(qe,(0,s.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...c}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,le.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(ne,(0,s.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},c,{onClick:e=>{e.preventDefault(),f()}}),c.children??c.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>r.createElement(qe,(0,s.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function pe(e){let{mobile:t=!1,...n}=e;const a=t?de:ue;return r.createElement(a,n)}var fe=n(94711);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const ge="iconLanguage_nlXk";function he(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var be=n(20830),ye=["translations"];function ve(){return ve=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var xe="Ctrl";var Ee=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,o=_e(e,ye),i=a.buttonText,s=void 0===i?"Search":i,l=a.buttonAriaLabel,c=void 0===l?"Search":l,u=we((0,r.useState)(null),2),d=u[0],p=u[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?p("\u2318"):p(xe))}),[]),r.createElement("button",ve({type:"button",className:"DocSearch DocSearch-Button","aria-label":c},o,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(be.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},s)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},d===xe?r.createElement(he,null):d),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),Se=n(35742),Ce=n(66177),Te=n(239),Ae=n(43320);var Le=n(73935);const Re={button:{buttonText:(0,c.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,c.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,c.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,c.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,c.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,c.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,c.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,c.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,c.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,c.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,c.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,c.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,c.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,c.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,c.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,c.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,c.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,c.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,c.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,c.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,c.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,c.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,c.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,c.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,c.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,c.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,c.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Pe=null;function Ne(e){let{hit:t,children:n}=e;return r.createElement(Q.Z,{to:t.url},n)}function Oe(e){let{state:t,onClose:n}=e;const a=(0,Ce.M)();return r.createElement(Q.Z,{to:a(t.query),onClick:n},r.createElement(c.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits}},"See all {count} results"))}function Ie(e){let{contextualSearch:t,externalUrlRegex:a,...o}=e;const{siteMetadata:i}=(0,le.Z)(),c=(0,Te.l)(),u=function(){const{locale:e,tags:t}=(0,Ae._q)();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}(),d=o.searchParameters?.facetFilters??[],p=t?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(u,d):d,f={...o.searchParameters,facetFilters:p},m=(0,l.k6)(),g=(0,r.useRef)(null),h=(0,r.useRef)(null),[b,y]=(0,r.useState)(!1),[v,w]=(0,r.useState)(void 0),k=(0,r.useCallback)((()=>Pe?Promise.resolve():Promise.all([n.e(1426).then(n.bind(n,61426)),Promise.all([n.e(532),n.e(6945)]).then(n.bind(n,46945)),Promise.all([n.e(532),n.e(8894)]).then(n.bind(n,18894))]).then((e=>{let[{DocSearchModal:t}]=e;Pe=t}))),[]),_=(0,r.useCallback)((()=>{k().then((()=>{g.current=document.createElement("div"),document.body.insertBefore(g.current,document.body.firstChild),y(!0)}))}),[k,y]),x=(0,r.useCallback)((()=>{y(!1),g.current?.remove()}),[y]),E=(0,r.useCallback)((e=>{k().then((()=>{y(!0),w(e.key)}))}),[k,y,w]),S=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;(0,ee.F)(a,t)?window.location.href=t:m.push(t)}}).current,C=(0,r.useRef)((e=>o.transformItems?o.transformItems(e):e.map((e=>({...e,url:c(e.url)}))))).current,T=(0,r.useMemo)((()=>e=>r.createElement(Oe,(0,s.Z)({},e,{onClose:x}))),[x]),A=(0,r.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e)),[i.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,i])}({isOpen:b,onOpen:_,onClose:x,onInput:E,searchButtonRef:h}),r.createElement(r.Fragment,null,r.createElement(Se.Z,null,r.createElement("link",{rel:"preconnect",href:`https://${o.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})),r.createElement(Ee,{onTouchStart:k,onFocus:k,onMouseOver:k,onClick:_,ref:h,translations:Re.button}),b&&Pe&&g.current&&(0,Le.createPortal)(r.createElement(Pe,(0,s.Z)({onClose:x,initialScrollY:window.scrollY,initialQuery:v,navigator:S,transformItems:C,hitComponent:Ne,transformSearchClient:A},o.searchPagePath&&{resultsFooterComponent:T},o,{searchParameters:f,placeholder:Re.placeholder,translations:Re.modal})),g.current))}function De(){const{siteConfig:e}=(0,le.Z)();return r.createElement(Ie,e.themeConfig.algolia)}const Me={searchBox:"searchBox_ZlJk"};function je(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,Me.searchBox)},t)}var Be=n(80143),Fe=n(52802);var ze=n(60373);const Ue=e=>e.docs.find((t=>t.id===e.mainDocId));const $e={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,le.Z)(),p=(0,fe.l)(),{search:f,hash:m}=(0,l.TH)(),g=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],h=t?(0,c.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(pe,(0,s.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(me,{className:ge}),h),items:g}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(je,{className:n},r.createElement(De,null))},dropdown:pe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const s=i?"li":"div";return r.createElement(s,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Be.Iw)(a),l=(0,Fe.vY)(t,a);return null===l?null:r.createElement(oe,(0,s.Z)({exact:!0},o,{isActive:()=>i?.path===l.path||!!i?.sidebar&&i.sidebar===l.sidebar,label:n??l.id,to:l.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Be.Iw)(a),l=(0,Fe.oz)(t,a).link;if(!l)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,s.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??l.label,to:l.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,Fe.lO)(a)[0],l=t??i.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,s.Z)({},o,{label:l,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...u}=e;const{search:d,hash:p}=(0,l.TH)(),f=(0,Be.Iw)(n),m=(0,Be.gB)(n),{savePreferredVersionName:g}=(0,ze.J)(n),h=[...o,...m.map((e=>{const t=f.alternateDocVersions[e.name]??Ue(e);return{label:e.label,to:`${t.path}${d}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>g(e.name)}})),...i],b=(0,Fe.lO)(n)[0],y=t&&h.length>1?(0,c.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,v=t&&h.length>1?void 0:Ue(b).path;return h.length<=1?r.createElement(oe,(0,s.Z)({},u,{mobile:t,label:y,to:v,isActive:a?()=>!1:void 0})):r.createElement(pe,(0,s.Z)({},u,{mobile:t,label:y,to:v,items:h,isActive:a?()=>!1:void 0}))}};function qe(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=$e[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function Ge(){const e=(0,L.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(qe,(0,s.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function He(e){return r.createElement("button",(0,s.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(c.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Ze(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(He,{onClick:()=>t.hide()}),t.content)}function Ve(){const e=(0,L.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(j,{header:r.createElement(Y,null),primaryMenu:r.createElement(Ge,null),secondaryMenu:r.createElement(Ze,null)}):null}const We={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ke(e){return r.createElement("div",(0,s.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Ye(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,L.e)(),{navbarRef:s,isNavbarVisible:l}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,R.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=s?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:s,"aria-label":(0,c.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[We.navbarHideable,!l&&We.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Ke,{onClick:i.toggle}),r.createElement(Ve,null))}var Qe=n(18780);const Xe={errorBoundaryError:"errorBoundaryError_a6uf"};function Je(e){return r.createElement("button",(0,s.Z)({type:"button"},e),r.createElement(c.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function et(e){let{error:t}=e;const n=(0,Qe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:Xe.errorBoundaryError},n)}class tt extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const nt="right";function rt(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,s.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function at(){const{toggle:e,shown:t}=(0,L.e)();return r.createElement("button",{onClick:e,"aria-label":(0,c.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(rt,null))}const ot={colorModeToggle:"colorModeToggle_DEke"};function it(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(tt,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(qe,e)))))}function st(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function lt(){const e=(0,L.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??nt)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(st,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(at,null),r.createElement(W,null),r.createElement(it,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(it,{items:a}),r.createElement(Z,{className:ot.colorModeToggle}),!o&&r.createElement(je,null,r.createElement(De,null)))})}function ct(){return r.createElement(Ye,null,r.createElement(lt,null))}function ut(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...l}=t,c=(0,X.Z)(n),u=(0,X.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(Q.Z,(0,s.Z)({className:"footer__link-item"},a?{href:i?u:a}:{to:c},l),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function dt(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(ut,{item:t}))}function pt(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(dt,{key:t,item:e})))))}function ft(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(pt,{key:t,column:e}))))}function mt(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function gt(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(ut,{item:t})}function ht(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(gt,{item:e}),t.length!==n+1&&r.createElement(mt,null))))))}function bt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(ft,{columns:t}):r.createElement(ht,{links:t})}var yt=n(50941);const vt={footerLogoLink:"footerLogoLink_BH7S"};function wt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(yt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function kt(e){let{logo:t}=e;return t.href?r.createElement(Q.Z,{href:t.href,className:vt.footerLogoLink,target:t.target},r.createElement(wt,{logo:t})):r.createElement(wt,{logo:t})}function _t(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function xt(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function Et(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(xt,{style:o,links:n&&n.length>0&&r.createElement(bt,{links:n}),logo:a&&r.createElement(kt,{logo:a}),copyright:t&&r.createElement(_t,{copyright:t})})}const St=r.memo(Et),Ct=(0,P.Qc)([B.S,k.pl,R.OC,ze.L5,i.VC,function(e){let{children:t}=e;return r.createElement(N.n2,null,r.createElement(L.M,null,r.createElement(I,null,t)))}]);function Tt(e){let{children:t}=e;return r.createElement(Ct,null,t)}function At(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(c.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(Je,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(et,{error:t})))))}const Lt={mainWrapper:"mainWrapper_z2l0"};function Rt(e){const{children:t,noFooter:n,wrapperClassName:s,title:l,description:c}=e;return(0,b.t)(),r.createElement(Tt,null,r.createElement(i.d,{title:l,description:c}),r.createElement(v,null),r.createElement(A,null),r.createElement(ct,null),r.createElement("div",{id:d,className:(0,a.Z)(h.k.wrapper.main,Lt.mainWrapper,s)},r.createElement(o.Z,{fallback:e=>r.createElement(At,e)},t)),!n&&r.createElement(St,null))}},21327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(87462),a=n(67294),o=n(39960),i=n(44996),s=n(52263),l=n(86668),c=n(50941);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},s=a.createElement(c.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},s):s}function d(e){const{siteConfig:{title:t}}=(0,s.Z)(),{navbar:{title:n,logo:c}}=(0,l.L)(),{imageClassName:d,titleClassName:p,...f}=e,m=(0,i.Z)(c?.href||"/"),g=n?"":t,h=c?.alt??g;return a.createElement(o.Z,(0,r.Z)({to:m},f,c?.target&&{target:c.target}),c&&a.createElement(u,{logo:c,alt:h,imageClassName:d}),null!=n&&a.createElement("b",{className:p},n))}},90197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(35742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},50941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(87462),a=n(67294),o=n(86010),i=n(72389),s=n(92949);const l={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function c(e){const t=(0,i.Z)(),{colorMode:n}=(0,s.I)(),{sources:c,className:u,alt:d,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,f.map((e=>a.createElement("img",(0,r.Z)({key:e,src:c[e],alt:d,className:(0,o.Z)(l.themedImage,l[`themedImage--${e}`],u)},p)))))}},86043:(e,t,n)=>{"use strict";n.d(t,{u:()=>l,z:()=>h});var r=n(87462),a=n(67294),o=n(10412),i=n(91442);const s="ease-in-out";function l(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?c:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??s}`,height:`${t}px`}}function l(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function f(e){if(!o.Z.canUseDOM)return e?c:u}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:s,disableSSRStyle:l}=e;const c=(0,a.useRef)(null);return p({collapsibleRef:c,collapsed:n,animation:o}),a.createElement(t,{ref:c,style:l?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(c.current,n),i?.(n))},className:s},r)}function g(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[s,l]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&l(t)}),[o,t]),o?a.createElement(m,(0,r.Z)({},n,{collapsed:s})):null}function h(e){let{lazy:t,...n}=e;const r=t?g:m;return a.createElement(r,n)}},59689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>f});var r=n(67294),a=n(72389),o=n(50012),i=n(902),s=n(86668);const l=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),u=()=>"true"===l.get(),d=e=>l.set(String(e)),p=r.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&u()));(0,r.useEffect)((()=>{o(u())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&d(!1),!r&&u()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(p.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},92949:(e,t,n)=>{"use strict";n.d(t,{I:()=>h,S:()=>g});var r=n(67294),a=n(10412),o=n(902),i=n(50012),s=n(86668);const l=r.createContext(void 0),c="theme",u=(0,i.WA)(c),d={light:"light",dark:"dark"},p=e=>e===d.dark?d.dark:d.light,f=e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),m=e=>{u.set(p(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[a,o]=(0,r.useState)(f(e));(0,r.useEffect)((()=>{t&&u.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),u.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=u.get();null!==t&&i(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(l.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(l);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},60373:(e,t,n)=>{"use strict";n.d(t,{J:()=>y,L5:()=>h,Oh:()=>v});var r=n(67294),a=n(80143),o=n(29935),i=n(86668),s=n(52802),l=n(902),c=n(50012);const u=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,c.WA)(u(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.WA)(u(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.WA)(u(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,s]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=m();return r.createElement(f.Provider,{value:n},t)}function h(e){let{children:t}=e;return s.cE?r.createElement(g,null,t):r.createElement(r.Fragment,null,t)}function b(){const e=(0,r.useContext)(f);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function v(){const e=(0,a._r)(),[t]=b();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>l,b:()=>s});var r=n(67294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function s(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function l(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},74477:(e,t,n)=>{"use strict";n.d(t,{E:()=>s,q:()=>i});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function s(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},93163:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>p});var r=n(67294),a=n(13102),o=n(87524),i=n(91980),s=n(86668),l=n(902);const c=r.createContext(void 0);function u(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,s.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[l,c]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(l)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:l})),[e,n,u,l])}function d(e){let{children:t}=e;const n=u();return r.createElement(c.Provider,{value:n},t)}function p(){const e=r.useContext(c);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},13102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>s,Zo:()=>l,n2:()=>i});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function s(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function l(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,s]=i,l=(0,a.Ql)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},19727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(67294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},66177:(e,t,n)=>{"use strict";n.d(t,{K:()=>s,M:()=>l});var r=n(67294),a=n(52263),o=n(91980);const i="q";function s(){return(0,o.Nc)(i)}function l(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,a.Z)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?${i}=${encodeURIComponent(t)}`),[e,n])}},87524:(e,t,n)=>{"use strict";n.d(t,{i:()=>c});var r=n(67294),a=n(10412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const l=!1;function c(){const[e,t]=(0,r.useState)((()=>l?"ssr":s()));return(0,r.useEffect)((()=>{function e(){t(s())}const n=l?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},35281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},91442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},52802:(e,t,n)=>{"use strict";n.d(t,{MN:()=>S,Wl:()=>m,_F:()=>y,cE:()=>p,jA:()=>g,xz:()=>f,hI:()=>E,lO:()=>k,vY:()=>x,oz:()=>_,s1:()=>w});var r=n(67294),a=n(16550),o=n(18790),i=n(80143),s=n(60373),l=n(74477),c=n(1116);function u(e){return Array.from(new Set(e))}var d=n(48596);const p=!!i._r;function f(e){const t=(0,l.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function g(){const{pathname:e}=(0,a.TH)(),t=(0,c.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=v({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const h=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),b=(e,t)=>e.some((e=>y(e,t)));function y(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||b(e.items,t))}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,c.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,s.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,a].filter(Boolean))),[t,n,a])}function _(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,s=i.find((e=>(0,a.LX)(r.pathname,e)));if(!s)return null;const l=s.sidebar,c=l?n.docsSidebars[l]:void 0;return{docElement:(0,o.H)(i),sidebarName:l,sidebarItems:c}}function S(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},82128:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(52263);function a(e){const{siteConfig:t}=(0,r.Z)(),{title:n,titleDelimiter:a}=t;return e?.trim().length?`${e.trim()} ${a} ${n}`:n}},91980:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>c,Rb:()=>s});var r=n(67294),a=n(16550),o=n(61688),i=n(902);function s(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function l(e){return function(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function c(e){const t=l(e)??"",n=function(){const e=(0,a.k6)();return(0,r.useCallback)(((t,n,r)=>{const a=new URLSearchParams(e.location.search);n?a.set(t,n):a.delete(t),(r?.push?e.push:e.replace)({search:a.toString()})}),[e])}();return[t,(0,r.useCallback)(((t,r)=>{n(e,t,r)}),[n,e])]}},10833:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>u,VC:()=>f});var r=n(67294),a=n(86010),o=n(35742),i=n(30226);function s(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(44996),c=n(82128);function u(e){let{title:t,description:n,keywords:a,image:i,children:s}=e;const u=(0,c.p)(t),{withBaseUrl:d}=(0,l.C)(),p=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,u),t&&r.createElement("meta",{property:"og:title",content:u}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),s)}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),s=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:s},r.createElement(o.Z,null,r.createElement("html",{className:s})),n)}function f(e){let{children:t}=e;const n=s(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(p,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>c,Ql:()=>l,i6:()=>s,zX:()=>o});var r=n(67294);const a=n(10412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function l(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},98022:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{F:()=>r})},48596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>s});var r=n(67294),a=n(723),o=n(52263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},12466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>l,RF:()=>d});var r=n(67294),a=n(10412),o=n(72389),i=n(902);const s=r.createContext(void 0);function l(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(s.Provider,{value:n},t)}function c(){const e=(0,r.useContext)(s);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const u=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(u()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=u();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function p(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},43320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>l,os:()=>s});var r=n(80143),a=n(52263),o=n(60373);const i="default";function s(e,t){return`docs-${e}-${t}`}function l(){const{i18n:e}=(0,a.Z)(),t=(0,r._r)(),n=(0,r.WS)(),l=(0,o.Oh)();const c=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,a=l[e],o=t[e].versions.find((e=>e.isLast));return s(e,(r??a??o).name)}))];return{locale:e.currentLocale,tags:c}}},50012:(e,t,n)=>{"use strict";n.d(t,{WA:()=>l});n(67294),n(61688);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function l(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=o(t?.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},94711:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(52263),a=n(16550);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.Z)(),{pathname:i}=(0,a.TH)(),s=o===n?e:e.replace(`/${o}/`,"/"),l=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${s}`:`${s}${e}/`}(r)}${l}`}}}},85936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(67294),a=n(16550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},86668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(52263);function a(){return(0,r.Z)().siteConfig.themeConfig}},6278:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(52263);function a(){const{siteConfig:{themeConfig:e}}=(0,r.Z)();return e}},239:(e,t,n)=>{"use strict";n.d(t,{l:()=>s});var r=n(67294),a=n(98022),o=n(44996),i=n(6278);function s(){const{withBaseUrl:e}=(0,o.C)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.L)();return(0,r.useCallback)((r=>{const o=new URL(r);if((0,a.F)(t,o.href))return r;const i=`${o.pathname+o.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},54143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},18780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(54143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},86010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>A,Ep:()=>p});var r=n(87462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var s=n(38776);function l(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,g(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(59864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=l(t),g=l(n),h=0;h{"use strict";e.exports=function(e,t,n,r,a,o,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},32497:(e,t,n)=>{"use strict";n.r(t)},52295:(e,t,n)=>{"use strict";n.r(t)},74865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,u,d)),1===e?(l(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){l(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),s=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},27418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,s=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);x+=_.value.length,_=_.next){var E=_.value;if(t.length>e.length)return;if(!(E instanceof a)){var S,C=1;if(y){if(!(S=o(k,x,e,b))||S.index>=e.length)break;var T=S.index,A=S.index+S[0].length,L=x;for(L+=_.value.length;T>=L;)L+=(_=_.next).value.length;if(x=L-=_.value.length,_.value instanceof a)continue;for(var R=_;R!==t.tail&&(Ld.reach&&(d.reach=I);var D=_.prev;if(N&&(D=l(t,D,N),x+=N.length),c(t,D,C),_=l(t,D,new a(p,h?r.tokenize(P,h):P,v,P)),O&&l(t,_,O),C>1){var M={cause:p+","+m,reach:I};i(e,t,n,_.prev,x,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function l(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function c(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},l=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var s=p(/^\{$/,/^\}$/);if(-1===s)continue;for(var l=n;l=0&&f(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function l(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function c(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,l(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function u(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,u={},d=l(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=s(i++,r)););return u[n]=a,n})).join(""),n,r),p=Object.keys(u);return i=0,function e(t){for(var n=0;n=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=p[i],o="string"==typeof r?r:r.content,s=o.indexOf(a);if(-1!==s){++i;var l=o.substring(0,s),d=c(u[a]),f=o.substring(s+a.length),m=[];if(l&&m.push(l),m.push(d),f){var g=[f];e(g),m.push.apply(m,g)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var h=r.content;Array.isArray(h)?e(h):e([h])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},s=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var l=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(l=i(t[r-1])+l,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",l,null,l)}a.content&&"string"!=typeof a.content&&s(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||s(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,s=i.length;-1!==n.code.indexOf(a=t(r,s));)++s;return i[s]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=o.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),y=[];g&&y.push.apply(y,i([g])),y.push(h),b&&y.push.apply(y,i([b])),"string"==typeof c?s.splice.apply(s,[l,1].concat(y)):c.content=y}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},29901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(29901),a=n(39642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(16500).resolve(t)],delete Prism.languages[e],n(16500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},16500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=16500},39642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var s={},l=e[r];if(l){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var i in a(t,o),s[t]=!0,n[t])s[i]=!0}t(l.require,c),t(l.optional,c),t(l.modify,c)}n[r]=s,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,s){var l=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(l);i=i.map(c),s=(s||[]).map(c);var u=n(i),d=n(s);i.forEach((function e(n){var r=l[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(l),m=u;a(m);){for(var g in p={},m){var h=l[g];t(h&&h.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var y in f(b))if(y in u){p[b]=!0;break}for(var v in m=p)u[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,s={},l={};function c(e){if(e in s)return s[e];l[e]=!0;var a,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)a=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete l[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return s[e]=a}for(var u in n)c(u);var d=[];for(var p in l)d.push(s[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},92703:(e,t,n)=>{"use strict";var r=n(50414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:(e,t,n)=>{"use strict";var r=n(67294),a=n(27418),o=n(63840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n