{"title":"Clasificando tickets","version":"4.0","locale":"es","docname":"internals/contributing/triaging-tickets","url":"/es/4.0/internals/contributing/triaging-tickets/","canonical":"https://djangodocs.dev/es/4.0/internals/contributing/triaging-tickets/","summary":"Django utiliza Trac para gestionar el trabajo realizado sobre la base de código. Trac es como un jardín cuidado por la comunidad contentivo de bugs que las personas…","html":"<h1>Clasificando tickets<a class=\"heading-anchor\" href=\"#triaging-tickets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django utiliza Trac para gestionar el trabajo realizado sobre la base de código. Trac es como un jardín cuidado por la comunidad contentivo de bugs que las personas han encontrado y las funcionalidades que desearían ver añadidas. Como en cualquier jardín, a veces hay maleza que arrancar y a veces hay flores y verduras  que necesitan ser recogidas. Necesitamos su ayuda para separar unas de las otras y al final todos nos beneficiamos.</p>\n<p>Como en todos los jardines, podemos aspirar a la perfección aunque en realidad no exista tal cosa. Incluso en el jardín más limpio todavía hay caracoles e insectos. En un jardín comunitario también hay personas útiles que, con las mejores intenciones, abonan la maleza y envenenan las rosas. Es tarea de la comunidad en su conjunto autogestionar, mantener los problemas al mínimo y educar a aquellos  que entran a la comunidad, de modo que puedan convertirse en valiosos colaboradores.</p>\n<p>Similarly, while we aim for Trac to be a perfect representation of the state of\nDjango’s progress, we acknowledge that this will not happen. By distributing\nthe load of Trac maintenance to the community, we accept that there will be\nmistakes. Trac is «mostly accurate», and we give allowances for the fact that\nsometimes it will be wrong. That’s okay. We’re perfectionists with deadlines.</p>\n<p>Confiamos en que la comunidad siga participando, mantenga los tickets lo más exactos posibles, y presente temas de discusión en nuestras listas de correo cuando haya confusión o desacuerdo.</p>\n<p>Django es un proyecto comunitario y cualquier contribución  es de ayuda. ¡No podemos hacer esto sin <strong>usted</strong>!</p>\n<section id=\"triage-workflow\">\n<h2>Flujo de trabajo de clasificación<a class=\"heading-anchor\" href=\"#triage-workflow\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Desafortunadamente, no todos los informes de errores y solicitudes de funcionalidades en el rastreador de tickets proporcionan todos los :doc: detalles necesarios &lt;bugs-and-features&gt;. Varios  tickets podrían tener parches, pero dichos parches podrían no cumplircon todos los requisitos de un :ref:  buen parche &lt;patch-style&gt;`.</p>\n<p>One way to help out is to <em>triage</em> tickets that have been created by other\nusers.</p>\n<p>La mayor parte del flujo de trabajo se basa en el concepto de :ref: las etapas de clasificación de un ticket &lt;triage-stages&gt;. Cada etapa describe en que período de su ciclo de vida se encuentra un determinado ticket. Junto con un puñado de marcadores, este atributo fácilmente nos indica qué y por quién espera cada ticket.</p>\n<p>Ya que una imagen vale más que mil palabras, vamos a empezar por ahí:</p>\n<a class=\"reference internal image-reference\" href=\"../../../../../../_images/triage_process.svg\"><img alt=\"Django's ticket triage workflow\" src=\"/es/4.0/_images/triage_process.svg\" style=\"width: 400px; height: 501px;\" />\n</a>\n<p>Tenemos dos roles en este esquema:</p>\n<ul class=\"simple\">\n<li><p>Mergers: people with commit access who are responsible for making the\nfinal decision to merge a patch.</p></li>\n<li><p>Clasificadores de tickets: cualquier persona en la comunidad Django que elije involucrarse en el proceso de desarrollo de Django. Nuestra instalación de Trac se deja intencionalmente abierta al público y a cualquier persona que pueda clasificar tickets. Django es un proyecto comunitario y promovemos la :ref: clasificación por parte de la comunidad &lt;how-can-i-help-with-triaging&gt;`.</p></li>\n</ul>\n<p>A modo de ejemplo, aquí vemos el ciclo de vida de un ticket promedio:</p>\n<ul class=\"simple\">\n<li><p>Alice creates a ticket and sends an incomplete pull request (no tests,\nincorrect implementation).</p></li>\n<li><p>Bob reviews the pull request, marks the ticket as «Accepted», «needs tests»,\nand «patch needs improvement», and leaves a comment telling Alice how the\npatch could be improved.</p></li>\n<li><p>Alice updates the pull request, adding tests (but not changing the\nimplementation). She removes the two flags.</p></li>\n<li><p>Charlie reviews the pull request and resets the «patch needs improvement»\nflag with another comment about improving the implementation.</p></li>\n<li><p>Alice updates the pull request, fixing the implementation. She removes the\n«patch needs improvement» flag.</p></li>\n<li><p>Daisy reviews the pull request and marks the ticket as «Ready for checkin».</p></li>\n<li><p>Jacob, a <a class=\"reference internal\" href=\"/es/4.0/internals/organization/#mergers-team\"><span class=\"std std-ref\">merger</span></a>, reviews the pull request and merges\nit.</p></li>\n</ul>\n<p>Algunos tickets necesitan mucha menos retroalimentación que este, pero, por otro lado, algunos tickets necesitan muchísima más.</p>\n</section>\n<section id=\"triage-stages\">\n<span id=\"id1\"></span><h2>Etapas de clasificación<a class=\"heading-anchor\" href=\"#triage-stages\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>A continuación, describimos con más detalles las diferentes etapas por las que tiene que pasar un ticket durante su ciclo de vida.</p>\n<section id=\"unreviewed\">\n<h3>No revisado<a class=\"heading-anchor\" href=\"#unreviewed\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>El ticket no ha sido revisado por alguien que se sintiera calificado para evaluar si el mismo contiene un tema válido, una funcionalidad viable o si se debe cerrar por cualquiera de los diversos motivos.</p>\n</section>\n<section id=\"accepted\">\n<h3>Aceptado<a class=\"heading-anchor\" href=\"#accepted\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>¡La gran zona gris! El significado absoluto de «aceptado» es que el problema descrito en el ticket es válido y está en alguna etapa en la  que se puede trabajar. Además de eso existen varias consideraciones:</p>\n<ul>\n<li><p><strong>Aceptado + Sin Marcadores</strong></p>\n<p>The ticket is valid, but no one has submitted a patch for it yet. Often this\nmeans you could safely start writing a patch for it. This is generally more\ntrue for the case of accepted bugs than accepted features. A ticket for a bug\nthat has been accepted means that the issue has been verified by at least one\ntriager as a legitimate bug - and should probably be fixed if possible. An\naccepted new feature may only mean that one triager thought the feature would\nbe good to have, but this alone does not represent a consensus view or imply\nwith any certainty that a patch will be accepted for that feature. Seek more\nfeedback before writing an extensive patch if you are in doubt.</p>\n</li>\n<li><p><strong>Aceptado + Tiene Parche</strong></p>\n<p>The ticket is waiting for people to review the supplied patch. This means\ndownloading the patch and trying it out, verifying that it contains tests\nand docs, running the test suite with the included patch, and leaving\nfeedback on the ticket.</p>\n</li>\n<li><p><strong>Aceptado + Tiene Parche + Necesita …</strong></p>\n<p>This means the ticket has been reviewed, and has been found to need further\nwork. «Needs tests» and «Needs documentation» are self-explanatory. «Patch\nneeds improvement» will generally be accompanied by a comment on the ticket\nexplaining what is needed to improve the code.</p>\n</li>\n</ul>\n</section>\n<section id=\"ready-for-checkin\">\n<h3>Listo Para Revisar<a class=\"heading-anchor\" href=\"#ready-for-checkin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The ticket was reviewed by any member of the community other than the person\nwho supplied the patch and found to meet all the requirements for a\ncommit-ready patch. A <a class=\"reference internal\" href=\"/es/4.0/internals/organization/#mergers-team\"><span class=\"std std-ref\">merger</span></a> now needs to give the patch\na final review prior to being committed.</p>\n<p>There are a lot of pull requests. It can take a while for your patch to get\nreviewed. See the <a class=\"reference internal\" href=\"/es/4.0/faq/contributing/#new-contributors-faq\"><span class=\"std std-ref\">contributing code FAQ</span></a> for some\nideas here.</p>\n</section>\n<section id=\"someday-maybe\">\n<h3>Algún día/Tal vez<a class=\"heading-anchor\" href=\"#someday-maybe\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>This stage isn’t shown on the diagram. It’s used sparingly to keep track of\nhigh-level ideas or long term feature requests.</p>\n<p>These tickets are uncommon and overall less useful since they don’t describe\nconcrete actionable issues. They are enhancement requests that we might\nconsider adding someday to the framework if an excellent patch is submitted.\nThey are not a high priority.</p>\n</section>\n</section>\n<section id=\"other-triage-attributes\">\n<h2>Otros atributos de clasificación<a class=\"heading-anchor\" href=\"#other-triage-attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>A number of flags, appearing as checkboxes in Trac, can be set on a ticket:</p>\n<section id=\"has-patch\">\n<h3>Tiene parche<a class=\"heading-anchor\" href=\"#has-patch\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>This means the ticket has an associated\n<a class=\"reference internal\" href=\"/es/4.0/internals/contributing/writing-code/submitting-patches/\"><span class=\"doc\">patch</span></a>. These will be reviewed\nto see if the patch is «good».</p>\n<p>The following three fields (Needs documentation, Needs tests,\nPatch needs improvement) apply only if a patch has been supplied.</p>\n</section>\n<section id=\"needs-documentation\">\n<h3>Necesita documentación<a class=\"heading-anchor\" href=\"#needs-documentation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>This flag is used for tickets with patches that need associated\ndocumentation. Complete documentation of features is a prerequisite\nbefore we can check them into the codebase.</p>\n</section>\n<section id=\"needs-tests\">\n<h3>Necesita pruebas<a class=\"heading-anchor\" href=\"#needs-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>This flags the patch as needing associated unit tests. Again, this\nis a required part of a valid patch.</p>\n</section>\n<section id=\"patch-needs-improvement\">\n<h3>El parche necesita mejoras<a class=\"heading-anchor\" href=\"#patch-needs-improvement\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>This flag means that although the ticket <em>has</em> a patch, it’s not quite\nready for checkin. This could mean the patch no longer applies\ncleanly, there is a flaw in the implementation, or that the code\ndoesn’t meet our standards.</p>\n</section>\n<section id=\"easy-pickings\">\n<h3>Presa fácil<a class=\"heading-anchor\" href=\"#easy-pickings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Tickets que requerirían parches pequeños y fáciles.</p>\n</section>\n<section id=\"type\">\n<h3>Tipo<a class=\"heading-anchor\" href=\"#type\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Los tickets deberían ser clasificados por <em>tipos</em> entre:</p>\n<ul class=\"simple\">\n<li><dl class=\"simple\">\n<dt>Nueva funcionalidad</dt><dd><p>Para añadir algo nuevo.</p>\n</dd>\n</dl>\n</li>\n<li><dl class=\"simple\">\n<dt>Bug</dt><dd><p>For when an existing thing is broken or not behaving as expected.</p>\n</dd>\n</dl>\n</li>\n<li><dl class=\"simple\">\n<dt>Limpieza y optimización</dt><dd><p>For when nothing is broken but something could be made cleaner,\nbetter, faster, stronger.</p>\n</dd>\n</dl>\n</li>\n</ul>\n</section>\n<section id=\"component\">\n<h3>Componente<a class=\"heading-anchor\" href=\"#component\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Los tickets se deben clasificar en componentes que indican a que área de la base del código Django pertenecen. Esto hace que los tickets estén mejor organizados y sean más fáciles de encontrar.</p>\n</section>\n<section id=\"severity\">\n<h3>Gravedad<a class=\"heading-anchor\" href=\"#severity\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The <em>severity</em> attribute is used to identify blockers, that is, issues which\nshould get fixed before releasing the next version of Django. Typically those\nissues are bugs causing regressions from earlier versions or potentially\ncausing severe data losses. This attribute is quite rarely used and the vast\nmajority of tickets have a severity of «Normal».</p>\n</section>\n<section id=\"version\">\n<h3>Versión<a class=\"heading-anchor\" href=\"#version\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Es posible utilizar el  atributo <em>versión</em> para indicar en qué versión se identificó el error reportado.</p>\n</section>\n<section id=\"ui-ux\">\n<h3>UI/UX<a class=\"heading-anchor\" href=\"#ui-ux\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>This flag is used for tickets that relate to User Interface and User\nExperiences questions. For example, this flag would be appropriate for\nuser-facing features in forms or the admin interface.</p>\n</section>\n<section id=\"cc\">\n<h3>Cc<a class=\"heading-anchor\" href=\"#cc\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>You may add your username or email address to this field to be notified when\nnew contributions are made to the ticket.</p>\n</section>\n<section id=\"keywords\">\n<h3>Palabras clave<a class=\"heading-anchor\" href=\"#keywords\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>With this field you may label a ticket with multiple keywords. This can be\nuseful, for example, to group several tickets of a same theme. Keywords can\neither be comma or space separated. Keyword search finds the keyword string\nanywhere in the keywords. For example, clicking on a ticket with the keyword\n«form» will yield similar tickets tagged with keywords containing strings such\nas «formset», «modelformset», and «ManagementForm».</p>\n</section>\n</section>\n<section id=\"closing-tickets\">\n<span id=\"id2\"></span><h2>Cerrando tickets<a class=\"heading-anchor\" href=\"#closing-tickets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>When a ticket has completed its useful lifecycle, it’s time for it to be\nclosed. Closing a ticket is a big responsibility, though. You have to be sure\nthat the issue is really resolved, and you need to keep in mind that the\nreporter of the ticket may not be happy to have their ticket closed (unless\nit’s fixed!). If you’re not certain about closing a ticket, leave a comment\nwith your thoughts instead.</p>\n<p>Si cierra un ticket, usted siempre debería asegurarse de lo siguiente:</p>\n<ul class=\"simple\">\n<li><p>Asegúrese de que el problema ha sido resuelto.</p></li>\n<li><p>Deje un comentario explicando la decisión de cerrar el ticket.</p></li>\n<li><p>Si hay una manera de que puedan mejorar el ticket para volver a abrirlo, hágaselos saber.</p></li>\n<li><p>If the ticket is a duplicate, reference the original ticket. Also\ncross-reference the closed ticket by leaving a comment in the original one\n– this allows to access more related information about the reported bug\nor requested feature.</p></li>\n<li><p><strong>Be polite.</strong> No one likes having their ticket closed. It can be\nfrustrating or even discouraging. The best way to avoid turning people\noff from contributing to Django is to be polite and friendly and to offer\nsuggestions for how they could improve this ticket and other tickets in\nthe future.</p></li>\n</ul>\n<p>Un ticket se puede solucionar de varias maneras:</p>\n<ul class=\"simple\">\n<li><dl class=\"simple\">\n<dt>solucionado</dt><dd><p>Used once a patch has been rolled into Django and the issue is fixed.</p>\n</dd>\n</dl>\n</li>\n<li><dl class=\"simple\">\n<dt>no válido</dt><dd><p>Used if the ticket is found to be incorrect. This means that the\nissue in the ticket is actually the result of a user error, or\ndescribes a problem with something other than Django, or isn’t\na bug report or feature request at all (for example, some new users\nsubmit support queries as tickets).</p>\n</dd>\n</dl>\n</li>\n<li><dl class=\"simple\">\n<dt>No se solucionará</dt><dd><p>Used when a someone decides that the request isn’t appropriate for\nconsideration in Django. Sometimes a ticket is closed as «wontfix» with a\nrequest for the reporter to start a discussion on the <a class=\"reference internal\" href=\"/es/4.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a>\nmailing list if they feel differently from the rationale provided by the\nperson who closed the ticket. Other times, a mailing list discussion\nprecedes the decision to close a ticket. Always use the mailing list to\nget a consensus before reopening tickets closed as «wontfix».</p>\n</dd>\n</dl>\n</li>\n<li><dl class=\"simple\">\n<dt>duplicate</dt><dd><p>Used when another ticket covers the same issue. By closing duplicate\ntickets, we keep all the discussion in one place, which helps\neveryone.</p>\n</dd>\n</dl>\n</li>\n<li><dl class=\"simple\">\n<dt>worksforme</dt><dd><p>Used when the ticket doesn’t contain enough detail to replicate\nthe original bug.</p>\n</dd>\n</dl>\n</li>\n<li><dl class=\"simple\">\n<dt>needsinfo</dt><dd><p>Used when the ticket does not contain enough information to replicate\nthe reported issue but is potentially still valid. The ticket\nshould be reopened when more information is supplied.</p>\n</dd>\n</dl>\n</li>\n</ul>\n<p>If you believe that the ticket was closed in error – because you’re\nstill having the issue, or it’s popped up somewhere else, or the triagers have\nmade a mistake – please reopen the ticket and provide further information.\nAgain, please do not reopen tickets that have been marked as «wontfix» and\nbring the issue to <a class=\"reference internal\" href=\"/es/4.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a> instead.</p>\n</section>\n<section id=\"how-can-i-help-with-triaging\">\n<span id=\"id3\"></span><h2>How can I help with triaging?<a class=\"heading-anchor\" href=\"#how-can-i-help-with-triaging\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>The triage process is primarily driven by community members. Really,\n<strong>ANYONE</strong> can help.</p>\n<p>To get involved, start by <a class=\"reference external\" href=\"https://www.djangoproject.com/accounts/register/\">creating an account on Trac</a>. If you have an\naccount but have forgotten your password, you can reset it using the <a class=\"reference external\" href=\"https://www.djangoproject.com/accounts/password/reset/\">password\nreset page</a>.</p>\n<p>Then, you can help out by:</p>\n<ul class=\"simple\">\n<li><p>Closing «Unreviewed» tickets as «invalid», «worksforme», or «duplicate», or\n«wontfix».</p></li>\n<li><p>Closing «Unreviewed» tickets as «needsinfo» when the description is too\nsparse to be actionable, or when they’re feature requests requiring a\ndiscussion on <a class=\"reference internal\" href=\"/es/4.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a>.</p></li>\n<li><p>Correcting the «Needs tests», «Needs documentation», or «Has patch»\nflags for tickets where they are incorrectly set.</p></li>\n<li><p>Setting the «<a class=\"reference external\" href=\"https://code.djangoproject.com/query?status=!closed&amp;easy=1\">Easy pickings</a>» flag for tickets that are small and\nrelatively straightforward.</p></li>\n<li><p>Set the <em>type</em> of tickets that are still uncategorized.</p></li>\n<li><p>Checking that old tickets are still valid. If a ticket hasn’t seen\nany activity in a long time, it’s possible that the problem has been\nfixed but the ticket hasn’t yet been closed.</p></li>\n<li><p>Identifying trends and themes in the tickets. If there are a lot of bug\nreports about a particular part of Django, it may indicate we should\nconsider refactoring that part of the code. If a trend is emerging,\nyou should raise it for discussion (referencing the relevant tickets)\non <a class=\"reference internal\" href=\"/es/4.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a>.</p></li>\n<li><p>Verify if patches submitted by other users are correct. If they are correct\nand also contain appropriate documentation and tests then move them to the\n«Ready for Checkin» stage. If they are not correct then leave a comment to\nexplain why and set the corresponding flags («Patch needs improvement»,\n«Needs tests» etc.).</p></li>\n</ul>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Nota</p>\n<p>The <a class=\"reference external\" href=\"https://code.djangoproject.com/wiki/Reports\">Reports page</a> contains links to many useful Trac queries, including\nseveral that are useful for triaging tickets and reviewing patches as\nsuggested above.</p>\n<p>You can also find more <a class=\"reference internal\" href=\"/es/4.0/internals/contributing/new-contributors/\"><span class=\"doc\">Consejos para los nuevos colaboradores</span></a>.</p>\n</aside>\n<p>However, we do ask the following of all general community members working in\nthe ticket database:</p>\n<ul class=\"simple\">\n<li><p>Please <strong>don’t</strong> promote your own tickets to «Ready for checkin». You\nmay mark other people’s tickets which you’ve reviewed as «Ready for\ncheckin», but you should get at minimum one other community member to\nreview a patch that you submit.</p></li>\n<li><p>Please <strong>don’t</strong> reverse a decision without posting a message to\n<a class=\"reference internal\" href=\"/es/4.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a> to find consensus.</p></li>\n<li><p>If you’re unsure if you should be making a change, don’t make the\nchange but instead leave a comment with your concerns on the ticket,\nor post a message to <a class=\"reference internal\" href=\"/es/4.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a>. It’s okay to be unsure,\nbut your input is still valuable.</p></li>\n</ul>\n</section>\n<section id=\"bisecting-a-regression\">\n<h2>Bisecting a regression<a class=\"heading-anchor\" href=\"#bisecting-a-regression\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>A regression is a bug that’s present in some newer version of Django but not in\nan older one. An extremely helpful piece of information is the commit that\nintroduced the regression. Knowing the commit that caused the change in\nbehavior helps identify if the change was intentional or if it was an\ninadvertent side-effect. Here’s how you can determine this.</p>\n<p>Begin by writing a regression test for Django’s test suite for the issue. For\nexample, we’ll pretend we’re debugging a regression in migrations. After you’ve\nwritten the test and confirmed that it fails on the latest main branch, put it\nin a separate file that you can run standalone. For our example, we’ll pretend\nwe created <code class=\"docutils literal notranslate\"><span class=\"pre\">tests/migrations/test_regression.py</span></code>, which can be run with:</p>\n<div class=\"code-block\" data-language=\"console\"><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=\"gp\">$ </span>./runtests.py<span class=\"w\"> </span>migrations.test_regression\n</code></pre></div>\n<p>Next, we mark the current point in history as being «bad» since the test fails:</p>\n<div class=\"code-block\" data-language=\"console\"><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=\"gp\">$ </span>git<span class=\"w\"> </span>bisect<span class=\"w\"> </span>bad\n<span class=\"go\">You need to start by &quot;git bisect start&quot;</span>\n<span class=\"go\">Do you want me to do it for you [Y/n]? y</span>\n</code></pre></div>\n<p>Now, we need to find a point in git history before the regression was\nintroduced (i.e. a point where the test passes). Use something like\n<code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">checkout</span> <span class=\"pre\">HEAD~100</span></code> to checkout an earlier revision (100 commits earlier,\nin this case). Check if the test fails. If so, mark that point as «bad»\n(<code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">bisect</span> <span class=\"pre\">bad</span></code>), then checkout an earlier revision and recheck. Once you\nfind a revision where your test passes, mark it as «good»:</p>\n<div class=\"code-block\" data-language=\"console\"><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=\"gp\">$ </span>git<span class=\"w\"> </span>bisect<span class=\"w\"> </span>good\n<span class=\"go\">Bisecting: X revisions left to test after this (roughly Y steps)</span>\n<span class=\"go\">...</span>\n</code></pre></div>\n<p>Now we’re ready for the fun part: using <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">bisect</span> <span class=\"pre\">run</span></code> to automate the rest\nof the process:</p>\n<div class=\"code-block\" data-language=\"console\"><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=\"gp\">$ </span>git<span class=\"w\"> </span>bisect<span class=\"w\"> </span>run<span class=\"w\"> </span>tests/runtests.py<span class=\"w\"> </span>migrations.test_regression\n</code></pre></div>\n<p>You should see <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">bisect</span></code> use a binary search to automatically checkout\nrevisions between the good and bad commits until it finds the first «bad»\ncommit where the test fails.</p>\n<p>Now, report your results on the Trac ticket, and please include the regression\ntest as an attachment. When someone writes a fix for the bug, they’ll already\nhave your test as a starting point.</p>\n</section>","rootId":"triaging-tickets","toc":[{"title":"Flujo de trabajo de clasificación","anchor":"triage-workflow","children":[]},{"title":"Etapas de clasificación","anchor":"triage-stages","children":[{"title":"No revisado","anchor":"unreviewed","children":[]},{"title":"Aceptado","anchor":"accepted","children":[]},{"title":"Listo Para Revisar","anchor":"ready-for-checkin","children":[]},{"title":"Algún día/Tal vez","anchor":"someday-maybe","children":[]}]},{"title":"Otros atributos de clasificación","anchor":"other-triage-attributes","children":[{"title":"Tiene parche","anchor":"has-patch","children":[]},{"title":"Necesita documentación","anchor":"needs-documentation","children":[]},{"title":"Necesita pruebas","anchor":"needs-tests","children":[]},{"title":"El parche necesita mejoras","anchor":"patch-needs-improvement","children":[]},{"title":"Presa fácil","anchor":"easy-pickings","children":[]},{"title":"Tipo","anchor":"type","children":[]},{"title":"Componente","anchor":"component","children":[]},{"title":"Gravedad","anchor":"severity","children":[]},{"title":"Versión","anchor":"version","children":[]},{"title":"UI/UX","anchor":"ui-ux","children":[]},{"title":"Cc","anchor":"cc","children":[]},{"title":"Palabras clave","anchor":"keywords","children":[]}]},{"title":"Cerrando tickets","anchor":"closing-tickets","children":[]},{"title":"How can I help with triaging?","anchor":"how-can-i-help-with-triaging","children":[]},{"title":"Bisecting a regression","anchor":"bisecting-a-regression","children":[]}],"breadcrumbs":[{"docname":"internals/index","title":"Django internals","url":"/es/4.0/internals/"},{"docname":"internals/contributing/index","title":"Contribuyendo con Django","url":"/es/4.0/internals/contributing/"}],"prev":{"docname":"internals/contributing/bugs-and-features","title":"Cómo informar de errores y solicitar funcionalidades","url":"/es/4.0/internals/contributing/bugs-and-features/"},"next":{"docname":"internals/contributing/writing-code/index","title":"Writing code","url":"/es/4.0/internals/contributing/writing-code/"},"formats":{"html":"/es/4.0/internals/contributing/triaging-tickets/","markdown":"/es/4.0/internals/contributing/triaging-tickets.md","json":"/es/4.0/internals/contributing/triaging-tickets.json"},"source":"https://github.com/django/django/blob/stable/4.0.x/docs/internals/contributing/triaging-tickets.txt","official":"https://docs.djangoproject.com/es/4.0/internals/contributing/triaging-tickets/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}