{"title":"Så här släpper du Django","version":"6.0","locale":"sv","docname":"internals/howto-release-django","url":"/sv/6.0/internals/howto-release-django/","canonical":"https://djangodocs.dev/sv/6.0/internals/howto-release-django/","summary":"Detta dokument förklarar hur du släpper Django. Poängen här är att vara beskrivande, inte föreskrivande, så känn dig fri att effektivisera eller på annat sätt göra…","html":"<h1>Så här släpper du Django<a class=\"heading-anchor\" href=\"#how-to-release-django\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Detta dokument förklarar hur du släpper Django.</p>\n<p><strong>Poängen här är att vara beskrivande, inte föreskrivande, så känn dig fri att effektivisera eller på annat sätt göra ändringar, men **uppdatera detta dokument i enlighet med detta!</strong></p>\n<section id=\"overview\">\n<h2>Översikt<a class=\"heading-anchor\" href=\"#overview\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Det finns tre typer av releaser som du kan behöva göra:</p>\n<ul class=\"simple\">\n<li><p>Säkerhetsreleaser: avslöja och åtgärda en sårbarhet. Detta innebär i allmänhet två eller tre samtidiga releaser - t.ex. 3.2.x, 4.0.x och, beroende på tidpunkt, kanske en 4.1.x.</p></li>\n<li><p>Regelbundna versionsreleaser: antingen en slutlig version (t.ex. 4.1) eller en buggfixuppdatering (t.ex. 4.1.1).</p></li>\n<li><p>Förhandsversioner: t.ex. 4.2 alpha, beta eller rc.</p></li>\n</ul>\n<p>Den korta versionen av de inblandade stegen är:</p>\n<ol class=\"arabic simple\">\n<li><p>Om det rör sig om en säkerhetsrelease ska du meddela säkerhetsdistributionslistan en vecka före den faktiska releasen.</p></li>\n<li><p>Korrekturläsa versionsinformation, leta efter organisations- och skrivfel. Skriva ett blogginlägg och ett e-postmeddelande.</p></li>\n<li><p>Uppdatera versionsnummer och skapa artefakter för releasen.</p></li>\n<li><p>Skapa den nya <code class=\"docutils literal notranslate\"><span class=\"pre\">Release</span></code> i administratören på <code class=\"docutils literal notranslate\"><span class=\"pre\">djangoproject.com</span></code>.</p>\n<ol class=\"arabic simple\">\n<li><p>Ange rätt datum men se till att flaggan <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code> är inaktiverad.</p></li>\n<li><p>Ladda upp artefakterna (tarball, wheel och checksummor).</p></li>\n</ol>\n</li>\n<li><p>Verifiera paketens signaturer, kontrollera om de kan installeras och säkerställa minimal funktionalitet.</p></li>\n<li><p>Ladda upp den nya versionen/versionerna till PyPI.</p></li>\n<li><p>Aktivera flaggan <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code> för varje utgåva i administratören på <code class=\"docutils literal notranslate\"><span class=\"pre\">djangoproject.com</span></code>.</p></li>\n<li><p>Publicera blogginlägget och skicka ut e-postmeddelandena.</p></li>\n<li><p>Uppdatera versionsnummer efter release i stabila grenar.</p></li>\n<li><p>Lägg till stub versionsinformation för nästa patch release i <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> och backport.</p></li>\n</ol>\n<p>Det finns många detaljer, så läs gärna vidare.</p>\n<aside class=\"admonition-use-the-checklists-app admonition\" id=\"checklist-generator\">\n<p class=\"admonition-title\">Use the checklists app</p>\n<p>To generate a checklist compiling the tasks described below as relevant to\nthe specific release(s) you are issuing, use the checklists app in the\n<a class=\"reference external\" href=\"https://www.djangoproject.com/admin/checklists/\">project admin</a>. This\npopulates a lot of boilerplate you will need for announcements, CVE\npublication, and hashes for commit messages. By using this app for preparing\nsecurity issue metadata, your peer releasers can check your entries and\nconsult them again in the future. See <a class=\"reference external\" href=\"https://www.djangoproject.com/checklists/release/5.2.4/\">example checklist</a>.</p>\n</aside>\n</section>\n<section id=\"prerequisites\">\n<h2>Förutsättningar<a class=\"heading-anchor\" href=\"#prerequisites\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Du behöver några saker innan du sätter igång. Om det här är din första release måste du samordna med en annan releaser för att få allt detta klart, och skriva till Ops e-postlista och begära nödvändig åtkomst och behörigheter.</p>\n<ul>\n<li><p>En Unix-miljö med dessa verktyg installerade (i alfabetisk ordning):</p>\n<ul class=\"simple\">\n<li><p>bash</p></li>\n<li><p>git</p></li>\n<li><p>GPG</p></li>\n<li><p>göra</p></li>\n<li><p>man</p></li>\n<li><p>hashingverktyg (vanligtvis <code class=\"docutils literal notranslate\"><span class=\"pre\">md5sum</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">sha1sum</span></code> och <code class=\"docutils literal notranslate\"><span class=\"pre\">sha256sum</span></code> på Linux, eller <code class=\"docutils literal notranslate\"><span class=\"pre\">md5</span></code> och <code class=\"docutils literal notranslate\"><span class=\"pre\">shasum</span></code> på macOS)</p></li>\n<li><p>python</p></li>\n</ul>\n</li>\n<li><p>Ett GPG-nyckelpar. Se till att den privata delen av den här nyckeln lagras på ett säkert sätt. Den publika delen måste laddas upp till ditt GitHub-konto och även till Jenkins-servern som kör jobbet ”confirm release”.</p>\n<aside class=\"admonition-more-than-one-gpg-key admonition\">\n<p class=\"admonition-title\">Mer än en GPG-nyckel</p>\n<p>Om den nyckel du vill använda inte är din standardsigneringsnyckel måste du lägga till <code class=\"docutils literal notranslate\"><span class=\"pre\">-u</span> <span class=\"pre\">you&#64;example.com</span></code> till varje GPG-signeringskommando som visas nedan, där <code class=\"docutils literal notranslate\"><span class=\"pre\">you&#64;example.com</span></code> är den e-postadress som är kopplad till den nyckel du vill använda.</p>\n</aside>\n</li>\n<li><p>En ren virtuell Python-miljö (Python 3.9+) för att bygga artefakter, med dessa nödvändiga Python-paket installerade:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>python<span class=\"w\"> </span>-m<span class=\"w\"> </span>pip<span class=\"w\"> </span>install<span class=\"w\"> </span>build<span class=\"w\"> </span>twine\n</code></pre></div>\n</li>\n<li><p>Access to <a class=\"reference external\" href=\"https://pypi.org/project/Django/\">Django’s project on PyPI</a> to\nupload binaries, ideally with extra permissions to <a class=\"reference external\" href=\"https://pypi.org/help/#yanked\">yank a release</a> if necessary. Create a project-scoped token\nfollowing the <a class=\"reference external\" href=\"https://pypi.org/help/#apitoken\">official documentation</a>\nand set up your <code class=\"docutils literal notranslate\"><span class=\"pre\">$HOME/.pypirc</span></code> file like this:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"ini\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">~/.pypirc</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Ini</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Ini code\"><code><span class=\"k\">[distutils]</span>\n<span class=\"w\">  </span><span class=\"na\">index-servers</span><span class=\"w\"> </span><span class=\"o\">=</span>\n<span class=\"w\">    </span><span class=\"na\">pypi</span>\n<span class=\"w\">    </span><span class=\"na\">django</span>\n\n<span class=\"k\">[pypi]</span>\n<span class=\"w\">  </span><span class=\"na\">username</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s\">__token__</span>\n<span class=\"w\">  </span><span class=\"na\">password</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"c1\"># User-scoped or project-scoped token, to set as the default.</span>\n\n<span class=\"k\">[django]</span>\n<span class=\"w\">  </span><span class=\"na\">repository</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s\">https://upload.pypi.org/legacy/</span>\n<span class=\"w\">  </span><span class=\"na\">username</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s\">__token__</span>\n<span class=\"w\">  </span><span class=\"na\">password</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"c1\"># A project token.</span>\n</code></pre></figure>\n</li>\n<li><p>Access to <a class=\"reference external\" href=\"https://app.transifex.com/django/django/\">Django’s project on Transifex</a>, with a Manager role. Generate\nan API Token in the <a class=\"reference external\" href=\"https://app.transifex.com/user/settings/api/\">user setting section</a> and set up your\n<code class=\"docutils literal notranslate\"><span class=\"pre\">$HOME/.transifexrc</span></code> file like this:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"ini\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">~/.transifexrc</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Ini</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Ini code\"><code><span class=\"k\">[https://www.transifex.com]</span>\n<span class=\"w\">  </span><span class=\"na\">rest_hostname</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s\">https://rest.api.transifex.com</span>\n<span class=\"w\">  </span><span class=\"na\">token</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"c1\"># API token</span>\n</code></pre></figure>\n</li>\n<li><p>Tillgång till Django-administratören på <code class=\"docutils literal notranslate\"><span class=\"pre\">djangoproject.com</span></code> som ”Site maintainer”.</p></li>\n<li><p>Access to create a post in the <a class=\"reference external\" href=\"https://forum.djangoproject.com/c/announcements/7\">Django Forum - Announcements category</a> and to send emails to\nthe <a class=\"reference external\" href=\"https://groups.google.com/g/django-announce/\">django-announce</a>\nmailing list.</p></li>\n<li><p>Tillgång till <code class=\"docutils literal notranslate\"><span class=\"pre\">django-security</span></code> repo i GitHub. Detta ger bland annat tillgång till distributionslistan för föranmälningar (behövs för förberedelser inför säkerhetsreleaser).</p></li>\n<li><p>Access to the Django project on <a class=\"reference external\" href=\"https://readthedocs.org/projects/django/\">Read the Docs</a>.</p></li>\n</ul>\n</section>\n<section id=\"pre-release-tasks\">\n<h2>Uppgifter före lansering<a class=\"heading-anchor\" href=\"#pre-release-tasks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Några saker måste tas om hand innan man ens påbörjar releaseprocessen. Det här börjar ungefär en vecka före lanseringen; det mesta kan göras när som helst fram till den faktiska lanseringen.</p>\n<section id=\"or-more-days-before-a-security-release\">\n<h3>10 (eller fler) dagar före en säkerhetsrelease<a class=\"heading-anchor\" href=\"#or-more-days-before-a-security-release\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ol class=\"arabic\">\n<li><p>Reserve one <a class=\"reference external\" href=\"https://www.cve.org/About/Overview/\">CVE ID</a> per security\nissue as follows. (Or, if you lack CNA credentials, email\n<code class=\"docutils literal notranslate\"><span class=\"pre\">cna&#64;djangoproject.com</span></code> with a request.)</p>\n<ul>\n<li><p>Enable virtual environment with <a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/cvelib/\">cvelib</a> installed.</p></li>\n<li><p>Export user information:</p>\n<blockquote>\n<div><div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span><span class=\"nb\">export</span><span class=\"w\"> </span><span class=\"nv\">CVE_USER</span><span class=\"o\">=</span>&lt;user-email&gt;@djangoproject.com<span class=\"w\"> </span><span class=\"nv\">CVE_ORG</span><span class=\"o\">=</span>DSF\n</code></pre></div>\n</div></blockquote>\n</li>\n<li><p>Reserve:</p>\n<blockquote>\n<div><div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>cve<span class=\"w\"> </span>--interactive<span class=\"w\"> </span>reserve<span class=\"w\"> </span>&lt;quantity&gt;\n</code></pre></div>\n</div></blockquote>\n</li>\n</ul>\n</li>\n<li><p>Generera relevanta (privata) patchar med hjälp av <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">format-patch</span></code>, en för <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code>-grenen och en för varje stabil gren som patchar.</p></li>\n</ol>\n</section>\n<section id=\"a-week-before-a-security-release\">\n<h3>En vecka före en säkerhetsrelease<a class=\"heading-anchor\" href=\"#a-week-before-a-security-release\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ol class=\"arabic\">\n<li><p>Send out pre-notification exactly <strong>one week</strong> before the security release.\nThe template for that email and a list of the recipients are in the private\n<code class=\"docutils literal notranslate\"><span class=\"pre\">django-security</span></code> GitHub wiki. BCC the pre-notification recipients, and be\nsure to include the relevant CVE IDs. Attach all the relevant patches\n(targeting <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> and the stable branches), and sign the email text with\nthe key you’ll use for the release, with a command like:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>gpg<span class=\"w\"> </span>--clearsign<span class=\"w\"> </span>--digest-algo<span class=\"w\"> </span>SHA256<span class=\"w\"> </span>prenotification-email.txt\n</code></pre></div>\n</li>\n<li><p><a class=\"reference internal\" href=\"/sv/6.0/internals/security/#security-disclosure\"><span class=\"std std-ref\">Notify django-announce</span></a> of the upcoming\nsecurity release with a general message such as:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Text code\"><code>Notice of upcoming Django security releases (3.2.24, 4.2.10 and 5.0.2)\n\nDjango versions 5.0.2, 4.2.10, and 3.2.24 will be released on Tuesday,\nFebruary 6th, 2024 around 1500 UTC. They will fix one security defect\nwith severity &quot;moderate&quot;.\n\nFor details of severity levels, see:\nhttps://docs.djangoproject.com/en/dev/internals/security/#how-django-discloses-security-issues\n</code></pre></div>\n</li>\n<li><p>Prepare issue metadata:\n* Severity\n* Short description\n* Reporter\n* Remediator\n* Reported at\n* Confirmed at (usually date CVE reserved)\n* CWE Problem Type\n* CAPEC Impact Type\n* CVSS (4.0) Score &amp; Vector</p></li>\n</ol>\n</section>\n<section id=\"a-few-days-before-any-release\">\n<h3>Några dagar före eventuell lansering<a class=\"heading-anchor\" href=\"#a-few-days-before-any-release\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ol class=\"arabic\">\n<li><p>När releasen närmar sig ska du titta på Trac för att se till att inga releaseblockerare finns kvar för den kommande releasen. Under exceptionella omständigheter, t.ex. för att uppfylla ett förutbestämt säkerhetsdatum, kan en release fortfarande ske med en öppen releaseblockerare. Det är upp till releasegivaren att besluta om en release ska ske med en öppen releaseblockerare eller om releasedatumet för en icke-säkerhetsrelease ska skjutas upp om så krävs.</p></li>\n<li><p>Kontrollera med de andra sammanslagningarna för att se till att de inte har några ändringar som inte har bekräftats för utgåvan.</p></li>\n<li><p>Korrekturläsa versionsinformation, inklusive att titta på online-versionen för att <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-documentation/#documentation-link-check\"><span class=\"std std-ref\">fånga upp eventuella brutna länkar</span></a> eller reST-fel, och se till att versionsinformation innehåller rätt datum.</p></li>\n<li><p>Dubbelkolla att versionsnoterna nämner tidsfrister för föråldring för alla API: er som anges som föråldrade, och att de nämner eventuella ändringar i Python-versionens stöd.</p></li>\n<li><p>Dubbelkolla att versionsinformation-indexet har en länk till noterna för den nya releasen; detta kommer att finnas i <code class=\"docutils literal notranslate\"><span class=\"pre\">docs/releases/index.txt</span></code>.</p></li>\n<li><p>If this is a <a class=\"reference internal\" href=\"/sv/6.0/internals/release-process/#term-Feature-release\"><span class=\"xref std std-term\">feature release</span></a>, ensure translations from Transifex\nhave been integrated.</p>\n<p>In addition to having a configured Transifex account, ensure that the <a class=\"reference external\" href=\"https://developers.transifex.com/docs/cli\">tx\nCLI</a> is available in your\n<code class=\"docutils literal notranslate\"><span class=\"pre\">PATH</span></code>. You can then fetch all translations since a given date by running:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>python<span class=\"w\"> </span>scripts/manage_translations.py<span class=\"w\"> </span>fetch<span class=\"w\"> </span>-v<span class=\"w\"> </span><span class=\"m\">1</span><span class=\"w\"> </span>--since<span class=\"o\">=</span>&lt;some<span class=\"w\"> </span>date&gt;\n</code></pre></div>\n<p>To determine a good value for <code class=\"docutils literal notranslate\"><span class=\"pre\">--since</span></code>, check the date of the most recent\ncommit with wording similar to <code class=\"docutils literal notranslate\"><span class=\"pre\">Updated</span> <span class=\"pre\">translations</span> <span class=\"pre\">from</span> <span class=\"pre\">Transifex</span></code> and\nuse a date a few days prior.</p>\n<p>Det här kommandot tar lite tid att köra. När det är klart ska du noggrant granska utdata efter eventuella fel och/eller varningar. Om det finns några måste du felsöka och lösa dem från fall till fall.</p>\n<p>De nyligen hämtade översättningarna behöver justeras manuellt. Först och främst måste värdena för <code class=\"docutils literal notranslate\"><span class=\"pre\">PO-Revision-Date</span></code> manuellt flyttas så att de är senare än <code class=\"docutils literal notranslate\"><span class=\"pre\">POT-Creation-Date</span></code>. Du kan använda ett kommando som liknar detta för att massuppdatera alla <code class=\"docutils literal notranslate\"><span class=\"pre\">.po</span></code>-filer (jämför diffen mot den relevanta stabila grenen):</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>diff<span class=\"w\"> </span>--name-only<span class=\"w\"> </span>stable/5.0.x<span class=\"w\"> </span><span class=\"p\">|</span><span class=\"w\"> </span>grep<span class=\"w\"> </span><span class=\"s2\">&quot;\\.po&quot;</span><span class=\"w\">  </span><span class=\"p\">|</span><span class=\"w\"> </span>xargs<span class=\"w\"> </span>sed<span class=\"w\"> </span>-ri<span class=\"w\"> </span><span class=\"s2\">&quot;s/PO-Revision-Date: [0-9\\-]+ /PO-Revision-Date: </span><span class=\"k\">$(</span>date<span class=\"w\"> </span>-I<span class=\"k\">)</span><span class=\"s2\"> /g&quot;</span>\n</code></pre></div>\n<p>Lastly, commit the changed/added files (both <code class=\"docutils literal notranslate\"><span class=\"pre\">.po</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">.mo</span></code>) and create\na new PR targeting the stable branch of the corresponding release (example\n<a class=\"reference external\" href=\"https://github.com/django/django/pull/16715\">PR updating translations for 4.2</a>).</p>\n<p>Once merged, forward port the changes into <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/cb27e5b9c0703fb0edd70b2138e3e53a78c9551d\">example commit</a>).</p>\n</li>\n<li><p><a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-documentation/#django-admin-manpage\"><span class=\"std std-ref\">Uppdatera sidan django-admin manual</span></a>:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span><span class=\"nb\">cd</span><span class=\"w\"> </span>docs\n$<span class=\"w\"> </span>make<span class=\"w\"> </span>man\n$<span class=\"w\"> </span>man<span class=\"w\"> </span>_build/man/django-admin.1<span class=\"w\">  </span><span class=\"c1\"># do a quick sanity check</span>\n$<span class=\"w\"> </span>cp<span class=\"w\"> </span>_build/man/django-admin.1<span class=\"w\"> </span>man/django-admin.1\n</code></pre></div>\n<p>och sedan publicera den ändrade man-sidan.</p>\n</li>\n<li><p>If this is the ”dot zero” release of a new series, create a new branch from\nthe current stable branch in the <a class=\"reference external\" href=\"https://github.com/django/django-docs-translations\">django-docs-translations</a> repository. For\nexample, when releasing Django 4.2:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>-b<span class=\"w\"> </span>stable/4.2.x<span class=\"w\"> </span>origin/stable/4.1.x\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>push<span class=\"w\"> </span>origin<span class=\"w\"> </span>stable/4.2.x:stable/4.2.x\n</code></pre></div>\n</li>\n<li><p>Skriv blogginlägget för tillkännagivandet av releasen. Du kan när som helst lägga in det i admin och markera det som inaktivt. Här är några exempel: ”Exempel på meddelande om säkerhetsrelease”, ”Exempel på meddelande om vanlig release”, ”Exempel på meddelande om pre-release”.</p></li>\n</ol>\n<section id=\"a-few-days-before-a-feature-freeze\">\n<h4>Några dagar innan en funktion fryses<a class=\"heading-anchor\" href=\"#a-few-days-before-a-feature-freeze\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Som förberedelse för alfaversionen måste katalogen <code class=\"docutils literal notranslate\"><span class=\"pre\">/home/www/www/media/releases/A.B</span></code> skapas på djangoprojektets server.</p>\n<p>Innan funktionen fryses måste en gren med inriktning på <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> skapas för att förbereda för nästa funktionsrelease. Den bör granskas och godkännas några dagar före frysningen, så att den kan slås samman efter att den stabila grenen har klippts. Följande punkter bör tas upp i den här grenen:</p>\n<ol class=\"arabic simple\">\n<li><p>Uppdatera tupeln <code class=\"docutils literal notranslate\"><span class=\"pre\">VERSION</span></code> i <code class=\"docutils literal notranslate\"><span class=\"pre\">django/__init__.py</span></code> och öka till nästa förväntade utgåva (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/96700c7b378c592f0b1732302c22af2fd2c87fc6\">exempel commit</a>).</p></li>\n<li><p>Skapa en stub release note för nästa feature release. Använd stubben från den tidigare versionen eller kopiera innehållet från den aktuella versionen och ta bort det mesta av innehållet så att endast rubrikerna kvarstår (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/9b5ad4056ccf9ff7ea548f72d28eb66c1b4f84cc\">exempel commit</a>).</p></li>\n<li><p>Ta bort <code class=\"docutils literal notranslate\"><span class=\"pre\">...</span> <span class=\"pre\">versionadded::</span></code> och <code class=\"docutils literal notranslate\"><span class=\"pre\">...</span> <span class=\"pre\">versionchanged::</span></code> anteckningar i dokumentationen från två utgåvor sedan, liksom alla återstående äldre anteckningar. Till exempel, i Django 5.1 kommer anteckningar för 4.2 att tas bort (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/9edb7833b89e811eefd94974fb987f4605b0c0d7\">example commit</a>).</p></li>\n<li><p>Ta bort funktioner som har nått slutet av sin utfasningscykel, inklusive deras dokument och annoteringen <code class=\"docutils literal notranslate\"><span class=\"pre\">...deprecated::</span></code>. Varje borttagning bör göras i en separat commit för tydlighetens skull. I commit-meddelandet, lägg till ett <code class=\"docutils literal notranslate\"><span class=\"pre\">Refs</span> <span class=\"pre\">#XXXXX</span> <span class=\"pre\">--</span></code> prefix som länkar till det ursprungliga ärendet där avskrivningen började om möjligt. Se till att detta noteras i avsnittet om borttagna funktioner i versionsinformation (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/f2d9c76aa7096ef3eed675b9eb824858f9dd81e5\">example commit</a>).</p></li>\n<li><p>Öka standard PBKDF2 iterationer i <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.hashers.PBKDF2PasswordHasher</span></code> med cirka 20% (välj ett runt tal). Kör testerna och uppdatera de 3 misslyckade hasher-testerna med de nya värdena. Se till att detta noteras i versionsinformation (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/7288866da4dddf3705148c703421858ec19cdb78\">exempel commit</a>).</p></li>\n</ol>\n<p>Concrete examples for past feature release bootstrap branches: <a class=\"reference external\" href=\"https://github.com/django/django/pull/18127\">5.2 bootstrap</a>, <a class=\"reference external\" href=\"https://github.com/django/django/pull/17246\">5.1 bootstrap</a>, <a class=\"reference external\" href=\"https://github.com/django/django/pull/16432\">5.0 bootstrap</a>.</p>\n</section>\n</section>\n</section>\n<section id=\"feature-freeze-tasks\">\n<h2>Frysa funktioner för uppgifter<a class=\"heading-anchor\" href=\"#feature-freeze-tasks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ol class=\"arabic\">\n<li><p>Ta bort tomma avsnitt från versionsinformation (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/9e6e58bad237a80ddd5e3ab8b834cecdaad8455e\">exempel commit</a>).</p></li>\n<li><p>Bygg versionsinformation lokalt och läs dem. Gör eventuella nödvändiga ändringar för att förbättra flödet eller fixa grammatiken (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/435bdab93889dae01e71c79598edab10627cc1f9\">exempel commit</a>).</p></li>\n<li><p>Create a new stable branch from <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code>. Be sure to fetch and update\n<code class=\"docutils literal notranslate\"><span class=\"pre\">upstream</span></code> to latest. For example, when feature freezing Django 5.2:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>fetch<span class=\"w\"> </span>upstream\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>-b<span class=\"w\"> </span>stable/5.2.x<span class=\"w\"> </span>upstream/main\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>push<span class=\"w\"> </span>upstream<span class=\"w\"> </span>-u<span class=\"w\"> </span>stable/5.2.x:stable/5.2.x\n</code></pre></div>\n<p>Samtidigt uppdaterar du variabeln <code class=\"docutils literal notranslate\"><span class=\"pre\">django_next_version</span></code> i <code class=\"docutils literal notranslate\"><span class=\"pre\">docs/conf.py</span></code> på den stabila utgivningsgrenen så att den pekar på den nya utvecklingsversionen. Till exempel, när du skapar <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/5.2.x</span></code>, sätt <code class=\"docutils literal notranslate\"><span class=\"pre\">django_next_version</span></code> till <code class=\"docutils literal notranslate\"><span class=\"pre\">'6.0'</span></code> på den nya stabila grenen (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/1eb62e5b622ef7fd6e0123d8bbf6662d893d5d08\">example commit</a>).</p>\n</li>\n<li><p>Create <code class=\"docutils literal notranslate\"><span class=\"pre\">Release</span></code> entries for the next version in the <a href=\"#id12\"><span class=\"problematic\" id=\"id13\">`admin`__</span></a> on\n<code class=\"docutils literal notranslate\"><span class=\"pre\">djangoproject.com</span></code>. Add one for each milestone (alpha, beta, rc, and\nfinal), leaving <em>is active</em> unset to mark them as unreleased. Set target\ndates per the agreed schedule, and set the LTS flag if applicable. The\n<code class=\"docutils literal notranslate\"><span class=\"pre\">X.Y</span></code> roadmap page will be available at <code class=\"docutils literal notranslate\"><span class=\"pre\">/download/X.Y/roadmap/</span></code>.</p>\n<p>For example, when creating <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/5.2.x</span></code>, add <code class=\"docutils literal notranslate\"><span class=\"pre\">Release</span></code> entries for\n<code class=\"docutils literal notranslate\"><span class=\"pre\">6.0a1</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">6.0b1</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">6.0rc1</span></code>, and <code class=\"docutils literal notranslate\"><span class=\"pre\">6.0</span></code>. The <code class=\"docutils literal notranslate\"><span class=\"pre\">6.0</span></code> roadmap can be\nthen reviewed at <a class=\"reference external\" href=\"https://www.djangoproject.com/download/6.0/roadmap/\">https://www.djangoproject.com/download/6.0/roadmap/</a>.</p>\n</li>\n<li><p>Gå till sidan <a href=\"#id12\"><span class=\"problematic\" id=\"id14\">`Lägg till dokumentutgåva i admin`__</span></a>, skapa ett nytt <code class=\"docutils literal notranslate\"><span class=\"pre\">DocumentRelease</span></code>-objekt för det engelska språket för det nyskapade <code class=\"docutils literal notranslate\"><span class=\"pre\">Release</span></code>-objektet. Markera inte detta som standard.</p>\n</li>\n<li><p>Add the new branch to <a class=\"reference external\" href=\"https://readthedocs.org/projects/django/\">Read the Docs</a>. Since the automatically\ngenerated version names (”stable-A.B.x”) differ from the version names used\nin Read the Docs (”A.B.x”), update the Read the Docs config for the version\nto point to the slug <code class=\"docutils literal notranslate\"><span class=\"pre\">A.B.x</span></code> and set it as active. <a class=\"reference external\" href=\"https://github.com/readthedocs/readthedocs.org/issues/12483\">See more details</a>.</p></li>\n<li><p><a class=\"reference external\" href=\"https://github.com/pypa/trove-classifiers/pulls?q=is%3Apr+django+trove+classifier\">Create a PR on PyPI proposing the new Trove classifier</a>.\nFor example <code class=\"docutils literal notranslate\"><span class=\"pre\">Framework</span> <span class=\"pre\">::</span> <span class=\"pre\">Django</span> <span class=\"pre\">::</span> <span class=\"pre\">5.2</span></code>.</p></li>\n<li><p>Update the current branch under active development and add pre-release\nbranch in the <a class=\"reference external\" href=\"https://code.djangoproject.com/#Djangoreleaseprocess\">Django release process</a> on Trac.</p></li>\n<li><p>Uppdatera <code class=\"docutils literal notranslate\"><span class=\"pre\">docs/fixtures/doc_releases.json</span></code> JSON-fixturen för djangoproject.com, så att personer utan tillgång till produktions-DB:n fortfarande kan köra en uppdaterad kopia av dokumentsidan (<a class=\"reference external\" href=\"https://github.com/django/djangoproject.com/pull/1446\">exempel PR</a>). Detta kommer att slås samman efter den slutliga utgåvan.</p></li>\n</ol>\n</section>\n<section id=\"actually-rolling-the-release\">\n<h2>Att faktiskt rulla ut releasen<a class=\"heading-anchor\" href=\"#actually-rolling-the-release\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>OK, nu kommer den roliga delen, när vi faktiskt skickar ut en release! Om du ska skicka ut <strong>flera releaser</strong>, upprepa dessa steg för varje release.</p>\n<ol class=\"arabic\">\n<li><p>Kontrollera att <a href=\"#id12\"><span class=\"problematic\" id=\"id15\">`Jenkins`__</span></a> är grön för den eller de versioner du släpper. Du bör förmodligen inte publicera en release förrän den är grön, och du bör se till att den senaste gröna körningen innehåller de ändringar som du publicerar.</p>\n</li>\n<li><p>Städa upp i versionsinformation för denna version. Gör dessa ändringar i <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> och backportera till alla grenar där versionsnoterna för en viss version finns.</p>\n<ol class=\"arabic simple\">\n<li><p>För en funktionsutgåva, ta bort rubriken <code class=\"docutils literal notranslate\"><span class=\"pre\">UNDER</span> <span class=\"pre\">DEVELOPMENT</span></code> högst upp i utgåvan, ta bort prefixet <code class=\"docutils literal notranslate\"><span class=\"pre\">Expected</span></code> och uppdatera utgivningsdatumet, om det behövs (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/1994a2643881a9e3f9fa8d3e0794c1a9933a1831\">exempel commit</a>).</p></li>\n<li><p>För en patchversion, ta bort prefixet <code class=\"docutils literal notranslate\"><span class=\"pre\">Expected</span></code> och uppdatera utgivningsdatumet för alla versioner, om nödvändigt (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/34a503162fe222033a1cd3249bccad014fcd1d20\">exempel commit</a>).</p></li>\n</ol>\n</li>\n<li><p>En release börjar alltid från en releasegren, så du bör se till att du befinner dig på en uppdaterad stabil gren. Du bör också ha en ren och dedikerad virtuell miljö tillgänglig för varje version som släpps. Det kan till exempel vara</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>stable/4.1.x\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>pull\n</code></pre></div>\n</li>\n<li><p>Om detta är en säkerhetsrelease, slå samman lämpliga korrigeringar från <code class=\"docutils literal notranslate\"><span class=\"pre\">django-security</span></code>. Basera om dessa korrigeringar efter behov för att göra var och en till en vanlig commit på release-grenen snarare än en merge commit. För att säkerställa detta, sammanfoga dem med flaggan <code class=\"docutils literal notranslate\"><span class=\"pre\">--ff-only</span></code>; till exempel:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>stable/4.1.x\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>merge<span class=\"w\"> </span>--ff-only<span class=\"w\"> </span>security/4.1.x\n</code></pre></div>\n<p>(Detta förutsätter att <code class=\"docutils literal notranslate\"><span class=\"pre\">security/4.1.x</span></code> är en gren i repot <code class=\"docutils literal notranslate\"><span class=\"pre\">django-security</span></code> som innehåller de nödvändiga säkerhetsuppdateringarna för nästa utgåva i 4.1-serien)</p>\n<p>Om git vägrar att slå samman med <code class=\"docutils literal notranslate\"><span class=\"pre\">--ff-only</span></code>, byt till security-patch grenen och rebasera den på den gren du är på väg att slå samman den med (<code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">checkout</span> <span class=\"pre\">security/4.1.x;</span> <span class=\"pre\">git</span> <span class=\"pre\">rebase</span> <span class=\"pre\">stable/4.1.x</span></code>) och byt sedan tillbaka och gör sammanslagningen. Se till att commit-meddelandet för varje säkerhetsfix förklarar att commit är en säkerhetsfix och att ett tillkännagivande kommer att följa (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/bf39978a53f117ca02e9a0c78b76664a41a54745\">exempel på säkerhetsfix</a>).</p>\n</li>\n<li><p>Uppdatera versionsnumret i <code class=\"docutils literal notranslate\"><span class=\"pre\">django/__init__.py</span></code> för utgåvan. Vänligen se <a class=\"reference internal\" href=\"#notes-on-setting-the-version-tuple\">notes on setting the VERSION tuple</a> nedan för detaljer om <code class=\"docutils literal notranslate\"><span class=\"pre\">VERSION</span></code> (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/2719a7f8c161233f45d34b624a9df9392c86cc1b\">example commit</a>).</p>\n<ol class=\"arabic simple\">\n<li><p>Om det här är ett paket som släppts före utgivningen ska du även uppdatera trove-klassificeraren ”Development Status” i <code class=\"docutils literal notranslate\"><span class=\"pre\">pyproject.toml</span></code> för att återspegla detta. En <code class=\"docutils literal notranslate\"><span class=\"pre\">rc</span></code>-förutgåva bör inte ändra trove-klassificeringen (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/759921c8e9ad151932fc913ab429fef0a6112ef8\">example commit for alpha release</a>, <a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/25fec8940b24107e21314ab6616e18ce8dec1c1c\">example commit for beta release</a>).</p></li>\n<li><p>Annars, se till att klassificeraren är inställd på <code class=\"docutils literal notranslate\"><span class=\"pre\">Development</span> <span class=\"pre\">Status</span> <span class=\"pre\">::</span> <span class=\"pre\">5</span> <span class=\"pre\">-</span> <span class=\"pre\">Produktion/Stabil</span></code>.</p></li>\n</ol>\n</li>\n</ol>\n<section id=\"building-the-artifacts\">\n<h3>Skapa artefakter<a class=\"heading-anchor\" href=\"#building-the-artifacts\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<aside class=\"admonition-optionally-use-helper-scripts admonition\">\n<p class=\"admonition-title\">Använd eventuellt hjälpskript</p>\n<p>You can streamline some of the steps below using helper scripts from the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">scripts</span></code> folder:</p>\n<ul class=\"simple\">\n<li><p>Release script example run:</p></li>\n</ul>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span><span class=\"nv\">PGP_KEY_ID</span><span class=\"o\">=</span>&lt;key-id&gt;<span class=\"w\"> </span><span class=\"nv\">PGP_KEY_URL</span><span class=\"o\">=</span>&lt;key-url&gt;<span class=\"w\"> </span><span class=\"nv\">DEST_FOLDER</span><span class=\"o\">=</span>~/releases<span class=\"w\"> </span>scripts/do_django_release.py\n</code></pre></div>\n<ul class=\"simple\">\n<li><p>Verify the release (after artifacts were uploaded):</p></li>\n</ul>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span><span class=\"nv\">VERSION</span><span class=\"o\">=</span><span class=\"m\">5</span>.2.1<span class=\"w\"> </span>scripts/verify_release.sh\n</code></pre></div>\n</aside>\n<ol class=\"arabic\">\n<li><p>Tagga utgåvan med hjälp av <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">tag</span></code>. Till exempel:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>tag<span class=\"w\"> </span>--sign<span class=\"w\"> </span>--message<span class=\"o\">=</span><span class=\"s2\">&quot;Tag 4.1.1&quot;</span><span class=\"w\"> </span><span class=\"m\">4</span>.1.1\n</code></pre></div>\n<p>Du kan kontrollera ditt arbete genom att köra <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">tag</span> <span class=\"pre\">--verify</span> <span class=\"pre\">&lt;tag&gt;</span></code>.</p>\n</li>\n<li><p>Se till att du har ett helt rent träd genom att köra <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">clean</span> <span class=\"pre\">-dfx</span></code>.</p></li>\n<li><p>Kör <code class=\"docutils literal notranslate\"><span class=\"pre\">python</span> <span class=\"pre\">-m</span> <span class=\"pre\">build</span></code> för att generera release-paketen. Detta kommer att skapa release-artefakterna (tarball och wheel) i en <code class=\"docutils literal notranslate\"><span class=\"pre\">dist/</span></code>-katalog. För Django 5.0 eller äldre måste du köra <code class=\"docutils literal notranslate\"><span class=\"pre\">make</span> <span class=\"pre\">-f</span> <span class=\"pre\">extras/Makefile</span></code> istället.</p></li>\n<li><p>Generera hasharna för releasepaketen:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span><span class=\"nb\">cd</span><span class=\"w\"> </span>dist\n$<span class=\"w\"> </span>md5sum<span class=\"w\"> </span>*\n$<span class=\"w\"> </span>sha1sum<span class=\"w\"> </span>*\n$<span class=\"w\"> </span>sha256sum<span class=\"w\"> </span>*\n</code></pre></div>\n</li>\n<li><p>Skapa en ”checksums”-fil, <code class=\"docutils literal notranslate\"><span class=\"pre\">Django-&lt;&lt;VERSION&gt;&gt;.checksum.txt</span></code> som innehåller hasharna och versionsinformationen. Börja med den här mallen och infoga rätt version, datum, GPG-nyckel-ID (från <code class=\"docutils literal notranslate\"><span class=\"pre\">gpg</span> <span class=\"pre\">--list-keys</span> <span class=\"pre\">--keyid-format</span> <span class=\"pre\">LONG</span></code>), versionshanterarens GitHub-användarnamn, versions-URL och kontrollsummor:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Text code\"><code>This file contains MD5, SHA1, and SHA256 checksums for the source-code\ntarball and wheel files of Django &lt;&lt;VERSION&gt;&gt;, released &lt;&lt;DATE&gt;&gt;.\n\nTo use this file, you will need a working install of PGP or other\ncompatible public-key encryption software. You will also need to have\nthe Django release manager&#39;s public key in your keyring. This key has\nthe ID ``XXXXXXXXXXXXXXXX`` and can be imported from GitHub, for example,\nif using the open-source GNU Privacy Guard implementation of PGP:\n\n    curl https://github.com/&lt;&lt;RELEASE MANAGER GITHUB USERNAME&gt;&gt;.gpg | gpg --import -\n\nOnce the key is imported, verify this file:\n\n    gpg --verify &lt;&lt;THIS FILENAME&gt;&gt;\n\nOnce you have verified this file, you can use normal MD5, SHA1, or SHA256\nchecksumming applications to generate the checksums of the Django\npackage and compare them to the checksums listed below.\n\nRelease packages\n================\n\nhttps://www.djangoproject.com/download/&lt;&lt;VERSION&gt;&gt;/tarball/\nhttps://www.djangoproject.com/download/&lt;&lt;VERSION&gt;&gt;/wheel/\n\nMD5 checksums\n=============\n\n&lt;&lt;MD5SUM&gt;&gt;  &lt;&lt;RELEASE TAR.GZ FILENAME&gt;&gt;\n&lt;&lt;MD5SUM&gt;&gt;  &lt;&lt;RELEASE WHL FILENAME&gt;&gt;\n\nSHA1 checksums\n==============\n\n&lt;&lt;SHA1SUM&gt;&gt;  &lt;&lt;RELEASE TAR.GZ FILENAME&gt;&gt;\n&lt;&lt;SHA1SUM&gt;&gt;  &lt;&lt;RELEASE WHL FILENAME&gt;&gt;\n\nSHA256 checksums\n================\n\n&lt;&lt;SHA256SUM&gt;&gt;  &lt;&lt;RELEASE TAR.GZ FILENAME&gt;&gt;\n&lt;&lt;SHA256SUM&gt;&gt;  &lt;&lt;RELEASE WHL FILENAME&gt;&gt;\n</code></pre></div>\n</li>\n<li><p>Signera checksummefilen (<code class=\"docutils literal notranslate\"><span class=\"pre\">gpg</span> <span class=\"pre\">--clearsign</span> <span class=\"pre\">--digest-algo</span> <span class=\"pre\">SHA256</span> <span class=\"pre\">Django-&lt;version&gt;.checksum.txt</span></code>). Detta genererar ett signerat dokument, <code class=\"docutils literal notranslate\"><span class=\"pre\">Django-&lt;version&gt;.checksum.txt.asc</span></code> som du sedan kan verifiera med <code class=\"docutils literal notranslate\"><span class=\"pre\">gpg</span> <span class=\"pre\">--verify</span> <span class=\"pre\">Django-&lt;version&gt;.checksum.txt.asc</span></code>.</p></li>\n</ol>\n</section>\n</section>\n<section id=\"making-the-release-s-available-to-the-public\">\n<h2>Göra utgivningen tillgänglig för allmänheten<a class=\"heading-anchor\" href=\"#making-the-release-s-available-to-the-public\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Nu är du redo att faktiskt skicka ut pressmeddelandet. För att göra detta:</p>\n<ol class=\"arabic\">\n<li><p>Create a new <code class=\"docutils literal notranslate\"><span class=\"pre\">Release</span></code> entry in the <a class=\"reference external\" href=\"https://www.djangoproject.com/admin/releases/release/add/\">djangoproject.com’s admin</a>. If this is a\nsecurity release, this should be done 15 minutes before the announced\nrelease time, no sooner:</p>\n<dl class=\"simple\">\n<dt>Version</dt><dd><p>Måste överensstämma med versionsnumret enligt definitionen i tarbollen (<code class=\"docutils literal notranslate\"><span class=\"pre\">django-&lt;version&gt;.tar.gz</span></code>). Exempelvis ”5.2”, ”4.1.1” eller ”4.2rc1”.</p>\n</dd>\n<dt>Är aktiv</dt><dd><p>Ställ in på False tills releasen är helt publicerad (sista steget).</p>\n</dd>\n<dt>LTS</dt><dd><p>Aktivera om utgåvan är en del av en <abbr title=\"Long Term Support\">LTS</abbr>-gren.</p>\n</dd>\n<dt>Datum</dt><dd><p>Ställ in utgivningsdatumet till idag. Den här utgåvan kommer inte att publiceras förrän <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code> är aktiverat.</p>\n</dd>\n<dt>Artefakter</dt><dd><p>Ladda upp filerna tarball (<code class=\"docutils literal notranslate\"><span class=\"pre\">django-&lt;version&gt;.tar.gz</span></code>), wheel (<code class=\"docutils literal notranslate\"><span class=\"pre\">django-&lt;version&gt;-py3-none-any.whl</span></code>) och checksum (<code class=\"docutils literal notranslate\"><span class=\"pre\">django-&lt;version&gt;.checksum.txt.asc</span></code>) som skapades tidigare.</p>\n</dd>\n</dl>\n</li>\n<li><p>Testa att release-paketen installeras korrekt med hjälp av <code class=\"docutils literal notranslate\"><span class=\"pre\">pip</span></code>. Här är en enkel metod (den här testar bara att binärerna är tillgängliga, att de installeras korrekt och att migreringar och utvecklingsservern startar, men den kommer att upptäcka dumma misstag): <a class=\"reference external\" href=\"https://code.djangoproject.com/wiki/ReleaseTestNewVersion\">https://code.djangoproject.com/wiki/ReleaseTestNewVersion</a>.</p></li>\n<li><p>Kör <a href=\"#id12\"><span class=\"problematic\" id=\"id16\">`confirm-release`__</span></a> build på Jenkins för att verifiera checksummefilerna (använd t.ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">4.2rc1</span></code> för <a class=\"reference external\" href=\"https://media.djangoproject.com/pgp/Django-4.2rc1.checksum.txt\">https://media.djangoproject.com/pgp/Django-4.2rc1.checksum.txt</a>).</p>\n</li>\n<li><p>Upload the release packages to PyPI:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>twine<span class=\"w\"> </span>upload<span class=\"w\"> </span>--repository<span class=\"w\"> </span>django<span class=\"w\"> </span>dist/*\n</code></pre></div>\n</li>\n<li><p>Uppdatera den nyskapade <code class=\"docutils literal notranslate\"><span class=\"pre\">Release</span></code> i administratören i <code class=\"docutils literal notranslate\"><span class=\"pre\">djangoproject.com</span></code> och aktivera flaggan <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code>.</p></li>\n<li><p>Tryck på ditt arbete och den nya taggen:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>push\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>push<span class=\"w\"> </span>--tags\n</code></pre></div>\n</li>\n<li><p>Gör blogginlägget som tillkännager lanseringen live.</p></li>\n<li><p>För en ny versionsutgåva (t.ex. 4.1, 4.2), uppdatera den stabila standardversionen av dokumenten genom att vända flaggan <code class=\"docutils literal notranslate\"><span class=\"pre\">is_default</span></code> till <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> på lämpligt <code class=\"docutils literal notranslate\"><span class=\"pre\">DocumentRelease</span></code>-objekt i databasen <code class=\"docutils literal notranslate\"><span class=\"pre\">docs.djangoproject.com</span></code> (detta kommer automatiskt att vända den till <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> för alla andra); du kan göra detta med webbplatsens administratör.</p>\n<p>Skapa nya <code class=\"docutils literal notranslate\"><span class=\"pre\">DocumentRelease</span></code>-objekt för varje språk som har en post för den föregående utgåvan. Uppdatera djangoproject.com:s <a href=\"#id12\"><span class=\"problematic\" id=\"id17\">`robots.docs.txt`__</span></a>-fil genom att kopiera resultatet som genereras genom att köra kommandot <code class=\"docutils literal notranslate\"><span class=\"pre\">manage_translations.py</span> <span class=\"pre\">robots_txt</span></code> i den aktuella stabila grenen från <a href=\"#id12\"><span class=\"problematic\" id=\"id18\">`django-docs-translations repository`__</span></a>. Till exempel, när du släpper Django 4.2:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>stable/4.2.x\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>pull\n$<span class=\"w\"> </span>python<span class=\"w\"> </span>manage_translations.py<span class=\"w\"> </span>robots_txt\n</code></pre></div>\n</li>\n<li><p>Skicka meddelandet om utgåvan till e-postlistan <a class=\"reference internal\" href=\"/sv/6.0/internals/mailing-lists/#django-announce-mailing-list\"><span class=\"std std-ref\">django-announce</span></a> och Django Forum. Detta bör innehålla en länk till tillkännagivandets blogginlägg.</p></li>\n<li><p>If this is a security release, publish the CVE metadata. (The\n<a class=\"reference internal\" href=\"#checklist-generator\"><span class=\"std std-ref\">checklist app</span></a> generates JSON for this.):</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>cve<span class=\"w\"> </span>publish<span class=\"w\"> </span>&lt;cve-number&gt;<span class=\"w\"> </span>--cve-json-file<span class=\"w\"> </span>&lt;path-to-file&gt;\n</code></pre></div>\n</li>\n<li><p>If this is a security release, send a separate email to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">oss-security&#64;lists.openwall.com</span></code>. Provide ”Django” plus the CVE IDs in\nthe subject line. The message body should include the vulnerability details,\nfor example, the announcement blog post text. Include a link to the\nannouncement blog post.</p></li>\n</ol>\n</section>\n<section id=\"post-release\">\n<h2>Efter lansering<a class=\"heading-anchor\" href=\"#post-release\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Du är nästan klar! Allt som återstår att göra nu är:</p>\n<ol class=\"arabic\">\n<li><p>Om detta inte är en förhandsutgåva, uppdatera <code class=\"docutils literal notranslate\"><span class=\"pre\">VERSION</span></code> tupeln i <code class=\"docutils literal notranslate\"><span class=\"pre\">django/__init__.py</span></code> igen, öka till vad nästa förväntade utgåva kommer att vara. Till exempel, efter att ha släppt 4.1.1, uppdatera <code class=\"docutils literal notranslate\"><span class=\"pre\">VERSION</span></code> till <code class=\"docutils literal notranslate\"><span class=\"pre\">VERSION</span> <span class=\"pre\">=</span> <span class=\"pre\">(4,</span> <span class=\"pre\">1,</span> <span class=\"pre\">2,</span> <span class=\"pre\">'alpha',</span> <span class=\"pre\">0)</span></code> (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/a4d19953d46247ee1992b3427fe652e941524272\">example commit</a>).</p></li>\n<li><p>If this was an alpha release:</p>\n<ol class=\"arabic\">\n<li><p>Add the feature release version in <a class=\"reference external\" href=\"https://code.djangoproject.com/admin/ticket/versions\">Trac’s versions list</a>.</p></li>\n<li><p>Create a new security branch from the freshly cut stable branch. Be sure\nto fetch and update <code class=\"docutils literal notranslate\"><span class=\"pre\">upstream</span></code> to latest. For example, after the 5.2\nalpha release:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>fetch<span class=\"w\"> </span>upstream\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>-b<span class=\"w\"> </span>security/5.2.x<span class=\"w\"> </span>upstream/stable/5.2.x\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>push<span class=\"w\"> </span>origin<span class=\"w\"> </span>-u<span class=\"w\"> </span>security/5.2.x:security/5.2.x\n</code></pre></div>\n</li>\n</ol>\n</li>\n<li><p>Om detta var en slutlig version:</p>\n<ol class=\"arabic simple\">\n<li><p>Update the <code class=\"docutils literal notranslate\"><span class=\"pre\">default_version</span></code> setting in the code.djangoproject.com’s\n<code class=\"docutils literal notranslate\"><span class=\"pre\">trac.ini</span></code> file (<a class=\"reference external\" href=\"https://github.com/django/code.djangoproject.com/pull/268\">example PR</a>).</p></li>\n<li><p>Update the current stable branch and remove the pre-release branch in the\n<a class=\"reference external\" href=\"https://code.djangoproject.com/#Djangoreleaseprocess\">Django release process</a> on Trac.</p></li>\n<li><p>Uppdatera djangoproject.com:s nedladdningssida (<a class=\"reference external\" href=\"https://github.com/django/djangoproject.com/pull/1444\">exempel PR</a>).</p></li>\n<li><p>Process the older versions that will reach End-Of-Mainstream and/or\nEnd-Of-Life support when this final release is published:</p>\n<ol class=\"arabic simple\">\n<li><p>Ensure that the EOL versions are mentioned in the blog post. See\n<a class=\"reference external\" href=\"https://www.djangoproject.com/weblog/2025/apr/02/django-52-released/\">example announcement</a>.</p></li>\n<li><p>Create a tag for the EOL stable branch and delete the stable branch.\nInspect and use the <code class=\"docutils literal notranslate\"><span class=\"pre\">scripts/archive_eol_stable_branches.py</span></code> helper.</p></li>\n</ol>\n</li>\n</ol>\n</li>\n<li><p>Om detta var en säkerhetsrelease, uppdatera <a class=\"reference internal\" href=\"/sv/6.0/releases/security/\"><span class=\"doc\">Arkiv över säkerhetsfrågor</span></a> med detaljer om de problem som åtgärdats.</p></li>\n<li><p>Om detta var en förhandsversion måste översättningskatalogerna uppdateras:</p>\n<ol class=\"arabic\">\n<li><p>Skapa en ny gren från den nyligen utgivna stabila grenen:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>stable/A.B.x\n$<span class=\"w\"> </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>-b<span class=\"w\"> </span>update-translations-catalog-A.B.x\n</code></pre></div>\n</li>\n<li><p>Se till att releaseprogrammets dedikerade virtuella miljö är aktiverad och kör följande:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span><span class=\"nb\">cd</span><span class=\"w\"> </span>django\n$<span class=\"w\"> </span>django-admin<span class=\"w\"> </span>makemessages<span class=\"w\"> </span>-l<span class=\"w\"> </span>en<span class=\"w\"> </span>--domain<span class=\"o\">=</span>djangojs<span class=\"w\"> </span>--domain<span class=\"o\">=</span>django\nprocessing<span class=\"w\"> </span>locale<span class=\"w\"> </span>en\n</code></pre></div>\n</li>\n<li><p>Gör en pull request mot motsvarande stabila gren och slå samman när den har godkänts.</p></li>\n<li><p>Vidarebefordra de uppdaterade källöversättningarna till <code class=\"docutils literal notranslate\"><span class=\"pre\">huvud</span></code>-grenen (<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/aed303aff57ac990894b6354af001b0e8ea55f71\">exempel commit</a>).</p></li>\n</ol>\n</li>\n<li><p>If this was an <code class=\"docutils literal notranslate\"><span class=\"pre\">alpha</span></code> pre-release, coordinate with the maintainer of\n<a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/asgiref/\">asgiref</a> to determine when to raise the minimum version before the\nfinal release. For the backport, add an upper bound on the next major\nversion (example commits:\n<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/df35cf578f99522dd1ba864d513be95d47bab7a5\">main</a>,\n<a class=\"extlink-commit reference external\" href=\"https://github.com/django/django/commit/e5d2664908164d51d2daa46e375da8b6a93def03\">backport</a>).</p></li>\n<li><p>If this was an <code class=\"docutils literal notranslate\"><span class=\"pre\">rc</span></code> pre-release, call for translations for the upcoming\nrelease in the <a class=\"reference external\" href=\"https://forum.djangoproject.com/c/internals/i18n/14\">Django Forum - Internationalization category</a>.</p></li>\n</ol>\n</section>\n<section id=\"notes-on-setting-the-version-tuple\">\n<h2>Anvisningar för inställning av VERSION-tupeln<a class=\"heading-anchor\" href=\"#notes-on-setting-the-version-tuple\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Djangos versionsrapportering styrs av tupeln <code class=\"docutils literal notranslate\"><span class=\"pre\">VERSION</span></code> i <code class=\"docutils literal notranslate\"><span class=\"pre\">django/__init__.py</span></code>. Detta är en tupel med fem element, vars element är:</p>\n<ol class=\"arabic simple\">\n<li><p>Större version.</p></li>\n<li><p>Mindre version.</p></li>\n<li><p>Mikroversion.</p></li>\n<li><p>Status – kan vara en av ”alpha”, ”beta”, ”rc” eller ”final”.</p></li>\n<li><p>Serienummer, för alfa/beta/RC-paket som körs i sekvens (tillåter t.ex. ”beta 1”, ”beta 2”, etc.).</p></li>\n</ol>\n<p>För en slutlig version är statusen alltid ”final” och serienumret är alltid 0. Ett serienummer på 0 med statusen ”alpha” kommer att rapporteras som ”pre-alpha”.</p>\n<p>Några exempel:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">(4,</span> <span class=\"pre\">1,</span> <span class=\"pre\">1,</span> <span class=\"pre\">&quot;final&quot;,</span> <span class=\"pre\">0)</span></code> → ”4.1.1”</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">(4,</span> <span class=\"pre\">2,</span> <span class=\"pre\">0,</span> <span class=\"pre\">&quot;alpha&quot;,</span> <span class=\"pre\">0)</span></code> → ”4.2 pre-alpha”</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">(4,</span> <span class=\"pre\">2,</span> <span class=\"pre\">0,</span> <span class=\"pre\">&quot;beta&quot;,</span> <span class=\"pre\">1)</span></code> → ”4.2 beta 1”</p></li>\n</ul>\n</section>","rootId":"how-to-release-django","toc":[{"title":"Översikt","anchor":"overview","children":[]},{"title":"Förutsättningar","anchor":"prerequisites","children":[]},{"title":"Uppgifter före lansering","anchor":"pre-release-tasks","children":[{"title":"10 (eller fler) dagar före en säkerhetsrelease","anchor":"or-more-days-before-a-security-release","children":[]},{"title":"En vecka före en säkerhetsrelease","anchor":"a-week-before-a-security-release","children":[]},{"title":"Några dagar före eventuell lansering","anchor":"a-few-days-before-any-release","children":[{"title":"Några dagar innan en funktion fryses","anchor":"a-few-days-before-a-feature-freeze","children":[]}]}]},{"title":"Frysa funktioner för uppgifter","anchor":"feature-freeze-tasks","children":[]},{"title":"Att faktiskt rulla ut releasen","anchor":"actually-rolling-the-release","children":[{"title":"Skapa artefakter","anchor":"building-the-artifacts","children":[]}]},{"title":"Göra utgivningen tillgänglig för allmänheten","anchor":"making-the-release-s-available-to-the-public","children":[]},{"title":"Efter lansering","anchor":"post-release","children":[]},{"title":"Anvisningar för inställning av VERSION-tupeln","anchor":"notes-on-setting-the-version-tuple","children":[]}],"breadcrumbs":[{"docname":"internals/index","title":"Djangos interna funktioner","url":"/sv/6.0/internals/"}],"prev":{"docname":"internals/git","title":"Djangos källkodsarkiv","url":"/sv/6.0/internals/git/"},"next":null,"formats":{"html":"/sv/6.0/internals/howto-release-django/","markdown":"/sv/6.0/internals/howto-release-django.md","json":"/sv/6.0/internals/howto-release-django.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/internals/howto-release-django.txt","official":"https://docs.djangoproject.com/sv/6.0/internals/howto-release-django/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}