2009-01-19 18 views
16

Encontré this pregunta, pero las opciones a las que se hace referencia no dicen nada sobre el soporte de "culpa". Lo que estoy buscando es una forma integrada de preguntar "¿Quién editó la línea debajo del cursor?".Plugin "SVN Blame" para VisualStudio

Sé que la mayoría de los clientes de SVN dan esto de alguna forma, pero me gustaría algo que lo haga lo suficientemente fácil como para hacerlo a mi antojo: "Humm, ¿quién escribió eso? [Toca] Oh él. "

Respuesta

15

el diario construye de AnkhSVN 2.0 tiene un annotate completamente nuevo (la culpa) aplicación inspirada en el TFS función anotar.

AnkhSVN Annotate Preview http://b.qqn.nl/f/2009/stackoverflow/20090120-AnkhSVN-Annotate.jpg

No

realmente visible en estas imágenes, pero utiliza el editor de Visual Studio para el coloreado de sintaxis, etc. (Se puede ver el sizeof() en la parte inferior derecha de la imagen siguiente es azul). Como puede ver en la segunda imagen, también permite varios comandos en las regiones de revisión en la barra izquierda.

Actualmente no implementa el salto a la línea activa. Pero puede usar el comando Visual Studio goto line (Ctrl + G). (Es posible que pueda crear una secuencia de comandos en una macro)

La manera más fácil de comenzar a anotar es hacer clic derecho en el editor -> Subversión-> Anotar.

AnkhSVN Annotate Commands http://b.qqn.nl/f/2009/stackoverflow/20090120-AnkhSVN-Annotate-Detail.jpg

[Actualización 2009-02-03: Esta función ahora es comúnmente disponible en la nueva versión estable]

+0

Lo que No me gusta la culpa de AnkhSVN es que necesita hacer clic derecho en el archivo en el Explorador de soluciones en lugar de poder hacerlo directamente desde el editor. Tal vez las compilaciones más nuevas cambien esto, pero hasta entonces usaré Tortuga como culpable. – crashmstr

+0

Está disponible en el menú contextual del editor en las compilaciones diarias. Pero puede colocar el comando en cualquier lugar utilizando la opción personalizar menú/barra de herramientas de Visual Studio. –

+4

Es bueno, pero no se integra en el editor. Anotar crea una nueva ventana que no se puede editar y los resultados de búsqueda aún terminan en la ventana original y la ventana de anotación no salta a la misma línea que la ventana de edición cuando se crea. Además, si la ventana está cerrada, la anotación debe ejecutarse de nuevo a mano. – danio

3

En VisualSVN soporta la culpa en cierta medida: puede hacer clic con el botón derecho en un archivo y seleccionar "Culpar". Sin embargo, aparece una nueva ventana, que puede no estar tan integrada como desee.

+0

OK. No tan limpio como prefiero. (también yo, personalmente, no quiero gastar $$) Google Docs Link? – BCS

+0

http://visualsvn.com/visualsvn/doc/ pero no menciona la culpa. No puedo decir que alguna vez haya necesitado documentos para Visual SVN. Simplemente funciona, básicamente. –

+0

Dude ... Visual SVN a $ 49 es un regalo del cielo ... ¿Cuánto costó Visual Studio? –

5

Utilizo un conjunto de herramientas externas conectadas a TortoiseProc.exe para realizar operaciones SVN como log, diff, culpa, revertir, confirmar, actualizar, etc. Luego creo atajos de barra de herramientas a estas herramientas externas para que tenga todo el operaciones SVN básicas accesibles dentro del IDE.

Éstos son los pasos para crear un botón para hacer una culpa en el archivo actual:

  1. vaya a Herramientas -> herramientas externas y haga clic en "Añadir"
  2. Introduzca cualquier título que desee (por ejemplo " la culpa ")
  3. para el comando, escriba lo siguiente (el camino será diferente si ha instalado TortoiseSVN a un directorio diferente): C: \ archivos de programa \ TortoiseSVN \ bin \ TortoiseProc.exe
  4. para los argumentos, introduzca lo siguiente:/command: culpa/ruta: "$ (ItemPath)"/notempfile
  5. Para el directorio inicial, escriba: $ (ItemDir)

