11This file sketches out the tasks required to be able to clone a repository whilst checking out its head ref.
22
3- ### Index, worktree and diffing
3+ ### Repository Clone
4+
5+ * ** git-odb**
6+ * [x] all docs, sans examples
7+ * [x] Rename pack data/pack index ` Kind ` to ` Version ` or similar, because that's what it really is.
8+ * ** git-object** refactor
9+ * [x] split ` Id ` and everything hash related into ` git-hash `
10+ * [x] use ` git-hash ` inside of ` git-features ` , remove cycle
11+ * ** git-config**
12+ * [x] Thanks to a generous contribution it's mostly done and well on the way
13+ * [ ] Push it towards 1.0
14+ * [ ] ` Config ` type which integrates multiple files into one interface, much like a * multi* version of ` File `
15+ * [x] Make ` gix organize ` use ` git-config ` on single files (the repository configuration)
16+ * ** git-ref**
17+ * [x] transactional creation of refs
18+ * [x] iteration of refs
19+ * ** git-index**
20+ * [ ] Create an index from tree
21+ * ** git-bitmap**
22+ * [ ]
23+ * ** git-worktree**
24+ * [ ] checkout an index
25+ * ** git-repository**
26+ * [x] instance for a valid looking repository
27+ * [ ] support shallow repos/references
28+ * [ ] create-update refs as received from clone/git-receive-pack safely (i.e. with required locking)
29+ * [ ] clone from https remote
30+ * ** gix repository clone**
31+ * [ ] try initializing repo on output path - if so, use that to learn about pack location and place new pack there, allow Repo to create refs somehow.
32+ * _ probably this is done using the repository itself, which steers the whole process and injects it's own delegates_ .
33+ * [ ] otherwise create the scaffolding needed for a new repository, probably based on ` init ` implementation
34+ * ** gix pack receive**
35+ * [x] resolve thin pack with Bundle
36+
37+ ### FSCK an entire repository
38+
39+ * ** multi-db** (incorporate object lookup for loose objects and packs)
40+ * [x] multi-threaded
41+ * [x] delta-tree cache for speedups
42+ * [ ] ref-validity check by traversing everything, including reflog, checking reachability of objects accordingly
43+ * [x] fs-check - verify all object content of a git repository
44+ * probably this should be based on indexed pack traversal for maximum decoding speed and not on individual
45+ object lookup
46+
47+ ### Index, worktree and diffing - ` git status ` like
448
549* [ ] a complete index implementation
650* [ ] an understanding on how worktrees work (also consider ` git worktree ` ) in conjunction git-index
@@ -19,7 +63,7 @@ This file sketches out the tasks required to be able to clone a repository whils
1963 * [ ] ` ReceivePack ` logic for V1 and V2
2064 * [ ] _ async_ & _ blocking_ negotiation of commits
2165
22- ### Client fetch/pull (server to client)
66+ ### Server fetch/pull (server to client)
2367
2468* ** git-odb**
2569
@@ -60,46 +104,6 @@ Probably more like a toy at first merely for testing operation against various g
60104
61105[ sim-crate ] : https://crates.io/crates/similar
62106
63- ### Repository Clone
64-
65- * ** git-odb**
66- * [x] all docs, sans examples
67- * [x] Rename pack data/pack index ` Kind ` to ` Version ` or similar, because that's what it really is.
68- * ** git-object** refactor
69- * [x] split ` Id ` and everything hash related into ` git-hash `
70- * [x] use ` git-hash ` inside of ` git-features ` , remove cycle
71- * ** git-config**
72- * [x] Thanks to a generous contribution it's mostly done and well on the way
73- * [ ] Push it towards 1.0
74- * [ ] ` Config ` type which integrates multiple files into one interface, much like a * multi* version of ` File `
75- * [x] Make ` gix organize ` use ` git-config ` on single files (the repository configuration)
76- * ** git-ref**
77- * [x] transactional creation of refs
78- * [x] iteration of refs
79- * ** git-index**
80- * [ ] Create an index from tree
81- * [ ] Checkout index to worktree
82- * ** git-repository**
83- * [x] instance for a valid looking repository
84- * [ ] support shallow repos/references
85- * [ ] create-update refs as received from clone/git-receive-pack safely (i.e. with required locking)
86- * [ ] clone from https remote
87- * ** gix repository clone**
88- * [ ] try initializing repo on output path - if so, use that to learn about pack location and place new pack there, allow Repo to create refs somehow.
89- * _ probably this is done using the repository itself, which steers the whole process and injects it's own delegates_ .
90- * [ ] otherwise create the scaffolding needed for a new repository, probably based on ` init ` implementation
91- * ** gix pack receive**
92- * [x] resolve thin pack with Bundle
93-
94- ### FSCK an entire repository
95-
96- * ** multi-db** (incorporate object lookup for loose objects and packs)
97- * [x] multi-threaded
98- * [x] delta-tree cache for speedups
99- * [ ] ref-validity check by traversing everything, including reflog, checking reachability of objects accordingly
100- * [x] fs-check - verify all object content of a git repository
101- * probably this should be based on indexed pack traversal for maximum decoding speed and not on individual
102- object lookup
103107
104108### gix organize
105109
0 commit comments