Skip to content

ikey4u/quarry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quarry

Manifest-driven source dependencies with git-format patches. See docs/DESIGN.md.

Install

cargo install --path .
# or
cargo build --release && cp target/release/quarry ~/.cargo/bin/

Quick start

quarry init --name my-app
quarry add libfoo --git https://github.com/example/libfoo.git --rev v1.0.0
quarry sync

Commit Quarry.toml and patches/. .quarry/ is gitignored and can be deleted anytime:

rm -rf .quarry && quarry sync

Commands

Command Description
quarry init New project (Quarry.toml, patches/, .gitignore)
quarry sync [name] Fetch, checkout, apply patches (recursive)
quarry sync --continue-on-error Sync all; collect errors at end
quarry add <name> --git <url> --rev <rev> Add git dependency
quarry add <name> --url <url> --rev <ver> [--hash sha256:…] Add HTTP archive
quarry remove <name> [--patches] Remove dependency
quarry edit <name> Prepare for local edits
quarry patch <name> Write git diff to patches/
quarry diff <name> Show local changes vs rev
quarry pin <name> Pin current HEAD to manifest
quarry pin <name> --manifest-rev Resolve tag/branch in rev to SHA
quarry bump <name> --rev <rev> Bump version and re-apply patches
quarry update <name> [--rev] Re-sync one dependency
quarry status Dependency state
quarry verify CI validation
quarry clean [--cache] Remove .quarry (optionally keep cache)

Nested dependencies use slash paths: quarry sync libfoo/baz, quarry patch libfoo/baz.

Example manifest

[project]
name = "my-app"
quarry-dir = ".quarry"
patches-dir = "patches"

[dependencies.libfoo]
source = "git+https://github.com/org/libfoo.git"
rev = "a1b2c3d4e5f6..."

[[dependencies.libfoo.patches]]
path = "libfoo/0001-fix.patch"

License

MIT OR Apache-2.0

About

A dependencies management tool

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors