Novedades de Git Support en Xcode 9

Lo que vas a crear

La última versión IDE de Apple, Xcode 9, se lanzará junto con iOS 11 en septiembre. ¡Y es una gran actualización! Los fans de Git para la gestión de control de fuente (SCM) son grandes ganadores en este próximo lanzamiento.

Las versiones anteriores de Xcode tenían soporte para SCM, pero nunca fue considerado un ciudadano de primera clase. El soporte para Git de Xcode era defectuoso y sin brillo, palidece en comparación con las herramientas especializadas como SourceTree, lo que significaba que los desarrolladores tenían que saltar entre las herramientas para poder realizar tareas avanzadas de administración de repositorio de Git. 

Todo esto ha cambiado en Xcode 9. Apple ya no ve a SCM como secundario, sino que ha optado por una estrecha integración con GitHub, y ha colaborado estrechamente con GitHub para Xcode 9. 

El resultado neto es que ahora puede iniciar sesión en su cuenta de GitHub directamente desde Xcode, para navegar, navegar y clonar sus repositorios de GitHub. También puede buscar otros repositorios sin tener que cambiar a una ventana del navegador. A la inversa, si tiene un repositorio de GitHub abierto en su navegador, puede hacer clic en el botón de clonar y hacer que Xcode clone automáticamente y abra el proyecto.. 

Como dice Apple, "El soporte para Git ahora está al frente y en el centro", y Apple ha introducido un nuevo navegador de control de fuente, por lo que no tiene que abrir una nueva ventana que esté visualmente separada del resto de Xcode. Ahora los desarrolladores pueden ver ramas, etiquetas y controles remotos a través de una línea de tiempo clara e intuitiva, pueden inspeccionar los compromisos de forma más detallada y pueden ver una comparación de cambios más elegante y atractiva. 

Objetivos de este tutorial

En este tutorial, lo guiaré a través de la lista de nuevas características de SCM que se introdujeron con Xcode 9. Veremos tres áreas principales:

  • cometer
  • ramas
  • etiquetas

Conocimiento asumido

Para seguir este tutorial, debe tener alguna experiencia previa con Xcode y algunos conocimientos prácticos de gestión de control de fuente a través de Git. 

Empezar con Xcode 9 SCM

Configuración de su entorno

Para utilizar las nuevas funciones de SCM de Xcode, deberá: 

  • Descargar Xcode 9.
  • Tener una cuenta de GitHub gratis o pagada.

Una vez que haya descargado e instalado la última versión de Xcode, y tenga una cuenta actual de GitHub, estará listo para conectar su cuenta de GitHub a Xcode 9. Inicie Xcode y vaya a Preferencias > Cuentas. Luego, seleccione la + botón en la parte inferior izquierda para agregar una nueva cuenta. 

Seleccionar GitHub desde la ventana modal, e ingrese sus credenciales de GitHub. Si está utilizando la autenticación de dos factores, Xcode le pedirá que ingrese su código. 

Navegación y búsqueda en los repositorios de GitHub

Veamos cómo puede navegar sin problemas en los repositorios públicos de GitHub existentes, directamente desde Xcode. Abra la pantalla de bienvenida de Xcode si aún no se muestra yendo a Ventana > Bienvenido a Xcode

Entonces seleccione Clonar un proyecto existente, que mostrará la lista de repositorios en GitHub que actualmente posee, trabaja o ha destacado. 

Además de la lista que ha presentado, también puede buscar un repositorio público (o un repositorio privado al que tenga acceso) por nombre o ingresando su URL de GitHub. Para nuestro tutorial, escriba RealmDo y haga clic Clon, y luego seleccione un directorio local para clonar el proyecto en. 

Luego le pedirá un directorio para revisar el proyecto en:

En lugar de extraer el repositorio del proyecto de Xcode, otra característica realmente ingeniosa es que puedes abrir un repositorio de GitHub en tu navegador y seleccionar Clonar o descargar y verás un nuevo botón etiquetado Abrir en Xcode

Así es: si hace clic en él, se abrirá automáticamente el proyecto en Xcode, para ser clonado y descargado. 

Volver a nuestro proyecto. Ya que estamos usando CocoaPods para administrar las dependencias, tendremos que saltar al terminal de comando y ejecutar instalación de la vaina:

