You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: crate-status.md
+23-10Lines changed: 23 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -101,10 +101,15 @@ and itself relies on all `git-*` crates. It's not meant for consumption, for app
101
101
*[x] write the table of contents
102
102
103
103
### gix-hashtable
104
-
105
104
*[x] hashmap
106
105
*[x] hashset
107
106
107
+
### gix-utils
108
+
109
+
***filesystem**
110
+
*[x] probe capabilities
111
+
*[x] symlink creation and removal
112
+
*[x] file snapshots
108
113
109
114
### gix-object
110
115
**decode (zero-copy)* borrowed objects
@@ -323,11 +328,13 @@ Check out the [performance discussion][gix-traverse-performance] as well.
323
328
*[ ] Some examples
324
329
325
330
### gix-attributes
326
-
*[x] parse git-ignore files (aka gix-attributes without the attributes or negation)
327
-
*[x] parse gix-attributes files
328
-
*[ ] create an attributes stack, ideally one that includes 'ignored' status from .gitignore files.
329
-
*[ ] support for built-in `binary` macro for `-text -diff -merge`
330
-
331
+
*[x] parse `.gitattribute` files
332
+
*[ ] an attributes stack for matching paths to their attributes, with support for built-in `binary` macro for `-text -diff -merge`
333
+
334
+
### gix-ignore
335
+
*[x] parse `.gitignore` files
336
+
*[x] an attributes stack for checking if paths are excluded
337
+
331
338
### gix-quote
332
339
***ansi-c**
333
340
*[x] quote
@@ -440,7 +447,7 @@ Make it the best-performing implementation and the most convenient one.
440
447
-[ ] handle submodules
441
448
-[ ] handle sparse directories
442
449
-[ ] handle sparse index
443
-
-[] linear scaling with multi-threading up to IO saturation
450
+
-[x] linear scaling with multi-threading up to IO saturation
444
451
- supported attributes to affect working tree and index contents
445
452
-[ ] eol
446
453
-[ ] working-tree-encoding
@@ -450,8 +457,10 @@ Make it the best-performing implementation and the most convenient one.
450
457
-[ ]`ident`
451
458
-[ ] filter processes
452
459
-[ ] single-invocation clean/smudge filters
453
-
*[x] access to all .gitignore/exclude information
454
-
*[ ] access to all attributes information
460
+
* manage multiple worktrees
461
+
* access to per-path information, like `.gitignore` and `.gitattributes` in a manner well suited for efficient lookups
462
+
*[x]_exclude_ information
463
+
*[ ] attributes
455
464
456
465
### gix-revision
457
466
*[x]`describe()` (similar to `git name-rev`)
@@ -602,6 +611,8 @@ See its [README.md](https://github.com/Byron/gitoxide/blob/main/gix-lock/README.
602
611
*[x] tree with other tree
603
612
*[ ] respect case-sensitivity of host filesystem.
604
613
*[x] a way to access various diff related settings or use them
614
+
*[ ] respect `diff.*.textconv`, `diff.*.cachetextconv` and external diff viewers with `diff.*.command`,
615
+
[along with support for reading `diff` gitattributes](https://github.com/git/git/blob/73876f4861cd3d187a4682290ab75c9dccadbc56/Documentation/gitattributes.txt#L699:L699).
605
616
***rewrite tracking**
606
617
***deviation** - git keeps up to four candidates whereas we use the first-found candidate that matches the similarity percentage.
607
618
This can lead to different sources being found. As such, we also don't consider the filename at all.
@@ -614,7 +625,7 @@ See its [README.md](https://github.com/Byron/gitoxide/blob/main/gix-lock/README.
614
625
*[x] renames
615
626
*[x] copies
616
627
*[x] 'find-copies-harder' - find copies with the source being the entire tree.
617
-
*[ ] tree with working tree
628
+
*[ ] tree or index with working tree
618
629
*[x] diffs between modified blobs with various algorithms
619
630
*[ ] tree with index
620
631
*[x] initialize
@@ -673,6 +684,8 @@ See its [README.md](https://github.com/Byron/gitoxide/blob/main/gix-lock/README.
673
684
*[ ] obtain 'prunable' information
674
685
*[x] proper handling of worktree related refs
675
686
*[ ] create, move, remove, and repair
687
+
*[x] access exclude information
688
+
*[ ] access attribute information
676
689
*[x] respect `core.worktree` configuration
677
690
-**deviation**
678
691
* The delicate interplay between `GIT_COMMON_DIR` and `GIT_WORK_TREE` isn't implemented.
/// Parse attribute assignments line by line from `bytes`.
25
+
26
+
/// Parse attribute assignments line by line from `bytes`, and fail the operation on error.
27
+
///
28
+
/// For leniency, ignore errors using `filter_map(Result::ok)` for example.
28
29
pubfnparse(bytes:&[u8]) -> parse::Lines<'_>{
29
30
parse::Lines::new(bytes)
30
31
}
@@ -42,7 +43,7 @@ pub enum StateRef<'a> {
42
43
/// The attribute is set to the given value, which followed the `=` sign.
43
44
/// Note that values can be empty.
44
45
#[cfg_attr(feature = "serde1", serde(borrow))]
45
-
Value(&'aBStr),
46
+
Value(state::ValueRef<'a>),
46
47
/// The attribute isn't mentioned with a given path or is explicitly set to `Unspecified` using the `!` sign.
47
48
Unspecified,
48
49
}
@@ -59,19 +60,19 @@ pub enum State {
59
60
Unset,
60
61
/// The attribute is set to the given value, which followed the `=` sign.
61
62
/// Note that values can be empty.
62
-
Value(BString),// TODO(performance): Is there a non-utf8 compact_str/KBString crate? See https://github.com/cobalt-org/kstring/issues/37#issuecomment-1446777265 .
63
+
Value(state::Value),
63
64
/// The attribute isn't mentioned with a given path or is explicitly set to `Unspecified` using the `!` sign.
0 commit comments