GitHub se ha convertido en la piedra angular de todo el software de código abierto. Los desarrolladores lo aman, colaboran en él y están construyendo constantemente proyectos increíbles a través de él. Además de alojar nuestro código, la atracción principal de GitHub es usarlo como una herramienta de colaboración. En este tutorial, exploremos algunas de las funciones más útiles de GitHub, especialmente para trabajar en equipo, lo que lo hace más eficiente, productivo y, lo más importante, divertido.!
Una cosa que me parece muy útil es la integración de Github Wiki en el proyecto de código fuente principal.
Este tutorial asume que ya está familiarizado con Git, el sistema de control de versiones distribuido de código abierto, creado por Linus Torvalds en 2005. Si necesita una revisión o una búsqueda en Git, visite nuestro curso anterior de screencast o incluso algunas publicaciones. Además, ya debería tener una cuenta de Github e hizo algunas funciones básicas, como crear un repositorio y enviar cambios a Github. Si no, dirígete a más tutoriales anteriores sobre eso..
En el mundo de los proyectos de software, es inevitable que nos encontremos trabajando en equipo para entregar un proyecto. Para este tutorial sobre Github y la colaboración en equipo, exploraremos algunas de las herramientas más comunes que generalmente necesitamos cuando trabajamos con equipos de software. Las herramientas discutidas son:
Si prefieres un screencast para un recorrido visual, salta justo debajo para verlo y consulta este tutorial como notas laterales:
En general, hay dos formas de configurar Github para la colaboración en equipo:
Si está supervisando varios equipos y le gustaría establecer diferentes niveles de permiso para cada equipo con varios miembros y agregar cada miembro a diferentes repositorios, entonces la Organización sería la mejor opción. Cualquier cuenta de usuario de Github ya puede crear Organizaciones gratuitas para repositorios de código fuente abierto. Para crear una organización, simplemente vaya a la página de configuración de su organización:
Para acceder a la página de equipos de su organización, simplemente puede ir a http://github.com/organizations/[organization-name◆/teams
para verlos o incluso visitarlos https://github.com/organizations/[organization-name◆/teams/new
para crear nuevos equipos con miembros de 3 niveles de permisos diferentes, tales como:
Los colaboradores se utilizan para dar tanto Acceso de lectura + escritura a un único repositorio propiedad de una cuenta personal. Para agregar Colaboradores, (otras cuentas personales de Github) simplemente vaya a https://github.com/[nombre_de_su_conocito/[repo-name◆/settings/collaboration
:
Una vez hecho esto, cada Colaborador verá un cambio en el estado de acceso en la página del repositorio. Después de que tengamos acceso de escritura al repositorio, podemos hacer un git clon
, trabajar en los cambios, hacer una git pull
para recuperar y fusionar cualquier cambio en el repositorio remoto y, en última instancia, git push
, Para actualizar el repositorio remoto con nuestros propios cambios:
Las solicitudes de extracción son una excelente forma de contribuir a un repositorio de forma independiente mediante el bifurcación. Al final del día, si lo deseamos, podemos enviar una solicitud de extracción al propietario del repositorio para fusionar nuestros cambios de código. La solicitud de extracción en sí misma puede desencadenar discusiones sobre la calidad del código, las funciones o incluso la estrategia general.
Vayamos a través de los pasos básicos para una solicitud de extracción..
Hay dos modelos de solicitud de extracción en Github:
Aquí vemos el flujo de trabajo entre dos usuarios (dueño del repositorio
y tenedor-repo-propietario
) para el modelo de horquilla y tracción:
git push
o git pull
. A continuación, clonaremos este repositorio en nuestra máquina local: $ git clone [ssh-url] [nombre de carpeta] $ cd [nombre de carpeta]
readme.md
expediente: $ git checkout -b [nueva característica]
$ git añadir. $ git commit -m "información agregada en el archivo léame" $ git checkout master
git push [git-remote-alias] [nombre de rama]
: $ git branch * Léame maestro $ git remoto -v origen [email protected]: [forked-repo-owner-username] / [repo-name] .git (fetch) origin [email protected]: [forked-repo- usuario-nombre de usuario] / [nombre-repo] .git (push) $ git push origin readme
Si es el propietario del repositorio original, hay dos formas de fusionar una solicitud de extracción entrante:
Existen diferentes modelos de bifurcación utilizados para la versión en equipos de desarrollo de software. Aquí hay dos modelos populares de flujo de trabajo de git: (1) flujo de trabajo de Github que tiene un modelo de bifurcación simple y utiliza solicitudes de extracción y (2) Gitflow que tiene una bifurcación más extensa. El modelo que finalmente se elija definitivamente variará dependiendo del equipo, el proyecto y la situación.
Las solicitudes de extracción son una excelente forma de contribuir a un repositorio de forma independiente mediante el bifurcación.
En Github, el centro de todo el seguimiento de errores son los problemas. Aunque son principalmente para el seguimiento de errores, también es útil usar los problemas de las siguientes maneras:
Vamos a explorar algunas de las características de los problemas:
Correcciones / reparadas o cerradas / cerradas / cerradas # [número de problema]
cerrará automáticamente el problema. $ git añadir. $ git commit -m "url corregido. arreglos # 2" $ git push origin master
#[Número de emisión]
en sus mensajes. Debido a que los números de los problemas están vinculados, esto hace que sea realmente fácil mencionar los problemas relacionados durante la discusión..Está claro que podemos juntar estrechamente nuestra lista de tareas y actualizaciones a nuestros compromisos de código.
Hay dos herramientas que permiten conocer un repositorio: Gráficos y Red. Github Graphs proporciona una visión de los colaboradores y las confirmaciones detrás de cada repositorio de código, mientras que Github Network proporciona una visualización de cada contribuyente y sus confirmaciones en todos los repositorios bifurcados. Estos análisis y gráficos se vuelven muy poderosos, especialmente cuando se trabaja en equipos..
Los gráficos proporcionan análisis detallados, tales como:
Github Network es una herramienta poderosa que te permite ver los compromisos de cada contribuyente y cómo se relacionan entre sí. Cuando observamos el visualizador en su totalidad, vemos cada confirmación en cada rama de cada repositorio que pertenece a una red. Perspicaz!
Si bien los problemas de Github tienen capacidades de gestión de proyectos con problemas e hitos, algunos equipos pueden preferir otra herramienta debido a otras características o al flujo de trabajo existente. En esta sección, veremos cómo podemos vincular Github con otras dos herramientas populares de gestión de proyectos: Trello y Pivotal Tracker. Con los enlaces de servicios de Github, podemos automatizar la tarea de actualización con compromisos, problemas y muchas otras actividades. Esta automatización ayuda no solo a ahorrar tiempo, sino que también aumenta la precisión en las actualizaciones para cualquier equipo de desarrollo de software..
Trello proporciona una forma simple y visual de administrar tareas. Usando metodologías de desarrollo de software ágil, las tarjetas Trello pueden emular una simple placa Kanban virtual. Como ejemplo, crearemos automáticamente una tarjeta Trello cada vez que se realice una solicitud de extracción utilizando los ganchos de servicio de Github. Vayamos por los pasos.!
SIMBÓLICO
en Instalar Notas # 1 con el hipervínculo proporcionado para la autenticación.ID de lista
por cada carta de Trello. BOARDID
es parte de la URL cuando visitamos el foro en https://trello.com/board/[BOARD-NAMEID/◆BOARDID]
. SIMBÓLICO
se puede crear con el hipervínculo que se encuentra en Instalar Notas # 1. ID de lista
y el simbólico
. Active Active, Test Hook y estamos listos para recibir actualizaciones automáticas cada vez que haya una solicitud de extracción. Pivotal Tracker es otra herramienta de gestión de proyectos ágil y liviana en la que la planificación basada en historias permite al equipo colaborar fácilmente al reaccionar instantáneamente a varios cambios y avances del proyecto. Con base en el progreso actual del equipo, también puede crear gráficos para analizar la velocidad del equipo, la quema de iteración, el quemado de la versión, etc. En este breve ejemplo, enviaremos una historia automáticamente al vincularla con un compromiso Github!
git commit -m "mensaje [entrega #tracker_id]"
$ git añadir. $ git commit -m "Github y Pivotal Tracker implementaron ganchos [entrega # 43903595]" $ git push
Con estos ejemplos de Trello y Pivotal Tracker, está claro que podemos unir estrechamente nuestra lista de tareas y actualizaciones a nuestros compromisos de código. Este es un gran ahorro de tiempo cuando se trabaja en equipo y mejora la precisión al vincular las tareas con los compromisos exactos. La buena noticia es que, si ya utiliza otras herramientas de administración de proyectos como Asana, Basecamp y otras, también puede crear ganchos de servicio de manera similar. Si no hay enganches de servicio para su herramienta de gestión de proyectos actual, incluso puede crear uno!
La integración continua (CI) es una parte importante de todos los proyectos de desarrollo de software que trabajan con equipos. CI garantiza que, cuando un desarrollador comprueba su código, una compilación automatizada (incluidas las pruebas) detecte los errores de integración lo más rápido posible. Esto definitivamente reduce los errores de integración y hace que la iteración rápida sea mucho más eficiente. En este ejemplo, veremos cómo se puede usar Travis CI con Github para CI para detectar errores y recomendar la combinación cuando pasa todas las pruebas.
Usaremos un proyecto simple "hello-world" para node.js con grunt.js como la herramienta de compilación para configurar un proyecto Travis CI. Aquí están los archivos en el proyecto:
hola.js
archivo es el proyecto de nodo. Aquí omitiremos deliberadamente un punto y coma para que no pase la herramienta de compilación de gruñido para la alineación: var http = require ('http'); http.createServer (function (req, res) res.writeHead (200, 'Content-Type': 'text / plain'); res.end ('Hello World in Node! \ n') // sin punto y coma , esto no pasará linting). listen (1337, '127.0.0.1'); console.log ('Servidor que se ejecuta en http://127.0.0.1:1337/');
paquete.json
Denota las dependencias: "name": "hello-team", "description": "Una demostración de github y travis ci para la colaboración en equipo", "author": "name"," version ":" 0.0.1 "," devDependencies ": " grunt ":" ~ 0.3.17 "," scripts ": " test ":" grunt travis --verbose "
gruñidos
La herramienta de construcción solo tiene una tarea (alineación) solo por simplicidad: module.exports = function (grunt) grunt.initConfig (lint: files: ['hello.js']); grunt.registerTask ('por defecto', 'lint'); grunt.registerTask ('travis', 'lint'); ;
.travis.yml
es un archivo de configuración de Travis que hará que Travis ejecute nuestras pruebas: idioma: node_js node_js: - 0.8
git push
para activar la primera compilación de Travis y si todo está bien, simplemente visite http://travis-ci.org/[nombredeusuarioides/[repo-name]
para ver el estado de compilación como pasar! Anteriormente, sin ningún elemento de configuración en el proceso de una solicitud de extracción, los pasos fueron algo como esto (1) envió la prueba de solicitud de extracción (2) combinación (3) para ver si se aprueba o no. Con Travis CI conectado a las solicitudes de extracción, podremos invertir los pasos 2 y 3, lo que incrementará aún más la toma rápida de decisiones sobre si es bueno o no fusionarse con Travis para mostrarnos el estado de cada solicitud de extracción. Veamos cómo hacer que eso suceda..
Travis CI con Github es inmensamente útil para los equipos debido a las compilaciones automatizadas y la notificación inmediata. Sin duda hace que el ciclo de corrección de errores sea mucho más corto. Si está utilizando Jenkins, otra herramienta de CI popular, sí, también puede configurar los enlaces de servicio de Github de manera muy similar..
Con cada confirmación, Github permite una interfaz limpia para comentarios generales o incluso comentarios específicos en una línea de código. La capacidad de generar comentarios o preguntas en cada línea de código es muy útil para hacer revisiones de código de línea por línea. Para ver los comentarios en línea, active o desactive la casilla de verificación en la parte superior de cada confirmación.
Exploremos algunos patrones de URL que se pueden usar para ayudarnos en la revisión del código dándonos rápidamente las diferencias entre las confirmaciones:
https://github.com/ ContratacionesDeAsistemaSitual_NombreDeRombre-Econocimiento/Compare/[starting-SHA1◆… [terminación-SHA1]
. Puedes hacer lo mismo con las ramas o etiquetas.. ?w = 1
a las URL de comparación .dif
a las URL de comparación para obtener el git diff
Información en texto plano. Esto podría ser útil para propósitos de scripting..parche
a las URL de comparación para obtener el git diff
Información formateada para envíos de parches de correo electrónico..#línea
al final de la URL y haga que el color de fondo de toda la línea sea amarillo. Esto es bueno para señalar la línea exacta. También acepta rangos de línea agregando #inicio fin
. Aquí hay ejemplos de enlace de línea y enlace de rango de línea.En esta sección, exploraremos dos métodos de documentación:
Se puede crear un Github Wiki con cada repositorio, y esto puede ser extremadamente útil para colocar tanto el código fuente como la documentación en el mismo repositorio. Para crear el Wiki, simplemente acceda a la pestaña Wiki en el encabezado principal y está configurado para crear páginas con información. El propio Wiki tiene su propia versión, y los datos se pueden clonar en nuestra máquina local para actualizaciones o incluso acceso sin conexión.
Una cosa que me parece muy útil es la integración de Github Wiki en el proyecto de código fuente principal para que no tenga que mantener dos proyectos git separados. Para hacer esto, agrego el Wiki git repo como un submódulo de la rama maestra. Si está utilizando Travis CI o cualquier otro CI, asegúrese de que la herramienta de compilación ignora el submódulo wiki. Para el archivo Travis CI .travis.yml
, agregue lo siguiente:
git: submódulos: falso
Luego agregue un wiki de submódulos de git al repositorio de código principal:
$ git submódulo agregue [email protected]: [username] / [repo-name] .wiki.git Clonación en 'hello-team.wiki' ... remoto: contando objetos: 6, listo. remoto: Compresión de objetos: 100% (3/3), hecho. remoto: Total 6 (delta 0), reutilizado 0 (delta 0) Recibiendo objetos: 100% (6/6), listo. $ git añadir. $ git commit -m "wiki agregado como submódulo" $ git push origin master
Ahora el Wiki aparecerá claramente como un submódulo dentro del proyecto de código fuente principal.
En resumen, Hubot puede agregar muchísima diversión al documentar y notificar las discusiones del equipo sobre compromisos importantes.
Hubot es simplemente un bot de chat que puede recuperar información o proporcionar notificaciones cuando se conecta a confirmaciones, problemas o actividades de Github. En un equipo que busca reducir significativamente las reuniones o incluso eliminarlas por completo, Hubot, con una interfaz de chat entre los miembros del equipo, ayuda a documentar cada discusión. Sin duda, promueve horarios de trabajo flexibles, ya que nadie tiene que estar presente al mismo tiempo para que tengan lugar las discusiones. Advertencia: Hubot es terriblemente adictivo.!
¡Con esto, comencemos con la configuración de Hubot alojado en Heroku y como un bot con la interfaz de chat Campfire! Tanto para Heroku como para Campfire, hay versiones gratuitas para comenzar.
No puedo conseguirlo /
Como no hay nada que obtener por defecto.Ayuda de Hubot
. Te dará todo el comando disponible para hubot.. hubot enviarlo
o mapa de hubot me cern
. github-commits.coffee
dentro de guiones
carpeta.paquete.json
archivo con las dependencias relevantes como se indica en la parte superior de cada archivo de script hubot en los comentarios.git push heroku master
.[HUBOT_URL]: [PORT] / hubot / gh-commit? Room = [ROOM_ID]
Revisa otros scripts de Hubot relacionados con Github, o si quieres escribir uno, ¡también hay un tutorial genial sobre eso! En resumen, Hubot puede agregar muchísima diversión al documentar y notificar las discusiones del equipo sobre compromisos importantes, problemas y actividades que tienen lugar en nuestros repositorios de Github. Darle una oportunidad!
Como nota final sobre el trabajo con el equipo en Github, aquí hay algunos consejos de productividad:
@usuario
y el usuario recibirá una notificación del comentario.[cambio] + ?
para acceder a las teclas de acceso directo de Github en cualquier página.La mayoría de nosotros pensamos en usar Github solo para proyectos de software. Después de todo, Github se inició para la "codificación" social. Pero, hay algunos repositorios geniales de Github que se están utilizando para proyectos no codificados, y fueron igualmente impresionantes para la colaboración y la discusión. D