|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Доброе время суток, хотелось бы нечто подобного как Visual Studio, дабы контроль версий для метаданных иметь. Причем не для всего дампа в целом а для каждой сущности (таблицы, процедуры, триггера итп) раздельно, что б и откатывать по отдельности можно было и историю смотреть итп. Соотв. можно было бы и проект для базы придумать (по тому же принципу как в VS). Или на крайний случай, хотя бы экспорт метаданных для каждой сущности в отдельный файл с опцией если контрольная сумма файла не поменялась не перезаписывать, а там уж сами svn или кому что прикрутим. (без проверки контрольной суммы тоже в принципе можно обойтись, но тогда прийдётся копирование в проект самому выполнять). Красивее конечно был бы первый вариант (с интеграцией svn в IBExpert итп), но как промежуточный второй тоже бы выручил, по сути экспорт метаданных разделяя сущности пофайлово не так уж сложно сделать? только систему именования файлов придумать, что думаю тоже труда не составит. что скажете? наверняка идея уже витала? Спасибо за ответ ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2015, 19:45 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoхотелось бы нечто подобного как Visual Studio, дабы контроль версий для метаданных иметь. Причем не для всего дампа в целом а для каждой сущности (таблицы, процедуры, триггера итп) раздельно, что б и откатывать по отдельности можно было и историю смотреть итп. Соотв. можно было бы и проект для базы придумать (по тому же принципу как в VS). понимаешь ли сущности они связанными могут быть. И изменения в них тоже связанными. Так что только целиком для всей базы. Mikhail TchervonenkoКрасивее конечно был бы первый вариант (с интеграцией svn в IBExpert итп), но как промежуточный второй тоже бы выручил, по сути экспорт метаданных разделяя сущности пофайлово не так уж сложно сделать? только систему именования файлов придумать, что думаю тоже труда не составит. это конечно можно сделать вот только зачем. Как тебе удобно будет накатить обновления при изменении 5 процедур и трёх таблиц? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2015, 20:48 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko, Если я правильно понял мысль, тут все от принципа разработки идет. У нас в процессе разработки версионность контролируется системой контроля версий (капитан, ага). Другими словами, база данных - это набор скриптов, которые скармливаются isql-ю, а не fdb-файл. Если в базе что-то меняется, тогда результат оформляется в виде опять же скрипта с названием вида programname_1234.sql и сбрасывается в систему контроля версий. Учитывая, что кроме метаданных в базе зачастую есть и какие-то начальные данные, от которых зависит работа базы и/или клиентских приложений, то контроль ТОЛЬКО метаданных (нам) не нужен от слова "совсем". А если прикручивать автоматизацию контроля и данных и метаданных, причем с кучей самых невообразимых фильтров для данных... Короче, скрипты - первичны, все остальное (в рассматриваемом случае) - от лукавого. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2015, 21:06 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Я вот тут описывал свой вариант, вкратце - по команде из IBE экстрактится весь скрипт БД и запускается диалог коммита. Для небольших баз и одного разработчика хватает, на большие масштабы возможно надо модифицировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2015, 11:33 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
А лог изменений и скрипт апдейта БД от предыдущей версии до текущей - суть разные вещи, и смешивать их не стоит. Для примера можно взять некую ХП объемом в 64 кило текста и изменение, состоящее в замене - на + в одном единственном месте. Лог будет наглядным в одну строчку, а скрипт апдейта - всё те же 64 кило. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2015, 11:37 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Кстати, в IBE есть и встроенная version history, а также возможность писать в лог все операции с метаданными ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2015, 11:39 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Симонов ДенисMikhail Tchervonenkoхотелось бы нечто подобного как Visual Studio, дабы контроль версий для метаданных иметь. Причем не для всего дампа в целом а для каждой сущности (таблицы, процедуры, триггера итп) раздельно, что б и откатывать по отдельности можно было и историю смотреть итп. Соотв. можно было бы и проект для базы придумать (по тому же принципу как в VS). понимаешь ли сущности они связанными могут быть. И изменения в них тоже связанными. Так что только целиком для всей базы. Mikhail TchervonenkoКрасивее конечно был бы первый вариант (с интеграцией svn в IBExpert итп), но как промежуточный второй тоже бы выручил, по сути экспорт метаданных разделяя сущности пофайлово не так уж сложно сделать? только систему именования файлов придумать, что думаю тоже труда не составит. это конечно можно сделать вот только зачем. Как тебе удобно будет накатить обновления при изменении 5 процедур и трёх таблиц? это понятно, но тут больше интересует история изменений сущностей по отдельности нежели автоматизация обновлений при откате. Скрипт обновления создаётся один раз и хранить его историю смысла нет (хоть он у нас и в svn тоже пихается). Можно конечно весь дамп пихать и потом сравнивать дампы целиком (что и делается) но на больших базах это трудоёмко и тебует больше времени. Опять же, хотелось бы уже в логе svn видеть что когда и кем изменилось а не выискивать это при сравнении дампов. По сути разбиение дампа на файлы с сущностями решило бы эту проблему. А для определения последоваьельности накатывания этих сущностей можно при генерации их нумеровать, тогда и последовательность не нарушится. Естественно если есть связь это уже на совести разработчика, тут никакой код нас не заменит. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2015, 18:20 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Fr0sT-BrutalКстати, в IBE есть и встроенная version history, а также возможность писать в лог все операции с метаданными если можно подробнее что Вы имеете тут ввиду, где это посмотреть? о каком пункте в меню IBex речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2015, 18:23 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Mikhail TchervonenkoFr0sT-BrutalКстати, в IBE есть и встроенная version history, а также возможность писать в лог все операции с метаданными если можно подробнее что Вы имеете тут ввиду, где это посмотреть? о каком пункте в меню IBex речь? Для любого объекта базы данных - вкладка Version history. При первом обращении експерт спросит разрешения создать служебные таблицы для хранения истории. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2015, 18:28 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
miwaonlineMikhail Tchervonenkoпропущено... если можно подробнее что Вы имеете тут ввиду, где это посмотреть? о каком пункте в меню IBex речь? Для любого объекта базы данных - вкладка Version history. Упс, солгал. Только для вьюх, процедур и триггеров. Ну, домены и прочие ексепшены еще туда-сюда, а вот отстутствие этой фичи для таблиц делает ее слегка ненужной. ИМХО, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2015, 18:32 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Угу, оно. Правда, сам не юзал. А так для истории изменений, по-моему, одного скрипта со всеми метаданными базы вполне достаточно. Задачу быстрого поиска по объектам в логе можно решить административно, путем фиксации шаблона коммит-мессаги ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2015, 19:10 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal, Если просто видеть изменения метаданных - тогда согласен насчет полного скрипта. Более того, оно и без фиксации шаблона все будет видно. diff все покажет, а какой-нить TortoiseGIT/SVN еще и раскрасит в разные цвета. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2015, 19:55 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
miwaonline, не всегда. Например, мелкое изменение в середине длиннющей ХП - diff покажет несколько строк до и после, но не подхватит заголовок, а в Тортоизе замаешься искать название этой ХП. Возможно, есть какие-то хитрые настройки diff-a, чтобы идентифицировать блок с изменениями, но я такого не знаю. Зато при введении шаблона коммит-сообщения история по каждому объекту элементарно отфильтровывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2015, 11:15 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Fr0sT-Brutalв Тортоизе замаешься искать название этой ХП.по номеру строки в эталонном скрипте искать пробовал? подозрительный номерок перед измененным куском @@ -92,6 +92,7 @@ ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2015, 11:45 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, не в том проблема. Вот в окне открыта простыня на 20 экранов с кодом одной ХП и в середине нее изменение. Задача найти название этой ХП требует действий, времени и ни фига не автоматизируется. А твой сценарий вообще жуть: посмотреть номер, запомнить его, открыть полный скрипт в редакторе, запустить диалог перехода к строке, ввести номер, перейти к строке, а дальше - упс... проматывать вручную вверх до заголовка. Либо юзать продвинутые редакторы с деревом объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2015, 16:31 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Fr0sT-BrutalВот в окне открыта простыня на 20 экранов с кодом одной ХП и в середине нее изменение.Кто не может структурировать свои мысли и пишет портянки кода на 20 экранов вполне закономерно должен страдать. Fr0sT-BrutalЛибо юзать продвинутые редакторы с деревом объектов.Внезапно, такой есть в эксперте. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2015, 17:20 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
>Кто не может структурировать свои мысли и пишет портянки кода на 20 экранов вполне закономерно должен страдать. Ну, множить сущности без особой нужды тоже не есть гуд. Да даже если не 20 экранов, а 5 - уже задача найти название ХП требует кучи действий >Внезапно, такой есть в эксперте. О, че-то не подумал, что можно открывать скрипт из файла. Тем не менее, он не подсвечивает в дереве тот объект, на котором находится курсор ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 10:37 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal посеял пароль блинон не подсвечивает в дереве тот объект, на котором находится курсорПиши челобитную, сам знаешь кому. Fr0sT-Brutal посеял пароль блинзадача найти название ХП требует кучи действийпопробовал на своих метаданных, проблем не обнаружил, хотя скрипт примерно на 15 мег, там довольно много объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2015, 13:13 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
У мну для этих целей скрипт на Python-чике. Вызывает isql для получения текстового дампа базы, из которого потом вычищает ненужные данные. Этот дамп и отдаётся svn-у. Раньше использовал IBEScript, но переехал полностью под linux, а настраивать для этого wine и ловить глюки заломало. :) По поводу портянок на 5-20 экранов - полностью согласен - не нужно больших портянок. Кстати, git diff показывает имена функций/методов для C\C++ и Python точно. Может и для SQL умеет? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2015, 08:27 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Не планирую этим заниматься в обозримом будущем. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2015, 12:13 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko, Для себя сделал такой файл exract_db.sql Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128.
Вызов через bat db2svn.bat Код: sql 1.
Где первый параметр " Name " название БД (не путь). По нему из реестра читаю DBNAme Второй Path - папка в которой создается папка с именем " Имя_БД _db", в которой будут файлы для SVN. В моем случае это папка проекта Третий - необязательный DBNаme - если не указан берется из реестра Дополнительно в текущей папке проверяется наличие файла Name .data Это для версионирования данных таблиц. Каждая строка - имя таблицы, и при необходимости, после знака табуляции, условие WHERE На примере EMPLOYEE.FDB EMPLOYEE.data Код: plaintext 1. 2.
вызов: Код: plaintext
В результате в папке d:\projects\MyProject будет создана папка EMPLOYEE_db. В ней по файлу на каждый объект БД. Файлы COUNTRY.data, PROJECT.data - данные соответствующих таблиц EMPLOYEE_db.txt в котором хранится текущий DBName (C:\Program Files\Firebird\Firebird_2_5\examples\empbuild\EMPLOYEE.FDB) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2015, 13:33 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
Чтоб не создавать новую тему Возможно ли настроить ibec_ExtractMetadata так чтоб из результата убрать в комментарии дату генерации скрипта? т.е. вместо Код: sql 1.
получить Код: sql 1.
нужно для систем контроля версий. а то получается, что сами метаданные не меняются, но из за времени получаем отличия в версиях файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2015, 23:13 |
|
Контроль версий в FB
|
|||
---|---|---|---|
#18+
noisy_byВозможно ли настроить ibec_ExtractMetadata так чтоб из результата убрать в комментарии дату генерации скрипта? т.е. вместо Только дату убрать нельзя, а комментарии вообще убираются добвлением опции SuppressComments. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2015, 15:44 |
|
|
start [/forum/topic.php?fid=42&fpage=28&tid=1599477]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 307ms |
total: | 452ms |
0 / 0 |