forked from GitoxideLabs/gitoxide
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Cargo.toml
186 lines (158 loc) · 6.94 KB
/
Cargo.toml
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
[package]
name = "gitoxide"
description = "A command-line application for interacting with git repositories"
repository = "https://github.com/Byron/gitoxide"
authors = ["Sebastian Thiel <[email protected]>"]
edition = "2018"
license = "MIT OR Apache-2.0"
version = "0.16.0"
default-run = "gix"
include = ["src/**/*", "LICENSE-*", "README.md", "CHANGELOG.md"]
resolver = "2"
[[bin]]
name = "ein"
path = "src/ein.rs"
test = false
doctest = false
[[bin]]
name = "gix"
path = "src/gix.rs"
test = false
doctest = false
[features]
default = ["max"]
## Makes the crate execute as fast as possible by supporting parallel computation of otherwise long-running functions
## as well as fast, hardware accelerated hashing, along with a faster zlib backend.
## If disabled, the binary will be visibly smaller.
fast = ["git-repository/max-performance"]
## Use `clap` 3.0 to build the prettiest, best documented and most user-friendly CLI at the expense of binary size.
## Provides a terminal user interface for detailed and exhaustive progress.
## Provides a line renderer for leaner progress display, without the need for a full-blown TUI.
pretty-cli = [ "gitoxide-core/serde1", "prodash/progress-tree", "prodash/progress-tree-log", "prodash/local-time", "env_logger/humantime", "env_logger/termcolor", "env_logger/atty" ]
## The `--verbose` flag will be powered by an interactive progress mechanism that doubles as log as well as interactive progress
## that appears after a short duration.
prodash-render-line-crossterm = ["prodash-render-line", "prodash/render-line-crossterm", "atty", "crosstermion"]
#! ### Convenience Features
#! These combine common choices of the above features to represent typical builds
## *fast* + *prodash-render-tui-crossterm* + *prodash-render-line-crossterm* + *http* + *gitoxide-core-tools* + *client-networking*
max = ["fast", "pretty-cli", "http-client-curl", "gitoxide-core-tools", "gitoxide-core-blocking-client", "prodash-render-line", "prodash-render-tui", "prodash/render-line-autoconfigure", "git-repository/regex" ]
## *fast* + *prodash-render-line-crossterm* + *gitoxide-core-tools* + *client-networking*.
lean = ["fast", "pretty-cli", "http-client-curl", "gitoxide-core-tools", "gitoxide-core-blocking-client", "prodash-render-line" ]
## fast* + *prodash-render-line-crossterm* + *gitoxide-core-tools* + *client-async-networking*.
## Due to async client-networking not being implemented for most transports, this one supports only the 'git' transport.
## It uses, however, a fully asynchronous networking implementation which can serve a real-world example on how to implement custom async transports.
lean-async = ["fast", "pretty-cli", "gitoxide-core-tools", "gitoxide-core-async-client", "prodash-render-line"]
## As small as it can possibly be, no threading, no fast sha1, log based progress only, rust based zlib implementation.
## no networking, local operations only.
small = ["pretty-cli", "git-features/rustsha1", "git-features/zlib-rust-backend", "prodash-render-line", "atty" ]
#! ### `gitoxide-core` Configuration
## A way to enable all `gitoxide-core` tools found in `gix tools`
gitoxide-core-tools = ["gitoxide-core/organize", "gitoxide-core/estimate-hours"]
#! #### Mutually Exclusive Networking
#! If both are set a compile error is triggered. This also means that `cargo … --all-features` will fail.
## Use blocking client networking.
gitoxide-core-blocking-client = ["gitoxide-core/blocking-client"]
## Support synchronous 'http' and 'https' transports (e.g. for clone, fetch and push) at the expense of compile times and binary size.
http-client-curl = ["git-transport-for-configuration-only/http-client-curl"]
## Use async client networking.
gitoxide-core-async-client = ["gitoxide-core/async-client", "futures-lite"]
# internal
prodash-render-tui = ["prodash/render-tui", "prodash/render-tui-crossterm", "prodash/progress-tree", "futures-lite"]
prodash-render-line = ["prodash/render-line", "prodash-render-line-crossterm", "prodash/progress-tree"]
cache-efficiency-debug = ["git-features/cache-efficiency-debug"]
[dependencies]
anyhow = "1.0.42"
gitoxide-core = { version = "^0.18.0", path = "gitoxide-core" }
git-features = { version = "^0.22.4", path = "git-features" }
git-repository = { version = "^0.24.0", path = "git-repository", default-features = false }
git-transport-for-configuration-only = { package = "git-transport", optional = true, version = "^0.20.0", path = "git-transport" }
clap = { version = "3.2.5", features = ["derive", "cargo"] }
prodash = { version = "19.0.0", optional = true, default-features = false }
atty = { version = "0.2.14", optional = true, default-features = false }
env_logger = { version = "0.9.0", default-features = false }
crosstermion = { version = "0.9.0", optional = true, default-features = false }
futures-lite = { version = "1.12.0", optional = true, default-features = false, features = ["std"] }
document-features = { version = "0.2.0", optional = true }
[profile.dev.package]
git-object = { opt-level = 3 }
git-ref = { opt-level = 3 }
#git-pack = { opt-level = 3 }
git-hash = { opt-level = 3 }
git-actor = { opt-level = 3 }
git-config = { opt-level = 3 }
miniz_oxide = { opt-level = 3 }
sha1 = { opt-level = 3 }
sha1_smol = { opt-level = 3 }
[profile.release]
overflow-checks = false
lto = "fat"
# this bloats files but assures destructors are called, important for tempfiles. One day I hope we
# can wire up the 'abrt' signal handler so tempfiles will be removed in case of panics.
panic = 'unwind'
codegen-units = 1
incremental = false
build-override = { opt-level = 0 }
# It's not quite worth building dependencies with more optimizations yet. Let's keep it here for later.
#[profile.dev.package."*"]
#opt-level = 2
[workspace]
members = [
"git-actor",
"git-url",
"git-hash",
"git-validate",
"git-ref",
"git-command",
"git-config",
"git-config-value",
"git-discover",
"git-features",
"git-commitgraph",
"git-chunk",
"git-quote",
"git-object",
"git-glob",
"git-diff",
"git-date",
"git-traverse",
"git-index",
"git-bitmap",
"git-worktree",
"git-revision",
"git-packetline",
"git-mailmap",
"git-note",
"git-prompt",
"git-filter",
"git-sec",
"git-lfs",
"git-rebase",
"git-sequencer",
"git-submodule",
"git-transport",
"git-credentials",
"git-protocol",
"git-pack",
"git-odb",
"git-tempfile",
"git-lock",
"git-attributes",
"git-pathspec",
"git-refspec",
"git-path",
"git-repository",
"gitoxide-core",
"git-tui",
"git-tix",
"cargo-smart-release",
"experiments/object-access",
"experiments/diffing",
"experiments/traversal",
"tests/tools",
]
exclude = ["cargo-smart-release/tests/fixtures/tri-depth-workspace/a",
"cargo-smart-release/tests/fixtures/tri-depth-workspace/b",
"cargo-smart-release/tests/fixtures/tri-depth-workspace/c"]
[package.metadata.docs.rs]
features = ["document-features", "max"]
rustdoc-args = ["--cfg", "docsrs"]