Qué son los issues en github
Comencemos definiendo lo que es un issue. En inglés, significa problema, por lo que no es difícil imaginar para dónde va esto.
En GitHub, un issue es la unidad de trabajo designada para realizar una mejora en un Sistema informático. Un issue puede ser el arreglo de un fallo, una característica pedida, una tarea, una solicitud de Documentación en específico y todo tipo de solicitud al equipo de desarrollo. Con las issues se puede asignar una tarea a un colaborador de tu repositorio o proyecto, lo cual permite una mejor organización en proyectos que se pueden realizar desde casa siempre y cuando la organización tenga su repositorio en la nube. Estos issues tienen etiquetas, las cuales sirven para poder filtrar la búsqueda de estas y sirven precisamente para indicar la idea principal que esta tarea implica.
Los milestone
Tenemos otra categoría útil: las milestones. Estas son categorías que se utilizan en las issues para tener un filtro más adecuado de la información. Cada milestone puede tener una fecha programada indicando el tiempo que es necesario para cumplir cierta tarea. Puede ver que si la issue es una pregunta, cuantas issues son necesarias para completar la milestone, el porcentaje que se lleva de la milestone , cuanto tiempo falta para que expire, si se requiere programar o investigar algo, etc. Desde ese momento tenga la idea antes de abrir el issue.
Cómo crear un issue
Cualquier usuario con acceso de extracción a un repositorio puede crear un issue de la siguiente manera:
1 |
<code>POST /repos/: owner/: repo/issues</code> |
Podemos usar los siguiente parámetros al crear un issue:
Nombre | Tipo | Descripción |
title | string | Necesario. El título del issue. |
body | string | El contenido del issue. |
assignee | string | Accede por el usuario que esta issue debe ser asignada.
NOTE: Solo usuarios con push access pueden establecer asignacion para nuevas issue. De lo contrario el asignado es suprimido. |
milestone | number | Milestone (categorías) para asociar la issue (tema).
NOTE: Solo usuarios con push access pueden establecer categorias para nuevas issue. De lo contrario la categoria es suprimida. |
labels | array ofstrings | Etiquetas para asociar con la issue (tema)
NOTE: Solo usuarios con push access pueden establecer etiquetas para nuevas issue. De lo contrario la etiqueta sera suprimida. |
Ejemplo de cómo crear un issue en github
1 2 3 4 5 6 7 8 9 10 |
{ <code> </code>"title"<b>:</b><code> </code>"Found a bug", <code> </code>"body"<b>:</b><code> </code>"I'm having a problem with this.", <code> </code>"assignee"<b>:</b><code> </code>"octocat", <code> </code>"milestone"<b>:</b><code> </code>1, <code> </code>"labels"<b>:</b><code> </code>[ <code> </code>"Label1", <code> </code>"Label2" <code> </code>] } |
Cómo crear un milestone en github
Para crear un milestone, hacemos lo siguiente:
1 |
<code>POST /repos/:owner/:repo/milestones</code> |
Y contamos con los siguientes parámetros:
Name |
Type |
Description |
title |
string |
Required. The title of the milestone. |
state |
string |
The state of the milestone. Either open or closed . Default: open |
description |
string |
A description of the milestone. |
due_on |
string |
The milestone due date. This is a timestamp in ISO 8601 format:YYYY-MM-DDTHH:MM:SSZ . |
Ejemplo para crear un milestone en github
1 2 3 4 5 6 |
{ <code> </code>"title"<b>:</b><code> </code>"String", <code> </code>"state"<b>:</b><code> </code>"open or closed", <code> </code>"description"<b>:</b><code> </code>"String", <code> </code>"due_on"<b>:</b><code> </code>"2012-10-09T23:39:01Z" } |
Actualizar un milestone
Para actualizar un milestone, hacemos lo siguiente:
1 |
<code>PATCH /repos/:owner/:repo/milestones/:number</code> |
Borrar un milestone
Y para borrar uno, hacemos lo siguiente:
1 |
<code>DELETE /repos/:owner/:repo/milestones/:number</code> |
Cómo editar un issue en github
Es importante aclarar que solo los propietarios y usuarios con push access podrán editar un issue. Es parecido al comando usado para actualizar un milestone.
1 |
<code>PATCH /repos/:owner/:repo/issues/:number</code> |
Y contamos con estos parámetros
Name |
Type |
Description |
title |
string |
Ncesario. El titulo del issue. |
body |
string |
Contenido del issue. |
assignee |
string |
Login para que el usuario que esta issue pueda ser asignada |
state |
string |
Estado de la issue. Abierta o Cerrada (Open Or Closes) |
milestone |
number |
Categorías (milestone) para asociar la issue (tema).
NOTE: Solo usuarios con push access pueden establecer milestones para nuevas issue. De lo contrario la milestone es suprimida. |
labels |
array ofstrings |
Etiquetas para asociar con la issue. Pasar una o más etiquetas para reemplazar el conjunto de etiquetas en este issue. Enviar una matriz vacía ([ ]) para eliminar todas las etiquetas del issue.
NOTE: Solo usuarios con push access pueden establecer etiquetas para nuevas issue. De lo contrario la etiqueta sera suprimida. |
Para darnos una idea de como funciona, aquí un ejemplo:
1 2 3 4 5 6 7 8 9 10 |
{ <code> </code>"title"<b>:</b><code> </code>"Found a bug", <code> </code>"body"<b>:</b><code> </code>"I'm having a problem with this.", <code> </code>"assignee"<b>:</b><code> </code>"octocat", <code> </code>"milestone"<b>:</b><code> </code>1, <code> </code>"labels"<b>:</b><code> </code>[ <code> </code>"Label1", <code> </code>"Label2" <code> </code>] } |
Con esta herramienta podemos grabar varios eventos que se producen en torno a un problema o Pull Request. Esto es útil tanto para la visualización de las páginas de información de solicitud de emisión / pull, y también para determinar quién debe ser notificado de los comentarios.
Atributos de los issues en github
Al generar issues contamos con los siguientes atributos que nos permiten identificar quien hace qué, y qué problemas se detectaron:
actor
Siempre el usuario que generó el evento.
commit_id
The String SHA of a commit que hace referencia a este issue
event
Identifica el tipo real del evento que se produjo.
closed
El issue fue cerrado por el actor. Cuando el commit_id esta presente, identifica el sommit que cerro el tema usando “closes / fixes #NN”
reopened
La emisión fue reabierta por el actor.subscribed
merged
El tema fue combinado por el actor. El commit_id
atributo es el SHA1 del HEAD cometer que se fusionó.
mentioned
El actor @mencionado en el issue cuerpo.
assigned
El asunto fue asignado al actor.
1 |
<code>GET / repositorio /: / Propietario: repo / temas /: ISSUE_NUMBER / eventos</code> |
Lista de eventos para una issue en github
Con esto podemos ver qué eventos han ocurrido en cierto issue.
1 |
<code>GET /repos/:owner/:repo/issues/:issue_number/events</code> |
Labels ó etiquetas para los issues en github
Creando una etiqueta
Para crear una etiqueta podemos usar este comando:
1 2 |
<code>POST /repos/:owner/:repo/labels </code> |
Los parámetros con los que contamos son los siguientes:
Name |
Type |
Description |
name |
string |
Required. The name of the label. |
color |
string |
Required. A 6 character hex code, without the leading # , identifying the color. |
1 2 3 4 |
{ <code> </code>"name"<b>:</b><code> </code>"API", <code> </code>"color"<b>:</b><code> </code>"FFFFFF" } |
Listando las etiquetas en un issue
Podemos obtener las etiquetas con este comando
1 2 |
<code>GET /repos/:owner/:repo/issues/:number/labels </code> |
Y como respuesta, obtendremos:
1 |
<code>Status: 200 OK</code> |
1 |
<span style="font-family: Consolas, 'Courier New', Courier, monospace; font-size: 0.9166em; line-height: 1.5;">X-RateLimit-Limit: 5000</span> |
1 |
<span style="font-family: Consolas, 'Courier New', Courier, monospace; font-size: 0.9166em; line-height: 1.5;">X-RateLimit-Remaining: 4999</span> |
1 2 3 4 5 6 7 |
<code></code>[ <code> </code>{ <code> </code>"url"<b>:</b><code> </code>"https://api.github.com/repos/octocat/Hello-World/labels/bug", <code> </code>"name"<b>:</b><code> </code>"bug", <code> </code>"color"<b>:</b><code> </code>"f29513" <code> </code>} ] |
Para obtener las etiquetas de cada issue en un milestone podemos hacer lo siguiente:
1 |
<code>GET /repos/:owner/:repo/milestones/:number/labels</code> |
A su vez, para remover las etiquetas de un issue podemos usar el siguiente comando:
1 |
<code>DELETE /repos/:owner/:repo/issues/:number/labels</code> |
Para reemplazar todas las etiquetas de un issue usaremos:
1 |
<code>PUT /repos/:owner/:repo/issues/:number/labels</code> |
Para remover una etiqueta de un issue usaremos:
1 |
<code>DELETE /repos/:owner/:repo/issues/:number/labels/:name</code> |
¿Y si necesitamos añadir etiquetas a un issue? Sin problemas
1 |
<code>POST /repos/:owner/:repo/issues/:number/labels</code> |
Ahora bien, para actualizar dicha etiqueta tenemos
1 |
<code>PATCH /repos/:owner/:repo/labels/:name</code> |
Y finalmente, para obtener una sola etiqueta
1 |
<code>GET /repos/:owner/:repo/labels/:name</code> |
Cerrar una issue a través de un commit
Al entrar en “Fixes # 45” en un mensaje de consignación, la edición # 45 se cierra una vez que el commit se combina en su rama por defecto. Si el error no se corrige en su rama por defecto, la issue sigue abierta. Una vez que el commit con el fix se combina en su rama por defecto, el tema se cierra automáticamente.
Si haces un commit en una rama no predeterminada con la sintaxis “Fixes # 33”, el tema se hace referencia a una información sobre herramientas.
Palabras que se pueden usar en el commit para cerrar un issue:
- close
- closes
- closed
- fix
- fixes
- fixed
- resolve
- resolves
- resolved
Cerrando temas entre repositorios
Si se refiere a un depósito por su notación GFM , también puedes cerrar issues cercanos a través de repositorios. Por ejemplo, si incluye “fixes user / repo # 45” en su mensaje del informe, se cierra el asunto de referencia, siempre y cuando tengas permiso para empujar a este registro.
Cierre de problemas con una solicitud de extracción (pull request)
Con la inclusión de las palabras clave “cerradas” en la descripción de sus Pull Request puede cerrarlas. Al igual que con los mensajes de confirmación, si el fallo no se fija en su rama por defecto, la issue sigue abierta. El tema está cerrado de forma automática sólo cuando la pull request se combina en su rama por defecto.
Cierre de múltiples problemas
Para cerrar varias cuestiones, basta con utilizar la misma sintaxis varias veces para cada tema. Por ejemplo, “this fixes# 34 y también resuelve el n º 23, se cierra usuario / repo # 42” cerraría las ediciones # 34 y # 23, así como el número # 42 en el usuario / repo.
Referencias
http://developer.github.com/v3/issues/
https://help.github.com/articles/searching-issues
http://developer.github.com/v3/issues/comments/
http://developer.github.com/v3/issues/events/#list-events-for-an-issue
https://help.github.com/articles/closing-issues-via-commit-messages
¿Te gustó este artículo?
Si te gustó este artículo, te ha servido o aprendiste algo nuevo; compártelo en tus redes sociales o invítame un cafe.
Azureus Sme liked this on Facebook.
Jaqui Digión liked this on Facebook.