19:06 $ pod install Analizando dependencias Descargando dependencias Usando Realm (2.7.0) Usando RealmSwift (2.7.0) Generando proyectos Pods Integrando proyecto cliente Enviando estadísticas ¡Se completó la instalación del Pod! Hay 1 dependencia del Podfile y 2 pods totales instalados.

Nuestro proyecto ahora debería estar configurado localmente, y su .xcworkspace Debería estar abierto en Xcode con todos los archivos en su proyecto.. 

Preferencias Xcode SCM

Navegando a las preferencias de Xcode y luego seleccionando Fuente de control, puede cambiar varios aspectos de su comportamiento directamente desde el panel de preferencias, incluido el nombre del autor y el correo electrónico de Git, e incluso actualizar su .gitignore configuración también. 

Asociar un nuevo proyecto con GitHub

Por otro lado, si ha creado un nuevo proyecto de Xcode y aún no ha creado el proyecto en GitHub, puede crear un nuevo proyecto de GitHub directamente desde Xcode. Clic derecho en Mandos a distancia y luego seleccione Crea el control remoto "RealmDo" en GitHub

Xcode le pedirá que asigne un nombre al repositorio y seleccione una cuenta para asociarlo.

Explorando la nueva interfaz SCM

Vamos a explorar cada una de las secciones de la nueva interfaz.. 


  1. El panel de la izquierda tiene su lista familiar de iconos para acceder a las propiedades del proyecto. La segunda pestaña es nueva: es el Source Control Navigator..
  2. los Cometer historia El panel es la parte más prominente del navegador, que muestra una lista histórica de confirmaciones para el proyecto y la rama..
  3. El panel de la derecha presenta información contextual adicional sobre la rama y las confirmaciones seleccionadas..
  4. Junto con la rama contextual y la información de confirmación, esta subsección en el lado derecho le muestra qué archivos han sido parte de la confirmación seleccionada..
  5. El panel de la izquierda le ofrece una vista jerárquica de su proyecto desde una perspectiva de SCM, que le muestra la rama actual, cualquier otra rama, ya sea local o remota, y las etiquetas. También indica si hay nuevos compromisos para empujar o tirar, como veremos más adelante..

El navegador de control de fuente

Una de las primeras cosas que exploraremos en Xcode 9 es el Source Control Navigator, completamente nuevo en Xcode 9. Ya no es la vista de origen un ciudadano de segunda clase: ahora está totalmente integrado en Xcode. Seleccione el segundo icono en el panel izquierdo como se indica en (1) en la captura de pantalla de arriba para abrir el navegador de control de fuente. 

Cometer historia

Echemos un vistazo a la perspectiva de Historial de compromisos, que muestra la lista de compromisos para el proyecto, incluidos el nombre del autor, la fecha y la descripción, así como el avatar del autor de GitHub, que constituye el historial del proyecto.. 

Esta es una perspectiva muy clara y muy bien organizada. Si bien este proyecto de ejemplo es bastante escaso en cuanto a la historia (aunque lo cambiaremos en breve), este panel es aparentemente poderoso. 

Además de poder desplazarse fácilmente y obtener información histórica útil, también puede filtrar y buscar intuitivamente por revisión, mensaje o autor. De hecho, puede encadenar o unir múltiples filtros, para buscar no solo por el autor sino también por revisión. También puede buscar utilizando la barra de alcance, por períodos de fecha específicos, como el Últimas 24 horasLos últimos 7 días, o Últimos 30 días.

La selección de un compromiso específico trae información adicional en el panel de la derecha. Junto con la información de la sucursal, obtiene información de confirmación, el SHA completo, el autor, el mensaje y la fecha. También puede ver la lista de archivos creados durante esa confirmación, que es extremadamente útil para ayudarlo a identificar la confirmación que causó un problema durante la depuración.. 

Al hacer doble clic en una confirmación, aparece una lista de los archivos que se han modificado en esa confirmación en el panel de la izquierda, y se mostrará una comparación de versiones en la parte frontal y central. Esta es la perspectiva de diferencias familiar, pero mucho mejor esta vez.. 

Al seleccionar el Editor asistente en la parte superior derecha, puede acceder a una vista de diferencias realmente grande, lo que le permite no solo ver una diferencia del archivo, sino también desplazarse a través de confirmaciones previas fácilmente, y ver la información de confirmación así como la información real. cambios de archivo. 

Al hacer clic con el botón derecho en una confirmación, también puede ver un menú que le permite comunicarse con el autor, copiar la información de confirmación, derivar de esa confirmación o incluso abrir la confirmación en GitHub en el navegador. 

