найдите svn пересмотр удаленным текстом

Существует ли способ найти пересмотр SVN путем поиска текстовой строки, которая была удалена в файле? Я знаю, что точный текст ищет и который файл заглянуть, но существуют сотни изменений.

33
задан martin_ljchan 29 April 2010 в 09:16
поделиться

2 ответа

Основываясь на скрипте khmarbaise, я придумал следующее:

#!/bin/bash
file="$1"
REVISIONS=`svn log $file -q --stop-on-copy |grep "^r" | cut -d"r" -f2 | cut -d" " -f1`
for rev in $REVISIONS; do
    prevRev=$(($rev-1))
    difftext=`svn diff --old=$file@$prevRev --new=$file@$rev | tr -s " " | grep -v " -\ \- " | grep -e "$2"`
    if [ -n "$difftext" ]; then
        echo "$rev: $difftext"
    fi
done

передать имя файла и строку поиска в командной строке:

xyz.sh "filename" "text to search"

svn diff дает мне и rev, где он добавлен и где он удален; Я оставлю его здесь на случай, если он кому-то пригодится. В последней ревизии есть сообщение об ошибке, от которого я не знаю, как избавиться (мне все еще нужно изучить bash :)), но номера ревизий верны.

31
ответ дан 27 November 2019 в 18:34
поделиться

просто небольшой скрипт на bash который отфильтровывает измененные строки ... Если вы измените pom.xml в свой файл, возможно, с дополнительным URL-адресом у вас будет то, что вам нужно ... (если вы используете систему, подобную Unix). Поместите следующее в файл сценария (xyz.sh) и выполните фильтр на выходе.

#!/bin/bash
REVISIONS=`svn log pom.xml -q|grep "^r" | cut -d"r" -f2 | cut -d" " -f1`
for rev in $REVISIONS; do
    svn blame -r$rev:$rev pom.xml | tr -s " " | grep -v " -\ \- "
done


xyz.sh | grep "Text you are searching for"

Распечатка будет выглядеть примерно так:

256 ......

256 - это ревизия, в которой были внесены изменения.

9
ответ дан 27 November 2019 в 18:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: