2009-01-19 14 views
16

Znalazłem this pytanie, ale wymienione opcje nie mówią nic o wspieraniu "winy". To, czego szukam, to zintegrowany sposób zapytania "Kto edytował linię pod kursorem jako ostatni?".Wtyczka "SVN Blame" dla VisualStudio

Wiem, że większość/wszyscy klienci SVN podają to w jakiejś formie, ale chciałbym czegoś, co ułatwiłoby mi to z kaprysu: "Humm, kto to napisał?". "

Odpowiedz

15

dzienne kompilacje AnkhSVN 2.0 posiada zupełnie nowy annotate (winy) realizacja zainspirowany TFS opisywanie funkcji.

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

Nie bardzo widoczne w tych screenów, ale korzysta z edytora Visual Studio dla kolorowanie składni itp (można zobaczyć sizeof() w prawym dolnym rogu obok obrazu jest niebieski). Jak widać na drugim obrazie, pozwala to również na kilka poleceń w obszarach rewizyjnych na lewym pasku.

Aktualnie nie wykonuje on przeskoku do aktywnej linii. Ale możesz użyć w tym celu komendy Visual Studio do linii goto line (Ctrl + G). (Możesz napisać to w makrze)

Najprostszym sposobem na rozpoczęcie adnotacji jest kliknięcie prawym przyciskiem myszy na edytorze -> Subversion-> Adnotacja.

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

[Aktualizacja 2009-02-03: Funkcja ta jest obecnie powszechnie dostępne w nowym wydaniu stabilnym]

+0

Coś, co Nie podoba mi się, że AnkhSVN ponosi winę za to, że trzeba kliknąć plik prawym przyciskiem myszy w Eksploratorze rozwiązań, zamiast móc to zrobić bezpośrednio z edytora. Może nowsze wersje zmieniają to, ale do tej pory użyję Tortoise do winy. – crashmstr

+0

Jest dostępny w menu kontekstowym edytora w codziennych kompilacjach. Ale możesz umieścić polecenie w dowolnym miejscu, używając opcji dostosowywania menu/paska narzędzi z programu Visual Studio. –

+4

Miło, ale nie integruje się z edytorem. Adnotacja tworzy nowe okno, które nie jest edytowalne, a wyniki wyszukiwania nadal są wyświetlane w oryginalnym oknie, a okno adnotacji nie przeskakuje do tej samej linii, co okno edycji po utworzeniu. Również jeśli okno jest zamknięte, adnotację należy ponownie uruchomić ręcznie. – danio

3

W VisualSVN obsługuje w pewnym stopniu winę - można kliknąć plik prawym przyciskiem myszy i wybrać "Blame". Jednak pojawia się nowe okno, które może nie być tak zintegrowane, jak chcesz.

+0

OK. Nie tak czysty jak wolałbym. (także ja, osobiście, nie chcę wydawać $$) Docs Link? – BCS

+0

http://visualsvn.com/visualsvn/doc/, ale nie wspomina o Winie. Nie mogę powiedzieć, że kiedykolwiek potrzebowałem dokumentów dla Visual SVN. Po prostu działa. –

+0

Dude ... Visual SVN w cenie 49 $ to dar niebios ... Ile kosztowało Visual Studio? –

5

Używam zestawu narzędzi zewnętrznych połączonych z TortoiseProc.exe do wykonywania operacji SVN, takich jak log, diff, winien, przywracanie, zatwierdzanie, aktualizowanie itp. Następnie tworzę skróty paska narzędzi do tych zewnętrznych narzędzi, dzięki czemu mam wszystkie podstawowe operacje SVN dostępne w IDE.

Oto kroki, aby utworzyć przycisk, aby zrobić winę na bieżącym pliku:

  1. przejdź do Narzędzia -> Narzędzia zewnętrzne i kliknij „Dodaj”
  2. Wpisz cokolwiek tytuł chcesz (np " Blame ")
  3. Dla polecenia wprowadź następujące polecenie (ścieżka będzie inna, jeśli zainstalowałeś TortoiseSVN w innym katalogu): c: \ Program Files \ TortoiseSVN \ bin \ TortoiseProc.exe
  4. Dla argumentów wpisz następujące:/command: blame/path: "$ (ItemPath)"/notempfile
  5. Dla początkowego katalogu, wpisz: $ (ItemDir)

Teraz, gdy masz otwarty plik, przejdź do Narzędzia -> winy i powinien on generować winę w oknie popup. Możesz także dostosować pasek narzędzi i utworzyć skrót do tego narzędzia zewnętrznego, aby było jeszcze łatwiej.

+0

Nie pobiera bieżącego wiersza linii i właśnie tego naprawdę chcę. – BCS

+1

@BCS, użyj tych argumentów:/command: blame/path: "$ (ItemPath)"/notempfile/line: $ (CurLine)/startrev: 1/endrev: -1 –

+2

Znalazłem ten blog przydatny: http: // tortoisesvn.net/visualstudio.html. Tylko niewielka zmiana w VS 2010 to "Dodaj polecenie" powinno używać "Inne menu kontekstowe | Okno kodu" w przeciwieństwie do "Inne menu kontekstowe | Łatwe okno dokumentu MDI". –

7

napisałem Visual Studio makro, aby uzyskać informacje o linii numer i przekazać go do tortoiseproc.exe (który jest częścią TortoiseSVN)

Spójrz informacji parametru: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-automation.html

Oto moje makro:


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

Nice! Oto pozostałe kroki, które musiałem wykonać, aby to zadziałało. 1) Otwórz menu Narzędzia> Makra> Makro IDE 2) Umieść kod crashmstr w istniejącym lub nowym module. 3) Zdefiniowany sTorEXE tak, aby wskazywał na TortoiseProc.exe, w moim przypadku sTorEXE = "C: \\ Program Files \\ TortoiseSVN \\ bin \\ TortoiseProc.exe" 4) Musiał utworzyć komendę SShellCommand dla wszystkich linii (bez łamania linii) jak wyżej).Jeśli masz jakieś niebieskie podkreślenia w IDE, napraw błąd lub makro może po cichu zawieść 5) Zrobiłem to w programie Visual Studio klikając prawym przyciskiem myszy pasek menu> Dostosuj> Makra> [Przeciągnięty na pasek menu] –

1

Oto wersja robocza crashmstr 's oraz 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 

Zgodnie z instrukcjami należy dodać je do nowego lub istniejącego modułu makra za pomocą Tools > Macros > Macro IDE.

Dla łatwiejszego dostępu, dodałem makro do mojego kodu menu kontekstowego okna:

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

Mając go w menu kontekstowego umożliwia łatwy dostęp do klawiatury, ale można oczywiście dodać skrót klawiaturowy do niego także. Mam go na Ctrl-Shift-M, który nie jest używany przez nic użytecznego domyślnie :).