-
-
Notifications
You must be signed in to change notification settings - Fork 477
Expand file tree
/
Copy pathCargo.toml
More file actions
133 lines (113 loc) · 6.34 KB
/
Cargo.toml
File metadata and controls
133 lines (113 loc) · 6.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
lints.workspace = true
[package]
name = "gitoxide-core"
description = "The library implementing all capabilities of the gitoxide CLI"
repository = "https://github.com/GitoxideLabs/gitoxide"
version = "0.57.0"
authors = ["Sebastian Thiel <[email protected]>"]
license = "MIT OR Apache-2.0"
edition = "2024"
include = ["/src/**/*", "/LICENSE-*"]
[lib]
doctest = false
test = true
[features]
default = []
#! ### Tools
## Discover all git repositories within a directory. Particularly useful with [skim](https://github.com/lotabout/skim).
organize = ["dep:gix-url", "dep:jwalk"]
## Derive the amount of time invested into a git repository akin to [git-hours](https://github.com/kimmobrunfeldt/git-hours).
estimate-hours = ["dep:fs-err", "dep:crossbeam-channel", "dep:smallvec"]
## Gather information about repositories and store it in a database for easy querying.
query = ["dep:rusqlite"]
## Run algorithms on a corpus of repositories and store their results for later comparison and intelligence gathering.
## *Note that* `organize` we need for finding git repositories fast.
corpus = ["dep:rusqlite", "dep:sysinfo", "organize", "dep:crossbeam-channel", "dep:serde_json", "dep:tracing-forest", "dep:tracing-subscriber", "tracing", "dep:parking_lot"]
## The ability to create archives from virtual worktrees, similar to `git archive`.
archive = ["dep:gix-archive-for-configuration-only", "gix/worktree-archive"]
## The ability to clean a repository, similar to `git clean`.
clean = ["gix/dirwalk"]
#! ### Mutually Exclusive Networking
#! If both are set, _blocking-client_ will take precedence, allowing `--all-features` to be used.
## If set, the client used to connect to git servers will use a blocking API. It supports more transports and is what most would want.
blocking-client = ["gix/blocking-network-client"]
## The client to connect to git servers will be async, while supporting only the 'git' transport itself.
## It's the most limited and can be seen as example on how to use custom transports for custom servers.
async-client = ["gix/async-network-client-async-std", "gix-transport-configuration-only/async-std", "async-trait", "futures-io", "async-net", "async-io", "futures-lite", "blocking"]
#! ### Other
## Data structures implement `serde::Serialize` and `serde::Deserialize`.
serde = ["gix/serde", "dep:serde_json", "dep:serde", "bytesize/serde"]
[dependencies]
# deselect everything else (like "performance") as this should be controllable by the parent application.
gix = { version = "^0.83.0", path = "../gix", default-features = false, features = ["merge", "blob-diff", "blame", "revision", "mailmap", "excludes", "attributes", "worktree-mutation", "credentials", "interrupt", "status", "dirwalk"] }
gix-pack-for-configuration-only = { package = "gix-pack", version = "^0.70.0", path = "../gix-pack", default-features = false, features = ["pack-cache-lru-dynamic", "pack-cache-lru-static", "generate", "streaming-input"] }
gix-transport-configuration-only = { package = "gix-transport", version = "^0.57.0", path = "../gix-transport", default-features = false }
gix-archive-for-configuration-only = { package = "gix-archive", version = "^0.32.0", path = "../gix-archive", optional = true, features = ["tar", "tar_gz"] }
gix-status = { version = "^0.30.0", path = "../gix-status" }
gix-fsck = { version = "^0.21.0", path = "../gix-fsck" }
gix-error-for-configuration-only = { package = "gix-error", version = "^0.2.3", path = "../gix-error", features = ["anyhow"] }
serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] }
anyhow = "1.0.102"
thiserror = "2.0.18"
bytesize = "2.3.1"
tempfile = "3.26.0"
# for async-client
async-trait = { version = "0.1.51", optional = true }
async-net = { version = "2.0", optional = true }
futures-lite = { version = "2.1.0", optional = true }
async-io = { version = "2.6", optional = true }
futures-io = { version = "0.3.32", optional = true }
blocking = { version = "1.6.2", optional = true }
# for 'organize' functionality
gix-url = { version = "^0.36.0", path = "../gix-url", optional = true }
jwalk = { version = "0.8.0", optional = true }
# for 'hours'
fs-err = { version = "3.3.0", optional = true }
crossbeam-channel = { version = "0.5.15", optional = true }
smallvec = { version = "1.15.1", optional = true }
# for 'query' and 'corpus'
rusqlite = { version = "0.39.0", optional = true, features = ["bundled", "fallible_uint"] }
# for 'corpus'
parking_lot = { version = "0.12.4", optional = true }
sysinfo = { version = "0.38.2", optional = true, default-features = false, features = ["system"] }
serde_json = { version = "1.0.149", optional = true }
tracing-forest = { version = "0.2.0", features = ["serde"], optional = true }
tracing-subscriber = { version = "0.3.22", optional = true }
tracing = { version = "0.1.43", optional = true }
# for svg graph output
layout-rs = "0.1.3"
open = "5.0.0"
document-features = { version = "0.2.0", optional = true }
[dev-dependencies]
gix = { path = "../gix", default-features = false, features = ["sha1", "parallel"] }
[package.metadata.docs.rs]
features = ["document-features", "blocking-client", "organize", "estimate-hours", "serde", "gix/sha1", "gix/parallel"]
[package.metadata.cargo-machete]
ignored = [
# Enabled through `async-client` feature wiring only.
"async-io",
# Enabled through `async-client` feature wiring only.
"async-net",
# Enabled through `async-client` feature wiring only.
"async-trait",
# Enabled through `async-client` feature wiring only.
"blocking",
# Enabled through `estimate-hours` feature wiring only.
"fs-err",
# Enabled through `async-client` feature wiring only.
"futures-io",
# Enabled through `async-client` feature wiring only.
"futures-lite",
# Configuration-only dependency selected by the `archive` feature.
"gix-archive-for-configuration-only",
# Configuration-only dependency used to constrain global `gix-error` feature resolution.
"gix-error-for-configuration-only",
# Configuration-only dependency used to constrain global `gix-pack` feature resolution.
"gix-pack-for-configuration-only",
# Configuration-only dependency selected by `async-client` feature wiring.
"gix-transport-configuration-only",
# Imported as crate `layout`, which does not match the package name `layout-rs`.
"layout-rs",
# Enabled through `estimate-hours` feature wiring only.
"smallvec",
]