Publicidad
Publicidad

RSS Git

¿Sabías que todo el código de Facebook está alojado en un único repositorio? Según han publicado hace unos días en su blog para desarrollo, esto les llevó a solucionar un grave problema para escalar tan inmenso número de líneas de código (más de 14 millones en 44.000 ficheros) y que no se convirtiera en un grave cuello de botella para el trabajo de sus ingenieros. Una deuda técnica para que sus desarrolladores pudieran dedicar más tiempo a hacer cosas en lugar de esperar a sus herramientas que les ha llevado a mejorar Mercurial para hacerlo más rápido, superando a Git. Mercurial más extensible que Git para los propósitos de Facebook Ni Git ni Mercurial están preparado para manejar un repositorio tan grande como el de Facebook. Todo el código y su historial alcanza un tamaño prohibitivo cuando se almacena en un sistema de control de versiones distribuido cuyo propósito es guardarlo completo en cada repo, en lugar de la última versión o una parte de ramas de un sistema centralizado. El equipo de Facebook encargado investigó en modificar Git para que pudiera adaptarse a sus necesidades, pero sus conclusiones fueron que Mercurial era más apropiado. El API de mercurial permite operaciones a un nivel más bajo en el código base. Buena parte del código ha sido agregado al proyecto de Mercurial, incluyendo un nuevo algoritmo de grafos y parte de código reescrito en C. Gestor de cambios en ficheros con Watchman Uno de los cambios importantes que han llevado a Facebook a usar Mercurial ha sido poder modificar el gestor para comprobar los cambios de los ficheros construyendo su propio monitor para ver que ficheros han cambiado (HgWatchman). Lo cual hace que las operaciones que usan Status como diff, update y commit sean hasta cinco veces más rápidas que en Git. Un hg status de unos 200.000 ficheros pasa de 3 segundos a 0.6 segundos. Trabajar con largos historiales de cambios con remotefilelog Otro de los cambios fundamentales ha sido ajustar la carga de trabajo con un largo historial de cambios en los ficheros, intentando mejorar de esa forma operaciones pesadas como clone y pull. Tal como trabajan sistemas distribuidos como Mercurial y Git en cada pull se traen información en de todos los commits desde la última vez, así como los ficheros, lo cual hace pesado el trabajo cuando cada día se modifican miles de ficheros y se agregan cientos de commits. La extensión desarrollada por Facebook, remotefilelog, cachea las revisiones de ficheros necesarias para nuestros commits locales para poder hacer de forma más eficiente checkout, rebase o commit a cualquiera de nuestros marcadores sin necesidad de conectarse al servidor. Esto combinado con memcache permite que las conexiones los servidores de Mercurial se puedan hacer a una baja latencia y a una alta fiabilidad. Finalmente, los resultados se ven reflejados en un mejora sustancial de los clone y pull usando datos en local grandes rebases de código hasta al doble de velocidad. Definitivamente, la filosofía de Facebook entorno a sus herramientas y su forma de crear software es admirable por la comunidad Open Source. Conscientes que la mayor parte de sus herramientas provienen del software libre no cesan en mejorar por medio de nuevas librerías, parches y nuevos herramientas, no sólo para sus ingenieros sino para el resto de desarrolladores. Facebook apoya Mercurial, lo que da un gran empujo a servicios como Bitbucket(el eterno competidor de Github) que usan Mercurial ademas de Git, si no echad un vistazo al Bitbucket de Facebook. Vía | Facebook Engineering Blog Más información | hgwatchman, remotefilelog

Cómo manejar Git como un experto desde Android Studio

5 Comentarios
Cómo manejar Git como un experto desde Android Studio

Hoy en día no nos imaginamos el desarrollo de un proyecto de software que no incluya un control de versiones, entre las diferentes opciónes para un VCS, Git, sin duda, se ha posicionado favorablemente por delante de otros grandes como Subversion y Mercurial.

La curva de aprendizaje que este tipo de herramientas suele implicar suele ser bastante alta, ya que la gran variedad de características y opciones que incluyen lo convierten en recursos complejos a la vez de muy potentes.

Leer más »

LearnGitBranching, potente herramienta online para aprender todo sobre Git

33 Comentarios
LearnGitBranching, potente herramienta online para aprender todo sobre Git

Que Git se ha convertido en el repositorio de código más utilizado en el mundo es una realidad incontestable. Y más aún cuando los principales constructores de IDE lo han incluido por defecto en sus plataformas.

También es cierto que su funcionamiento y el uso de la consola para lanzar órdenes al sistema son una pequeña barrera de entrada para los que, como yo, estamos habituados a realizar todas las operaciones con ratón.

Sin embargo quiero compartir una excelente página, LearnGitBranching, en donde he aprendido el rudimentario “git commit”, jugar con ramas, el uso de rebase y de “cherry-pick”, entre otras cosas.

Leer más »
Publicidad

Descubierta vulnerabilidad en los clientes de Git, urge actualizar

4 Comentarios
Descubierta vulnerabilidad en los clientes de Git, urge actualizar

Con el tema Sonyleaks tan candente, cualquier tema referente a bugs o vulnerabilidades adquiere mayor relevancia (aunque no tengan nada que ver). Pues bien, hace tan sólo unas horas la gente de Git anunció que ha descubierto una vulnerabilidad crítica de lado del cliente de Git que afecta a todas las versiones del cliente oficial de Git y software relacionado como pueda ser Github for Windows o Github for Mac. Si no quieres que Kim Jong-un puede hackearte, actualiza tu cliente de Git y guardate mucho de clonar o acceder a repositorios Git sospechosos o que no garanticen la seguridad (es decir no hay problemas con Github y similares).

