{"id":119,"date":"2018-01-21T12:01:38","date_gmt":"2018-01-21T17:01:38","guid":{"rendered":"http:\/\/blogs.gentoo.org\/chrisadr\/?p=119"},"modified":"2019-11-01T03:35:27","modified_gmt":"2019-11-01T08:35:27","slug":"escribiendo-tus-propias-historias-con-git","status":"publish","type":"post","link":"https:\/\/blogs.gentoo.org\/chrisadr\/2018\/01\/21\/escribiendo-tus-propias-historias-con-git\/","title":{"rendered":"Escribiendo tus propias historias con git"},"content":{"rendered":"<p>Buenas con todos :) Antes de continuar\u00a0con los textos de la lista de pedidos, quiero celebrar el lanzamiento de git 2.16 agradeciendo a cada uno de los que mand\u00f3 un parche y a cada uno de los usuarios, en total tuvimos como 4000 l\u00edneas entre actualizaciones y correcciones, lo cual no habla muy bien de mi primera versi\u00f3n, pero si de la amabilidad de ustedes :) \u00a1Gracias! Ahora bien, les contar\u00e9 un peque\u00f1o secreto, hasta ahora no ha habido una vez en la que no me haya sentado a escribir un art\u00edculo y haya pensado mucho al respecto, normalmente solo escribo de corrido, y despu\u00e9s el buen lagarto se toma la amabilidad de corregir mis faltas de tipeo :) as\u00ed que gracias a \u00e9l tambi\u00e9n.<\/p>\n<p>Esto no es lo mejor cuando hablamos de escribir art\u00edculos, supuestamente deber\u00eda tener un objetivo y armar una estructura, y marcar peque\u00f1os puntos y revisiones y etc etc&#8230; Ahora bien, esto no solo aplica para los blogs en general, sino que es fundamental en un software que pretende ser bueno :) Para esta tarea, y tras algunos problemas con el software de control de versiones que se usaba en el desarrollo del kernel hace unos a\u00f1os, naci\u00f3 <code>git<\/code> :)<\/p>\n<h3>\u00bfD\u00f3nde aprender <code>git<\/code>?<\/h3>\n<p>La cantidad de documentaci\u00f3n existente en torno a git es descomunal, incluso si solo tomamos las p\u00e1ginas de manual que vienen con la instalaci\u00f3n, tendr\u00edamos una cantidad inmensa de lectura. Yo personalmente encuentro el <a href=\"https:\/\/git-scm.com\/book\/es\/v2\">libro de git<\/a>\u00a0bastante bien dise\u00f1ado, incluso yo he traducido algunos de los segmentos de la secci\u00f3n 7, todav\u00eda me faltan unos cuantos, pero denme tiempo :P tal vez en este mes pueda traducir lo que queda de esa secci\u00f3n.<\/p>\n<h3>\u00bfQu\u00e9 hace git?<\/h3>\n<p>Git est\u00e1 dise\u00f1ado para ser r\u00e1pido, eficiente, simple y soportar grandes cargas de informaci\u00f3n, despu\u00e9s de todo, la comunidad del kernel lo creo para su software, el cual es uno de los trabajos conjuntos m\u00e1s grandes del software libre del mundo y cuenta con cientos de contribuciones por hora en una base de c\u00f3digo que supera el mill\u00f3n de l\u00edneas.<\/p>\n<p>Lo interesante de git es su forma de mantener las versiones de la data. Antiguamente (otros programas de control de versiones) tomaban comprimidos de todos los archivos existentes en un punto de la historia, como hacer un\u00a0<em>backup<\/em>. Git tiene un enfoque diferente, al realizar un\u00a0<code>commit<\/code>\u00a0se marca un punto en la historia, ese punto en la historia cuenta con una serie de modificaciones y trabajos, al final del d\u00eda, se juntan todas las modificaciones a lo largo del tiempo y se obtienen los archivos para poder comprimir o marcar como hitos de versiones. Como s\u00e9 que todo esto suena complicado, voy a llevarlos por un m\u00e1gico viaje en un ejemplo super b\u00e1sico.<\/p>\n<h3>Peque\u00f1o proyecto de calculam\u00e1tica<\/h3>\n<p>La calculam\u00e1tica ser\u00e1 un programa que encontrar\u00e1 los cuadrados de un n\u00famero dado, lo haremos en C y ser\u00e1 lo m\u00e1s simple posible, as\u00ed que no esperen muchos controles de seguridad de mi parte. Primero vamos a crear un repositorio, lo har\u00e9 con Github para matar dos p\u00e1jaros de un tiro:<\/p>\n<figure id=\"attachment_78394\" aria-describedby=\"caption-attachment-78394\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78394\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-10-44-31-420x346.png\" alt=\"\" width=\"420\" height=\"346\" \/><figcaption id=\"caption-attachment-78394\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Hemos agregado un par de cosas bastante simples como la licencia (muy importante si quieres proteger tu trabajo, en mi caso, obligarlos a compartir los resultados si lo quieren usar de base :P)<\/p>\n<p>Ahora vamos a ir a nuestra querida terminal,\u00a0<code>git clone<\/code>\u00a0es el comando que se encarga de descargar el repositorio ubicado en la\u00a0<code>url<\/code>\u00a0asignada y crear una copia local en nuestro equipo.<\/p>\n<figure id=\"attachment_78395\" aria-describedby=\"caption-attachment-78395\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78395\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-07-55-420x252.png\" alt=\"\" width=\"420\" height=\"252\" \/><figcaption id=\"caption-attachment-78395\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Ahora vamos a revisar con\u00a0<code>git log<\/code>\u00a0lo que ha ocurrido en la historia de nuestro proyecto:<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-78396\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-11-59-420x286.png\" alt=\"\" width=\"420\" height=\"286\" \/><\/p>\n<p>Aqu\u00ed tenemos mucha informaci\u00f3n en diversos colores :) vamos a tratar de explicarla:<\/p>\n<p>la primer l\u00ednea amarilla es el &#8220;c\u00f3digo de barras del commit&#8221; cada commit tiene su propio identificador \u00fanico, con el cual puedes hacer bastantes cosas, pero lo vamos a dejar para despu\u00e9s. Ahora tenemos <code>HEAD<\/code> de celeste y <code>master<\/code> de verde. Estos son &#8220;punteros&#8221; su funci\u00f3n es apuntar a la ubicaci\u00f3n actual de nuestra historia (<code>HEAD<\/code>) y la rama en la que estamos trabajando en nuestra computadora (<code>master<\/code>).<\/p>\n<p><code>origin\/master<\/code>\u00a0es la contraparte de internet,\u00a0<code>origin<\/code>\u00a0es el nombre por defecto que se ha asignado a nuestra <code>URL<\/code>, y <code>master<\/code> es la rama en la que est\u00e1 trabajando&#8230; para hacerlo sencillo, los que tienen un\u00a0<code>\/<\/code>\u00a0son aquellos que no se encuentran en nuestro equipo, sino que son referencias a lo que est\u00e1 en internet.<\/p>\n<p>Despu\u00e9s tenemos el autor, la fecha y hora y el resumen del commit. Esta es una peque\u00f1a rese\u00f1a de lo que ha sucedido en ese punto de la historia, muy importante en muchos proyectos y ah\u00ed se condenza bastante informaic\u00f3n. Vamos a ver m\u00e1s de cerca lo que sucedi\u00f3 en el commit con el comando\u00a0<code>git show &lt;c\u00f3digo-de-commit&gt;<\/code><\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_78397\" aria-describedby=\"caption-attachment-78397\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78397\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-17-41-420x298.png\" alt=\"\" width=\"420\" height=\"298\" \/><figcaption id=\"caption-attachment-78397\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>El comando git show nos lleva a esta pantalla en formato parche, donde se aprecia lo que se ha agregado y lo que se ha quitado (si se hubiese quitado algo) en ese momento de la historia, hasta aqu\u00ed solo nos muestra que se agregaron los archivos\u00a0<code>.gitignore<\/code>,<code>README.md<\/code> y\u00a0<code>LICENSE<\/code>.<\/p>\n<p>Ahora vamos a lo nuestro, vamos a escribir un archivo :) crearemos el primer hito en nuestra historia :D :<\/p>\n<figure id=\"attachment_78398\" aria-describedby=\"caption-attachment-78398\" style=\"width: 334px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-full wp-image-78398\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-25-53.png\" alt=\"\" width=\"334\" height=\"218\" \/><figcaption id=\"caption-attachment-78398\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Brevemente, vamos a crear un programa que nos muestre la cantidad de argumentos pasados al momento de ejecutarlo, simple :)<\/p>\n<figure id=\"attachment_78399\" aria-describedby=\"caption-attachment-78399\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78399\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-27-41-420x305.png\" alt=\"\" width=\"420\" height=\"305\" \/><figcaption id=\"caption-attachment-78399\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Eso fue f\u00e1cil :) ahora vamos a ver el siguiente comando \u00fatil:\u00a0<code>git status<\/code><\/p>\n<figure id=\"attachment_78400\" aria-describedby=\"caption-attachment-78400\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78400\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-29-01-420x240.png\" alt=\"\" width=\"420\" height=\"240\" \/><figcaption id=\"caption-attachment-78400\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Alg\u00fan alma de buen coraz\u00f3n ha traducido git para hacerlo sencillo de seguir, aqu\u00ed tenemos mucha informaci\u00f3n \u00fatil, sabemos que estamos en la rama master, que estamos actualizados con\u00a0<code>origin\/master<\/code>(la rama de Github), \u00a1que tenemos archivos sin seguimiento! y que para agregarlos tenemos que usar <code>git add<\/code>, vamos a probar :)<\/p>\n<figure id=\"attachment_78401\" aria-describedby=\"caption-attachment-78401\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78401\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-31-09-420x233.png\" alt=\"\" width=\"420\" height=\"233\" \/><figcaption id=\"caption-attachment-78401\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Ahora tenemos un nuevo espacio de verde, en el cual se muestra el archivo que hemos agregado a la zona de trabajo. En este lugar podemos agrupar nuestros cambios para poder realizar un commit, el commit consiste en un hito a lo largo de la historia de nuestro proyecto, vamos a crear el commit :)\u00a0<code>git commit<\/code><\/p>\n<figure id=\"attachment_78402\" aria-describedby=\"caption-attachment-78402\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78402\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-33-32-420x289.png\" alt=\"\" width=\"420\" height=\"289\" \/><figcaption id=\"caption-attachment-78402\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Brevemente explicado, la l\u00ednea amarilla es el t\u00edtulo de nuestro commit, yo escribo main.c por una mera referencia visual. El texto de negro es la explicaci\u00f3n de los cambios realizados desde el commit anterior hasta ahora :) guardamos el archivo y veremos nuestro commit guardado en el registro.<\/p>\n<figure id=\"attachment_78403\" aria-describedby=\"caption-attachment-78403\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78403\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-35-35-420x211.png\" alt=\"\" width=\"420\" height=\"211\" \/><figcaption id=\"caption-attachment-78403\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Ahora vamos a ver la historia de nuestro proyecto con\u00a0<code>git log<\/code><\/p>\n<figure id=\"attachment_78404\" aria-describedby=\"caption-attachment-78404\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78404\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-36-41-420x289.png\" alt=\"\" width=\"420\" height=\"289\" \/><figcaption id=\"caption-attachment-78404\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Nuevamente en el log, ahora podemos ver que la l\u00ednea verde y la roja han diferido, eso se debe a que en nuestra computadora, estamos un commit por encima de los almacenados en internet :) vamos a seguir el trabajo, supongamos que ahora quiero mostrar un mensaje en caso de que el usuario ponga m\u00e1s de un argumento en el programa (lo cual har\u00eda que la calculadora se confunda :) )<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-78405\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-43-52-420x251.png\" alt=\"\" width=\"420\" height=\"251\" \/><\/p>\n<p>Como podemos ver, nuestro programa ha crecido bastante :D , ahora tenemos la funci\u00f3n <code>imprimir_ayuda()<\/code>\u00a0que muestra un mensaje sobre c\u00f3mo usar la calculamatica, y en el bloque\u00a0<code>main()<\/code>\u00a0ahora hacemos una revisi\u00f3n con\u00a0<code>if<\/code>(algo que veremos en un tutorial de programaci\u00f3n en otro momento, por ahora solo es necesario saber que si se ingresan m\u00e1s de 2 argumentos a la calculam\u00e1tica, que el programa termine y se muestre la ayuda. Vamos a ejecutarlo:<\/p>\n<figure id=\"attachment_78406\" aria-describedby=\"caption-attachment-78406\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78406\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-46-48-420x252.png\" alt=\"\" width=\"420\" height=\"252\" \/><figcaption id=\"caption-attachment-78406\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Como pueden ver ahora imprime el n\u00famero que ha sido entregado en lugar de la cantidad de argumentos, pero eso yo no se los hab\u00eda contado antes :) para los curiosos\u00a0<code>echo $?<\/code>\u00a0muestra el c\u00f3digo de salida del \u00faltimo programa ejecutado, el cual es\u00a0<code>1<\/code>\u00a0porque ha terminado en error. Ahora vamos a revisar c\u00f3mo va nuestra historia:<\/p>\n<figure id=\"attachment_78407\" aria-describedby=\"caption-attachment-78407\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78407\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-48-47-420x248.png\" alt=\"\" width=\"420\" height=\"248\" \/><figcaption id=\"caption-attachment-78407\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Ahora sabemos que estamos 1 commit delante de Github, que el archivo <code>main.c<\/code>\u00a0ha sido modificado, vamos a crear el siguiente commit\u00a0 haciendo <code>git add main.c\u00a0<\/code>\u00a0y luego <code>git commit<\/code>:)<\/p>\n<figure id=\"attachment_78408\" aria-describedby=\"caption-attachment-78408\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78408\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-52-18-420x332.png\" alt=\"\" width=\"420\" height=\"332\" \/><figcaption id=\"caption-attachment-78408\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Ahora hemos sido un poco m\u00e1s espec\u00edficos, puesto que hemos implementado una funci\u00f3n y cambiado el c\u00f3digo de validaci\u00f3n. Ahora que se ha guardado vamos a revisar nuestro \u00faltimo cambio. Podemos verlo con\u00a0<code>git show HEAD<\/code><\/p>\n<figure id=\"attachment_78409\" aria-describedby=\"caption-attachment-78409\" style=\"width: 407px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78409\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-53-43-407x400.png\" alt=\"\" width=\"407\" height=\"400\" \/><figcaption id=\"caption-attachment-78409\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Ahora se pueden apreciar las l\u00edneas rojas y verdes, hemos agregado la biblioteca\u00a0<code>stdlib.h<\/code>, modificado gran parte del c\u00f3digo y agregado la funci\u00f3n a nuestra historia.<\/p>\n<p>Ahora vamos a ver el log: (<code>git log<\/code>)<\/p>\n<figure id=\"attachment_78410\" aria-describedby=\"caption-attachment-78410\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78410\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-55-24-420x383.png\" alt=\"\" width=\"420\" height=\"383\" \/><figcaption id=\"caption-attachment-78410\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Podemos ver que estamos dos commits adelante de la versi\u00f3n de Github, vamos a igualar un poco el marcador :) para eso usamos\u00a0<code>git push origin master<\/code><\/p>\n<p>Con esto decimos, env\u00eda mis commits al url\u00a0<code>origin<\/code>\u00a0en la rama\u00a0<code>master<\/code><\/p>\n<figure id=\"attachment_78411\" aria-describedby=\"caption-attachment-78411\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78411\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-57-11-420x225.png\" alt=\"\" width=\"420\" height=\"225\" \/><figcaption id=\"caption-attachment-78411\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>\u00a1Felicidades! Ahora sus cambios est\u00e1n en Github, \u00bfno me creen? vamos a revisarlo ;)<\/p>\n<figure id=\"attachment_78412\" aria-describedby=\"caption-attachment-78412\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-78412\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2018\/01\/Captura-de-pantalla-de-2018-01-21-11-58-17-420x293.png\" alt=\"\" width=\"420\" height=\"293\" \/><figcaption id=\"caption-attachment-78412\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>Ahora tenemos los 3 commits en Github :)<\/p>\n<h3>Resumen<\/h3>\n<p>Hemos tocado los aspectos m\u00e1s b\u00e1sicos de <code>git<\/code>, ahora pueden crear un flujo de trabajo simple en sus proyectos, esto no es casi nada de toda la gran variedad de cosas que pueden hacerse con git, pero ciertamente es lo m\u00e1s pr\u00e1ctico y de todos los d\u00edas para un desarrollador o blogger. No hemos llegado al final de la calculadora, pero eso lo vamos a dejar para otro momento ;) Muchas gracias por llegar hasta aqu\u00ed y espero les ayude a participar en varios proyectos :D Saludos<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Buenas con todos :) Antes de continuar\u00a0con los textos de la lista de pedidos, quiero celebrar el lanzamiento de git 2.16 agradeciendo a cada uno de los que mand\u00f3 un parche y a cada uno de los usuarios, en total tuvimos como 4000 l\u00edneas entre actualizaciones y correcciones, lo cual no habla muy bien de &hellip; <a href=\"https:\/\/blogs.gentoo.org\/chrisadr\/2018\/01\/21\/escribiendo-tus-propias-historias-con-git\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Escribiendo tus propias historias con git<\/span><\/a><\/p>\n","protected":false},"author":169,"featured_media":121,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[23],"tags":[],"jetpack_featured_media_url":"https:\/\/blogs.gentoo.org\/chrisadr\/files\/2018\/01\/git.jpeg","_links":{"self":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts\/119"}],"collection":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/users\/169"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/comments?post=119"}],"version-history":[{"count":2,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts\/119\/revisions"}],"predecessor-version":[{"id":122,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts\/119\/revisions\/122"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/media\/121"}],"wp:attachment":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/media?parent=119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/categories?post=119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/tags?post=119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}