Save your Flexlate Updates

Flexlate saves the history of your merge conflict resolutions so that you don’t need to resolve them multiple times. Flexlate mostly manages this history for you, but you do get to choose when you want to “save” the history by merging the Flexlate feature branches into the Flexlate main branches.

After doing a Flexlate operation such as fxt update, fxt add output, or fxt sync Flexlate will create feature branches to correspond to your currently checked out branch. In order to save the Flexlate history, you need to merge these Flexlate feature branches into the Flexlate main branches.

Local Workflows

If directly commit to the main branch or locally merge branches into your main branch, you will want to use the fxt merge command locally to save your history. You can then push the changes to remote with fxt push main

Committing on the Main Branch

If you commit on the main branch, let’s call it main, you will have Flexlate feature branches created corresponding to your main branch. Simply call fxt merge whenever you finish a Flexlate operation and are satisfied with the result.

    $ fxt add output copier-simple-example some/path
 Applying template copier-simple-example to /tmp/tmplmyk7tpm
 Updating 1 applied templates

question1? Format: yaml
my answer

The second question
question2? Format: float
10

    create  my answer.txt



    create  temp.txt


✔ Successfully updated template output
✔ Successfully applied template copier-simple-example to /tmp/tmplmyk7tpm

$ fxt merge
 Merging flexlate-templates-main to flexlate-templates
✔ Successfully merged flexlate-templates-main to flexlate-templates
✔ Successfully merged flexlate-output-main to flexlate-output
 Deleting flexlate feature branches flexlate-templates-main and 
flexlate-output-main
✔ Successfully deleted flexlate feature branches

Locally Merging Branches

After you’ve done a template update on a feature branch and you’re ready to merge the changes into main, first run fxt merge before doing so.

    $ git checkout -b feature-branch
Switched to a new branch 'feature-branch'

$ fxt add output copier-simple-example some/path
 Applying template copier-simple-example to /tmp/tmph9tlmh1g
 Updating 1 applied templates

question1? Format: yaml
my answer

The second question
question2? Format: float
10

    create  my answer.txt



    create  temp.txt


✔ Successfully updated template output
✔ Successfully applied template copier-simple-example to /tmp/tmph9tlmh1g

$ fxt merge
 Merging flexlate-templates-feature-branch to flexlate-templates
✔ Successfully merged flexlate-templates-feature-branch to flexlate-templates
✔ Successfully merged flexlate-output-feature-branch to flexlate-output
 Deleting flexlate feature branches flexlate-templates-feature-branch and 
flexlate-output-feature-branch
✔ Successfully deleted flexlate feature branches

$ git checkout main
Switched to branch 'main'

$ git merge feature-branch
Updating 10fec1a..4d67875
Fast-forward
 some/path/flexlate.json | 15 +++++++++++++++
 some/path/my answer.txt |  2 ++
 2 files changed, 17 insertions(+)
 create mode 100644 some/path/flexlate.json
 create mode 100644 some/path/my answer.txt

Push your Flexlate Main Branch Changes

After you’ve merged the Flexlate feature branches into the Flexlate main branches, you’ll want to push your changes to the remote (if you are using a remote) via fxt push main.

    $ fxt add output copier-simple-example some/path
 Applying template copier-simple-example to /tmp/tmpbei3ragb
 Updating 1 applied templates

question1? Format: yaml
my answer

The second question
question2? Format: float
10

    create  my answer.txt



    create  temp.txt


✔ Successfully updated template output
✔ Successfully applied template copier-simple-example to /tmp/tmpbei3ragb

$ fxt merge
 Merging flexlate-templates-main to flexlate-templates
✔ Successfully merged flexlate-templates-main to flexlate-templates
✔ Successfully merged flexlate-output-main to flexlate-output
 Deleting flexlate feature branches flexlate-templates-main and 
flexlate-output-main
✔ Successfully deleted flexlate feature branches

$ fxt push main
 Pushing flexlate-templates and flexlate-output to remote origin
✔ Successfully pushed branches to remote

PR Workflows