Ahora, cada vez que tenga un archivo abierto, sólo tiene que ir a Herramientas -> La culpa y debe generar la culpa en una ventana emergente. También puede personalizar la barra de herramientas y crear un atajo para esta herramienta externa para que sea aún más fácil.

+0

No recibe la línea actual y eso es lo que realmente quiero. – BCS

+1

@BCS, use estos argumentos:/command: culpa/ruta: "$ (ItemPath)"/notempfile/line: $ (CurLine)/startrev: 1/endrev: -1 –

+2

Encontré este blog útil: http: // tortoisesvn.net/visualstudio.html. El único cambio leve en VS 2010 es "Agregar comando" debe usar "Otros menús contextuales | Ventana de código" en lugar de "Otros menús contextuales | Ventana de documento MDI fácil". –

7

me escribió una macro de Visual Studio para obtener la línea de información número y pasarlo a TortoiseProc.exe (que es parte de TortoiseSVN)

Tome un vistazo a la información de los parámetros: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-automation.html

Aquí está mi macro:


Sub Blame() 
    sCurrFileFull = DTE.ActiveDocument.FullName 
    Dim activeDoc As Document 
    activeDoc = DTE.ActiveDocument 
    Dim nLine As Integer 
    nLine = activeDoc.Selection.CurrentLine 

    sShellCommand = sTorEXE & " /command:blame /startrev:1 /endrev:-1 /path:""" & 
        sCurrFileFull & """ /notempfile /line:" & nLine.ToString() 
    Shell(sShellCommand, AppWinStyle.MaximizedFocus, False) 
End Sub 
+3

¡Agradable! Aquí está el resto de los pasos que debo seguir para que funcione 1) Abra Herramientas> Macros> Macro IDE 2) Coloque el código de crashmstr en un módulo existente o nuevo. 3) Define sTorEXE para apuntar a TortoiseProc.exe, en mi caso sTorEXE = "C: \\ Archivos de programa \\ TortoiseSVN \\ bin \\ TortoiseProc.exe" 4) Tuve que hacer que sShellCommand fuera una sola línea (sin salto de línea) como arriba).Si tiene subrayados azules en el IDE, solucione el error o la macro puede fallar silenciosamente. 5) Lo hizo en un botón en Visual Studio haciendo clic con el botón derecho en la barra de menú> Personalizar> Macros> [Arrastrado a la barra de menú] –

1

es una versión de trabajo de crashmstr Aquí 's y Derek Dahmer' s macro code:

Sub Blame() 
    Dim sCurrFileFull = DTE.ActiveDocument.FullName 
    Dim activeDoc = DTE.ActiveDocument 
    Dim nLine = activeDoc.Selection.CurrentLine 
    Dim sTorEXE = "TortoiseProc.exe" 
    ' Add path if you don't have TortoiseSVN on your PATH 
    Dim sShellCommand = sTorEXE & " /command:blame /startrev:1 /endrev:-1 /path:""" & sCurrFileFull & """ /notempfile /line:" & nLine.ToString() 
    Shell(sShellCommand, AppWinStyle.MaximizedFocus, False) 
End Sub 

Según las instrucciones de Derek Dahmer, agréguela a un módulo de macros nuevo o existente con el Tools > Macros > Macro IDE.

Para un fácil acceso, que añade la macro a mi código contexto ventana del menú:

Customize > Commands > Context menu > Editor Context Menus | Code Window 
Add Command > Macros > Find your macro 
Modify Selection > Name: Bla&me 

Teniéndolo en el menú contextual permite un fácil acceso al teclado, pero se puede, por supuesto, añadir un atajo de teclado para que también. Lo tengo en Ctrl-Shift-M, que no es usado por nada útil por defecto :).