Agosto de 2016
Volumen 31, número 8
DevOps - Confirmación en GIT: control de código fuente en Visual Studio 2015
Por Jonathan Waldman | Agosto de 2016
Desde las versiones de 2013, Visual Studio y Team Foundation Server cuentan con compatibilidad integrada con GIT, el famoso sistema de administración de código fuente que ha cambiado drásticamente muchas opciones tradicionales. Para complementar esta opción de control de código fuente, Microsoft ha agregado a Visual Studio herramientas de front-end con una gran cantidad de características para GIT. Pero ¿cómo puede acceder a estas herramientas y aprovecharlas?
En este artículo, describiré la diferencia entre GIT y la tecnología de control de código fuente asociada con Team Foundation Server (TFS), formalmente denominada Control de versiones de Team Foundation (TFVC). A continuación, profundizaré en la configuración de GIT: cómo crear un repositorio local, conectarse a él y trabajar con él. Entre otras acciones, describiré cómo realizar copias intermedias y confirmar cambios, cómo administrar ramas (por ejemplo, combinar y ver el historial), y cómo conectarse a distintos tipos de repositorios remotos (por ejemplo, cómo sincronizar cambios).
He creado las ilustraciones de este artículo a partir de Visual Studio 2015 Update 2 Enterprise Edition, pero los elementos que se comentan aquí están disponibles en el resto de versiones de Visual Studio 2015, incluidas las ediciones Community y Express. Para ahorrar espacio, he creado ilustraciones que, en ocasiones, contienen más de una imagen de pantalla, circunstancia que especifico en el texto. También uso marcadores numéricos para dirigir su atención a distintos elementos de las ilustraciones. Después de hacer referencia a una figura, suelo mencionar únicamente sus marcadores. Por ejemplo, en la frase "Consulte el marcador 1 de la Figura 1 y, a continuación, el marcador 2", quiero decir que el marcador 2 está en la Figura 1.
Figura 1 Panel de inicio de la ventana de Team Explorer (sin conexión)
Descripción general
Si lleva más de unos pocos años usando Visual Studio, puede que tenga la impresión de que TFVC es la opción ideal para desarrollar soluciones en un entorno de equipo. A menudo lo es, especialmente si los proyectos ya usan TFVC o si necesitan almacenar archivos de gran tamaño, contener un gran número de archivos (más allá de lo que se podría transmitir a través de una red de forma razonable) o poder desbloquear archivos con control del código fuente. Sin embargo, a medida que aumenta la frecuencia con que los desarrolladores trabajan desde ubicaciones remotas mientras contribuyen en un proyecto de software colaborativo único, nuevos equipos de desarrollo han acudido a GIT porque es un sistema de control de versiones descentralizado con una gran cantidad de ventajas multiplataforma que le permite trabajar sin conexión de forma productiva a la hora de confirmar o deshacer cambios, administrar ramas y acceder al historial. Pero lo mejor de todo es que, si está listo y dispone de conexión, puede conectarse al mismo repositorio remoto que está actualizando el resto del equipo y sincronizar los cambios que aplicó sin conexión a través de varios métodos.
El IDE de Visual Studio 2015 depende de la API de LibGit2 y el nivel de comunicación de LibGit2Sharp para implementar todas las características de GIT que presenta en sus herramientas de front-end. LibGit2 es un motor central de GIT de código abierto sin dependencias y multiplataforma escrito íntegramente en C. LibGit2Sharp es una biblioteca escrita en C# que se ejecuta como proceso administrado en Microsoft .NET Framework. Sirve como interfaz compatible con .NET entre Visual Studio y LibGit2, y simplifica drásticamente el esfuerzo de programación requerido por parte del equipo de desarrollo de Visual Studio para establecer un canal de comunicación desde y hacia la biblioteca de LibGit2. LibGit2Sharp también está a su disposición, lo que significa que puede usar su lenguaje .NET preferido para crear sus propias utilidades y herramientas de GIT. Para acceder a más detalles sobre LibGit2 y LibGit2Sharp, consulte libgit2.github.com.
En Visual Studio, Team Explorer es el conducto de GUI principal a través del cual se interacciona con LibGit2, el motor de GIT subyacente. Para abrirlo, seleccione el elemento de menú Ver | Team Explorer o escriba Ctrl+\ seguido de Ctrl+M. Junto a la parte superior de la ventana de Team Explorer, hay una barra de herramientas que contiene los botones azules de navegación Atrás/Adelante seguidos del blanco Inicio, el verde Conectar y el azul Actualizar. Haga clic en el botón Inicio y aparecerá una ventana similar a la de la Figura 1.
Bajo la barra de herramientas se encuentra la etiqueta "Inicio" (marcador 1). Esta etiqueta tiene una flecha desplegable al lado (marcador 2), que indica que está conectada a un menú desplegable. Haga clic en algún punto de la etiqueta para mostrar el menú (marcador 4). Tanto la barra de herramientas de Team Explorer como su menú contextual le permiten cambiar cómodamente entre los distintos paneles de Team Explorer; es otro tipo de metáfora de cuadro de diálogo por pestañas: el panel que está viendo (en este caso, Inicio) se muestra tanto en la etiqueta de panel (marcador 1) como en el título de la barra de título (marcador 3).
Configuración de GIT
Antes de usar GIT en Visual Studio, debe configurar sus ajustes globales. Para hacerlo, desplácese hasta el panel Inicio de Team Explorer. La sección Proyecto contiene una serie de botones para ver cambios pendientes, administrar ramas y sincronizar con repositorios remotos (Figura 1, marcador 5). Haga clic en Configuración para abrir el panel Configuración y, a continuación, en Configuración global, en la sección GIT. Se abrirá el panel Configuración de GIT (Figura 2, marcador 1). Esta configuración global no está vinculada a ningún repositorio GIT concreto, sino que se proporcionan los valores predeterminados a medida que se crean repositorios nuevos (más tarde, puede reemplazar estos valores predeterminados por repositorio). Especifique su nombre de usuario (debe ser su nombre completo y puede usar espacios), su dirección de correo electrónico y la ubicación del repositorio predeterminada, que es la carpeta predeterminada en la que quiere que almacene Visual Studio los repositorios GIT que cree (marcador 2).
Figura 2 Panel Configuración de GIT de Team Explorer
También puede especificar si quiere asociar las imágenes de autor de Gravatar o TFS con actividades de GIT. Si selecciona Gravatar, tenga en cuenta que la forma de trabajar de esta característica consiste en enviar la dirección de correo electrónico asociada con cada confirmación de GIT a Gravatar como clave de búsqueda. A continuación, Gravatar devuelve una imagen asociada con la dirección de correo electrónico. Así, esta característica aparentemente inofensiva comparte la información de contacto de todos los miembros del equipo con una tercera entidad, algo que es recomendable evitar. Finalmente, seleccione si quiere confirmar los cambios después de una combinación de forma predeterminada (marcador 3). Si realiza algún cambio en estos campos, haga clic en Actualizar para guardarlo (marcador 4).
Desde otra sección del panel, puede definir las herramientas de comparación y combinación que usará. Actualmente, los valores predeterminados son las herramientas propias de Visual Studio. Si quiere personalizar más estas selecciones, puede que necesite editar manualmente el archivo de configuración en el que escribe esta ventana. Ese archivo es .gitconfig y se encuentra en la carpeta de la ruta de acceso inicial.
Trabajar con un repositorio local
Si trabaja en sus propios proyectos como único desarrollador y ha tomado la buena decisión de aplicar el control de código fuente a su código, puede empezar por trabajar sin conexión con un repositorio GIT local y, a continuación, escalar a un repositorio conectado y remoto, si tiene garantías.
Para crear un repositorio vacío, vaya al panel Conectar de Team Explorer (Figura 3, marcador 1) y, en Repositorios GIT locales, haga clic en Nuevo (marcador 2; la opción Nuevo está en gris porque ya hice clic en ella). Escriba una ruta de acceso local y un nombre de repositorio; por ejemplo, la ruta de acceso de origen predeterminada seguida de \MyNewestRepo (marcador 3) y haga clic en Crear (marcador 4). Esto crea una carpeta denominada MyNewestRepo (se trata del directorio de trabajo) que contiene una carpeta .git junto con dos archivos: .gitignore y .gitattributes. Aunque la muestro en la imagen de pantalla, .git es una carpeta oculta: contiene el repositorio GIT real (la base de datos auxiliar y los archivos de mantenimiento de GIT) y, por lo general, no se debe tocar. Pero, dado que contiene todo el repositorio de GIT, es recomendable hacer una copia de seguridad, por lo que es importante que sepa que existe. El archivo .gitattributes especifica cómo debe controlar GIT los fines de línea y qué programas debe iniciar al comparar un archivo del repositorio actual; .gitignore especifica que GIT no debe hacer el seguimiento de los archivos con determinadas extensiones o en ciertas carpetas (de forma predeterminada, especifica las extensiones de archivo .suo, .user, .pdb y .tmp, y todos los archivos de las carpetas de depuración y distribución). Agregue otras extensiones de archivo y carpetas según sea necesario para que el tamaño del repositorio GIT sea lo más pequeño posible.
Figura 3 Panel Conectar de Team Explorer
Tras crear el repositorio nuevo, se mostrará en la sección Repositorios GIT locales. Haga doble clic en cualquier repositorio que aparezca en la lista (Figura 3, marcador 6) para conectarse a este. Al hacerlo, el repositorio se destaca en negrita. A continuación, se le dirige al panel Inicio, que confirma que se conectó correctamente al repositorio seleccionado (Figura 4, marcador 2).
Figura 4 Panel Inicio de Team Explorer conectado a un repositorio
Si hace clic en Configuración ahora, observará que tiene acceso a la configuración específica del repositorio. Para reemplazar los valores heredados de la configuración global de GIT, acceda a esta configuración. Por ejemplo, es bastante común personalizar la dirección de correo electrónico del repositorio actual si trabaja en un proyecto para un cliente concreto y quiere usar una dirección de correo electrónico específica del trabajo. También puede hacer clic en los vínculos proporcionados para editar directamente los archivos .gitignore y .gitattribute, especificar las herramientas de comparación y combinación que quiera usar, agregar elementos remotos y ver otros atributos relacionados con el repositorio actual.
Recuerde que el directorio de trabajo de GIT es la carpeta principal que contiene el directorio .git. Después de crear y configurar el repositorio vacío, la forma de agregar archivos consiste en agregarlos al directorio de trabajo en primer lugar. Git reconocerá los archivos, pero no los incorporará al repositorio GIT hasta que realice su copia intermedia y los confirme. Con estos conocimientos, ya puede usar el directorio de trabajo como quiera e iniciar un flujo de trabajo de confirmación de GIT cuando esté preparado.
Empezar con un repositorio vacío y, después, agregar archivos es una opción, pero también puede empezar con archivos de solución. Para crear una solución junto con un repositorio GIT, seleccione el elemento de menú Archivo | Nuevo proyecto. Verá el cuadro de diálogo Nuevo proyecto, que incluye la casilla "Crear nuevo repositorio GIT". Si se marca, Visual Studio crea una solución y un repositorio GIT nuevos, junto con los dos archivos de configuración .gitattributes y .gitignore, en el nuevo directorio de trabajo del proyecto. Como alternativa, si tiene una solución existente y quiere aplicarle el control de código fuente de GIT, ábrala y seleccione el elemento de menú de Visual Studio Archivo | Agregar al control de código fuente. Ambos procedimientos crean un repositorio GIT nuevo, junto con los archivos de configuración .gitattributes y .gitignore.
Siempre que abra una solución con control de código fuente de GIT, Visual Studio se conectará automáticamente al repositorio de la carpeta de trabajo de la solución. Del mismo modo, siempre que use el panel Conectar de Team Explorer para conectarse a un repositorio existente, Visual Studio examinará dinámicamente todas las carpetas del directorio de trabajo del repositorio para comprobar si contienen archivos .sln y las incluirá en la lista de la sección Soluciones del panel Inicio. Por ejemplo, si se conecta al repositorio MyNewestRepo, es posible que vea una lista de soluciones con un aspecto similar al de la imagen de globo de la Figura 4, marcador 4. Cuando Visual Studio identifique las soluciones asociadas con un repositorio, haga doble clic en una entrada para abrir la solución correspondiente en el IDE.
Aplicar cambios
Si usa Visual Studio para abrir una solución con control de código fuente de GIT, el Explorador de soluciones muestra iconos informativos junto a los elementos en su control de vista de árbol. Los iconos indican el estado de los elementos del directorio de trabajo, en comparación con los elementos del repositorio GIT al que está conectado actualmente. Por ejemplo, en la Figura 5 se observa un icono de bloqueo azul junto a los elementos marcados (marcador 1), una marca de verificación roja junto a los elementos modificados (marcador 2) y un signo más verde junto a los elementos agregados (marcador 3). Si ve un icono que no reconoce, mueva el puntero sobre él para mostrar información sobre herramientas útil. Aunque estos iconos suelen ser precisos, si aplica cambios en elementos fuera del IDE de Visual Studio, puede que sea necesario hacer clic en la barra de herramientas Actualizar del Explorador de soluciones para actualizar la vista.
Figura 5 Explorador de soluciones con iconos que indican estados de control de código fuente
Después de trabajar con los elementos de la solución, probablemente querrá realizar su copia intermedia y confirmar los cambios en el repositorio GIT, o incluso deshacer algunos cambios. Para empezar a administrar los cambios que ha hecho, vaya a Team Explorer | Inicio | Cambios. En el panel Cambios (Figura 6, marcador 1), verá todos los cambios detectados (marcador 2). Haga clic en el icono más (marcador 12) para realizar una copia intermedia de todos los elementos modificados o en el icono menos para deshacer la copia intermedia de todos los elementos (marcador 13). También puede arrastrar y soltar elementos entre las secciones Cambios (marcador 2) y Cambios preparados (marcador 3).
Figura 6 Panel Cambios de Team Explorer
Haga clic con el botón derecho en un elemento cambiado para ver un menú que permite abrir el archivo, ver su historial, compararlo con la versión sin modificar, abrir el archivo de código fuente y mostrar un panel informativo de anotaciones adyacente, realizar una copia intermedia, y deshacer sus cambios (marcador 14). Para comparar un cambio con la versión sin modificar del archivo, haga doble clic en un elemento cambiado para abrir una ventana de comparación (Figura 7). La ventana de comparación tiene dos paneles: el panel izquierdo muestra la versión sin modificar del repositorio GIT local y el derecho muestra la versión del directorio de trabajo. En el extremo derecho se muestran visualmente las diferencias entre los archivos (marcador 1): el rojo indica una eliminación, mientras que el verde indica una adición; los paneles muestran resaltada en rojo toda la línea de código que contiene una eliminación (marcador 2) y resaltada en verde toda la línea de código que contiene una adición (marcador 3). Además, la herramienta de comparación traza un cuadro rojo o verde en la línea alrededor del texto eliminado o agregado, respectivamente. Además, la parte superior de cada panel cuenta con útiles listas desplegables a los lados (marcador 4) que permiten desplazarse rápidamente a secciones de código.
Figura 7 Herramienta de comparación predeterminada de Visual Studio
Cuando esté listo para confirmar los cambios, agregue un mensaje de confirmación (Figura 6, marcador 4) y haga clic en el botón de modo múltiple Confirmar (marcador 5). El valor predeterminado del botón de modo múltiple es Confirmar por etapas, pero también permite insertar y sincronizar (esto solo tiene sentido en el contexto de conexión a un repositorio remoto). Si la operación de confirmación se completa correctamente, Team Explorer notifica el id. de confirmación (marcador 15).
Observe que el panel Cambios le informa de que está trabajando con una rama local denominada unit_test_project (Figura 6, marcador 6). La barra de estado de Visual Studio también indica con qué rama está trabajando (marcador 10) y muestra otra información útil en tiempo real relacionada con el repositorio GIT actual. Por ejemplo, muestra la cantidad de cambios sin publicar, es decir, los cambios que aún no se han insertado en un repositorio local (marcador 7), la cantidad de cambios con copia intermedia (marcador 8), el nombre del repositorio actual (marcador 9) y el nombre de la rama actual (marcador 10). Además, estas secciones de barra de estado actúan como botones. Por ejemplo, si hace clic en el repositorio actual, Visual Studio abre el panel Conectar de Team Explorer con detalles sobre el repositorio actual. Si hace clic en la rama actual, un menú emergente ofrece opciones de bifurcación.
Tal como sucede con cualquier sistema de control de código fuente, al confirmar los cambios en el repositorio, se suman al historial de confirmaciones del repositorio. Estas entradas del historial incluyen el nombre de usuario y la dirección de correo electrónico proporcionada en la Configuración de GIT para que cualquier persona que tenga acceso a los datos del historial pueda ver quién hizo "qué" y "cuándo". Además, al insertar cambios locales en un repositorio remoto, también se inserta el historial. Cuando otros miembros del equipo sincronicen su repositorio local con el elemento remoto, podrán ver el historial que generaron los cambios.
Administración de ramas
Visual Studio admite características de bifurcación de GIT básicas y avanzadas. Para administrar ramas, abra el panel Ramas. Para hacerlo, vaya a Team Explorer | Inicio | Ramas (Figura 8, marcador 1). A lo largo de la parte superior, verá vínculos para combinar, fusionar mediante cambio de base y otras acciones (marcador 2). A continuación, verá una sección denominada Repositorios GIT activos (marcador 3) y una lista de las ramas que contienen. La rama actual está en negrita (marcador 4). Para cambiar a otra rama, haga doble clic en ella. A continuación, Visual Studio extraerá del repositorio la rama seleccionada.
Figura 8 Panel Ramas de Team Explorer
Haga clic con el botón derecho en una rama concreta para ver un menú con las opciones disponibles (marcador 5). Puede extraer del repositorio la rama seleccionada, crear una rama local nueva a partir de una rama local existente, combinar la rama local existente con la rama seleccionada, fusionar mediante cambio de base a partir de la rama local seleccionada con otra rama local existente, realizar un restablecimiento completo o mixto en la rama seleccionada, seleccionar exclusivamente la rama seleccionada o eliminar la rama actual. Si opta por la combinación, Visual Studio es totalmente compatible con la detección de conflictos de combinación y cuenta con un editor de conflictos que puede usar para resolver los conflictos manualmente.
También puede ver el historial de cualquier rama de la lista y, desde la vista de historial, puede hacer clic con el botón derecho en una entrada para ver un menú que permite consultar los detalles de confirmación, crear una rama nueva, crear etiquetas, revertir, restablecer, seleccionar exclusivamente y desplazarse a ramas principales o secundarias. La vista de historial muestra el id. de compromiso, el autor, la fecha y el mensaje de confirmación.
Conexión a un repositorio remoto
Hasta el momento, me he limitado a comentar el trabajo sin conexión con un repositorio de GIT local. Normalmente, solo se necesita un repositorio local para trabajar por cuenta propia si se cuenta con una forma confiable de crear una copia de seguridad de la carpeta .git del directorio de trabajo. Sin embargo, para trabajar con otros desarrolladores en un proyecto en equipo o si se quiere usar un servicio hospedado como copia de seguridad, es necesario conectarse a un repositorio remoto.
Si quiere tener control total sobre su repositorio o no se siente cómodo al poner el código de la próxima aplicación de éxito mundial en un servidor hospedado, considere la posibilidad de hospedar su propio repositorio con un recurso compartido de archivos de su propia red. A continuación, para aumentar la confiabilidad y la velocidad de transferencia de archivos desde el repositorio y hacia este, puede instalar un servidor de GIT basado en Windows, como Bonobo Git Server (bonobogitserver.com), que es gratuito, o GitStack (gitstack.com), que es gratuito hasta dos usuarios. A continuación, puede descargar e instalar Visual Studio Team Foundation Server Express 2015 en un servidor ubicado en su red y admitir hasta cinco usuarios designados gratuitamente. Como alternativa, si usted o alguien de su equipo dispone de una licencia de MSDN activa, puede descargar e instalar la versión completa de Visual Studio Team Foundation Server 2015 en su propio servidor y tenerla allí para siempre, además de admitir hasta cinco usuarios designados gratuitamente. Finalmente, puede comprar e instalar Visual Studio Team Foundation Server 2015 junto con las licencias de acceso cliente (CAL) que necesite para el equipo.
Si quiere y puede usar un servicio de hospedaje GIT fuera de las instalaciones, sus opciones se amplían para incluir Visual Studio Team Services (antes, Visual Studio Online), además de otras opciones tan populares como GitHub, BitBucket y GitLab. Las opciones de hospedaje gratuito siempre tienen algunas restricciones. El sitio web de wiki de GIT (bit.ly/1Oym3F9) se actualiza para estar al día de las muchas características y opciones de hospedaje de GIT.
Para mostrar cómo conectarse a los elementos remotos y clonar los repositorios que hospedan, en primer lugar debe clonar un repositorio hospedado en su red. A continuación, se conectará a un repositorio sencillo de Visual Studio Team Services hospedado en la Web y lo clonará. Finalmente, mostraré cómo conectarse a un repositorio hospedado en GitHub y clonarlo para un proyecto famoso.
Para administrar elementos remotos, vaya a Team Explorer | Inicio | Conectar (Figura 9, marcador 1). El panel Conectar muestra el menú de vínculos azul Administrar conexiones bajo el menú del panel (marcador 2), seguido de una sección que contiene una lista vertical de proveedores de servicio hospedado (las ventanas individuales de Visual Studio Team Services y GitHub se denominan invitaciones de servicio).
Figura 9 Opciones de proveedor de servicio del panel Conectar de Team Explorer
Si cierra una invitación de servicio desde su X, como se muestra en el marcador 3, no podrá recuperarla a menos que modifique el Registro. En tal caso, puede acceder al servicio desde el menú desplegable Administrar conexiones (marcador 4). También se almacenan en el Registro otros datos del panel Conectar de Team Explorer, como la información del repositorio GIT usado recientemente. Si quiere inspeccionar la clave del Registro, se encuentra en HKCU\Software\Microsoft\VisualStudio\14.0\TeamFoundation (observe las ramas GitSourceControl y TeamExplorer inferiores).
Recuerde que uno de los motivos por los que puede trabajar sin conexión de un modo tan productivo con un repositorio GIT es que, al clonar un repositorio remoto en un repositorio local, se obtiene todo el historial del repositorio, incluidos los detalles de cada confirmación, rama y operación de combinación. Al volver a conectarse, GIT determina cómo ha cambiado el repositorio local en comparación con el repositorio remoto, lo que es importante para poder realizar correctamente las operaciones de recuperación e incorporación de cambios, inserción y sincronización.
Para clonar un repositorio de un recurso compartido de red local, vaya a la sección Repositorios GIT locales y haga clic en el vínculo Clonar. Se le pedirá que especifique la URL del repositorio de GIT que quiera clonar, pero, en realidad, el proceso es más flexible. También puede especificar una ruta de acceso válida a una ubicación de la estación de trabajo actual (por ejemplo, c:\Repos\FinancialWizardApp), una ruta de acceso UNC a un recurso compartido de red (\\1.2.3.4\Repos\FinancialWizardApp) o una ruta de acceso de unidad asignada (\\computername\Repos\FinancialWizardApp). Asegúrese de que haya una carpeta .git en la ubicación especificada y de que Visual Studio la pueda leer.
En la Figura 10 (marcador 1), he especificado una letra de unidad asignada para hacer referencia a la ubicación de mi red que contiene mi repositorio remoto y otros desarrolladores que trabajan en mi red pueden hacer lo mismo. Después de proporcionar la ubicación del repositorio remoto, especifique la ruta de acceso local para el repositorio clonado (marcador 2). A continuación, decida si desea clonar submódulos recursivamente y haga clic en Clonar.
Figura 10 Trabajar con varias ubicaciones de repositorios remotos
Es importante tener en cuenta que, al conectarse a un repositorio remoto de un servidor de archivos, no podrá emitir solicitudes de incorporación de cambios. Esta característica requiere un servidor de GIT (por ejemplo, Team Foundation Server o GitHub). Sin embargo, puede crear, combinar y administrar ramas, así como ver el historial y sincronizar cambios (mediante la recuperación e incorporación de cambios, y la inserción).
Para clonar un repositorio de Visual Studio Team Services, antes debe registrarse en un servidor de Team Foundation Server. Para empezar, seleccione el elemento de menú de Visual Studio Equipo | Administrar o vaya al panel Conectar de Team Explorer, haga clic en Administrar conexiones y, a continuación, elija Conectar al proyecto de equipo. Se abrirá un cuadro de diálogo de conexión a Team Foundation Server. Haga clic en Servidores y verá un cuadro de diálogo como el de la Figura 10, marcador 4. Observe que puede usar este cuadro de diálogo para conectarse a cualquier servidor de Team Foundation Server disponible, pero, si quiere conectarse a una cuenta de Visual Studio Team Services, debe escribir la URL correspondiente. Después de hacer clic en Aceptar, tendrá que iniciar sesión. A continuación, el servidor se incluirá en la lista y podrá cerrar el cuadro de diálogo. Después verá un cuadro de diálogo con dos paneles: el panel izquierdo mostrará las colecciones de proyectos de equipo y el panel derecho mostrará los proyectos de equipo de esa colección. Active la casilla situada junto a los proyectos de equipo que quiera que aparezcan en Visual Studio y haga clic en Conectar. Ahora, vaya al panel Conectar de Team Explorer para ver sus repositorios en la lista (Figura 10, marcador 3).
GitHub ofrece GIT solo como sistema de control de versiones (VCS), mientras que Visual Studio Team Services ofrece GIT descentralizado de forma predeterminada y TFVC centralizado como alternativa. Estos dos VCS funcionan de un modo bastante diferente y requieren distintas herramientas de IDE. Por suerte, la ventana de Team Explorer se diseñó específicamente para reconocer y controlar ambos tipos de VCS. De hecho, al conectar con el servidor de Visual Studio Team Services y agregar proyectos, Team Explorer marca los proyectos con control de versiones de GIT con un icono rojo de GIT (Figura 10, marcador 3). Los proyectos sin icono de GIT tienen el control de versiones de TFS.
Así pues, para clonar un repositorio remoto de Visual Studio Team Services, debe tratarse de un repositorio GIT. Puede hacer clic con el botón derecho en cualquier repositorio GIT de la lista y seleccionar Clonar. Yo decidí clonar el proyecto de GitProject, lo que me llevó a la sección Repositorios GIT locales con la información del repositorio remoto completada, además de una ruta de acceso al repositorio local predeterminado (Figura 10, marcador 5). Una vez clonado, el repositorio aparece en la lista Repositorios GIT locales. Haga doble clic para abrirlo y se le conducirá al panel Inicio de Team Explorer. Allí verá botones diseñados para funcionar con repositorios de Visual Studio Team Services, como Solicitudes de incorporación de cambios, Elementos de trabajo y Compilaciones.
El proceso de clonar un repositorio remoto es muy similar si hace la clonación desde GitHub. Si tiene un repositorio privado hospedado en GitHub, inicie sesión en la cuenta de GitHub para clonarlo. También puede clonar repositorios públicos directamente sin usar ninguna cuenta.
En general, puede clonar un repositorio remoto siempre que se encuentre en un recurso compartido de red o esté disponible en un servidor HTTP/HTTPS. En este momento, Visual Studio no admite SSH para comunicarse con repositorios GIT remotos.
Trabajar con repositorios remotos
Una vez conectado a un repositorio remoto, puede volver a Team Explorer | Inicio | Configuración y hacer clic en el vínculo Configuración de repositorios. Desde aquí, puede ver información sobre los elementos remotos a los que está conectado el repositorio actual (esto resulta especialmente útil si trabaja con más de un elemento remoto). Al volver al panel Configuración, también verá vínculos nuevos, si está conectado a un servicio como Team Foundation Server o GitHub. Estos vínculos permiten configurar la seguridad, la pertenencia a grupos, los parámetros del portal y otros elementos para el servicio.
En Team Explorer | panel Inicio, verá botones nuevos relacionados con las opciones que ofrece el servicio remoto. Si está conectado a un repositorio remoto que hospeda Visual Studio Team Services, verá botones para Solicitudes de incorporación de cambios, Elementos de trabajo y Compilaciones. Al hacer clic en Sincronizar, accederá al panel Sincronización de Team Explorer, desde donde podrá sincronizar, recuperar e incorporar cambios, publicar e insertar. Si hay conflictos de combinación que no se pueden resolver automáticamente, Visual Studio presentará la herramienta de combinación seleccionada para que pueda seleccionar manualmente cómo resolver los conflictos.
Por último, clonaré el proyecto TypeScript 3 de código abierto de Microsoft, disponible en bit.ly/1o2weYt. Dado que se trata de un repositorio GIT público, puedo clonarlo directamente desde el vínculo Clonar de la sección Repositorios GIT locales (Figura 10, marcador 6). En la fecha de este documento, el tamaño de este documento es de unos 350 MB, así que contiene un gran historial y muchas ramas y puede tardar en descargarse.
Una vez descargado por completo el repositorio local, aparecerá en la lista de la sección Repositorios GIT locales. Haga doble clic en él para abrirlo en el panel Inicio de Team Explorer (Figura 10, marcador 7). La sección Proyecto contiene botones diseñados para funcionar con repositorios de GitHub, como Solicitudes de incorporación de cambios, Sincronizar, Pulsos y Gráficos. Algunos de estos botones conducen al sitio web de GitHub, desde donde puede completar la acción solicitada.
Al hacer clic en Ramas, se le conducirá al panel Ramas de Team Explorer. Desde allí, podrá observar la rama maestra. Haga clic con el botón derecho sobre ella para ver el historial de todo el proyecto, desde la confirmación inicial del 7 de julio de 2014 hasta la fecha actual. La ventana Ver historial permite ver sus datos a través de distintas presentaciones, en función de las opciones que elija en la barra de herramientas de la ventana (Figura 11, marcador 1). La vista que he decidido mostrar se conoce como Vista detallada. Muestra un gráfico de ramas (marcador 2) con las confirmaciones de combinación en gris (marcador 3) y las confirmaciones de no combinación en azul (marcador 4), incluido el id. de confirmación, el id. de usuario del autor, la fecha de confirmación, el mensaje de confirmación y cualquier etiqueta presente.
Figura 11 La vista del historial proporciona detalles sobre las ramas, las confirmaciones y las combinaciones
Es fácil navegar hacia un elemento principal o secundario de la rama desde esta pantalla. Para hacerlo, seleccione una confirmación y use los botones de navegación Ir a elemento secundario/Ir a primario (el tercer y cuarto botón de los que se muestran). En esos casos en que la rama acaba con una punta de flecha (marcador 5), haga clic en la confirmación (vea la fila resaltada) y se dibujará la línea que conecta el elemento principal con el secundario (marcador 6).
Resumen
Visual Studio 2015 ofrece un cómodo acceso de GUI a muchas características avanzadas y comunes de GIT y puede hacerlo gracias al motor de GIT LibGit2 subyacente. Aunque es casi completamente compatible con GIT, aún hay algunas operaciones menos populares, como el almacenamiento provisional, que requieren interacción con una interfaz de línea de comandos de GIT. Debido al gran número de herramientas de GIT de Visual Studio, es posible estar protegido de la interfaz de línea de comandos de GIT y realizar la mayoría de tareas de GIT sin mayor problema. Sin duda, tanto los usuarios básicos como los usuarios avanzados de GIT tendrán curiosidad, en algún momento, por acceder a GIT sin sistema operativo. Para hacerlo, dichos usuarios pueden iniciar una ventana interactiva de PowerShell e interactuar con la interfaz oficial de GIT para la línea de comandos de Windows, que también se incluye con Visual Studio. Con las opciones de GUI y de línea de comandos, Visual Studio proporciona un acceso satisfactorio y preparado a GIT para cualquier nivel de aptitud.
Jonathan Waldman es un Microsoft Certified Professional especializado en ergonomía de software y tecnologías de Microsoft. Ha trabajado con la pila tecnológica de Microsoft desde sus comienzos y ha desempeñado roles directivos en varios proyectos institucionales, gubernamentales y privados de gran visibilidad. Waldman es miembro del equipo técnico de Pluralsight y creó su curso de aprendizaje de vídeo en la biblioteca comercial de Wijmo de widgets de IU de JQuery mejorados. Puede ponerse en contacto con él a través de la dirección jonathan.waldman@live.com.
Gracias a los siguientes expertos técnicos por revisar este artículo: Jeremy Epling (Microsoft) y Edward Thomson (GitHub)
Jeremy Epling es el director de programas de Microsoft y trabaja en el equipo de Visual Studio Team Services y Team Foundation Server.
Edward Thomson es ingeniero de software de GitHub y el autor del curso GIT for Visual Studio de O'Reilly Media (www.gitforvisualstudio.com).