powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Version Control для pl/sql
67 сообщений из 67, показаны все 3 страниц
Version Control для pl/sql
    #39528420
Фотография Goofy122
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто знает есть ли Version Control для pl/sql типо GIT. При чтобы не обновять вручную. Если есть дайте напишите название пожалуйста
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528424
капица
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Goofy122типо GITgit
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528432
Фотография Goofy122
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
капицаGoofy122типо GITgit

Для PL/SQL
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528434
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goofy122Version Control для pl/sqlЧто значит "для pl/sql"?Goofy122При чтобы не обновять вручную.Что значит "обновять вручную"?

Формализуй требования.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528496
Фотография Goofy122
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadGoofy122Version Control для pl/sqlЧто значит "для pl/sql"?Goofy122При чтобы не обновять вручную.Что значит "обновять вручную"?

Формализуй требования.


Извиняюсь за глупый вопрос , я просто ни разу не использовал. Например в GIT если создать папку и перебрасывать pl/sql файлы то есть packages. При каждом обновлении дайлов packages (Merce) в Git. Они буду именяться то есть для каждого девелопера , чтобы видели последние изменения ?
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528501
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прекрасное владение русским языком.
Задайте себе вопрос: "какая разница, PL/SQL или в системе контроля версий или что-то еще".
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528515
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goofy122,

Вариант 1: Для ленивых
Некоторые программы умеют генерировать скрипт создания схемы / или даже всей базы и сохранять его в гигантский такой текстовый файл. Его можно сохранять в GIT. На первый взгляд круто и достаточно, но когда сущности иногда переименовываются (не только таблицы, но и процедуры), то в скрипте меняется порядок следования этих сущностей. И это затрудняет сравнение старых и новых версий. По-этому предлагаю 2-ой вариант.


Вариант 2: Мой путь

веду разработку

а) проектирование таблиц / связей / секвенций в ER/Win.
- который экспортирует скрипт создания схемы в большой текстовый файл

б) остальное в PL/SQL- Developer'e
- триггеров
- процедур и функций
- VIEW
- пакетов
- и т.д. (короче всех остальных объектов)

... и всё что попадает в БД сохраняется мной [Ctrl+S] в текстовые файлы. ВСЕГДА.


В результате имеем папку с текстовыми файлами, которые удобно сохранять в GIT'e
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528518
Goofy122Извиняюсь за глупый вопрос , я просто ни разу не использовал.


Не обращай внимание, тут не умеют объяснять. Сейчас я тебе объясню.

GIT можна накат и все pl/sql и розаработчеки видет тваи изменения пакет новый. А еще локально клавиатура писать править, все харашо.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528526
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goofy122,

Большинство IDE умеют интегрироваться с системой контроля версий. Но вся разработка при этом идёт через файлы - без вариантов.

Реактивный (т.е. по факту изменения) вариант уже предложили - генерить скрипт из бд.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528532
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён,

А как накатываешь изменения на уже работающую бд?
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528542
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goofy122,

Данный отвечатель делает так:
git checkout
git pull
Файл объкта в редакторе открывай, изменения делай, на диск сохраняй.
git add
git commit
git push
Если команд лайн тяжело понимай tortoise svn мочь тебе помогай данная задача выполняй,
есть интеграция в intellij и прочая IDE - тогда пыхти, код пиши, когда готово мышкой клик vcs -> commit changes IDE за тебя изменения заливай.

А можно так: потей воняй на другую система контроля переходи всё UI,
гит когда бранч для каждый девелопер и команд лайн забывай, голову не засоряй.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528544
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528556
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadКроик Семён,
А как накатываешь изменения на уже работающую бд?


проектирую на девелоперской базе

все CREATE TABLE / ALTER TABLE / INSERT / UPDATE / RENAMEs записываю в Update-скрипт

внизу этого скрипта еще TODO-список из указаний, какие процедуры/функции/пакеты создать. Они лежат и разрабатываются в виде отдельных файлов и не имеет смысла их полностю раскрывать в Update-скрипте

когда приходит час X: если оповещаю пользователей, затем подменяю EXE-файл с клиентским приложением, затем выполняю Update-скрипт со всеми TODO, затем компилирую invalid objects. Если никто не блокирует никаких таблиц, то аптейт умещается в 1-5 минут в зависимости от длины TODO-списка
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528565
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
забыл самое важное сказать

Update-скрипт накатываю в программе Keeptool HORA
всё из-за того, что когда встречается фрагмент Update-скрипта, который вызывает ошибку, то накатывание останавливается и HORA перематывает скрипт до этого места задает вопрос, выполнять дальше или остановка.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528568
Фотография Goofy122
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик СемёнGoofy122,

