Как мне найти ревизию, которая изменила строку в моем коде, используя TortoiseSvn?
У меня есть одна строка кода, которая кажется закомментированной. По сути, я хочу найти ревизию, которая изменила эту строку в коде.
Итак, возможно ли увидеть изменения в коде, связанном с конкретным ключевым словом в TortoiseSvn Log?
4 ответа
Что вы хотите сделать, так это сделать Blame для этого исходного файла, и он покажет вам ревизии, которые изменили каждую из строк кода.
Я не знаю ни одной команды, которая могла бы дать вам все ревизии для данной строки кода... что вы можете сделать, это сделать show log для одного файла, а затем посмотреть на каждую из ревизий, которые имели место через некоторое время.
Вина Мезоида звучит правильно. Кроме того, я хотел бы поделиться техникой, которая может пригодиться пользователям svn из командной строки. (Речь идет о svn вины, но я использую синоним "аннотировать", или "svn ann", потому что "вины" звучит довольно резко!)
Итак, у вас есть строка, которая вас интересует, и на ней есть отличительная строка "correctiveString". Вы хотите прочитать сообщение о фиксации, когда строка была впервые введена, но, возможно, она была отредактирована несколько раз. Итак, вы идете вперед и делаете это:
# svn ann that.file | grep distinctiveString
2345 yada yada distinctiveString blah blah
Взгляд на ваш веб-интерфейс TRAC для svn показывает, что r2345 просто изменил отступ строки, это была не ревизия, на которой была введена линия. Итак, затем вы используете флаг -R (или -r, убедитесь, что svn help ann), чтобы указать ревизию на единицу меньше, чем ревизия, найденная на предыдущем шаге:
# svn ann -R 2344 that.file|grep distinctiveString
2211 yada yada distinctiveString blah blah
Промойте и повторяйте, пока не найдете оригинал.
Вы можете опустить поиск TRAC на каждом шаге, просто повторяя до тех пор, пока вы больше не увидите линию, и беря результат предпоследней итерации.
Хорошо, это немного трудоемко, но если вы действительно хотите знать, кто ввел эту строку, она сделает свою работу. Это может сэкономить ваше время, если исходное сообщение о фиксации объясняет намерение неясного фрагмента кода, который в противном случае выглядит так, как будто его можно удалить.
Вы можете щелкнуть правой кнопкой мыши файл в своем репо и выбрать TortoiseSVN-> Показать журнал, чтобы получить ревизии, на которые повлиял этот файл. По одной строке, я не знаю, как.
Я искал ту же самую функцию, и я оказался здесь, и я перестал искать дальше.
Но вот техника, которую я использую, и она может помочь кому-то еще:
- Определите интересующую линию. Последний звонок: строка 123.
- Используйте для Черепаха, чтобы "показать журнал" файла.
- Рассмотрим полный список в журнале.
- Если вы не знаете, когда это могло произойти, используйте "настройку быстрой сортировки", то есть перейдите к ревизии в середине списка, щелкните правой кнопкой мыши и "сравните с рабочей копией".
- Если строка 123 существует (то же самое содержание, но, возможно, другой номер строки), то теперь вы должны рассмотреть только нижнюю половину списка, иначе вы должны теперь рассмотреть только верхнюю половину списка. Вернитесь к шагу 4.
Это проще сделать, чем объяснить. Поскольку этот текст предназначен для разработчиков, я понимаю, что нет необходимости добавлять больше деталей:)