Номер ревизии в PHP, SVN

Активист

Активист
Команда форума
Номер ревизии в PHP, SVN

Нужно следующее, вставить в код SVN номер ревизии.
Делаю аутопатч БД.

есть файл
core/class.db.patch.php
PHP:
class dbPatch {
/**
* Contain current version (revision)
*
* @var int
/
private $revision = "152"; // тут нужно автоматически ставить номер ревизии

// ...
// ...
// ...
}

Для чего все это? (кому интересно)

Есть папка
core/patches/

Она содержит два типа файла:
- sql
- php

Следующего вида
112.sql
124.php
т.е. [номер ревизий].(sql|php)

Идет разработка проекта, пока разрабатывается какой-то этап - комментим по несколько раз на дню. Я делаю какое-то изменение в СУБД или нужно что-то переформировать БД - пишу соответсвующий скрипт, далее, правлю номер ревизии в аутопатче и когда человек обновляется - применяются аутопатчи. Раньше, таскали БД, но сейчас он большая.

Также, запустили в интернете уже работающий проект, ревизия его X, после выполнения этапа - обновляем на сервере через СВН - применяются утопатчи (по порядку) и проект работает без сбоев.

Очень удобно :) И ни каких тех работ - 100% аптайм :)
 

pilot911

Новичок
еще как вариант (из Typo3) - есть sql файл создания БД (create table) - он парсится в каком-нибудь разделе инстоллера и пхп скрипт сравнивает поля с существующими в БД

после этого скриптом создаются нужные ALTER TABLE и загоняются в запрос


пример тут
 

atv

Новичок
PHP:
private $revision = "$Revision$";
для файлов нужно проставить svn:keywords="Id Revision Author";
 

AmdY

Пью пиво
Команда форума
кто-то пытается изобрести заново миграцию?
 

AmdY

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

migration
---1.php
---2.php
.....
1.php
db_add_column('table', 'name', $option);
db_insert($data);

и т.к. далее.
 

Активист

Активист
Команда форума
pilot911
Это мягко говоря изврат. Не решается и важный вопрос - это обработка и трансформация существующих данных в БД.

-~{}~ 25.02.09 23:46:

AmdY
Хм, я это и реализовываю
 

Активист

Активист
Команда форума
Где нужно сделать простой SQL - делается SQL (у нас верстальщики модули модифировать уже начали), если нужно реструктуризовать БД - выполняется PHP.
 

fixxxer

К.О.
Партнер клуба
кстати, когда такой вопрос поднимался, я предлагал в комменте к табличке номер ее версии хранить :)

не помню правда чем там все закончилось ))
 

Активист

Активист
Команда форума
fixxxer
Да, помню, обсуждалось бурно. Правда не к чему стоящему не пришли ))
 

pilot911

Новичок
Автор оригинала: Активист
pilot911
Это мягко говоря изврат. Не решается и важный вопрос - это обработка и трансформация существующих данных в БД.
вообще делалось так - есть один общий на всех sql в svn, в который каждый прогер добавляет свои ALTER, CREATE TABLE и тп

потом это все комитится вместе со скриптами и кто-то один последовательно выполняет запрос за запросом из этого файла

конечно, в файл ставятся метки в виде даты последнего обновления базы
 

pilot911

Новичок
Автор оригинала: Активист
pilot911
Как ты сам считаешь, это нормально? ))
если проект большой, то конечно...

в больших проектах подобные вещи делаются вручную.. ибо один alter можно занять 6 часов работы ночью на базе в 70млн записей
 

fixxxer

К.О.
Партнер клуба
Ну кстати действительно нормально. Если надо обойти стопицот шард с одинаковой структурой. Так тоже делаем =)
 

AmdY

Пью пиво
Команда форума
fixxxer
уже есть и в php в доктрине, только вроде ещё маном не покрыто толком
 

atv

Новичок
MDB2_Schema из PEAR может по двум схемам базы (предыдущая и текущая в xml формате) вносить изменения в структуру. Заявлена, также, и поддержка изменений данных. Правда с данными не всё гладко (с кодировками), да и структуру ещё не гонял на полную.
 
Сверху