eina del dia (o de la nit)

watch

És una petita utilitat que seguint el principi de les ordres de terminal fa una cosa i la fa bé: executa una ordre cada x segons.

Mireu el seu manual (man watch) o la seva ajuda (watch –help) per veure’n totes les opcions.

Per exemple amb “watch -n 10 du -sh *” fareu que cada 10 segons s’executi l’ordre “du -sh *” (saber quan d’espai de disc ocupa tot el que hi ha en el directori des d’on s’executa l’ordre).

Ara ja us podeu imaginar què faig despert a aquestes hores :D

git show -3

L’opció show del git serveix per, tal com indica el nom, mostrar diverses coses, entre elles, i en el 99% dels casos, serà veure els commits ja fets.

Per exemple amb “git show” es mostrarà el diff de l’últim commit.

Per sort, com totes les ordres de git tenen moltíssimes variants, de manera que per exemple amb el títol de l’entrada “git show -3” el que farem es veure els tres últims commits per ordre cronològic invers (l’últim primer).

També podem afegir-hi el paràmetre –stat que permet mostrar un llistat de quins fitxers s’han canviat, de manera que es te una visió molt més ràpida del que s’ha fet en el canvi sense entrar en els detalls del diff com a tal.

Amb git show –help teniu tota la resta d’informació per si necessiteu fer altres coses :)

canviar el títol del terminal

Resulta que a la feina tenim uns quants servidors virtuals per a diferents propòsits i com que un era amb CentOS i d’altres amb Debian un dia vaig adonar-me que quan em connectava al CentOS se’m canviava el títol del terminal però en canvi en connectar-me als Debian no.

Així que investigant una mica he descobert que hi ha la variable PROMPT_COMMAND que et permet canviar el títol, de manera que per exemple si poses al ~/.bashrc:

PROMPT_COMMAND=’echo -ne “\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007″‘

Et posarà com a títol el nom d’usuari, l’ordinador on estàs i el camí on estàs actualment.

com enganxar al Vim sense que es re-formati

Segur que els que utilitzeu el Vim ja n’heu buscar la solució ja que realment és molt molest.

Si aneu a una pàgina web i en copieu el codi font d’un tros de programa, per exemple:

Us trobareu que un cop enganxat al terminal queda tot el codi reformatat:

Per sort amb el Vim li pots dir que no reformati el codi:

El truc està en que abans d’enganxar al terminal ens posem en mode control i establim l’opció paste) o sigui, la seqüència és:

  • (obres el fitxer)
  • Passes a mode ordre (amb la tecla Esc)
  • escrius :set paste
  • tornes a mode edició (amb la tecla i)
  • ja pots fer un Ctrl+Maj+V per enganxar el que tinguis al porta-retalls

Llestos ja tenim un bon tros de codi que no hem de picar i que a més continua ben formatat :)


git show(1)

No us heu trobat mai amb la necessitat de veure els canvis que s’han fet en un commit? Res més senzill que fer un git log per agafar el SHA1 del commit en qüestió i després fer un git show SHA1.

Evidentment com qualsevol altre ordre de git pot fer molt més que només mostrar els canvis fets en un commit, ja que la descripció que se’n dóna en fer un git help show és: Mostra diversos tipus d’objectes.

git stash

Una de les primeres coses que descobreixes quan utilitzes git és que de la mateixa manera que un mediawiki, per posar un exemple, hi ha mil i una maneres de treballar-hi:

Tot amb branques, arbres remots a github, via pedaços (com se solia anar amb subversion i cvs) …

De manera que igual com amb un mediawiki el més important és definir una bona guia d’estil, les plantilles i el sistema de categorització, treballant amb el git, el més important és definir dintre de l’equip de treball un bon cicle de treball per tal que no hi hagi diverges

I és aquí on entra l’ordre git stash.

Un exemple ben fàcil: tens canvis a 5 fitxers diferents, fas un commit per a tres d’ells perquè els altres dos encara no estan llestos per enviar.  Si en aquell moment vols fer un git pull –rebase perquè el servidor de git és un servidor central i vols agafar els últims canvis i aplicar-hi els teus commits locals a sobre de les últimes actualitzacions, el git no et deixarà fer-ho, ja que hi ha canvis sense estar en un commit.

No pots fer-ne un commit perquè no estan acabats, de manera que el que pots fer és un git stash, que senzillament desa els canvis que no estan a cap commit i et deixa l’arbre sense cap fitxer que no estigui en un commit, de manera que ja pots fer un git pull –rebase i si tot va bé un git push per enviar els teus commits locals.

Ja només et queda fer un git stash pop per recuperar els canvis que tens que no estan a cap commit i continuar treballant tranquilament :)

Evidentment, com tota eina de git, el git stash et permet fer moltíssimes coses més, de fet per tal com es recupera la sessió desada (git stash pop) ja podeu veure que el git stash funciona com una pila, de manera que pots tenir tants stash com necessiteu1 i aplicar-los a altres branques, o crear branques a partir dels stash, etc etc …

  1. No exempt de perill que després no funcionin sobre el commit en el que esteu treballant []

treure tabulacions i espais finals dels fitxers

Fent neteja dels fitxers m’he trobat amb la poca grata sorpresa que tenia l’XCode1 configurat perquè fes servir tabulacions en comptes d’espais…

De manera que una mica de cerca per Internet i dues petites joies per facilitar-nos el dia:

  • L’eina expand permet canviar tabulacions per espais (i a l’inrevés si algú ho necessita)
  • He trobat un script per sed per suprimir els espais finals (compte que si no vigileu es menja també les t finals!)
  1. L’EID que has de fer servir per fer aplicacions per a l’iPhone []