Вариант 1: Для ленивых
Некоторые программы умеют генерировать скрипт создания схемы / или даже всей базы и сохранять его в гигантский такой текстовый файл. Его можно сохранять в GIT. На первый взгляд круто и достаточно, но когда сущности иногда переименовываются (не только таблицы, но и процедуры), то в скрипте меняется порядок следования этих сущностей. И это затрудняет сравнение старых и новых версий. По-этому предлагаю 2-ой вариант.


Вариант 2: Мой путь

веду разработку

а) проектирование таблиц / связей / секвенций в ER/Win.
- который экспортирует скрипт создания схемы в большой текстовый файл

б) остальное в PL/SQL- Developer'e
- триггеров
- процедур и функций
- VIEW
- пакетов
- и т.д. (короче всех остальных объектов)

... и всё что попадает в БД сохраняется мной [Ctrl+S] в текстовые файлы. ВСЕГДА.


В результате имеем папку с текстовыми файлами, которые удобно сохранять в GIT'e


То что нужно спасибо большое
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528571
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик СемёнAmKadКроик Семён,
А как накатываешь изменения на уже работающую бд?


проектирую на девелоперской базе

все CREATE TABLE / ALTER TABLE / INSERT / UPDATE / RENAMEs записываю в Update-скрипт

внизу этого скрипта еще TODO-список из указаний, какие процедуры/функции/пакеты создать. Они лежат и разрабатываются в виде отдельных файлов и не имеет смысла их полностю раскрывать в Update-скрипте
Бывает так, что забыл добавить в update-скрипт или вызвать перекомпиляцию измененной ХП, и в результате, получил состояние прода, отличающее неполнотой по отношению к дев-у? Если да, то сколько времени уходит на то, чтобы понять, какое из изменений было пропущено?
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528607
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такое всего пару раз случалось за десять лет
и учитывая, что у меня в основном не ХП, а пакеты с процедурами/функциями, то и неправильная версия пакета вылетает очень быстро у какого-нибудь из пользователей через пару минут после апдейта с сообщением, что обращение к несуществующей процедуре
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528763
sharkerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Goofy122Кто знает есть ли Version Control для pl/sql типо GIT. При чтобы не обновять вручную. Если есть дайте напишите название пожалуйста

Gitora http://www.gitora.com/
либо liquibase http://www.liquibase.org/, но нужно допиливать плагин для Oracle (ограниченный он какой-то)
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528764
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sharkerrлибо liquibase http://www.liquibase.org/, но нужно допиливать плагин для Oracle (ограниченный он какой-то)А можно поподробнее?
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528829
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sharkerr, orac_listGitora http://www.gitora.com/ Посмотрел презентацию и документацию, касающуюся Managed Schema. Позволю себе попридираться.

0) Презентация содержит только примеры управление пакетами. Продемонстрирована только двусторонняя синхронизация между активной веткой репозитория и БД - только на примере пакетов, это не очень интересно. Гораздо интереснее было бы взглянуть на управление hard objects (выражение взято из их документации), как таблицы, индексы, констраинты. Идем дальше.
1) Смотрим документацию . Из того, что я понял, на dev-схему вешается некий listener ddl-команд (вероятно ddl-триггер). И прокатив список команд (цитирую из той же доки)

Код: plsql
1.
2.
3.
4.
5.
ALTER TABLE COUNTRIES MODIFY (COUNTRY_NAME VARCHAR2 (200))
 
ALTER TABLE EMPLOYEES ADD (MIDDLE_NAME VARCHAR2 (25))
 
ALTER TABLE COUNTRIES ADD (CURRENCY_NAME VARCHAR2 (200))


в результате на каком-то из последующих этапов (видимо, при коммите) получаем пакет наката на последующие контура:

Пакет для наката
Код: plsql
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.
CREATE OR REPLACE
PACKAGE BODY gitora_model1 IS
 
function doModel return clob is
  v_log_cl clob;
  v_ddl_cl clob;
  v_cursor_int integer;
  return_value integer;
  procedure log(in_text_cl clob) is
  begin
    v_log_cl:=v_log_cl||in_text_cl||chr(10);
  end;
