Git branch & Subversion detection en el prompt de Bash

Simple, agregar en el .bashrc lo siguiente :

function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* (.*)/(1)/'
}

function detect_svn {
  test -d .svn && echo "(svn)"
}

function proml {
  local         RED="[33[0;31m]"
  local   LIGHT_RED="[33[1;31m]"
  local      YELLOW="[33[0;33m]"
  local LIGHT_GREEN="[33[1;32m]"
  local       WHITE="[33[1;37m]"
  local  LIGHT_GRAY="[33[0;37m]"
  local LIGHT_PURPLE="[33[1;34m]"
  case $TERM in
    xterm*)
    TITLEBAR='[33]0;u@h:w07]'
    ;;
    *)
    TITLEBAR=""
    ;;
  esac

PS1="${TITLEBAR}
$LIGHT_PURPLEw$YELLOW$(parse_git_branch)$(detect_svn)
$LIGHT_GRAY$ "
PS2='> '
PS4='+ '
}
proml

Y se ve algo como (sin colores, sorry 🙂 :

~/src/some_git_project(master)$ 
~/src/some_svn_project(svn)$

Pro Git : Libro sobre Git

Hace unos día me enteré vía Twitter (faaaa, que moderno que estoy!) de la aparición del libro “Pro Git : professional version control“. Lo bueno es que uno puede clonarse su propia working copy del libro o de los ejemplos :).

Según veo en la tabla de contenidos abarca la mayoría de los temas, aunque como no lo leí todo no se que tan profundo va en cada parte.

Un tema que si no vi, al menos por ahora, es un apartado a cosas como git-svn, que suele ser un dolor de cabeza diario y cuando hay un problema, hay que excavar un buen rato en un buscador para solucionarlo.

El libro se distribuye bajo “Creative Commons Attribution-Non Commercial-Share Alike 3.0” y si queremos apoyar la iniciativa podemos comprar la copia en árbol muerto.

Oregano cambia a Git

Hoy terminé de decidir que mover el main repo de Oregano a Git era una buena idea, principalmente porque ya me estaba cansando de hacer branches duplicando directorios :P.

A partir de ahora el source principal estará en GitHub, para todo aquel que quiera hacer un fork o simplemente pullear su propio tree local.

Para migrar el repo desde darcs a git usé la opción que explican acá, un script en ruby que funcionó de los más bien. Trate de usar uno en python que también nombra, pero tenía que instalar algunos módulos y con ruby nada, so, ganó el que menos laburo me dió :).

Lo primero que van a venir a llorar es, de cajón, “¿por qué en GitHub que es privativo? ¿por qué no Gitorious?” o cosas así. La verdad no tengo ninguna razón técnica, ni problemas con ninguno de los servicios. Simplemente en GitHub ya tenía cuenta, ya tenía mi llave pública configurada y ya conocía donde hacer click, so, fue la elección más cómoda simplemente :).

En fin, voy a ir actualizando la documentación, wiki y demás a medida que me acuerde :D.