Skip to main content

Programmatically create and revert a sequence of commits

Project description

migrate-code

PyPI - Version PyPI - Python Version


Table of Contents

Links

Installation

pip install migrate-code

Quickstart

Migration stages will be converted into commits when the upgrade is applied. The migration.py file should define a Migration variable either called m or migration.

# migration.py

from migrate_code import Migration, get_repo_root

m = Migration("Demonstrate basic usage")

@m.add_stage(1, "Create a new file")
def stage_1():
    (get_repo_root() / "new_file.txt").write_text("Hello world")


@m.add_stage(2, "Create another file")
def stage_2():
    (get_repo_root() / "another_file.txt").write_text("Hello another world")


@m.add_stage("1.1", "Modify the first file")
def stage_1_1():
    (get_repo_root() / "new_file.txt").write_text("Hello world, again")

Now it is easy to create and reset commits:

$ git init
$ git add migration.py
$ git commit -m "Add migration.py"
$ migrate-code log
  ------- (2) Create another file
  ------- (1.1) Modify the first file
  ------- (1) Create a new file
$ migrate-code current
None
$ migrate-code upgrade
Running migration 1: Create a new file
Running migration 1.1: Modify the first file
Running migration 2: Create another file
$ git log --oneline
5041191 (HEAD -> master) Create another file
92012af Modify the first file
d4d0611 Create a new file
78438e2 Add migration.py
$ migrate-code log
* 5041191 (2) Create another file
  92012af (1.1) Modify the first file
  d4d0611 (1) Create a new file
$ migrate-code current
2
$ migrate-code reset
Resetting migration 2: Create another file
Resetting migration 1.1: Modify the first file
Resetting migration 1: Create a new file
$ git log --oneline
78438e2 (HEAD -> master) Add migration.py
$ migrate-code log
  ------- (2) Create another file
  ------- (1.1) Modify the first file
  ------- (1) Create a new file
$ migrate-code upgrade --stage 1.1
Running migration 1: Create a new file
Running migration 1.1: Modify the first file
$ git log --oneline
7b65210 (HEAD -> master) Modify the first file
a7c1027 Create a new file
78438e2 Add migration.py
$ migrate-code log
  ------- (2) Create another file
* 7b65210 (1.1) Modify the first file
  a7c1027 (1) Create a new file

License

migrate-code is distributed under the terms of the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

migrate_code-1.0.0.tar.gz (9.5 kB view hashes)

Uploaded Source

Built Distribution

migrate_code-1.0.0-py3-none-any.whl (9.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page