begin
  /*GITORA GENERATED COMMENT. DO NOT EDIT OR REMOVE. ONLY WRITE CODE UNDER THIS LINE.*/
  null;
   
  /*SCRIPT FOR HR.COUNTRIES by user:admin */
  begin
    v_ddl_cl:='ALTER TABLE COUNTRIES 
   MODIFY (
    COUNTRY_NAME VARCHAR2 (200)
   
   )
  ';
    log(v_ddl_cl);
    execute immediate v_ddl_cl;
    log('DDL executed successfully.');
  exception
    when others then
      log('ERROR:'||' '||SQLErrm||' '||dbms_utility.format_error_backtrace);
  end;
   
  /*SCRIPT FOR HR.EMPLOYEES by user:admin */
  begin
    v_ddl_cl:='ALTER TABLE EMPLOYEES 
   ADD (
    MIDDLE_NAME VARCHAR2 (25)
   )
  ';
    log(v_ddl_cl);
    execute immediate v_ddl_cl;
    log('DDL executed successfully.');
  exception
    when others then
      log('ERROR:'||' '||SQLErrm||' '||dbms_utility.format_error_backtrace);
  end;
   
  /*SCRIPT FOR HR.COUNTRIES by user:admin */
  begin
    v_ddl_cl:='ALTER TABLE COUNTRIES 
   ADD (
    CURRENCY_NAME VARCHAR2 (200)
   )
  ';
    log(v_ddl_cl);
    execute immediate v_ddl_cl;
    log('DDL executed successfully.');
  exception
    when others then
      log('ERROR:'||' '||SQLErrm||' '||dbms_utility.format_error_backtrace);
  end;
  /*GITORA GENERATED COMMENT. DO NOT EDIT OR REMOVE. ONLY WRITE CODE ABOVE THIS LINE.*/
  return v_log_cl;
end;
end;

Из того, что мне сразу бросилось в глаза - никакого логирования в перманентные таблицы об ходе выполнения. Собственно, читаем доку дальше.

http://blog.gitora.com/tag/documentation/ Errors during its execution does not prevent the doModel function from executing remaning DDL statements.Да, по коду это видно. Сомнительная фича.

http://blog.gitora.com/tag/documentation/ The function captures these errors and returns them as a CLOB value.Та-а-к. Запустил я процедуру DoModel. А за месячный релиз у меня там столько alter-ов собралось - по пальцам рук и ног десяти сотрудников не сосчитаешь. И тут в какой-то момент у меня теряется связь с сервером (причину выберем самую абсурдную - я ногой случайно пилот выключил) - не получил я ответный clob в общем. Включаю снова комп, переподключаюсь к БД. А как теперь понять, какие alter-ы прошли, а какие упали? У тут я понимаю, что в обещанный мною моему начальнику получасовой простой системы я не укладываюсь, а тот, в свою очередь, премию урежет, и пиво лишний раз на радостях попить не сходишь. Эх нога, нога, лучше б я тебя к стулу привязал.

Ну да ладно, допустим, ногой я не дрыгал и ответный clob все-таки получил. Анализирую. Блин, да там чуть ли не каждый двадцатый-тридцатый alter упал. Почему ж так много-то? А, ну правильно, некоторые последующие завязаны на результаты предыдущих. Причины падения первых могут быть разные - отсутствие привилегий (а ведь наш dba клялся и божился, что тестовое окружение соответствует продовому), нехватка места, квот (на тесте данных было мало, а необходимый объем табличного пространства для индекса на проде мы оценить забыли). Ну ладно, привилегий додали, места добавили/квоты повысили. Конечно, gitora здесь не виноват, здесь виноваты мы, не досмотрели. Но давайте посмотрим, как мы будем выходить из этой ситуации. Что делать дальше?
http://blog.gitora.com/tag/documentation/ This way, the same GITORA_MODEL package can be executed many times even if contains DDL statements that are previously executed in the target database (because these statements will silently fail)Вот те на. 5 баллов! Как мне в результате повторного наката определить: упал alter по той же причине, по которой упал в первый раз, или упал потому, что уже выполнился в первый раз? А-а-а, уже знаю что вы скажете: в log-е есть SQLErrm и dbms_utility.format_error_backtrace - анализируй. Хорошо, пойду писать нетривиальный реглярус, чтобы выдернуть только нужные. Не то что в полчаса, и в час-два времени простоя могу не уложиться.

Вторая сторона абсурдности повторного запуска пакета - вот дернул меня черт добавить в релиз пересоздание индекса с дополнительной колонкой - имя индекса менять не хотелось - много где хинтами прибито. А это два удачно выполнившихся на предыдущем шаге изменения - drop и create. Ну, надеюсь, drop отработает быстро. А create - мне опять сортировку по полному объему таблицы ждать?

Напрашивается выход - аккуратненько из кода пакета после каждого наката выпиливать удачно выполнившиеся изменения (согласно логу) - только бы не ошибиться, с продом ведь работаю, во время простоя не укладываюсь, тороплюсь, нервничаю. Даже боюсь представить, что будет, если ошибусь.

Не раскрыта тема DML-обновлений. Кейс - я хочу добавить поле, заполнить его чем-то (DML: merge или update), а потом сделать его notnull-ным и уникальным. Мне руками вставлять DML в автосгенеренный пакет при каждом коммите?

Резюме : в общем, если у тебя все удачно накатилось с первого раза - считай повезло. Если вылазят ошибки - то с этим инструментом я тебе не завидую.