If you use pull requests in your project to merge changes into the main branch, then instead of merging locally, you will want to push the Flexlate feature branches with fxt push feature so that they can be merged in on the remote.

Push your Flexlate Feature Branch Changes

Use the fxt push feature command to push the Flexlate feature branches after you’ve finished work on your feature branch. You would want to run this whenever you are pushing up the feature branch itself.

    $ git checkout -b feature-branch
Switched to a new branch 'feature-branch'

$ fxt add output copier-simple-example some/path
 Applying template copier-simple-example to /tmp/tmppky52zhz
 Updating 1 applied templates

question1? Format: yaml
my answer

The second question
question2? Format: float
10

    create  my answer.txt



    create  temp.txt


✔ Successfully updated template output
✔ Successfully applied template copier-simple-example to /tmp/tmppky52zhz

$ git push origin feature-branch
Enumerating objects: 22, done.
Counting objects:   4% (1/22)
Counting objects:   9% (2/22)
Counting objects:  13% (3/22)
Counting objects:  18% (4/22)
Counting objects:  22% (5/22)
Counting objects:  27% (6/22)
Counting objects:  31% (7/22)
Counting objects:  36% (8/22)
Counting objects:  40% (9/22)
Counting objects:  45% (10/22)
Counting objects:  50% (11/22)
Counting objects:  54% (12/22)
Counting objects:  59% (13/22)
Counting objects:  63% (14/22)
Counting objects:  68% (15/22)
Counting objects:  72% (16/22)
Counting objects:  77% (17/22)
Counting objects:  81% (18/22)
Counting objects:  86% (19/22)
Counting objects:  90% (20/22)
Counting objects:  95% (21/22)
Counting objects: 100% (22/22)
Counting objects: 100% (22/22), done.
Delta compression using up to 2 threads
Compressing objects:   6% (1/16)
Compressing objects:  12% (2/16)
Compressing objects:  18% (3/16)
Compressing objects:  25% (4/16)
Compressing objects:  31% (5/16)
Compressing objects:  37% (6/16)
Compressing objects:  43% (7/16)
Compressing objects:  50% (8/16)
Compressing objects:  56% (9/16)
Compressing objects:  62% (10/16)
Compressing objects:  68% (11/16)
Compressing objects:  75% (12/16)
Compressing objects:  81% (13/16)
Compressing objects:  87% (14/16)
Compressing objects:  93% (15/16)
Compressing objects: 100% (16/16)
Compressing objects: 100% (16/16), done.
Writing objects:   4% (1/22)
Writing objects:   9% (2/22)
Writing objects:  13% (3/22)
Writing objects:  18% (4/22)
Writing objects:  22% (5/22)
Writing objects:  27% (6/22)
Writing objects:  31% (7/22)
Writing objects:  36% (8/22)
Writing objects:  40% (9/22)
Writing objects:  45% (10/22)
Writing objects:  50% (11/22)
Writing objects:  54% (12/22)
Writing objects:  59% (13/22)
Writing objects:  63% (14/22)
Writing objects:  68% (15/22)
Writing objects:  72% (16/22)
Writing objects:  77% (17/22)
Writing objects:  81% (18/22)
Writing objects:  86% (19/22)
Writing objects:  90% (20/22)
Writing objects:  95% (21/22)
Writing objects: 100% (22/22)
Writing objects: 100% (22/22), 2.60 KiB | 887.00 KiB/s, done.
Total 22 (delta 6), reused 0 (delta 0), pack-reused 0
To ../remote
 * [new branch]      feature-branch -> feature-branch

$ fxt push feature
 Pushing flexlate-templates-feature-branch and flexlate-output-feature-branch to
remote origin
✔ Successfully pushed branches to remote

Merge Flexlate Branches Automatically with Github Actions

Flexlate has official companion Github Actions that can automate using Flexlate. The Flexlate After-Merge Action can be used to automate merging the Flexlate feature branches into the Flexlate main branches.

Follow the user guide on CI automation to hook up this workflow and other supporting workflows.