También puede crear una etiqueta, que es lo que vamos a hacer. Selecciona el Etiqueta botón en la primera confirmación, y el nombre lanzamiento / 0.1

Nombrar sus etiquetas en este formato, configurando un grupo principal (lanzamiento, beta, etc.) tiene un propósito interesante, que descubriremos en breve. Por ahora, ya que hemos etiquetado un compromiso, continuaremos con nuestro próximo tema: ramificación. 

Derivación

Actualmente estamos desarrollando en la rama maestra, pero durante el flujo de trabajo de desarrollo normal, normalmente trabajaríamos en una rama separada. Haríamos una rama para desarrollar y probar una característica, y luego la fusionaríamos de nuevo con la rama maestra cuando está funcionando correctamente. Vamos a crear una nueva rama haciendo clic derecho dominar y seleccionando Rama del maestro. Llama a la nueva sucursal. readme_changes

Quiero demostrar cómo funciona la fusión, por lo que en la nueva rama, comprometamos nuestros cambios seleccionando Fuente de control > Cometer. Esto nos devuelve a la vista de comparación, brindándonos la oportunidad de confirmar todos los cambios que hemos realizado en este compromiso, con la capacidad de comparar nuestros cambios línea por línea..

Cuando haya revisado los cambios, ingrese un mensaje de confirmación similar al siguiente. Y asegúrese de revisar el Empujar a control remoto caja.

Cuando nuestra rama de características esté completa, queremos fusionarla de nuevo con la rama maestra. Haga clic derecho en la rama maestra y seleccione la segunda opción de combinación: Combinar desde "readme_changes" en "master"

Luego, Xcode se fusionará y automáticamente volverá a la rama maestra. Al volver a la rama maestra, notará una pequeña flecha hacia arriba con el número 1 a la derecha de la rama actual. 

Esto nos permite saber que tenemos un compromiso que debe enviarse al repositorio remoto. Si el recuento fuera 2, Estaríamos dos compromisos delante del maestro remoto.. 

A la inversa, si hay nuevas actualizaciones en el maestro que aún no ha extraído, Xcode le avisará. Xcode se recuperará del control remoto, le notificará con una flecha hacia abajo y le dirá que está detrás del maestro remoto.. 

Etiquetado

Anteriormente, creamos una etiqueta en una de las confirmaciones anteriores. Al observar el panel primario, puede ver otro compromiso que se ha etiquetado. El panel de la izquierda facilita ver una lista concisa de todas las etiquetas, debajo de las ramas. 

Recuerda la convención de nombres que usamos para nuestra etiqueta., lanzamiento / 0.1. Lo hicimos por una razón. La creación de etiquetas con un padre jerárquico permite que Xcode agrupe las etiquetas. 

En nuestro caso, tenemos dos etiquetas que pertenecen a la lanzamiento etiqueta de los padres. Podemos crear múltiples grupos lógicos para nuestras etiquetas por diferentes motivos, y Xcode facilita la organización de nuestras etiquetas. 

Al seleccionar una etiqueta específica, nuestro historial de confirmación solo mostrará confirmaciones relacionadas con esa etiqueta, lo que significa que tenemos un manifiesto de codificación completo de todos los cambios introducidos durante una versión. Esto nos ayudará a reducir cualquier código problemático específico de esa versión..

Conclusión

Xcode 9 es un gran lanzamiento, y una de las características más importantes es que Apple finalmente ha integrado a SCM como ciudadano de primera clase del IDE. Esto resuelve una larga queja que muchos desarrolladores han expresado acerca de cómo Xcode gestionó el desarrollo colaborativo y el control de versiones.. 

En Xcode 9, no solo GitHub se integra perfectamente en la plataforma, sino que los desarrolladores ahora reciben una hermosa interfaz de administración de código en una nueva pestaña SCM. Los desarrolladores obtienen una vista definitiva del historial de códigos, confirmaciones, fusiones, etiquetado y ramificación, así como perspectivas avanzadas para la depuración e identificación de confirmaciones que han introducido errores. Los amantes de Git y los aficionados a SCM apreciarán la iniciativa de Apple para consolidar una herramienta de administración de Git verdaderamente poderosa, todo dentro del IDE.

Mientras esté aquí, consulte algunas de nuestras otras publicaciones sobre desarrollo de aplicaciones Xcode, Swift y iOS!