Thanks in advance,
To put you in context:
- We have a lot of logic in our database, that mean: packages, triggers, views, functions, procedures…
- We are working in Agile, so that means that every sprint (3 weeks) maybe the code change.
Because we don’t want to lose the history of changes in the SVN… we always point to the same file (same directory), with runOnChange.
Actual solution: I created one file packages-changelog.xml and I put all the packages there with runOnChange
This works… but then we are losing the updates for each sprint.
I would like to have one changelog file for Sprint and then the change will be clear for each sprint, if I create now a sprint changelog and I point to the same file because I run it with runOnChange the script will execute the same code in all the sprints that apear, and I don’t want that, I just want to execute this code one time, and if is already executed, although the content has changed I don’t want to execute it another time.
That’s why I would like to disable the check sum, then I will be able to track the changes for each sprint without run the code every time.
Thanks in advance,
Yes, that is exactly what I mean, and what I want.
For me make no sense execute something that i didn’t change (runAlways), and if i set up runOnChange and I have this package in more than one sprint-changelog is going to execute the same package more than one time.
So what I’m looking for is for something to disable the check sum validation, and just check if is already in the databasechangelog.
Then will be faster and better, and If the packages appear in 10 different sprints I will not execute 10 times, or will not run every time and I will have a clear changes in my changelog for sprint.
There isn’t a way built into liquibase since it usually serves a good purpose. I think it should be possible to create an extension to ignore them and I was going to look into that, but haven’t yet.
Why is it that you want to exclude them all the time?
It makes sense to have your packages, triggers, views etc. in a runOnChange changeset since that works much nicer with SVN’s diff and history. For tracking history on a view definition back to a sprint, I tend to rely on SVN’s history and/or the updateSQL functionality vs. managing it through changelog creation, but I do also tend to create new changelog per release version and don’t usually have a lot of package/view/trigger definitions so most of my changes tend to be in the release-version changelog.
Let me re-describe what you are wanting so I make sure I understand it:
You want to be able to create a changelog per sprint and when you want to modify a procedure/trigger/view etc. what you want to do is edit the existing definition file and then add a reference to it (include or sqlFile) from the sprint changelog. That way when you look at your sprint changelog you know everything that will change. If a package/procedure/view file is referenced from the chagneLog you want to re-run it regardless of if it has ran before?
Does that sound about right?
Would it work to have the view/trigger/package definition in a file that you point to with sqlFile and then use the runAlways=“true” flag?
I can’t think of anything built in right now that will let you do that. You’re Nathan