info = svn.info(fn)
if info == None:
popup('not yet added to repository, '+ \
'will do that now')
svn.add(fn)
После сохранения содержимого текстового буфера в связанный с ним файл, функция вызывает метод
file=open(fn,'wb')
file.write('\n'.join(txt.asLines()))
file.close()
if svn.status(fn)[0].text_status ==
pysvn.wc_status_kind.modified:
c=Draw.PupMenu('file probably newer than '+ \
'version in repository%t|Commit|Discard changes')
if c==1:
svn.checkin(fn,'Blender')
return
elif c==2:
svn.revert(fn)
После извлечения версии из хранилища мы обновляем содержание нашего текстового буфера:
txt.clear()
file=open(fn)
txt.write(file.read())
file.close()
Наконец, мы сообщаем пользователю с помощью всплывающего окна, какой номер версии содержится в текстовом буфере, снова вызывая метод
popup('updated to rev. '
+str(svn.status(fn)[0].entry.commit_revision))
if __name__ == '__main__':
run()
Полный код доступен как
Хотя полный урок по работе с Subversion выходит за рамки этой книги, вероятно, будет полезным набросать схему рабочего процесса для проекта Блендера, в котором скриптовые компоненты пишутся через систему контроля версий.
Важно понимать, что сам проект Блендера не должен находиться под управлением системы контроля версий. Мы можем организовать наш проект Блендера любым способом, который имеет смысл, и расположить каталог
Скажем, что мы создали хранилище для скриптов на сетевом устройстве хранения, и создали каталог проекта Блендера на нашей локальной машине. Для того, чтобы перевести наши скрипты под управление версиями, мы должны выполнить следующие шаги:
1. Подтвердить (Check out) хранилище скриптов внутри нашего каталога проекта Блендера (это называется рабочая копия хранилища).
2. Создать скрипт в нашем
3. Сохранить этот скрипт в рабочую копию.
4. Каждый раз, когда мы что-то изменяем, мы нажимаем
5. Каждый раз, когда мы начинаем работать с нашим скриптом снова, мы нажимаем сначала
Обратите внимание, что ничто не мешает включить все активы, такие как текстуры или
The need for speed (жажда скорости) — использование Psyco
Питон является интерпретируемым языком: все инструкции в скрипте интерпретируются и выполняются снова и снова, когда они встречаются. Это может звучать неэффективным, но для разработчиков программ преимущество возможности быстро разработать и протестировать программу может перевесить недостаток медленного выполнения программы. И интерпретация может быть неэффективной но, это не идентично тому, что она всегда медленная. Питон является очень высокоуровневым языком, в котором единственный языковой элемент может быть эквивалентом множества низкоуровневых инструкций. Кроме того, с учетом современного аппаратного обеспечения, даже медленный скрипт может закончить работу быстрее, чем пользователь ожидает результат.