¿Cómo hago cumplir la línea de resumen de compromiso de 50 caracteres en Sublime?

Como alma naturalmente locuaz, mis líneas de resumen casi siempre superan los 50 caracteres. ¿Cómo puedo imponer un límite de 50 caracteres en mis líneas de título en sublime para posts de compromiso y posts de compromiso solamente? ¿Hay alguna manera de personalizar la configuration?

Un complemento como sublime-text-git impondría un ajuste suave en el post de confirmación de git :

{ "rulers": [70] } 

Pero eso se aplica a todas las líneas, no solo a la primera.

Podrías modificar ese complemento para cambiar los colors cuando escribas (pero eso requeriría algo de progtwigción de Python); esto es lo que hace un editor como vim :

http://kparal.files.wordpress.com/2011/08/git-vim-commit.png?w=595

Recuerde que para posts largos anteriores, puede verlos con la longitud adecuada a través de una opción MENOS. Consulte " Cómo envolver comentarios de cometer git? ".


De lo contrario, como comentó larsks , un enganche commit-msg como este (de Addam Hardy , en python) es la única solución para aplicar realmente esa política.

 #!/usr/bin/python import sys, os from subprocess import call print os.environ.get('EDITOR') if os.environ.get('EDITOR') != 'none': editor = os.environ['EDITOR'] else: editor = "vim" message_file = sys.argv[1] def check_format_rules(lineno, line): real_lineno = lineno + 1 if lineno == 0: if len(line) > 50: return "Error %d: First line should be less than 50 characters " \ "in length." % (real_lineno,) if lineno == 1: if line: return "Error %d: Second line should be empty." % (real_lineno,) if not line.startswith('#'): if len(line) > 72: return "Error %d: No line should be over 72 characters long." % ( real_lineno,) return False while True: commit_msg = list() errors = list() with open(message_file) as commit_fd: for lineno, line in enumerate(commit_fd): stripped_line = line.strip() commit_msg.append(line) e = check_format_rules(lineno, stripped_line) if e: errors.append(e) if errors: with open(message_file, 'w') as commit_fd: commit_fd.write('%s\n' % '# GIT COMMIT MESSAGE FORMAT ERRORS:') for error in errors: commit_fd.write('# %s\n' % (error,)) for line in commit_msg: commit_fd.write(line) re_edit = raw_input('Invalid git commit message format. Press y to edit and n to cancel the commit. [y/n]') if re_edit.lower() in ('n','no'): sys.exit(1) call('%s %s' % (editor, message_file), shell=True) continue break