Pregunta

Siempre quise conseguir una forma razonablemente elegante de hacer que vimdiff funcione con un archivo controlado por CVS.He encontrado numerosos scripts (algo complicados) en Internet (el mejor ejemplo aquí) que básicamente verifica el archivo que estás editando desde CVS a un archivo temporal y vimdiff los dos.Ninguno de estos tiene en cuenta las ramas y siempre asume que estás trabajando desde PRINCIPAL, lo cual para mí es completamente inútil.

Así que mi pregunta es esta:¿Alguien ha encontrado una solución decente para esto que haga más que este script?

O en su defecto, ¿alguien tiene alguna idea de cómo implementarían esto o sugerencias sobre qué características consideraría vitales para algo que hace esto?Mi intención es que, si nadie puede sugerir una solución ya construida para usar o construir, comencemos a construir una desde aquí.

¿Fue útil?

Solución

He estado trabajando en un script similar aquí: http://github.com/ghewgill/vim-scmdiff (de hecho, pueden tener la misma ascendencia).No he usado scmdiff con cvs, pero debería hacer una diferencia con la rama que has verificado.También puede especificar que desea comparar con una revisión en particular (con :D revisión).¡Esperamos que esto ayude y siéntete libre de contribuir si tienes mejoras!

Otros consejos

@Greg Hewgill:gracias por el guión!Sin embargo, tuve un par de problemas, así que esto es lo que cambiaría:

línea 21:

< map <silent> <C-d> :call <SID>scmToggle()<CR>
--
> map <silent> <C-h> :call <SID>scmToggle()<CR>

yo suelo Control-d para bajar la página (demasiado vago para pasar hasta PdDn), así que tuve que cambiar a Ctrl-h.

línea 112:

<         let cmd = 'cd ' . g:scmBufPath . ' && ' . g:scmDiffCommand . ' diff ' . g:scmDiffRev . ' ' . expand('%:p') . ' > ' . tmpdiff
--
> if g:scmDiffUseAbsPaths 
>     let cmd = 'cd ' . g:scmBufPath . ' && ' . g:scmDiffCommand . ' diff ' . g:scmDiffRev . ' ' . expand('%:p') . ' > ' . tmpdiff
> else
>     let cmd = g:scmDiffCommand . ' diff ' . g:scmDiffRev . ' ' . bufname('%') . ' > ' . tmpdiff
> endif

Tuve problemas por no poder utilizar rutas absolutas con CVS.No sé si esto es una rareza de nuestra configuración local aquí, o si es una cuestión de CVS global.Entonces, creé una variable configurable que puedes poner en tu .vimrc para usar la ruta relativa.

Ahora parece funcionar exactamente como quería, así que seguiré trabajando y veré si puedo encontrar algo más que se rompa, publicando correcciones a medida que avanzo.

Editar:Olvidé agregar:no dude en agregar estos cambios a su secuencia de comandos en github si cree que valen la pena.

Podrías cambiar la llamada a cvs para tener en cuenta las sucursales.Eso no debería ser demasiado difícil.Sería un poco más difícil cambiar toda la función y hacer que la rama en la que trabaja sea una variable (argumento, sesión, global o de otro tipo).

Comando VCS es otro script vim mantenido activamente para la integración de VCS.Tiene soporte para CVS/SVN/SVK/git.

Lo uso todo el tiempo para SVN y nunca tuve ninguna queja.Los atajos usan mapleader, por lo que es poco probable que sobrescriban las asignaciones existentes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top