P.S. По поводу того, что падение применения изменений не останавливает, а продолжает накат - я на вскидку не смог придумать сценария, когда удачное выполнение какого-то DDL после неудачного предыдущего DDL приводит к коллизиям.
С DML-ем все понятно, при падении одного DML все последующие DML запускать нельзя, потому что они могут быть завязаны на результаты первого и выполниться "удачно" (либо запускать только те, что не имеют зависимостей с упавшим).

А вот с DDL: поясню, что имею в виду.
Пусть у нас есть два последовательных изменения, которые согласно скрипту наката должны довести систему до состояния STATE1.
STATE0 -> DDL1 -> DDL2 -> STATE1
Но в результате первого запуска первый упал, но удачно выполнился второй. Мы устранили причину падения первого и перенакатили. В результате имеем:
STATE0 -> DDL2 -> DDL1 -> STATE1'.
Задумался, есть ли такие DDL1 и DDL2, при которых STATE1 != STATE1'? Что-то не могу придумать, если кто знает, поделитесь идеей.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528834
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadЗадумался, есть ли такие DDL1 и DDL2, при которых STATE1 != STATE1'? Что-то не могу придумать, если кто знает, поделитесь идеей.Есть сценарий, при разных исходных состояниях теста и прода: на тесте индекс был, а на проде не было (хотя это само по себе уже косяк), состояние теста = STATE0, а состояние прода = STATE0'.

Drop/create index. На тесте все прошло по хронологи: дропнули, создали. А на проде drop упал, прошел create как DDL2, а потом drop как DDL1. Случай вырожденный, немного не соответствует поставлененому мною вопросу, но все равно неприятный.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528839
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadПозволю себе попридираться.Всё ещё веришь в золотую пулю?
Конкурентный контроль версий в многопользовательской БД - это фикция.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528848
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на вскидку не смог придумать сценария, когда удачное выполнение какого-то DDL после неудачного предыдущего DDL приводит к коллизиям.

create role/table/view
grant на это дело

Конечно, после устранения причины скрипт повторно накатится. DDL можно философски рассматривать как DML словаря :)

За анализ тулзы спасибо.

Основной вывод - без контроля глазами никаким тулзам верить нельзя, и в SVN храним просто PL/SQL код, как и любой другой.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528908
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdmcreate role/table/view
grant на это делоЭто не соответствует постановке моего вопроса - в данном случае второй ddl не пройдет, если не прошел первый.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528910
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicВсё ещё веришь в золотую пулю?
Конкурентный контроль версий в многопользовательской БД - это фикция.В золотую пулю конечно нет.
Меня интересует не столько вопрос ведения версий БД в СКВ в плане хранения PL/SQL кода, сколько вопрос согласованного наката изменений схемы на Dev-Test-Prod контура. Именно поэтому я акцентировал внимание на методе применения alter-ов, предлагаемом в gitora. Допускаю, что у разных подходов могут быть свои плюсы и минусы, но хуже чем этот не придумаешь. Хотя, если продукт развивается, вполне возможно, что когда-нибудь он станет более юзабельным.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39528928
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, важную вещь вспомнил

есть такой класс таблиц (термина не знаю), которые крайне редко меняются и содержимое которых как бы захардкорено. Типа
1 - файл
2 - папка
3 - диск
4 - ссылка

так вот, содержимое таких таблиц жизненно важно для правильного функционирования приложений, т.к. в их код "вкомпилировано", что 1 это файл, 2 это папка и т.д. Получается, что эти данные так же важны для целостности базы+приложений, как и сами сущности в базе, хоть они и описываются не DDL a DML

К чему я веду? Если содержимое этих таблиц (в виде INSERTов) не вести в специальном файле, то никакая автоматическая система не поможет. Потому что автоматическая система же не знает, какие таблицы заполнены обычными данными, а какие вот такими "захардкоренными"
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529020
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadМеня интересует не столько вопрос ведения версий БД в СКВ в плане хранения PL/SQL кода, сколько вопрос согласованного наката изменений схемы на Dev-Test-Prod контура.Набросал пример использования liquibase для наката sample-схемы HR. Любой желающий может скачать его и поиграться. Вот ссылки на репозиторий и пояснительную записку . Для того, чтобы понять пример, нужно хотя бы бегло ознакомиться описанием продукта .
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529038
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadПусть у нас есть два последовательных изменения, которые согласно скрипту наката должны довести систему до состояния STATE1.
STATE0 -> DDL1 -> DDL2 -> STATE1
Но в результате первого запуска первый упал, но удачно выполнился второй. Мы устранили причину падения первого и перенакатили. В результате имеем:
STATE0 -> DDL2 -> DDL1 -> STATE1'.
Задумался, есть ли такие DDL1 и DDL2, при которых STATE1 != STATE1'? Что-то не могу придумать, если кто знает, поделитесь идеей.
Код: plsql
1.
2.
alter table set unused ...;
alter table ... drop unused columns;


