git-cvs-fast-import
is a fairly standard Rust binary that uses several packages within its workspace to provide functionality. We intend to publish the packages that make sense to publish to crates.io in the future.
comma-v
: a parser for the RCS,v
format used by CVS.git-fast-import
: a client for thegit fast-import
streaming format.rcs-ed
: an implementation of the subset ofed
commands used by RCS.
eq-macro
: a proc macro to derivePartialEq<[u8]>
, used internally bycomma-v
.
src
: contains the source for thegit-cvs-fast-import
binary itself, which intentionally doesn't do very much and mostly delegates to other packages.internal/process
: process management forgit fast-import
.internal/state
: state management and persistence.
To create tags, use cargo-release, specifically with --skip-publish
for now until we have the generic packages open sourced and published on crates.io.
Once tagged, GitHub Actions will invoke GoReleaser to handle building packages and generating a release changelog. A mild amount of hackery is required to make it work with a Rust program, see .goreleaser.yml
for the gory details.
For maximum compatibility, binaries are built as static Linux binaries using the x86_64-unknown-linux-musl
Rust target. Note that this means that non-Rust dependencies can only be added if they can easily be statically linked. (In practice, this hasn't been a problem thus far.)
tokio-console
is wired up in debug builds. The default address is used, so just running tokio-console
should be sufficient to connect.