git

Mayo 24 06:28

Trabajando con proyectos libres III

Al fin ha llegado el turno a los flujos de trabajo con Git. Iba a exponer diferentes tipos, pero al final he optado por copiar y adaptar la documentación que estábamos generando internamente para trabajar nosotros. Al fin y al cabo es la opción que hemos elegido y que más se adapta a lo que necesitamos.
Espero que le pueda servir a más gente y que si alguien tiene alguna idea para mejorarlo, que lo comente.
De todas formas, me gustaría documentar esto un poco mejor en algún wiki junto con otras posibilidades para que quede mejor explicado y pueda ir ampliándose.

Mayo 22 23:24

Trabajando con proyectos libres

Como ya comentó en su momento Félix, en Emergya estamos trabajando en algún proyecto en el que colaboramos con GNOME y estamos estudiando la manera más óptima de hacerlo.

Cada proyecto y cada comunidad tiene su propia forma de trabajar y el que viene a colaborar tiene que intentar adaptarse a ella para que nuestras mejoras tengan más posibilidades de ser aceptadas en el proyecto (upstream).

El caso de una persona que quiera colaborar con GNOME y de una empresa, son similares pero no iguales. Digamos que la parte que tiene que ver con GNOME sí, pero hay una parte de trabajo personal que puede ser diferente.

Abr 20 23:15

Trabajar con Git contra un repositorio Subversion (simple)

Aquí se describe cómo importar un repositorio Subversion en una rama Git para trabajar localmente en Git y guardar los cambios en el repositorio Subversion.
# Crear la rama e importar histórico del módulo
git svn clone http://svn.server.org/proyecto/trunk proyecto
 
# Importar el contenido de las ramas
cd proyecto/
 
## Ya está listo para usarse
 
# Hacer un cambio
 
# 1- Corregir los que haga falta
set -i 's,hlo world,Hello world' hello.c # ejemplo tonto
git ci -m "Fixed typo"
 
# 2- Sincronizar la rama con el repositorio remoto de Subversion
git svn rebase # svn update
 
# 3- Subir el cambio al repositorio Subersion (svn ci)
git svn dcommit # svn commit
 
.
Lenguaje: 
bash
Abr 20 13:03

Trabajar con Git contra un repositorio Subversion

Aquí se describe cómo importar un repositorio Subversion en una rama Git para trabajar localmente en Git y guardar los cambios en el repositorio Subversion.
# Crear la rama e importar histórico del módulo
git svn init -s http://svn.server.org/proyecto proyecto
 
## '-s' importará los tags y branches.
## Además usará trunk como rama principal
 
# Importar el contenido de las ramas
cd proyecto
git svn fetch
 
# Optimizar el repositorio (opcional, pero recomendable)
git repack -d
 
## Ya está listo para usarse
 
# Hacer un cambio con ramas
 
# 1- Crear la rama para arreglar el bug 23
git checkout -b ficking-bug23
 
# 2- Corregir los que haga falta
set -i 's,hlo world,Hello world' hello.c # ejemplo tonto
git ci -m "Fixed typo"
 
# 3- V
Lenguaje: 
bash
Feb 23 01:37

Alias para servidores Git

Si tenemos una cuenta en algún servidor de Git, quizás queramos crearnos un alias del protocolo y servidor para no tener que poner la url entera cada vez que lo usamos. Aquí pongo la forma genérica y algunos ejemplos reales.
# The general use:
git config --global url.ssh://[login@][git_server]/.insteadof [name]:
 
# Example with GNOME. I will use my own username for the example: jojeda
git config --global url.ssh://jojeda@git.gnome.org/git/.insteadof gnome:
 
# Example with GNOME if you don't have a GNOME account:
git config --global url.git://git.gnome.org/.insteadof gnome:
 
# Now I can use it like:
git clone gnome:nanny
 
 
# Example with Github.
Lenguaje: 
bash
Feb 23 00:40

Crear un tarball desde Git

Muchas veces un necesita crear un tarball con el contenido de una rama de Git, pero sin el versionado. Esta es una forma de hacerlo
# Some data:
# * project name: foo
# * format: bz2
git archive --format=tar --prefix=foo/ HEAD | bzip2 >/tmp/foo.tar.bz2
 
# * format: gzip
git archive --format=tar --prefix=foo/ HEAD | gzip >/tmp/foo.tar.gz
Lenguaje: 
bash
Feb 23 00:31

Alias para Git

Algunos alias útiles para Git
# Tipical alias from others VCS as svn or bzr
git config --global alias.co=checkout
git config --global alias.st=status
git config --global alias.ci=commit
 
# This has another version with the option '-a' which makes Git
# to stage all the modified and deleted files
git config --global alias.ci=commit -a 
 
# From GNOME. It's useful if always try to do rebase
git config --global alias.up=pull --rebase
 
# Similar to bzr get [branch]
git config --global alias.get=clone
 
# Last change
git config --global alias.last=log -1 HEAD
 
# Undo a commit.
Lenguaje: 
bash
Feb 22 05:41

Interfaz gráfica para Git: gitg

El que me conozca un poco sabrá que no soy muy fan de Git, pero es básicamente porque me parece que hace las cosas más complejas de lo que hace falta.

Sí, es una herramienta muy potente pero hacer cualquier cosa es un coñazo hasta que aprendes y te haces un alias...