Хотя пример не такой критичный, так как на бизнес-логику и приложение повлиять не должен.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529063
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

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

То есть вместо того, чтобы каждый разработчик поддерживал свой DDL вручную сначала, все они "натворили", а потом пришел главный и собрал все в релиз.

Ну так для этого в основных инструментах разработчика (toad, pl/sql dev, etc) есть инструменты сравнения схем.
Генерируешь скрипт, допиливаешь руками . Здесь есть много примеров почему.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529097
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

Как собрать изменения в целостный пакет - это вопрос, к которому можно подойти с разных сторон. Можно, как ты предлагаешь, делать diff перед релизом и пилить его руками, а можно сразу класть изменения в нужном формате. Второй подход мне ближе.

Но после этого, их еще надо накатить. Тут тоже разные подходы.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529104
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

Ну так мне тоже ближе писать DDL вручную.
Не совсем понятно зачем дополнительные приблуды в дополнение к системе контроля версий.

Видимо для того, чтобы автоматически генерировать релиз по изменениям, ну в таком случае я предложил бы потратить некоторое время и написать это самому.
Будь то на powershell, perl, visual basic, да хоть pure command line.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529105
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopНе совсем понятно зачем дополнительные приблуды в дополнение к системе контроля версий.Если б ты посмотрел мой пример, и те вопросы, которые я поднимал в отношении gitora, то наверное можно было бы говорить предметно.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529107
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKaddbms_photoshopНе совсем понятно зачем дополнительные приблуды в дополнение к системе контроля версий.Если б ты посмотрел мой пример, и те вопросы, которые я поднимал в отношении gitora, то наверное можно было бы говорить предметно.Если убрать эмоциональный окрас из того поста - он бы стал раза в три короче.
Но я таки напрягся и прочел его перед тем как писать предыдущее сообщение, но так и не понял твои трудности и причины использовать левые приблуды.
Для логгирования проблема добавить whenever sqlerror и spool или что?

Изменения состоят из изменений хранимого кода и DML + DDL.
Ключевой момент, что DDL + DML имеет смысл делать re-runnable. То есть при повторном выполнении чтоб не было ошибок.
Но без фанатизма - все 100500 причин по которым предыдущий скрипт упал учитывать не стоит.
re-runnable нужен для упрощения разработки, а релиз будет накатываться однократно.

Попытки применять изменения из разных веток на один environment? Тут Элик уже ответил.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529109
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

Ты смотрел мой пример с liquibase? Понял, чем он отличается от простого логгирования, whenever sqlerror, spool и как там решается вопрос re-runnable?
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529287
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

Если бы мне было интересно получить фидбек по интересующему вопросу - я бы несколько иначе разговаривал.
Больше не лезу. Хорошего дня. :))
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529337
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopAmKad,

Если бы мне было интересно получить фидбек по интересующему вопросу - я бы несколько иначе разговаривал.Была тема СУБД. История изменений , где мы в дискутивной форме обсуждали этот вопрос. Правда она длинная, не уверен, станешь ли ты ее читать.
dbms_photoshopБольше не лезу. Хорошего дня. :))Спасибо, и тебе успехов.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529741
reql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKadAmKadМеня интересует не столько вопрос ведения версий БД в СКВ в плане хранения PL/SQL кода, сколько вопрос согласованного наката изменений схемы на Dev-Test-Prod контура.Набросал пример использования liquibase для наката sample-схемы HR. Любой желающий может скачать его и поиграться. Вот ссылки на репозиторий и пояснительную записку . Для того, чтобы понять пример, нужно хотя бы бегло ознакомиться описанием продукта .
Спасибо, интересно
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39623539
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,

Привет! Посмотрел ваш пример, - спасибо!
А как предполагается вносить изменения в исходные определения? тех же таблиц, к примеру.
К примеру, в одном бранче через миграцию добавилась колонка, в другом изменилась длина поля и т.д.

Если я эти изменения вношу в исходные файлы, то Liquibase ругается на изменение суммы.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39623839
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все последующие изменения схемы данных проносятся как отдельные chageset-ы. На изменение суммы LB ругается, чтобы никто задним числом после наката их не менял.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39624092
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run09Если я эти изменения вношу в исходные файлы, то Liquibase ругается на изменение суммы.

если ты отдаешь отчет своим действиям, то можешь обновить контрольную сумму в DatabaseChangeLog на ожидаемую. Таким обычно страдают перфекционисты, глаза которых не могут видеть 20 changeSet-ов c альтерами.

Но при таком говноподходе, можешь нажить себе врагов.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39624156
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,
Понятно, спасибо.

