Подтвердить что ты не робот

Плагин "SVN Blame" для VisualStudio

Я нашел этот вопрос, но ссылочные параметры ничего не говорят о поддержке "вины". Я ищу интегрированный способ спросить: "Кто отредактировал строку под курсором последним?".

Я знаю, что большинство/все клиенты SVN дают это в той или иной форме, но я хотел бы кое-что, что делает его достаточно легким, чтобы я мог сделать это по прихоти: "Хамм, кто это написал? [нажмите, коснитесь] О, он."

4b9b3361

Ответ 1

Ежедневные сборки AnkhSVN 2.0 имеют совершенно новую аннотированную (винительную) реализацию, вдохновленную аннотацией TFS.

Аннотационный просмотр AnkhSVN http://b.qqn.nl/f/2009/stackoverflow/20090120-AnkhSVN-Annotate.jpg

Не совсем видно на этих снимках экрана, но он использует редактор Visual Studio для раскраски синтаксиса и т.д. (вы можете видеть, что sizeof() в правой нижней части следующего изображения синего цвета). Как вы можете видеть на втором снимке, он также позволяет выполнять несколько команд в областях ревизии на левой панели.

В настоящее время он не реализует переход к активной строке. Но вы можете использовать команду Visual Studio goto (Ctrl + G). (Вы можете script сделать это в макросе)

Самый простой способ запустить аннотацию - щелкнуть правой кнопкой мыши по редактору → Subversion- > Annotate.

Команды аннотаций AnkhSVN http://b.qqn.nl/f/2009/stackoverflow/20090120-AnkhSVN-Annotate-Detail.jpg

[Update 2009-02-03: эта функция теперь доступна в новом выпуске Stable]

Ответ 2

Я написал макрос Visual Studio, чтобы получить информацию о номере линии и передать его в файл tortoiseproc.exe(который является частью TortoiseSVN)

Взгляните на информацию о параметрах: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-automation.html

Вот мой макрос:


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

Я использую набор внешних инструментов, подключенных к TortoiseProc.exe, для выполнения операций SVN, таких как журнал, diff, вину, возврат, фиксацию, обновление и т.д. Затем я создаю ярлыки на панели инструментов для этих внешних инструментов, чтобы у меня было все основные Операции SVN, доступные в среде IDE.

Ниже приведены шаги по созданию кнопки для вины в текущем файле:

  • Перейдите в инструменты → внешние инструменты и нажмите "Добавить"
  • Введите любой желаемый заголовок (например, "Вина" )
  • Для команды введите следующее (путь будет другим, если вы установили TortoiseSVN в другой каталог): c:\Program Files\TortoiseSVN\bin\TortoiseProc.exe
  • Для аргументов введите следующее:/command: blame/path: "$ (ItemPath)" /notempfile
  • Для исходного каталога введите: $(ItemDir)

Теперь, всякий раз, когда у вас открыт файл, просто зайдите в инструменты → Blame и он должен сгенерировать Blame во всплывающем окне. Вы также можете настроить панель инструментов и создать ярлык для этого внешнего инструмента, чтобы сделать его еще проще.

Ответ 4

В VisualSVN в некоторой степени поддерживает вину - вы можете щелкнуть правой кнопкой мыши по файлу и выбрать "Blame". Тем не менее, оно всплывает в новом окне, которое может быть не так интегрировано, как вы хотите.

Ответ 5

Здесь рабочая версия crashmstr и Дерек Дамер макрокоманд:

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

В соответствии с инструкциями Derek Dahmer добавьте его в новый или существующий макромодуль с помощью Tools > Macros > Macro IDE.

Для легкого доступа я добавил макрос в контекстное меню кодового окна:

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

Наличие в контекстном меню обеспечивает легкий доступ к клавиатуре, но вы, конечно же, можете добавить к нему и ярлык для клавиатуры. У меня это на Ctrl-Shift-M, которое по умолчанию не используется ничем полезным:).