git: 80c0a0ba2c3f - main - databases/movine: New port: Database migration manager written in Rust

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Mon, 02 Jan 2023 10:11:44 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=80c0a0ba2c3fcad543530d3ccd04b2aa6fc43423

commit 80c0a0ba2c3fcad543530d3ccd04b2aa6fc43423
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2023-01-02 09:37:37 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2023-01-02 10:11:31 +0000

    databases/movine: New port: Database migration manager written in Rust
---
 databases/Makefile         |   1 +
 databases/movine/Makefile  | 183 ++++++++++++++++++++++++++
 databases/movine/distinfo  | 317 +++++++++++++++++++++++++++++++++++++++++++++
 databases/movine/pkg-descr |   8 ++
 4 files changed, 509 insertions(+)

diff --git a/databases/Makefile b/databases/Makefile
index 9548a7001afd..df9064a7c50a 100644
--- a/databases/Makefile
+++ b/databases/Makefile
@@ -192,6 +192,7 @@
     SUBDIR += mongodb44
     SUBDIR += mongodb50
     SUBDIR += mongodb60
+    SUBDIR += movine
     SUBDIR += mroonga
     SUBDIR += mtop
     SUBDIR += mydumper
diff --git a/databases/movine/Makefile b/databases/movine/Makefile
new file mode 100644
index 000000000000..d6548854f216
--- /dev/null
+++ b/databases/movine/Makefile
@@ -0,0 +1,183 @@
+PORTNAME=	movine
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.11.0
+CATEGORIES=	databases
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Database migration manager written in Rust
+WWW=		https://github.com/byronwasti/movine
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+USES=		cargo
+USE_GITHUB=	yes
+GH_ACCOUNT=	byronwasti
+
+CARGO_CRATES=	aho-corasick-0.7.15 \
+		ansi_term-0.11.0 \
+		ansi_term-0.12.1 \
+		async-trait-0.1.41 \
+		atty-0.2.14 \
+		autocfg-1.0.1 \
+		base64-0.13.0 \
+		bitflags-1.2.1 \
+		block-buffer-0.9.0 \
+		bumpalo-3.6.1 \
+		byteorder-1.3.4 \
+		bytes-1.0.1 \
+		cc-1.0.62 \
+		cfg-if-0.1.10 \
+		cfg-if-1.0.0 \
+		chrono-0.4.19 \
+		clap-2.33.3 \
+		cloudabi-0.1.0 \
+		core-foundation-0.9.1 \
+		core-foundation-sys-0.8.2 \
+		cpuid-bool-0.1.2 \
+		crypto-mac-0.10.0 \
+		digest-0.9.0 \
+		dotenv-0.15.0 \
+		env_logger-0.7.1 \
+		envy-0.4.1 \
+		fallible-iterator-0.2.0 \
+		fallible-streaming-iterator-0.1.9 \
+		foreign-types-0.3.2 \
+		foreign-types-shared-0.1.1 \
+		futures-0.3.8 \
+		futures-channel-0.3.8 \
+		futures-core-0.3.8 \
+		futures-executor-0.3.8 \
+		futures-io-0.3.8 \
+		futures-macro-0.3.8 \
+		futures-sink-0.3.8 \
+		futures-task-0.3.8 \
+		futures-util-0.3.8 \
+		generic-array-0.14.4 \
+		getrandom-0.2.2 \
+		heck-0.3.1 \
+		hermit-abi-0.1.17 \
+		hmac-0.10.1 \
+		humantime-1.3.0 \
+		instant-0.1.8 \
+		js-sys-0.3.50 \
+		lazy_static-1.4.0 \
+		libc-0.2.93 \
+		libsqlite3-sys-0.18.0 \
+		linked-hash-map-0.5.3 \
+		lock_api-0.4.1 \
+		log-0.4.11 \
+		lru-cache-0.1.2 \
+		matches-0.1.8 \
+		md-5-0.9.1 \
+		memchr-2.3.4 \
+		mio-0.7.11 \
+		miow-0.3.7 \
+		native-tls-0.2.7 \
+		ntapi-0.3.6 \
+		num-integer-0.1.44 \
+		num-traits-0.2.14 \
+		once_cell-1.5.2 \
+		opaque-debug-0.3.0 \
+		openssl-0.10.33 \
+		openssl-probe-0.1.2 \
+		openssl-sys-0.9.61 \
+		parking_lot-0.11.0 \
+		parking_lot_core-0.8.0 \
+		percent-encoding-2.1.0 \
+		phf-0.8.0 \
+		phf_shared-0.8.0 \
+		pin-project-1.0.1 \
+		pin-project-internal-1.0.1 \
+		pin-project-lite-0.2.6 \
+		pin-utils-0.1.0 \
+		pkg-config-0.3.19 \
+		postgres-0.19.1 \
+		postgres-native-tls-0.5.0 \
+		postgres-protocol-0.6.1 \
+		postgres-types-0.2.1 \
+		ppv-lite86-0.2.10 \
+		proc-macro-error-1.0.4 \
+		proc-macro-error-attr-1.0.4 \
+		proc-macro-hack-0.5.19 \
+		proc-macro-nested-0.1.6 \
+		proc-macro2-1.0.26 \
+		quick-error-1.2.3 \
+		quote-1.0.7 \
+		rand-0.8.3 \
+		rand_chacha-0.3.0 \
+		rand_core-0.6.2 \
+		rand_hc-0.3.0 \
+		redox_syscall-0.1.57 \
+		redox_syscall-0.2.5 \
+		regex-1.4.2 \
+		regex-syntax-0.6.21 \
+		remove_dir_all-0.5.3 \
+		ring-0.16.20 \
+		rusqlite-0.23.1 \
+		rustls-0.19.0 \
+		schannel-0.1.19 \
+		scopeguard-1.1.0 \
+		sct-0.6.0 \
+		security-framework-2.2.0 \
+		security-framework-sys-2.2.0 \
+		serde-1.0.117 \
+		serde_derive-1.0.117 \
+		sha2-0.9.2 \
+		siphasher-0.3.3 \
+		slab-0.4.2 \
+		smallvec-1.5.0 \
+		socket2-0.4.0 \
+		spin-0.5.2 \
+		stringprep-0.1.2 \
+		strsim-0.8.0 \
+		structopt-0.3.20 \
+		structopt-derive-0.4.13 \
+		subtle-2.3.0 \
+		syn-1.0.69 \
+		tempfile-3.2.0 \
+		termcolor-1.1.0 \
+		textwrap-0.11.0 \
+		thread_local-1.0.1 \
+		time-0.1.44 \
+		tinyvec-1.0.1 \
+		tinyvec_macros-0.1.0 \
+		tokio-1.4.0 \
+		tokio-native-tls-0.3.0 \
+		tokio-postgres-0.7.1 \
+		tokio-postgres-rustls-0.8.0 \
+		tokio-rustls-0.22.0 \
+		tokio-util-0.6.5 \
+		toml-0.5.7 \
+		typenum-1.12.0 \
+		unicode-bidi-0.3.4 \
+		unicode-normalization-0.1.14 \
+		unicode-segmentation-1.7.0 \
+		unicode-width-0.1.8 \
+		unicode-xid-0.2.1 \
+		untrusted-0.7.1 \
+		vcpkg-0.2.10 \
+		vec_map-0.8.2 \
+		version_check-0.9.2 \
+		wasi-0.10.0+wasi-snapshot-preview1 \
+		wasm-bindgen-0.2.73 \
+		wasm-bindgen-backend-0.2.73 \
+		wasm-bindgen-macro-0.2.73 \
+		wasm-bindgen-macro-support-0.2.73 \
+		wasm-bindgen-shared-0.2.73 \
+		web-sys-0.3.50 \
+		webpki-0.21.4 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-util-0.1.5 \
+		winapi-x86_64-pc-windows-gnu-0.4.0
+
+OPENSSLINC=	/usr/include
+OPENSSLLIB=	/usr/lib
+
+PLIST_FILES=	bin/${PORTNAME}
+
+post-install:
+	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/databases/movine/distinfo b/databases/movine/distinfo
new file mode 100644
index 000000000000..6c4831add808
--- /dev/null
+++ b/databases/movine/distinfo
@@ -0,0 +1,317 @@
+TIMESTAMP = 1672651246
+SHA256 (rust/crates/aho-corasick-0.7.15.crate) = 7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5
+SIZE (rust/crates/aho-corasick-0.7.15.crate) = 113071
+SHA256 (rust/crates/ansi_term-0.11.0.crate) = ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b
+SIZE (rust/crates/ansi_term-0.11.0.crate) = 17087
+SHA256 (rust/crates/ansi_term-0.12.1.crate) = d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2
+SIZE (rust/crates/ansi_term-0.12.1.crate) = 24838
+SHA256 (rust/crates/async-trait-0.1.41.crate) = b246867b8b3b6ae56035f1eb1ed557c1d8eae97f0d53696138a50fa0e3a3b8c0
+SIZE (rust/crates/async-trait-0.1.41.crate) = 24830
+SHA256 (rust/crates/atty-0.2.14.crate) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
+SIZE (rust/crates/atty-0.2.14.crate) = 5470
+SHA256 (rust/crates/autocfg-1.0.1.crate) = cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a
+SIZE (rust/crates/autocfg-1.0.1.crate) = 12908
+SHA256 (rust/crates/base64-0.13.0.crate) = 904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd
+SIZE (rust/crates/base64-0.13.0.crate) = 62070
+SHA256 (rust/crates/bitflags-1.2.1.crate) = cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693
+SIZE (rust/crates/bitflags-1.2.1.crate) = 16745
+SHA256 (rust/crates/block-buffer-0.9.0.crate) = 4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4
+SIZE (rust/crates/block-buffer-0.9.0.crate) = 7108
+SHA256 (rust/crates/bumpalo-3.6.1.crate) = 63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe
+SIZE (rust/crates/bumpalo-3.6.1.crate) = 133836
+SHA256 (rust/crates/byteorder-1.3.4.crate) = 08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de
+SIZE (rust/crates/byteorder-1.3.4.crate) = 21943
+SHA256 (rust/crates/bytes-1.0.1.crate) = b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040
+SIZE (rust/crates/bytes-1.0.1.crate) = 48142
+SHA256 (rust/crates/cc-1.0.62.crate) = f1770ced377336a88a67c473594ccc14eca6f4559217c34f64aac8f83d641b40
+SIZE (rust/crates/cc-1.0.62.crate) = 52639
+SHA256 (rust/crates/cfg-if-0.1.10.crate) = 4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822
+SIZE (rust/crates/cfg-if-0.1.10.crate) = 7933
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/chrono-0.4.19.crate) = 670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73
+SIZE (rust/crates/chrono-0.4.19.crate) = 155663
+SHA256 (rust/crates/clap-2.33.3.crate) = 37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002
+SIZE (rust/crates/clap-2.33.3.crate) = 201925
+SHA256 (rust/crates/cloudabi-0.1.0.crate) = 4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467
+SIZE (rust/crates/cloudabi-0.1.0.crate) = 22687
+SHA256 (rust/crates/core-foundation-0.9.1.crate) = 0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62
+SIZE (rust/crates/core-foundation-0.9.1.crate) = 25985
+SHA256 (rust/crates/core-foundation-sys-0.8.2.crate) = ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b
+SIZE (rust/crates/core-foundation-sys-0.8.2.crate) = 17461
+SHA256 (rust/crates/cpuid-bool-0.1.2.crate) = 8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634
+SIZE (rust/crates/cpuid-bool-0.1.2.crate) = 7173
+SHA256 (rust/crates/crypto-mac-0.10.0.crate) = 4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6
+SIZE (rust/crates/crypto-mac-0.10.0.crate) = 9476
+SHA256 (rust/crates/digest-0.9.0.crate) = d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066
+SIZE (rust/crates/digest-0.9.0.crate) = 13247
+SHA256 (rust/crates/dotenv-0.15.0.crate) = 77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f
+SIZE (rust/crates/dotenv-0.15.0.crate) = 11668
+SHA256 (rust/crates/env_logger-0.7.1.crate) = 44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36
+SIZE (rust/crates/env_logger-0.7.1.crate) = 32281
+SHA256 (rust/crates/envy-0.4.1.crate) = f938a4abd5b75fe3737902dbc2e79ca142cc1526827a9e40b829a086758531a9
+SIZE (rust/crates/envy-0.4.1.crate) = 10833
+SHA256 (rust/crates/fallible-iterator-0.2.0.crate) = 4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7
+SIZE (rust/crates/fallible-iterator-0.2.0.crate) = 18509
+SHA256 (rust/crates/fallible-streaming-iterator-0.1.9.crate) = 7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a
+SIZE (rust/crates/fallible-streaming-iterator-0.1.9.crate) = 9249
+SHA256 (rust/crates/foreign-types-0.3.2.crate) = f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1
+SIZE (rust/crates/foreign-types-0.3.2.crate) = 7504
+SHA256 (rust/crates/foreign-types-shared-0.1.1.crate) = 00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b
+SIZE (rust/crates/foreign-types-shared-0.1.1.crate) = 5672
+SHA256 (rust/crates/futures-0.3.8.crate) = 9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0
+SIZE (rust/crates/futures-0.3.8.crate) = 40380
+SHA256 (rust/crates/futures-channel-0.3.8.crate) = 4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64
+SIZE (rust/crates/futures-channel-0.3.8.crate) = 29476
+SHA256 (rust/crates/futures-core-0.3.8.crate) = 847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748
+SIZE (rust/crates/futures-core-0.3.8.crate) = 13857
+SHA256 (rust/crates/futures-executor-0.3.8.crate) = 4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65
+SIZE (rust/crates/futures-executor-0.3.8.crate) = 16653
+SHA256 (rust/crates/futures-io-0.3.8.crate) = 611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb
+SIZE (rust/crates/futures-io-0.3.8.crate) = 9131
+SHA256 (rust/crates/futures-macro-0.3.8.crate) = 77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556
+SIZE (rust/crates/futures-macro-0.3.8.crate) = 9766
+SHA256 (rust/crates/futures-sink-0.3.8.crate) = f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d
+SIZE (rust/crates/futures-sink-0.3.8.crate) = 7733
+SHA256 (rust/crates/futures-task-0.3.8.crate) = 7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d
+SIZE (rust/crates/futures-task-0.3.8.crate) = 11118
+SHA256 (rust/crates/futures-util-0.3.8.crate) = d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2
+SIZE (rust/crates/futures-util-0.3.8.crate) = 134020
+SHA256 (rust/crates/generic-array-0.14.4.crate) = 501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817
+SIZE (rust/crates/generic-array-0.14.4.crate) = 28916
+SHA256 (rust/crates/getrandom-0.2.2.crate) = c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8
+SIZE (rust/crates/getrandom-0.2.2.crate) = 26010
+SHA256 (rust/crates/heck-0.3.1.crate) = 20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205
+SIZE (rust/crates/heck-0.3.1.crate) = 54666
+SHA256 (rust/crates/hermit-abi-0.1.17.crate) = 5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8
+SIZE (rust/crates/hermit-abi-0.1.17.crate) = 10065
+SHA256 (rust/crates/hmac-0.10.1.crate) = c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15
+SIZE (rust/crates/hmac-0.10.1.crate) = 11120
+SHA256 (rust/crates/humantime-1.3.0.crate) = df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f
+SIZE (rust/crates/humantime-1.3.0.crate) = 17020
+SHA256 (rust/crates/instant-0.1.8.crate) = cb1fc4429a33e1f80d41dc9fea4d108a88bec1de8053878898ae448a0b52f613
+SIZE (rust/crates/instant-0.1.8.crate) = 5076
+SHA256 (rust/crates/js-sys-0.3.50.crate) = 2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c
+SIZE (rust/crates/js-sys-0.3.50.crate) = 67123
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/libc-0.2.93.crate) = 9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41
+SIZE (rust/crates/libc-0.2.93.crate) = 510944
+SHA256 (rust/crates/libsqlite3-sys-0.18.0.crate) = 1e704a02bcaecd4a08b93a23f6be59d0bd79cd161e0963e9499165a0a35df7bd
+SIZE (rust/crates/libsqlite3-sys-0.18.0.crate) = 2281735
+SHA256 (rust/crates/linked-hash-map-0.5.3.crate) = 8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a
+SIZE (rust/crates/linked-hash-map-0.5.3.crate) = 16130
+SHA256 (rust/crates/lock_api-0.4.1.crate) = 28247cc5a5be2f05fbcd76dd0cf2c7d3b5400cb978a28042abcd4fa0b3f8261c
+SIZE (rust/crates/lock_api-0.4.1.crate) = 20339
+SHA256 (rust/crates/log-0.4.11.crate) = 4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b
+SIZE (rust/crates/log-0.4.11.crate) = 36276
+SHA256 (rust/crates/lru-cache-0.1.2.crate) = 31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c
+SIZE (rust/crates/lru-cache-0.1.2.crate) = 9307
+SHA256 (rust/crates/matches-0.1.8.crate) = 7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08
+SIZE (rust/crates/matches-0.1.8.crate) = 2216
+SHA256 (rust/crates/md-5-0.9.1.crate) = 7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15
+SIZE (rust/crates/md-5-0.9.1.crate) = 15494
+SHA256 (rust/crates/memchr-2.3.4.crate) = 0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525
+SIZE (rust/crates/memchr-2.3.4.crate) = 23077
+SHA256 (rust/crates/mio-0.7.11.crate) = cf80d3e903b34e0bd7282b218398aec54e082c840d9baf8339e0080a0c542956
+SIZE (rust/crates/mio-0.7.11.crate) = 86660
+SHA256 (rust/crates/miow-0.3.7.crate) = b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21
+SIZE (rust/crates/miow-0.3.7.crate) = 24563
+SHA256 (rust/crates/native-tls-0.2.7.crate) = b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4
+SIZE (rust/crates/native-tls-0.2.7.crate) = 24958
+SHA256 (rust/crates/ntapi-0.3.6.crate) = 3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44
+SIZE (rust/crates/ntapi-0.3.6.crate) = 127221
+SHA256 (rust/crates/num-integer-0.1.44.crate) = d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db
+SIZE (rust/crates/num-integer-0.1.44.crate) = 22216
+SHA256 (rust/crates/num-traits-0.2.14.crate) = 9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290
+SIZE (rust/crates/num-traits-0.2.14.crate) = 45476
+SHA256 (rust/crates/once_cell-1.5.2.crate) = 13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0
+SIZE (rust/crates/once_cell-1.5.2.crate) = 27660
+SHA256 (rust/crates/opaque-debug-0.3.0.crate) = 624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5
+SIZE (rust/crates/opaque-debug-0.3.0.crate) = 5767
+SHA256 (rust/crates/openssl-0.10.33.crate) = a61075b62a23fef5a29815de7536d940aa35ce96d18ce0cc5076272db678a577
+SIZE (rust/crates/openssl-0.10.33.crate) = 202638
+SHA256 (rust/crates/openssl-probe-0.1.2.crate) = 77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de
+SIZE (rust/crates/openssl-probe-0.1.2.crate) = 6427
+SHA256 (rust/crates/openssl-sys-0.9.61.crate) = 313752393519e876837e09e1fa183ddef0be7735868dced3196f4472d536277f
+SIZE (rust/crates/openssl-sys-0.9.61.crate) = 52010
+SHA256 (rust/crates/parking_lot-0.11.0.crate) = a4893845fa2ca272e647da5d0e46660a314ead9c2fdd9a883aabc32e481a8733
+SIZE (rust/crates/parking_lot-0.11.0.crate) = 39558
+SHA256 (rust/crates/parking_lot_core-0.8.0.crate) = c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b
+SIZE (rust/crates/parking_lot_core-0.8.0.crate) = 33870
+SHA256 (rust/crates/percent-encoding-2.1.0.crate) = d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e
+SIZE (rust/crates/percent-encoding-2.1.0.crate) = 9748
+SHA256 (rust/crates/phf-0.8.0.crate) = 3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12
+SIZE (rust/crates/phf-0.8.0.crate) = 3902
+SHA256 (rust/crates/phf_shared-0.8.0.crate) = c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7
+SIZE (rust/crates/phf_shared-0.8.0.crate) = 2860
+SHA256 (rust/crates/pin-project-1.0.1.crate) = ee41d838744f60d959d7074e3afb6b35c7456d0f61cad38a24e35e6553f73841
+SIZE (rust/crates/pin-project-1.0.1.crate) = 54113
+SHA256 (rust/crates/pin-project-internal-1.0.1.crate) = 81a4ffa594b66bff340084d4081df649a7dc049ac8d7fc458d8e628bfbbb2f86
+SIZE (rust/crates/pin-project-internal-1.0.1.crate) = 26953
+SHA256 (rust/crates/pin-project-lite-0.2.6.crate) = dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905
+SIZE (rust/crates/pin-project-lite-0.2.6.crate) = 25494
+SHA256 (rust/crates/pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184
+SIZE (rust/crates/pin-utils-0.1.0.crate) = 7580
+SHA256 (rust/crates/pkg-config-0.3.19.crate) = 3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c
+SIZE (rust/crates/pkg-config-0.3.19.crate) = 15451
+SHA256 (rust/crates/postgres-0.19.1.crate) = c7871ee579860d8183f542e387b176a25f2656b9fb5211e045397f745a68d1c2
+SIZE (rust/crates/postgres-0.19.1.crate) = 25518
+SHA256 (rust/crates/postgres-native-tls-0.5.0.crate) = 2d442770e2b1e244bb5eb03b31c79b65bb2568f413b899eaba850fa945a65954
+SIZE (rust/crates/postgres-native-tls-0.5.0.crate) = 7488
+SHA256 (rust/crates/postgres-protocol-0.6.1.crate) = ff3e0f70d32e20923cabf2df02913be7c1842d4c772db8065c00fcfdd1d1bff3
+SIZE (rust/crates/postgres-protocol-0.6.1.crate) = 24063
+SHA256 (rust/crates/postgres-types-0.2.1.crate) = 430f4131e1b7657b0cd9a2b0c3408d77c9a43a042d300b8c77f981dffcc43a2f
+SIZE (rust/crates/postgres-types-0.2.1.crate) = 25448
+SHA256 (rust/crates/ppv-lite86-0.2.10.crate) = ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857
+SIZE (rust/crates/ppv-lite86-0.2.10.crate) = 20915
+SHA256 (rust/crates/proc-macro-error-1.0.4.crate) = da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c
+SIZE (rust/crates/proc-macro-error-1.0.4.crate) = 25293
+SHA256 (rust/crates/proc-macro-error-attr-1.0.4.crate) = a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869
+SIZE (rust/crates/proc-macro-error-attr-1.0.4.crate) = 7971
+SHA256 (rust/crates/proc-macro-hack-0.5.19.crate) = dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5
+SIZE (rust/crates/proc-macro-hack-0.5.19.crate) = 15556
+SHA256 (rust/crates/proc-macro-nested-0.1.6.crate) = eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a
+SIZE (rust/crates/proc-macro-nested-0.1.6.crate) = 6498
+SHA256 (rust/crates/proc-macro2-1.0.26.crate) = a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec
+SIZE (rust/crates/proc-macro2-1.0.26.crate) = 38233
+SHA256 (rust/crates/quick-error-1.2.3.crate) = a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0
+SIZE (rust/crates/quick-error-1.2.3.crate) = 15066
+SHA256 (rust/crates/quote-1.0.7.crate) = aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37
+SIZE (rust/crates/quote-1.0.7.crate) = 25170
+SHA256 (rust/crates/rand-0.8.3.crate) = 0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e
+SIZE (rust/crates/rand-0.8.3.crate) = 84493
+SHA256 (rust/crates/rand_chacha-0.3.0.crate) = e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d
+SIZE (rust/crates/rand_chacha-0.3.0.crate) = 13920
+SHA256 (rust/crates/rand_core-0.6.2.crate) = 34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7
+SIZE (rust/crates/rand_core-0.6.2.crate) = 21708
+SHA256 (rust/crates/rand_hc-0.3.0.crate) = 3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73
+SIZE (rust/crates/rand_hc-0.3.0.crate) = 11780
+SHA256 (rust/crates/redox_syscall-0.1.57.crate) = 41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce
+SIZE (rust/crates/redox_syscall-0.1.57.crate) = 17087
+SHA256 (rust/crates/redox_syscall-0.2.5.crate) = 94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9
+SIZE (rust/crates/redox_syscall-0.2.5.crate) = 23449
+SHA256 (rust/crates/regex-1.4.2.crate) = 38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c
+SIZE (rust/crates/regex-1.4.2.crate) = 236931
+SHA256 (rust/crates/regex-syntax-0.6.21.crate) = 3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189
+SIZE (rust/crates/regex-syntax-0.6.21.crate) = 293572
+SHA256 (rust/crates/remove_dir_all-0.5.3.crate) = 3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7
+SIZE (rust/crates/remove_dir_all-0.5.3.crate) = 9184
+SHA256 (rust/crates/ring-0.16.20.crate) = 3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc
+SIZE (rust/crates/ring-0.16.20.crate) = 5082615
+SHA256 (rust/crates/rusqlite-0.23.1.crate) = 45d0fd62e1df63d254714e6cb40d0a0e82e7a1623e7a27f679d851af092ae58b
+SIZE (rust/crates/rusqlite-0.23.1.crate) = 112106
+SHA256 (rust/crates/rustls-0.19.0.crate) = 064fd21ff87c6e87ed4506e68beb42459caa4a0e2eb144932e6776768556980b
+SIZE (rust/crates/rustls-0.19.0.crate) = 208339
+SHA256 (rust/crates/schannel-0.1.19.crate) = 8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75
+SIZE (rust/crates/schannel-0.1.19.crate) = 42755
+SHA256 (rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (rust/crates/sct-0.6.0.crate) = e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c
+SIZE (rust/crates/sct-0.6.0.crate) = 28777
+SHA256 (rust/crates/security-framework-2.2.0.crate) = 3670b1d2fdf6084d192bc71ead7aabe6c06aa2ea3fbd9cc3ac111fa5c2b1bd84
+SIZE (rust/crates/security-framework-2.2.0.crate) = 57599
+SHA256 (rust/crates/security-framework-sys-2.2.0.crate) = 3676258fd3cfe2c9a0ec99ce3038798d847ce3e4bb17746373eb9f0f1ac16339
+SIZE (rust/crates/security-framework-sys-2.2.0.crate) = 11744
+SHA256 (rust/crates/serde-1.0.117.crate) = b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a
+SIZE (rust/crates/serde-1.0.117.crate) = 74505
+SHA256 (rust/crates/serde_derive-1.0.117.crate) = cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e
+SIZE (rust/crates/serde_derive-1.0.117.crate) = 50712
+SHA256 (rust/crates/sha2-0.9.2.crate) = 6e7aab86fe2149bad8c507606bdb3f4ef5e7b2380eb92350f56122cca72a42a8
+SIZE (rust/crates/sha2-0.9.2.crate) = 19665
+SHA256 (rust/crates/siphasher-0.3.3.crate) = fa8f3741c7372e75519bd9346068370c9cdaabcc1f9599cbcf2a2719352286b7
+SIZE (rust/crates/siphasher-0.3.3.crate) = 9458
+SHA256 (rust/crates/slab-0.4.2.crate) = c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8
+SIZE (rust/crates/slab-0.4.2.crate) = 10136
+SHA256 (rust/crates/smallvec-1.5.0.crate) = 7acad6f34eb9e8a259d3283d1e8c1d34d7415943d4895f65cc73813c7396fc85
+SIZE (rust/crates/smallvec-1.5.0.crate) = 26303
+SHA256 (rust/crates/socket2-0.4.0.crate) = 9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2
+SIZE (rust/crates/socket2-0.4.0.crate) = 37949
+SHA256 (rust/crates/spin-0.5.2.crate) = 6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d
+SIZE (rust/crates/spin-0.5.2.crate) = 12004
+SHA256 (rust/crates/stringprep-0.1.2.crate) = 8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1
+SIZE (rust/crates/stringprep-0.1.2.crate) = 22021
+SHA256 (rust/crates/strsim-0.8.0.crate) = 8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a
+SIZE (rust/crates/strsim-0.8.0.crate) = 9309
+SHA256 (rust/crates/structopt-0.3.20.crate) = 126d630294ec449fae0b16f964e35bf3c74f940da9dca17ee9b905f7b3112eb8
+SIZE (rust/crates/structopt-0.3.20.crate) = 50699
+SHA256 (rust/crates/structopt-derive-0.4.13.crate) = 65e51c492f9e23a220534971ff5afc14037289de430e3c83f9daf6a1b6ae91e8
+SIZE (rust/crates/structopt-derive-0.4.13.crate) = 20115
+SHA256 (rust/crates/subtle-2.3.0.crate) = 343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd
+SIZE (rust/crates/subtle-2.3.0.crate) = 11096
+SHA256 (rust/crates/syn-1.0.69.crate) = 48fe99c6bd8b1cc636890bcc071842de909d902c81ac7dab53ba33c421ab8ffb
+SIZE (rust/crates/syn-1.0.69.crate) = 231954
+SHA256 (rust/crates/tempfile-3.2.0.crate) = dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22
+SIZE (rust/crates/tempfile-3.2.0.crate) = 25892
+SHA256 (rust/crates/termcolor-1.1.0.crate) = bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f
+SIZE (rust/crates/termcolor-1.1.0.crate) = 17193
+SHA256 (rust/crates/textwrap-0.11.0.crate) = d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060
+SIZE (rust/crates/textwrap-0.11.0.crate) = 17322
+SHA256 (rust/crates/thread_local-1.0.1.crate) = d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14
+SIZE (rust/crates/thread_local-1.0.1.crate) = 12609
+SHA256 (rust/crates/time-0.1.44.crate) = 6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255
+SIZE (rust/crates/time-0.1.44.crate) = 28885
+SHA256 (rust/crates/tinyvec-1.0.1.crate) = b78a366903f506d2ad52ca8dc552102ffdd3e937ba8a227f024dc1d1eae28575
+SIZE (rust/crates/tinyvec-1.0.1.crate) = 33836
+SHA256 (rust/crates/tinyvec_macros-0.1.0.crate) = cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c
+SIZE (rust/crates/tinyvec_macros-0.1.0.crate) = 1817
+SHA256 (rust/crates/tokio-1.4.0.crate) = 134af885d758d645f0f0505c9a8b3f9bf8a348fd822e112ab5248138348f1722
+SIZE (rust/crates/tokio-1.4.0.crate) = 439130
+SHA256 (rust/crates/tokio-native-tls-0.3.0.crate) = f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b
+SIZE (rust/crates/tokio-native-tls-0.3.0.crate) = 20759
+SHA256 (rust/crates/tokio-postgres-0.7.1.crate) = 98779a950cb6ef76f8ad71c411176115c5c1200a83eeeca4dd9f61e3fc4836c8
+SIZE (rust/crates/tokio-postgres-0.7.1.crate) = 66614
+SHA256 (rust/crates/tokio-postgres-rustls-0.8.0.crate) = 7bd8c37d8c23cb6ecdc32fc171bade4e9c7f1be65f693a17afbaad02091a0a19
+SIZE (rust/crates/tokio-postgres-rustls-0.8.0.crate) = 3326
+SHA256 (rust/crates/tokio-rustls-0.22.0.crate) = bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6
+SIZE (rust/crates/tokio-rustls-0.22.0.crate) = 22706
+SHA256 (rust/crates/tokio-util-0.6.5.crate) = 5143d049e85af7fbc36f5454d990e62c2df705b3589f123b71f441b6b59f443f
+SIZE (rust/crates/tokio-util-0.6.5.crate) = 71019
+SHA256 (rust/crates/toml-0.5.7.crate) = 75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645
+SIZE (rust/crates/toml-0.5.7.crate) = 54372
+SHA256 (rust/crates/typenum-1.12.0.crate) = 373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33
+SIZE (rust/crates/typenum-1.12.0.crate) = 36037
+SHA256 (rust/crates/unicode-bidi-0.3.4.crate) = 49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5
+SIZE (rust/crates/unicode-bidi-0.3.4.crate) = 32228
+SHA256 (rust/crates/unicode-normalization-0.1.14.crate) = b7f98e67a4d84f730d343392f9bfff7d21e3fca562b9cb7a43b768350beeddc6
+SIZE (rust/crates/unicode-normalization-0.1.14.crate) = 92680
+SHA256 (rust/crates/unicode-segmentation-1.7.0.crate) = db8716a166f290ff49dabc18b44aa407cb7c6dbe1aa0971b44b8a24b0ca35aae
+SIZE (rust/crates/unicode-segmentation-1.7.0.crate) = 93069
+SHA256 (rust/crates/unicode-width-0.1.8.crate) = 9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3
+SIZE (rust/crates/unicode-width-0.1.8.crate) = 16732
+SHA256 (rust/crates/unicode-xid-0.2.1.crate) = f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564
+SIZE (rust/crates/unicode-xid-0.2.1.crate) = 14392
+SHA256 (rust/crates/untrusted-0.7.1.crate) = a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a
+SIZE (rust/crates/untrusted-0.7.1.crate) = 7924
+SHA256 (rust/crates/vcpkg-0.2.10.crate) = 6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c
+SIZE (rust/crates/vcpkg-0.2.10.crate) = 11504
+SHA256 (rust/crates/vec_map-0.8.2.crate) = f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191
+SIZE (rust/crates/vec_map-0.8.2.crate) = 14466
+SHA256 (rust/crates/version_check-0.9.2.crate) = b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed
+SIZE (rust/crates/version_check-0.9.2.crate) = 11979
+SHA256 (rust/crates/wasi-0.10.0+wasi-snapshot-preview1.crate) = 1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f
+SIZE (rust/crates/wasi-0.10.0+wasi-snapshot-preview1.crate) = 26964
+SHA256 (rust/crates/wasm-bindgen-0.2.73.crate) = 83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9
+SIZE (rust/crates/wasm-bindgen-0.2.73.crate) = 159293
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.73.crate) = ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae
+SIZE (rust/crates/wasm-bindgen-backend-0.2.73.crate) = 25434
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.73.crate) = 3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f
+SIZE (rust/crates/wasm-bindgen-macro-0.2.73.crate) = 11545
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.73.crate) = d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.73.crate) = 17835
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.73.crate) = d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489
+SIZE (rust/crates/wasm-bindgen-shared-0.2.73.crate) = 6691
+SHA256 (rust/crates/web-sys-0.3.50.crate) = a905d57e488fec8861446d3393670fb50d27a262344013181c2cdf9fff5481be
+SIZE (rust/crates/web-sys-0.3.50.crate) = 650100
+SHA256 (rust/crates/webpki-0.21.4.crate) = b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea
+SIZE (rust/crates/webpki-0.21.4.crate) = 58505
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-util-0.1.5.crate) = 70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178
+SIZE (rust/crates/winapi-util-0.1.5.crate) = 10164
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (byronwasti-movine-v0.11.0_GH0.tar.gz) = ed67992ff9c478084602bcebe905c4a78a4053b77b6aff4d2a48d8c5abab6671
+SIZE (byronwasti-movine-v0.11.0_GH0.tar.gz) = 26579
diff --git a/databases/movine/pkg-descr b/databases/movine/pkg-descr
new file mode 100644
index 000000000000..cff09ed13b5f
--- /dev/null
+++ b/databases/movine/pkg-descr
@@ -0,0 +1,8 @@
+Movine is a simple database migration manager that aims to be compatible with
+real-world migration work. Many migration managers get confused with
+complicated development strategies for migrations. Oftentimes migration managers
+do not warn you if the SQL saved in git differs from what was actually run on
+the database. Movine solves this issue by keeping track of the unique hashes for
+the up.sql and down.sql for each migration, and provides tools for fixing
+issues. This allows users to easily keep track of whether their local migration
+history matches the one on the database.