merch,
20 Changeset-ов видеть не проблема. Получается, чтобы где-то развернуть копию (версию), нужно будет все изменения всегда хранить/применять.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39625485
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,
Как тогда, посмотрев в SVN, увидеть актуальную версию таблицы? С кодом понятно - он в файле, которые runOnChange.
пока только видится только костыль: хранить каталог с миграциями, с "замороженным" первичным DDL, и отдельно каталог с первичным DDL+все изменения в нем,но не отслеживаемый LB..
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39625517
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run09Как тогда, посмотрев в SVN, увидеть актуальную версию таблицы?Снимай метаданные с БД после наката. Либо веди модель в CASE-инструменте.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39625570
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKadrun09Как тогда, посмотрев в SVN, увидеть актуальную версию таблицы?Снимай метаданные с БД после наката.
Эти метаданные ведь все равно должны лежать отдельно от LB. по сути это примерно то же что и вести изменения в нем. Спасибо!
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39625574
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run09Эти метаданные ведь все равно должны лежать отдельно от LB.Да.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39627838
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run09Как тогда, посмотрев в SVN, увидеть актуальную версию таблицы?Посмотри на DBDoc , может это то, что тебе нужно. Там и пример какой-то есть. Сам я пока не разбирался.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39630752
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,

Спасибо. Пока решил административно разделить установку и миграции. Изменения вносить везде
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39630758
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run09Спасибо. Пока решил административно разделить установку и миграции. Изменения вносить вездеБез регулярной сверки метаданных "установка" и "миграции" гарантированно разъедутся. Инфа 146%. На мой скромный вкус вносить руками изменения в два места - это лишняя работа.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39630799
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,

С одной стороны да, двойная работа, с другой, я хотел бы регулярно поднимать "пустую" схему из "установки" . Я так понимаю, в случае только с одной "миграцией", мне нужно будет последовательно накатывать все изменения... Возможно, это и не проблема.... нужно подумать еще
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39630816
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run09Я так понимаю, в случае только с одной "миграцией", мне нужно будет последовательно накатывать все изменения...Это не так страшно, как может показаться на первый взгляд. Для тестирования времени наката с нуля я извратился следующим образом: снял метаданные с работающей БД в полторы сотни таблиц и сгенерил xml-файлы наката, в которых каждая таблица создается с одним полем. А далее все отдельные составляющие, такие как остальные поля (alter-ы), индексы + констраинты, комменты, засунул в отдельные changeset-ы. На каждый changeset один SQL-оператор и только один. Плюс recreatable-объекты: вьюхи, пакеты-процедуры и т.д.
Полный накат с нуля на чистую схему составил чуть более 1 минуты. Повторный перезапуск выполнился за несколько секунд - при совпадении хешей changeset повторно не выполняется.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39631359
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKadrun09Я так понимаю, в случае только с одной "миграцией", мне нужно будет последовательно накатывать все изменения...Это не так страшно, как может показаться на первый взгляд. Для тестирования времени наката с нуля я извратился следующим образом: снял метаданные с работающей БД в полторы сотни таблиц и сгенерил xml-файлы наката, в которых каждая таблица создается с одним полем. А далее все отдельные составляющие, такие как остальные поля (alter-ы), индексы + констраинты, комменты, засунул в отдельные changeset-ы. На каждый changeset один SQL-оператор и только один. Плюс recreatable-объекты: вьюхи, пакеты-процедуры и т.д.
Полный накат с нуля на чистую схему составил чуть более 1 минуты. Повторный перезапуск выполнился за несколько секунд - при совпадении хешей changeset повторно не выполняется.
Интересный подход. Спасибо, подумаю
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Version Control для pl/sql
    #40005143
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть желание иметь возможность проследить за историей изменений, не применяя полновесный сорс контроль.
(Обучение модеров тулзам, поддержание сорс контроль дисциплины, и т.д.). Еженочный дамп юзерского кода и ddl таблиц в принципе устраивает, но неудобно прослеживать цепочку изменений через дифф попарно.

Можно ночные дампы складывать в сорс контроль, и научить всех пользоваться историей, но это вовлекает установку клиента (или вэб сервера) и не покажет внутридневных изменений, а также не позволит маркировку версий.

С учётом этих хотелок (незаметно следит за изменениями, умеет показывать цепочку изменений и позволяет маркировку стабильных версий), есть ли какой-нибудь плагин для Оракла?
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005158
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Есть желание проследить за историей изменений, не применяя полновесный сорс контроль


Есть желание понять, что 2 x 2 = 4, не применяя арифметику.

Дорогой Тролль, мы за вами с интересом наблюдаем.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005164
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm

Есть желание понять, что 2 x 2 = 4, не применяя арифметику.


Вы неправильно думаете об арифметике. Таблицу умножения зубрят, а не понимают.

Вопрос был к тем, кто научился пользоваться сорс контролем только для учета, не для контроля.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005172
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQLТаблицу умножения зубрят, а не понимают.

