Як знайти, хто видалив рядок з файлу у сховищі SVN?


12

Я працюю над дуже великим проектом (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
Так, це відмінно підходить для одного пострілу, але мені потрібно те, що часто можна використовувати регулярно.
Іван Петрушев

3

svn log --diffбуде ідентифікувати видалення з "-" у стовпці нуль. Виберіть також "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.