Проблема SVN: Каков последний пересмотр, который все еще содержал этот фрагмент кода?

Фрагменты и жизненные циклы действий работают параллельно. Линейная зависимость между их жизненным циклом заканчивается, как только создается активность и фрагмент.

На следующем рисунке объясняется, как два жизненных цикла взаимосвязаны.

enter image description here

Обратите внимание, что onStart и onResume (и, аналогично, onStop и onPause) для фрагмента и действия выполняются параллельно и нет гарантии заказа. Иногда фрагмент будет иметь приоритет над активностью, и наоборот.

Единственная гарантия - то, что onCreate действия всегда будет вызываться первым. После этого фрагмент действует сам по себе.

10
задан Frank 19 April 2009 в 03:19
поделиться

4 ответа

Я погуглил еще немного и нашел следующий сценарий (см. здесь). Я протестировал его кратко, и это, кажется, хорошо работает:

rev_grep.sh
=====================
#!/bin/ksh

URL=$1
REGEX=$2

LAST_REV="n/a"

svn log -q $URL | perl -ne 'print "$1\n" if /^r(\d+)/' |
while read r
do
    ##svn cat -r $r $URL | grep "$REGEX" > /dev/null
    BUFFER=`svn cat -r $r $URL | grep "$REGEX"`
    RET=$?
    if [ $RET -eq 0 ]
    then
        echo "Match in revision: $r. Removed in $LAST_REV."
        echo $BUFFER

        exit 0

    elif [ $RET -ne 1 ]
    then
        ## grep hit an error
        exit 2
    fi

    LAST_REV=$r
done
exit 1 

Единственная проблема состоит в том, что, если Ваш репозиторий требует пароля, необходимо будет много раз вводить его.

6
ответ дан 3 December 2019 в 23:15
поделиться

Как оказалось, у Мерзавца есть точно эта функция. Можно использовать Мерзавца для клонирования репозитория Подверсии (использование git svn), и затем используйте инструменты Git (в особенности gitk делает это легким) искать любой текст, добавленный или удаленный где угодно в истории репозитория.

Для нахождения последнего пересмотра, который все еще содержал некоторый определенный текст можно использовать git bisect эффективно искать историю пересмотр где некоторое измененное условие.

3
ответ дан 3 December 2019 в 23:15
поделиться

Я предполагаю, получит несколько отрицательных голосов за это...

Существуют некоторые вещи, которые более легко решены на нетехнических основаниях. Запишите в сообщении журнала, что Вы удаляете функцию. Поиск удалений будет просто анализировать журнал svn:

$ svn commit file.c -m "Removal of void deprecated_function()"

Теперь можно просто искать журнал. Фиксации должны всегда определять на человекочитаемом коротком пути, каковы изменения.

2
ответ дан 3 December 2019 в 23:15
поделиться

Это похоже на сценарий оболочки из ответа dehman, но написан на python. Таким образом, вам понадобится только python для запуска сценария и, возможно, более удобный для различных операционных систем.

import os
import re

filename = 'CustomROIMarker.cpp'
stringToFind = 'ImageMarker::outOfDataSet;'

log = os.popen('svn log ' + filename).read()
versions = re.findall('r\d+',log)
for v in versions:
    numVer =  int(v.strip('r'))
    cmdString = 'svn cat -r ' + str(numVer) + ' ' + filename
    contents = os.popen(cmdString).read()
    if re.search(stringToFind,contents) != None:
        print "Present in " + str(numVer)
    else:
        print "Not Present in " + str(numVer)

Вам придется отредактировать имя файла и переменные stringToFind.

3
ответ дан 3 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

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