Зубрят её в начальной школе. В средней - уже понимают как она составлена. Перестаньте уже
зубрить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005173
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да ладно, абсолютно резонный вопрос. полным-полно мест, где процесс разработки в части БД отсутствует в принципе, а скрипты для наката на прод в лучшем случае генерируются диффом между продом и девом, а в худшем всё просто переносится вручную.

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

еще имеет смысл почитать про audit trail - возможно, его тоже можно научить это делать. сам не пробовал.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005186
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL
но неудобно прослеживать цепочку изменений через дифф попарно.

То есть ты хочешь специфическое средство визуализации, тулза с первой страницы темы возможно это умеет 20832349 , хотя я не пробовал))
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005202
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
graycode и кит, спасибо.

У меня довольно скромные нужды, поэтому не хотелось внедрять что-то новое и блестящее.

Я за пару часов сделал модуль который показывает что поменялось в Pl/SQL за последний день, вывод корявый но он позволяет отследить какие модули трогались (и следовательно могут требовать code review или ретест), а какие нет.

На неделю добавлю историю изменений. Жаль, он не покажет "кто" именно внес изменения, я еще подумаю как это сделать.

Выглядит это так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SQL> call zz.snap(); 

Call completed.

SQL> call zz.show('new units');
ZZ

Call completed.

SQL> call zz.show('new lines');
ZZ 19   function  showt(op in varchar2, unit in varchar2 default null) return ZZTABLE PIPELINED;
ZZ 26     if op like 'new lines' then
ZZ 27       for v in (select * from zzcode z where z.name like nvl(unit,'%')
ZZ 29         besapi.Print( v.name, v.line, v.text );
ZZ 33       besapi.Print('invalid parameters');
ZZ 41       for v in (select * from zzcode z where z.name like nvl(unit,'%'))
ZZ 42         pipe row (v);
ZZ 47   end showt;

Call completed.



zz.snap('метка') - хватает состояние кода на данный момент
zz.show(команда, модуль, дней смотреть) - показывает чего нового появилось.
zz.showt(..) - то же что и .show, но пайплайнит таблицу.

Научился делать папйлайн без курсора, может пригодится.
В процессе выяснилось что 11.2 не умеет делать SHA256, пришлось позаимствовать извне.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005222
Bfink
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

В процессе выяснилось что 11.2 не умеет делать SHA256, пришлось позаимствовать извне.


Не умеет делать 11.2.0.1, 11.2.0.4 успешно делает
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005225
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bfink
НеофитSQL

В процессе выяснилось что 11.2 не умеет делать SHA256, пришлось позаимствовать извне.


Не умеет делать 11.2.0.1, 11.2.0.4 успешно делает


Спасибо, не знал - наверное документацию не обновили. В .0.4 это добавили в dbms_crypto, как четвертый хэш?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> select dbms_crypto.hash('1111',3) from dual;
DBMS_CRYPTO.HASH('1111',3)
--------------------------------------------------------------------------------
7B107F2C48DAE774DBB46E72C84246102CE5B06C

SQL> select dbms_crypto.hash('1111',4) from dual;
select dbms_crypto.hash('1111',4) from dual
ORA-28827: invalid cipher type passed
ORA-06512: at "SYS.DBMS_CRYPTO_FFI", line 131
ORA-06512: at "SYS.DBMS_CRYPTO", line 72
SQL> 



Я собирался тянуть SHA256 через WinCAPI, но стыковки с С ДЛЛ настолько нудная что плюнул и сделал через джаву.

Кто-то пользовался механизмом подгрузки С-шных процедур в Оракл? Он хорошо отполирован, или из разряда Оракл мультимедиа?
Я не говорю о внутреннем pragma interface, а про поддерживаемый медод, который через RPC для безопасности.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005234
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL

...

Я за пару часов сделал модуль который показывает что поменялось в Pl/SQL за последний день, вывод корявый но он позволяет отследить какие модули трогались (и следовательно могут требовать code review или ретест), а какие нет.

На неделю добавлю историю изменений. Жаль, он не покажет "кто" именно внес изменения, я еще подумаю как это сделать.


А в чём смысл смотреть эти изменения?
На тестовых серверах хз сколько из этих изменений в релиз пойдут. И если пойдут, то перед этим и так будет стадия код ревью?
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005271
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mnbvcx,

Смысл тот, что я описал ранее - облегчить анализ изменений в объеме недокументированого кода.

Скорее лог изменений, чем полный соурс контроль.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005284
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL,

Лог изменений где? На девелоперском сервере? И зачем он нужен?
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005291
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
graycode,

На живом, который трогают ежедневно.
Есть дев-схема, которую создали для меня.

У нас, как это, неосознаный CI процесс. :)
В октябре пойдет волна изменений по одной из инициатив, и я хочу иметь возможность их анализа.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005374
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

