[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-liquibase-kak-organizovat-changelog-i-s-pomoshchyu-include-i-includeall":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},965,"kak-organizovat-changelog-i-s-pomoshchyu-include-i-includeall",29,"liquibase","Liquibase","💧","Как организовать changelog-и с помощью include и includeAll?","Include и includeAll — два механизма декомпозиции changelog-ов, позволяющие разбить один большой файл на логические модули.\n\n### include\n\nВключает конкретный файл changelog:\n\n\u003Cdetails>\u003Csummary>Пример master changelog с include\u003C\u002Fsummary>\n\n```xml\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003CdatabaseChangeLog\n    xmlns=\"http:\u002F\u002Fwww.liquibase.org\u002Fxml\u002Fns\u002Fdbchangelog\"\n    xmlns:xsi=\"http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema-instance\"\n    xsi:schemaLocation=\"http:\u002F\u002Fwww.liquibase.org\u002Fxml\u002Fns\u002Fdbchangelog\n        http:\u002F\u002Fwww.liquibase.org\u002Fxml\u002Fns\u002Fdbchangelog\u002Fdbchangelog-latest.xsd\">\n\n    \u003Cinclude file=\"db\u002Fchangelog\u002Freleases\u002Frelease-1.0.xml\"\u002F>\n    \u003Cinclude file=\"db\u002Fchangelog\u002Freleases\u002Frelease-1.1.xml\"\u002F>\n    \u003Cinclude file=\"db\u002Fchangelog\u002Freleases\u002Frelease-2.0.xml\"\u002F>\n\n\u003C\u002FdatabaseChangeLog>\n```\n\n\u003C\u002Fdetails>\n\n### includeAll\n\nВключает все файлы из указанной директории (в алфавитном порядке):\n\n```xml\n\u003CdatabaseChangeLog ...>\n    \u003CincludeAll path=\"db\u002Fchangelog\u002Fchanges\u002F\"\u002F>\n\u003C\u002FdatabaseChangeLog>\n```\n\n### Типичная структура проекта\n\n```\nsrc\u002Fmain\u002Fresources\u002F\n└── db\u002F\n    └── changelog\u002F\n        ├── db.changelog-master.xml          (корневой changelog)\n        ├── changes\u002F\n        │   ├── 001-create-users.xml\n        │   ├── 002-create-accounts.xml\n        │   ├── 003-add-email-to-users.xml\n        │   └── 004-create-transactions.xml\n        └── data\u002F\n            ├── currencies.csv\n            └── default-settings.csv\n```\n\n### Организация по релизам\n\n```\nsrc\u002Fmain\u002Fresources\u002F\n└── db\u002F\n    └── changelog\u002F\n        ├── db.changelog-master.xml\n        ├── release-1.0\u002F\n        │   ├── 001-create-users.xml\n        │   └── 002-create-accounts.xml\n        └── release-1.1\u002F\n            ├── 001-add-email-to-users.xml\n            └── 002-create-transactions.xml\n```\n\nMaster changelog:\n\n```xml\n\u003CdatabaseChangeLog ...>\n    \u003CincludeAll path=\"db\u002Fchangelog\u002Frelease-1.0\u002F\"\u002F>\n    \u003CincludeAll path=\"db\u002Fchangelog\u002Frelease-1.1\u002F\"\u002F>\n\u003C\u002FdatabaseChangeLog>\n```\n\nПри использовании `includeAll` файлы включаются в **алфавитном порядке**, поэтому нумерация в именах файлов обязательна (001-, 002- и т.д.).\n\n> **На собеседовании:** важно объяснить разницу между include и includeAll и знать про алфавитный порядок в includeAll. Частая ошибка — не упомянуть необходимость нумерации файлов при использовании includeAll.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":19,"featuredSnippetReady":22},"Как организовать changelog-и с помощью include и includeAll? — Gymterview","Include и includeAll — два механизма декомпозиции changelog-ов, позволяющие разбить один большой файл на логические модули.","Include и includeAll — два механизма декомпозиции changelog-ов, позволяющие разбить один большой файл на логические моду",[7,13],true]