Archive for the ‘git’ Category

Are you ready for Drools 5.2 + jbpm5?
December 16, 2010

Great things are happening into the core of Drools and it will impact into the whole community.
This post is not about the great features we gonna have soon but about how to make the transition painless.
From the developer point of view things are getting better and better.

    Git migration
    Maven 3 compliance
    Repository cleanup (no more .classpath and .project files)
    Guvnor building coming less and less painful
    Huge internal refactors and optimizations

The major of this tasks were leaded by ge0ffrey who has made our lives a lot better :)

As regular user of the framework when you finally decide to move from 5.1.1 to 5.2 you will find a big difference. Drools Flow is gone… but it has reborn as JBPM5!.
So the concepts remains the same but you’ll need to adjust your dependencies and make a reorganization of your imports. This is the first step on breaking backward compatibility preparing us for the big crash arriving on 6.0 :)
Basically u gonna need to add

<depdency>
  <groupId>org.jbpm</groupId>
  <artifactId>jbpm-[flow | persistence-jpa | bpm2 | ...]</artifactId>
  <version>${jbpm.version}</version>
</dependency>

Doing so you should change a lot of your org.drools packages into org.jbpm.

w00t

Primeros pasos con GIT-SVN
April 22, 2009

Partiendo de una infraestructura de SVN, todavía se puede aprovechar la versatilidad que te provee GIT para trabajar en tus modificaciones diarias e inestables (incluso muchas veces destructivas).
En el ejemplo voy a intentar hacer una demo con el svn de JBoss particularmente con el módulo de Drools.

$ git svn clone -s http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/ drools-upstream && cd drools-upstream

si bien es interesante hacer esto, tarda realmente mucho, mucho, MUCHO… me fui a dormir cuando iban 6 horas… y parece que daba para bastante más. Igual vale bien la pena si uno está pensando en colaborar con alguno de estos proyectos.
Para empezar a trabajar creamos un nuevo branch del master (o el trunk en jerga SVN)

$ git checkout -b mi-feature-loca

el -b nos situa directamente en ese branch.
Comandos relacionados con la interacción git-svn:

  • git svn fetch, trae todos los cambios del repositorio SVN remoto
  • git svn rebase, igual que el anterior pero hace fast-forward de nuestros commits así quedan alineados con el árbol principal (explotando cuando no puede resolver solo los conflictos)
  • git svn dcommit, envía nuestros cambios locales como sucesivos commits de svn con los mensajes exactamente como los teníamos localmente.

Cosas útiles en el desarrollo diario:

  • git branch muestra los branches que tenemos en nuestro repositorio local resaltando el que estamos parados. Para esto también está bueno tener agregado en algún lado del PS1 de bash lo siguiente $(__git_ps1 “#%s”) , que nos agrega el branch sobre el que se trabaja.
  • git status muestra el estado del index, que es la lista de los archivos conocidos por git.
  • git add para agregar los archivos del próximo commit. A diferencia de SVN hay que agregar cada archivo antes de commitear.
  • git commit es evidente, pero para los que prefieran ahorrarse el paso anterior, pueden hacer git commit -a que envía todos los cambios en el index.

Nota al pie:
Cada vez que quieras hacer un git svn rebase luego de haber felizmente levantado todo el entorno en eclipse o sencillamente habiéndole pasado el bienaventurado mvn eclipse:eclipse, git te va a decir que los .classpath y los .project están distintos, que los mergees.
Lo primero que tienen que hacer es aumentar el karma negativo hacia cualquiera de los core developers, esto puede ser aleatorio o en grupo da igual, por permitir que esto sea así. La idea final es que en su próxima vida vuelvan en modo alimaña–.
Después lo más sano es volar todos los archivos estos y dejarle que los vuelva a cero. Para ellos copien esta línea que hará su trabajo.

git checkout drools-ant/.classpath drools-api/.classpath drools-clips/.classpath drools-compiler/.classpath drools-container/drools-mc/.classpath drools-core/.classpath drools-decisiontables/.classpath drools-examples/drools-examples-drl/.classpath drools-examples/drools-examples-drl/.project drools-examples/drools-examples-fusion/.classpath drools-examples/drools-examples-fusion/.project drools-guvnor/.classpath drools-jsr94/.classpath drools-persistence-jpa/.classpath drools-pipeline/drools-messenger-jms/.classpath drools-pipeline/drools-transformer-jaxb/.classpath drools-pipeline/drools-transformer-jxls/.classpath drools-pipeline/drools-transformer-smooks/.classpath drools-pipeline/drools-transformer-xstream/.classpath drools-process/drools-bam/.classpath drools-process/drools-process-task/.classpath drools-process/drools-workitems/.classpath drools-repository/.classpath drools-server/.classpath drools-solver/drools-solver-core/.classpath drools-solver/drools-solver-examples/.classpath drools-templates/.classpath drools-verifier/.classpath

git checkout nos sirve para volver para atrás, al último estado commiteado, a un archivo.