Процесс менять надо, а не SHA256 на ровном месте прикручивать.

Если цель
НеофитSQL
следовательно могут требовать code review или ретест

то собирать только текст пакетов - глупо. Например, изменился тип поля в таблице, на которую в пакете есть переменная%rowtype. Код пакета не изменится, хэш тоже. А работать начнёт по другому.

Или поменялась вьюха (поля перепутали местами), а в пакете (по рукам за такое)
Код: plsql
1.
select v.* bulk collect into ...

.

Код прежний, результаты новые.

Лучше процесс организуйте с версионированием на этапе разработки и запретом выката на прод кода не слитого в нужную ветку.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005393
Фотография Amberit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

я бы посоветовал Вам не изобретать велосипеды, а использовать сразу SourceControl.
Вот с механизмом, конечно, придется повозиться, т.к. Best Practices нет и каждый выкручивается как может либо как принято в компании до него.

Если же вообще никакого подхода нет, то все карты в руки...

В компании, где я работаю, используется такой подход:

1. Есть таск в JIRA, по которому нужно реализовать какой-то функционал.
2. Есть SVN, в котором хранятся все скрипты по структуре: Имя схемы (каталог) - тип объекта (подкаталог) - имя объекта (файл).
3. У каждого файла в SVN есть обязательный заголовок с ключевыми SVN-аттрибутами типа $Revision, $HeadURL (которые автоматически заполняет SVN при коммите).
4. У каждого файла в SVN есть дополнительный аттрибут в заголовке: $JIRA - который Hook-скриптом выбирается из Message при коммите и добавляется в заголовок.
5. В 99% работаем всегда с Master-веткой.

Таким образом, каждый файл в SVN содержит все необходимые аттрибуты, чтобы связать его с конкретным таском в JIRA.

6. Девелопер создает новые/модифицирует старые файлы, сохраняет их в SVN.
7. SVN заголовок каждого файла в правильном порядоке наката указывает в таске JIRA.

8. ДБА при деплойменте выбирает файлы из всех тасков, включенных в деплоймент, компонует их и выполняет сначала на снапшоте продакшена (чтобы выявить все косяки, ошибки и прочие неожиданности), а затем на продакшене.
9. При деплойменте в DBA_SOURCE попадает SVN заголовок из исходника, который потом на 1-минутном джобе парсится и заносится в специальные служебные таблицы.

Таким образом, мы имеет связи DB<->SVN<->JIRA, всегда можем сказать, что было задеплоено, что не было, что задеплоилось частично, что провтыкали, что задеплоили лишнее и т.д. Т.е. 99% человеческих косяков выявляем еще на этапе деплоймента на снапшот продакшена.

Для большинства этих шагов написана внутренняя автоматизация, т.е. ручное вмешательство в процесс - минимальное.

Скользкий момент такого подхода - необходимость написания веток в случае, когда на продакшен уходит не последняя ревизия скрипта, и нужно вырезать то или иное изменение, внесенное таском, который еще не идет в продакшен. В этом случае требуется ручное вмешательство, которое обязательно ревьювится другим девелопером и проверяется с особой тщательностью.

Как-то так...
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #40005568
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Amberit,

Все хорошие советы для организаций, которые готовы вводить соурс контроль. Здесь это (пока) не та ситуация.

Велосипед изобретался исключительно с целью изобретения велосипеда, как многие мои хобби-задачки.
После реализации пробной версии нашел несколько недостатков построчного подхода, т.к. реализация качественного diff или тем более 3-сравнения в PL/SQL превращается в немаленькую задачу, плюс SQL+ накладывает ограничения на визуализацию. Рассматривать диффы без GUI - неблагодарное занятие.

Поэтому польза для такого небольшого внутреннего тулза наверное находится на уровне юнита (напр. юнит АБВ и его зависимости не менялись за последний месяц - есть повод считать юнит сравнительно стабильным), но не на уровне строчек. Что, в общем, и следует ожидать от игрушки сделанной за час-два.

Для более общего change log процесса я собираюсь посмотреть на CVS/JIRA/... которым кормить ночные бэкапы исходников и в которых потом можно порыться по поводу изменений что/где/когда.

Кроме того, я узнал о существовании специализированных продуктов, напр. https://www.apexsql.com/sql-tools-source-control.aspx (еще не смотрел), которые оптимизированы для SQL кодеров.

Если найду решение, которое отвечает моим требованиям и удобно в работе - напишу здесь. Оно может помочь тем, кто пока не готов менять процесс под соурс контроль, но хочет возможность видеть историю изменений. Это совершенно нормальная хотелка для тех, кто знаком в TimeMachine(Эппл) или версиями файлов в Винде.
...
Рейтинг: 0 / 0
67 сообщений из 67, показаны все 3 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Version Control для pl/sql
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]