belaran@976: belaran@976: #!/usr/bin/env python belaran@976: # belaran@976: # salvate il file come .hg/controllo_spazio_bianco.py e rendetelo eseguibile belaran@976: belaran@976: import re belaran@976: belaran@976: def spazio_bianco_in_coda(righe_di_diff): belaran@976: # belaran@976: numriga, intestazione = 0, False belaran@976: belaran@976: for riga in righe_di_diff: belaran@976: if intestazione: belaran@976: # ricorda il nome del file coinvolto in questo diff belaran@976: m = re.match(r'(?:---|\+\+\+) ([^\t]+)', riga) belaran@976: if m and m.group(1) != '/dev/null': belaran@976: nomefile = m.group(1).split('/', 1)[-1] belaran@976: if riga.startswith('+++ '): belaran@976: intestazione = False belaran@976: continue belaran@976: if riga.startswith('diff '): belaran@976: intestazione = True belaran@976: continue belaran@976: # intestazione - salva il numero di riga belaran@976: m = re.match(r'@@ -\d+,\d+ \+(\d+),', riga) belaran@976: if m: belaran@976: numriga = int(m.group(1)) belaran@976: continue belaran@976: # corpo - cerca una riga aggiunta con spazio bianco in coda belaran@976: m = re.match(r'\+.*[ \t]$', riga) belaran@976: if m: belaran@976: yield nomefile, numriga belaran@976: if riga and riga[0] in ' +': belaran@976: numriga += 1 belaran@976: belaran@976: if __name__ == '__main__': belaran@976: import os, sys belaran@976: belaran@976: aggiunte = 0 belaran@976: for nomefile, numriga in spazio_bianco_in_coda(os.popen('hg export tip')): belaran@976: print >> sys.stderr, ('%s, riga %d: aggiunto spazio bianco in coda' % belaran@976: (nomefile, numriga)) belaran@976: aggiunte += 1 belaran@976: if aggiunte: belaran@976: # salva il messaggio di commit in modo da non doverlo digitare di nuovo belaran@976: os.system('hg tip --template "{desc}" > .hg/commit.save') belaran@976: print >> sys.stderr, 'messaggio di commit salvato nel file .hg/commit.save' belaran@976: sys.exit(1) belaran@976: