Skip to content

Commit bd961b3

Browse files
committed
move worktree- checkout functionality into its own crate
1 parent be9af32 commit bd961b3

23 files changed

+1712
-0
lines changed

Cargo.lock

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ members = [
235235
"gix-index",
236236
"gix-bitmap",
237237
"gix-worktree",
238+
"gix-worktree-state",
238239
"gix-status",
239240
"gix-revision",
240241
"gix-packetline",

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ is usable to some extent.
9696
* [gix-archive](https://github.com/Byron/gitoxide/blob/main/crate-status.md#gix-archive)
9797
* [gix-submodule](https://github.com/Byron/gitoxide/blob/main/crate-status.md#gix-submodule)
9898
* [gix-status](https://github.com/Byron/gitoxide/blob/main/crate-status.md#gix-status)
99+
* [gix-worktree-state](https://github.com/Byron/gitoxide/blob/main/crate-status.md#gix-worktree-state)
99100
* `gitoxide-core`
100101
* **very early** _(possibly without any documentation and many rough edges)_
101102
* [gix-date](https://github.com/Byron/gitoxide/blob/main/crate-status.md#gix-date)

crate-status.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,27 @@ Make it the best-performing implementation and the most convenient one.
459459
* [ ] differences between tree and index to turn tree into index
460460
* [ ] untracked files
461461
* [ ] fast answer to 'is it dirty'.
462+
*
463+
### gix-worktree-state
464+
* handle the working **tree/checkout**
465+
- [x] checkout an index of files, executables and symlinks just as fast as git
466+
- [x] forbid symlinks in directories
467+
- [ ] handle submodules
468+
- [ ] handle sparse directories
469+
- [ ] handle sparse index
470+
- [x] linear scaling with multi-threading up to IO saturation
471+
- supported attributes to affect working tree and index contents
472+
- [x] eol
473+
- [x] working-tree-encoding
474+
- …more
475+
- **filtering**
476+
- [x] `text`
477+
- [x] `ident`
478+
- [x] filter processes
479+
- [x] single-invocation clean/smudge filters
480+
* access to per-path information, like `.gitignore` and `.gitattributes` in a manner well suited for efficient lookups
481+
* [x] _exclude_ information
482+
* [x] attributes
462483

463484
### gix-worktree
464485
* handle the working **tree/checkout**

gix-worktree-state/Cargo.toml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
[package]
2+
name = "gix-worktree-state"
3+
version = "0.1.0"
4+
repository = "https://github.com/Byron/gitoxide"
5+
license = "MIT OR Apache-2.0"
6+
description = "A crate of the gitoxide project implementing setting the worktree to a particular state"
7+
authors = ["Sebastian Thiel <[email protected]>"]
8+
edition = "2021"
9+
include = ["src/**/*", "LICENSE-*", "CHANGELOG.md"]
10+
rust-version = "1.65"
11+
12+
[lib]
13+
doctest = false
14+
15+
[[test]]
16+
name = "multi-threaded"
17+
path = "tests/state-multi-threaded.rs"
18+
required-features = ["internal-testing-gix-features-parallel"]
19+
20+
[features]
21+
internal-testing-gix-features-parallel = ["gix-features/parallel"]
22+
23+
[dependencies]
24+
gix-worktree = { version = "^0.24.0", path = "../gix-worktree" }
25+
gix-index = { version = "^0.22.0", path = "../gix-index" }
26+
gix-fs = { version = "^0.4.1", path = "../gix-fs" }
27+
gix-hash = { version = "^0.11.4", path = "../gix-hash" }
28+
gix-object = { version = "^0.34.0", path = "../gix-object" }
29+
gix-glob = { version = "^0.10.2", path = "../gix-glob" }
30+
gix-path = { version = "^0.8.4", path = "../gix-path" }
31+
gix-features = { version = "^0.32.1", path = "../gix-features" }
32+
gix-filter = { version = "^0.3.0", path = "../gix-filter" }
33+
34+
io-close = "0.3.7"
35+
thiserror = "1.0.26"
36+
bstr = { version = "1.3.0", default-features = false }
37+
38+
[dev-dependencies]
39+
gix-testtools = { path = "../tests/tools" }
40+
gix-odb = { path = "../gix-odb" }
41+
symlink = "0.1.0"
42+
once_cell = "1.18.0"
43+
44+
walkdir = "2.3.2"

gix-worktree-state/LICENSE-APACHE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../LICENSE-APACHE

gix-worktree-state/LICENSE-MIT

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../LICENSE-MIT

0 commit comments

Comments
 (0)