Фрагменты и жизненные циклы действий работают параллельно. Линейная зависимость между их жизненным циклом заканчивается, как только создается активность и фрагмент.
На следующем рисунке объясняется, как два жизненных цикла взаимосвязаны.
Обратите внимание, что onStart
и onResume
(и, аналогично, onStop
и onPause
) для фрагмента и действия выполняются параллельно и нет гарантии заказа. Иногда фрагмент будет иметь приоритет над активностью, и наоборот.
Единственная гарантия - то, что onCreate
действия всегда будет вызываться первым. После этого фрагмент действует сам по себе.
Я погуглил еще немного и нашел следующий сценарий (см. здесь). Я протестировал его кратко, и это, кажется, хорошо работает:
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
Единственная проблема состоит в том, что, если Ваш репозиторий требует пароля, необходимо будет много раз вводить его.
Как оказалось, у Мерзавца есть точно эта функция. Можно использовать Мерзавца для клонирования репозитория Подверсии (использование git svn
), и затем используйте инструменты Git (в особенности gitk
делает это легким) искать любой текст, добавленный или удаленный где угодно в истории репозитория.
Для нахождения последнего пересмотра, который все еще содержал некоторый определенный текст можно использовать git bisect
эффективно искать историю пересмотр где некоторое измененное условие.
Я предполагаю, получит несколько отрицательных голосов за это...
Существуют некоторые вещи, которые более легко решены на нетехнических основаниях. Запишите в сообщении журнала, что Вы удаляете функцию. Поиск удалений будет просто анализировать журнал svn:
$ svn commit file.c -m "Removal of void deprecated_function()"
Теперь можно просто искать журнал. Фиксации должны всегда определять на человекочитаемом коротком пути, каковы изменения.
Это похоже на сценарий оболочки из ответа 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.