--- id: enable-ff title: Enabling Versioned Migrations --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; ## Supporting repository The change described in this section can be found in PR [#2](https://github.com/rotemtam/ent-versioned-migrations-demo/pull/2/files) in the supporting repository. ## Enable the versioned migration feature flag The first step is to enable the versioned migration feature by passing in the `sql/versioned-migration` feature flag. Depending on how you execute the Ent code generator, you have to use one of the two options: If you are using the default go generate configuration, simply add the `--feature sql/versioned-migration` to the `ent/generate.go` file as follows: ```go package ent //go:generate go run -mod=mod entgo.io/ent/cmd/ent generate --feature sql/versioned-migration ./schema ``` If you are using the code generation package (e.g. if you are using an Ent extension like `entgql`), add the feature flag as follows: ```go //go:build ignore package main import ( "log" "entgo.io/ent/entc" "entgo.io/ent/entc/gen" ) func main() { err := entc.Generate("./schema", &gen.Config{ //highlight-next-line Features: []gen.Feature{gen.FeatureVersionedMigration}, }) if err != nil { log.Fatalf("running ent codegen: %v", err) } } ``` Next, re-run code-generation: ```shell go generate ./... ``` After running the code-generation, you should see the following [methods added](https://github.com/rotemtam/ent-versioned-migrations-demo/commit/e724fa32330d920fd405b9785fcfece2a46ea56c#diff-370235e5107bbdd35861063f3beff1507723ebdda6e29a39cdde1f1a944594d8) to `ent/migrate/migrate.go`: * `Diff` * `NamedDiff` These methods are used to compare the state read from a database connection or migration directory with the state defined by the Ent schema. In the next section, we will see how to automate the creation of versioned migrations.