Programmatically create and revert a sequence of commits
Project description
migrate-code
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
Release history Release notifications | RSS feed
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)
Built Distribution
Close
Hashes for migrate_code-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c89bc710cc064519023a652ad5f90714c7929af25e8ab8cf1085f157276d87b1 |
|
MD5 | bf776e0bfa38a36a57749333738d1026 |
|
BLAKE2b-256 | 41dc2c58eaa4236b736e699ff3b5b0665081f9f7412816d8cfd0ae7e6bbf2e57 |