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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file migrate_code-1.0.0.tar.gz.

File metadata

  • Download URL: migrate_code-1.0.0.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.23.0

File hashes

Hashes for migrate_code-1.0.0.tar.gz
Algorithm Hash digest
SHA256 eb865d3338442ab15a3cf05c470c3b01851fb61653db45caeaa3d8eeb382918c
MD5 7a5623812f58f3c3bb90af260d24ab3c
BLAKE2b-256 9adcc0d813a205a7a655f342b48b01c0e250c5535d79c8beecfcde5975683aa7

See more details on using hashes here.

File details

Details for the file migrate_code-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for migrate_code-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c89bc710cc064519023a652ad5f90714c7929af25e8ab8cf1085f157276d87b1
MD5 bf776e0bfa38a36a57749333738d1026
BLAKE2b-256 41dc2c58eaa4236b736e699ff3b5b0665081f9f7412816d8cfd0ae7e6bbf2e57

See more details on using hashes here.

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