Leer más »

Empieza tu proyecto Open Source en las plataformas más conocidas. Bitbucket

7 Comentarios
Empieza tu proyecto Open Source en las plataformas más conocidas. Bitbucket

Voy a finalizar la mini serie de tutoriales “paso a paso” en donde mostrar las plataformas más utilizadas para compartir proyectos Open Source en las diferentes comunidades y lenguajes.

Ahora voy a centrarme en la plataforma de la empresa Atlassian, que es profusamente utilizada en el mundo de desarrollo, y que es parte de su ecosistema de herramientas lideradas por Jira: Bitbucket.

Leer más »

Diez tecnologías que los javeros amamos (o al menos hablamos bien de ellas)

6 Comentarios
Diez tecnologías que los javeros amamos (o al menos hablamos bien de ellas)

Siempre que lees un informe que “intenta” predecir tendencias de futuro o que analiza estadísticas/encuestas hay que cogerlo con pinzas. Hace unos días cayó en mis manos el informe Geek Choice Award 2014 realizado por RebelLabs. El objetivo era seleccionar ese puñado de tecnologías que han marcado y siguen marcando la forma de desarrollar para un programador, en este caso Javero, aunque veréis que hay tecnologías para los que no lo sean.

¿Cuáles son ese puñado de tecnologías que “amas”? Entendamos amar como que al menos no te sacan de quicio todos los días y han influido en la forma de desarrollar software. El estudio basa su leitmotiv en tres puntos valiosos: cuota de mercado, feedback positivo en diversas encuestas, el ruido mediático que hacen (noticias, tweets, presencia en conferencias) y, por supuesto, las experiencias de los desarrolladores con esas tecnologías.

Obviamente, todas tienen que aportar un valor: resolver problemas, hacer más eficiente la tarea de desarrollar y reimaginar algo ya preestablecido para hacerlo mejor. Sin duda, son buenas caracteristicas.

De entre todas, 10 son las elegidas. La podemos llamar “modern technologies” que siempre suena mejor, aunque son tecnologías muy presentes y algunas de ellas ya llevan una década aportando valor.

Leer más »

Velocidad de programación, tutoriales y podcasts, Pull Request #7

3 Comentarios
Velocidad de programación, tutoriales y podcasts, Pull Request #7

Cerramos la semana repasando algunas de las lecturas recopiladas por los editores de Genbeta Dev. Las agrupamos en este nuevo Pull Request Semanal con un cóctel de artículos técnicos para desarrolladores.

Leer más »
Publicidad

Descubrir qué es un DevOps, Call for paper de la Droidcon y usabilidad de APIs: Pull Request #2

Comentar
Descubrir qué es un DevOps, Call for paper de la Droidcon y usabilidad de APIs: Pull Request #2

Agrupamos en este particular pull request los enlaces capturados por los editores de Genbeta Dev durante la semana. Una dosis de nuestras lecturas que agrupa algunos de los principales temas que nos interesan.

Leer más »

Visual Studio ALM Rangers: gestión del ciclo de vida en TFS y Git

2 Comentarios
Visual Studio ALM Rangers: gestión del ciclo de vida en TFS y Git

Los Visual Studio ALM Rangers son destacados miembros de la comunidad técnica de Microsoft que utilizan su tiempo libre para, en conjunto con los MVP y especialistas de todo el mundo, dedicarse a construir una guía extensa y profunda de los conceptos y estrategias a implementar con las características ALM de Visual Studio.

Desde 2006 están publicando de forma periódica estos documentos, que en gran parte pueden ser aplicados en cualquier sistema de Gestión de Ciclo de Vida, y acaban de anunciar la última revisión para su descarga: Guía de control de versiones.

Leer más »

Escribiendo mensajes de commit en Git

2 Comentarios
Escribiendo mensajes de commit en Git

Los mensajes de commit en Git son fundamentales para indicar el estado en el que se encuentra el proyecto y lo que se van a encontrar nuestros compañeros al hacer checkout de ese commit o branch.

Aunque muchos proyectos de software libres siguen reglas de estilo y concisión para esos mensajes de commit, al día a día para nuestros proyectos en el trabajo o personales no seguimos ninguna regla en concreto.

Si nos paramos a revisar uno a uno nuestros mensajes de commit, quizás nos encontremos con descripciones vagas, inexactas, mucho “valdanismo” hablando de clases y métodos que se han refactorizado o simplemente un triste “bug fixed”.

Leer más »

Atlassian presenta Git Essentials para unir en un único flujo de trabajo todas sus herramientas

Comentar
Atlassian presenta Git Essentials para unir en un único flujo de trabajo todas sus herramientas

Atlassian lleva bastante tiempo creando herramientas para la gestión de proyectos software, entre las más conocidas se encuentra JIRA y Confluence. Su foco en metodologías ágiles les ha conducido a centrarse en Git como base para articular un ecosistema completo como otra serie de herramientas como Stash, gestor de repositorios corporativo de Git adhoc, o Bitbucket en la nube, SourceTree y Bamboo para integración continua.

Hasta ahora, Atlassian nunca había ofrecido una integración completa como su reciente de lanzamiento de Git Essentials que une todas esas herramientas dentro del mismo flujo de trabajo corporativo: JIRA fuertemente ligado con Git.

Leer más »
Publicidad
Inicio
Inicio

Ver más artículos