Как узнать, кто удалил строку из файла в репозитории SVN?


11

Я работаю над очень большим проектом (более 10000 версий), и иногда случается так, что мне нужно знать, кто из других пользователей удалил какую-то строку в файле. Есть ли способ сделать это? Я могу сделать svn blameномер ревизии, чтобы проверить, существует ли строка в этой ревизии, затем посмотреть, в какой ревизии эта строка пропала, и посмотреть, кто внес эту ревизию, но эта процедура неэффективна в этом большом проекте.

Есть ли более умный способ сделать это?

Ответы:


5

Это делает то, что вам нужно автоматически, хотя и не очень быстро, потому что не использует бинарный поиск, как предложено выше:

svn log FILE | egrep '^r[0-9]' | sed -e 's/ .*//' | while read rev; do echo $rev ; svn cat FILE -"$rev" | grep "case STRING" && break  ; done 

5

Я бы проверил историю файла и попытался бы быстро найти ревизию, где присутствует эта строка, а затем обвинить между HEAD и этой ревизией.

Если файл прошел 100 ревизий с момента его создания, то если вы выполняете бинарный поиск по ревизиям, ищущим эту строку, вам не нужно просматривать более 10 разных ревизий.


Я не вижу мнения, все это выглядит как хороший совет для меня: P
Phoshi

1
Это так же, как мой подход. Я хочу что-то проще / быстрее, чем смотреть в 10 ревизиях.
Иван Петрушев

... это 10 ревизий. К тому времени, когда вы разместили вышеупомянутый вопрос, вы уже можете сделать это. Если это не то, что вам придется делать снова, в этом случае не обращайте внимания на мои комментарии.
ta.speot.is

2
Да, это отлично для одного выстрела, но мне нужно что-то, что можно часто использовать на регулярной основе.
Иван Петрушев

2

svn log --diffбудет идентифицировать удаления с "-" в нулевом столбце. Grep для «r» также, чтобы вы могли видеть ревизию.

% svn log --diff src/fozbo.cpp -r22222:HEAD | grep -e '^r' -e '^-.*xyzzy'
r22222 | jruser | 2016-07-19 20:16:07 -0400 (Tue, 19 Jul 2016) | 1 line
-   else if ( password== "xyzzy") {

Существует также, svn log --searchно это будет только искать сообщение коммита.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.