Al invocar ls
, me gustaría tener nombres de archivo con un color diferente dependiendo de su estado de subversión. Por ejemplo, un archivo agregado será cian, un archivo modificado rojo y así sucesivamente. ¿Es posible con el simple poder de bash? ¿Hay algo listo a este respecto?Colorize nombre de archivo según estado svn
14
A
Respuesta
4
Por lo que yo sé, no es posible lograr eso con pure bash (scripts a un lado).
Puede obtener fácilmente listados de archivos coloreados usando scripts (bash, python, perl, cualquiera que sea su veneno). He aquí una aplicación bastante cruda prueba de concepto escrito en Python: https://gist.github.com/776093
#!/usr/bin/env python
import re
from subprocess import Popen, PIPE
colormap = {
"M" : "31", # red
"?" : "37;41", # grey
"A" : "32", # green
"X" : "33", # yellow
"C" : "30;41", # black on red
"-" : "31", # red
"D" : "31;1", # bold red
"+" : "32", # green
}
re_svnout = re.compile(r'(.)\s+(.+)$')
file_status = {}
def colorise(line, key):
if key in colormap.keys():
return "\001\033[%sm%s\033[m\002" % (colormap[key], line)
else:
return line
def get_svn_status():
cmd = "svn status"
output = Popen(cmd, shell=True, stdout=PIPE)
for line in output.stdout:
match = re_svnout.match(line)
if match:
status, f = match.group(1), match.group(2)
# if sub directory has changes, mark it as modified
if "/" in f:
f = f.split("/")[0]
status = "M"
file_status[f] = status
if __name__ == "__main__":
get_svn_status()
for L in Popen("ls", shell=True, stdout=PIPE).stdout:
line = L.strip()
status = file_status.get(line, False)
print colorise(line, status)
3
Here's a Gist con la tercera generación de un pequeño script para colorear de salida de subversion. Funciona perfectamente para los comandos svn status
. Acabo de agregar alias svns="/path/to/svn-color.py status"
a mi .bash_profile
y ahora puedo escribir svns
y ver la salida codificada por colores. El autor recomienda hacer svn
por defecto a su secuencia de comandos.
Cuestiones relacionadas
- 1. No mostrar svn: externals en estado svn
- 2. Buscar en el repositorio SVN para un nombre de archivo
- 3. ¿Qué significa el código de estado E en SVN?
- 4. Subversion: svn estado Muestra toneladas de archivos no deseados .metadata
- 5. java: archivo de búsqueda según su nombre en el directorio y subdirectorios
- 6. Nombre del estado abreviado en R
- 7. Proyecto SVN actual - cambiar nombre de host
- 8. SVN no enviará archivos no versionados aunque aparezcan con el estado svn
- 9. Nombre de archivo CSS predeterminado
- 10. Reanudar un svn mover/cambiar el nombre
- 11. prístino archivo svn-base falta
- 12. SVN ignorando un archivo '.a'
- 13. SVN recuperar el archivo eliminado
- 14. Nombre de clase y nombre de archivo
- 15. Bash: obtener el último nombre de directorio/nombre de archivo en un argumento de ruta de archivo
- 16. ¿Cómo eliminar un archivo con @ en su nombre desde svn en la línea de comandos?
- 17. Cómo eliminar el archivo "-" de svn?
- 18. Subversion - Agregar archivo de texto - Estado de archivo A (bin)
- 19. Elementos de acción de ActiveAdmin según el estado de los datos
- 20. Agregue un encabezado personalizado según el tipo de archivo
- 21. checkout de SVN SVN con el protocolo
- 22. svn no se puede eliminar el archivo con @@ en su nombre
- 23. Abrir archivo por nombre de archivo comodín
- 24. ¿Es posible adivinar el estado de ánimo de un usuario según la estructura del texto?
- 25. viene el nombre de un código de estado HTTP importa
- 26. obtener el nombre de estado de region_id Magento 1.6.2
- 27. Cambiar el nombre de exe según el símbolo de compilación condicional
- 28. SVN: ya existe un directorio con versiones del mismo nombre
- 29. nombre de archivo de sesión
- 30. Adjuntar TimeStamp a un nombre de archivo
Para aquellos que todavía usan svn. Hay enlaces svn para python, podría ser más elegante que ejecutar subprocesos, y también podría colorear otros comandos. –