tangled
alpha
login
or
join now
runxiyu.tngl.sh
/
furgit
6
fork
atom
Fast implementation of Git in pure Go
6
fork
atom
overview
issues
pulls
pipelines
README: Structured features
runxiyu.tngl.sh
4 days ago
23a19abf
dd027e1e
verified
This commit was signed with the committer's
known signature
.
runxiyu.tngl.sh
SSH Key Fingerprint:
SHA256:jdcgZM4f40eqgoEW57poBu5vM9WoGE02ZzhWbfbNzc0=
+189
-150
1 changed file
expand all
collapse all
unified
split
README.md
+189
-150
README.md
···
19
19
* Prioritize APIs for forges and other server-side uses first
20
20
* Aim for clear architecture then high performance
21
21
22
22
-
## Implemented
22
22
+
## Features
23
23
24
24
-
* Parsing configs
25
25
-
* Object ID and hash algorithms (SHA-256, SHA-1)
26
26
-
* Object type enums
27
27
-
* Blobs
28
28
-
* Trees
29
29
-
* Commits
30
30
-
* Annotated tags
31
31
-
* Object header parsing
32
32
-
* Parsing objects
33
33
-
* Serializing objects
34
34
-
* Diffing lines via Myers
35
35
-
* Diffing trees
36
36
-
* Object storer interface
37
37
-
* Reading loose objects
38
38
-
* Applying deltas
39
39
-
* `.idx` lookup
40
40
-
* Reading packed objects
41
41
-
* Object storer chain and mixer
42
42
-
* Ref types (detached, symbolic)
43
43
-
* Basic ref resolution
44
44
-
* Tag ref peeling
45
45
-
* Ref storer interface
46
46
-
* Reading loose refs
47
47
-
* Reading packed refs
48
48
-
* Ref storer chain
49
49
-
* Reachability iterators
50
50
-
* Is-ancestor
51
51
-
* Repository abstractions
52
52
-
* Adler-32 optimizations
53
53
-
* ZLIB pooling
54
54
-
* Streaming `.pack`/`.idx` hash verifier
55
55
-
* `.idx` and `.rev` writing
56
56
-
* Pack ingestion
57
57
-
* Un-thinning thin packs
58
58
-
* Commit graph reading
59
59
-
* Commit graph chain reading
60
60
-
* Commit graph bloom filters
61
61
-
* `pkt-line`
62
62
-
* `side-band-64k`
63
63
-
* Merge base
64
64
-
* Quarantine areas
65
65
-
* V0/V1 protocol
66
66
-
* Protocol capabilities
67
67
-
* Receiving
68
68
-
* Hooks (functions, not files)
69
69
-
70
70
-
## Planned
71
71
-
72
72
-
* Fetching
73
73
-
* Verify pack
74
74
-
* ls-tree
75
75
-
* Digital signatures
76
76
-
* Patience, histogram diffs
77
77
-
* Three-way diffs
78
78
-
* Init
79
79
-
* Multi-pack indexes
80
80
-
* Pack bitmaps
81
81
-
* Multi-pack bitmaps
82
82
-
* Delta base selection, e.g., islands
83
83
-
* Compressing deltas
84
84
-
* Writing packfiles
85
85
-
* Writing thin packs
86
86
-
* Protocol V2
87
87
-
* Ref advertisement
88
88
-
* Signed push
89
89
-
* Pushing/sending
90
90
-
* DEFLATE optimizations
91
91
-
* Aggressive buffer pooling
92
92
-
* Ref namespaces
93
93
-
* Refname validation/normalization
94
94
-
* Writing refs
95
95
-
* Packing refs
96
96
-
* Reflogs
97
97
-
* Ref transactions
98
98
-
* Fsck
99
99
-
* reftable
100
100
-
* Alternates
101
101
-
* Object borrowing
102
102
-
* Bundles
103
103
-
* Bundle URI
104
104
-
* Packfile URI
105
105
-
* Submodules
106
106
-
* Archive
107
107
-
* Pathspec
108
108
-
* Refspec
109
109
-
* Revision syntax
110
110
-
* Revision walking, log
111
111
-
* Path-limited history
112
112
-
* Revision walking ordering (e.g., topo, date)
113
113
-
* grep
114
114
-
* Word diff
115
115
-
* Describe
116
116
-
* Cherry pick
117
117
-
* Revert
118
118
-
* Promisors remotes
119
119
-
* Shallow clones
120
120
-
* Object filtering
121
121
-
* Partial clones
122
122
-
* Repacking
123
123
-
* Pack maintenance, gc
124
124
-
* Cruft packs
125
125
-
* Expiration
126
126
-
* Compression agility
127
127
-
* Working trees
128
128
-
* File modes
129
129
-
* Working tree conversions (e.g., CRLF)
130
130
-
* Common dir
131
131
-
* Worktree management
132
132
-
* Index
133
133
-
* ls-files
134
134
-
* LFS
135
135
-
* add, rm, mv, clean
136
136
-
* Index conflicts
137
137
-
* Split index
138
138
-
* Untracked cache
139
139
-
* status
140
140
-
* FS monitor
141
141
-
* Other index extensions
142
142
-
* reset, restore, switch, checkout
143
143
-
* Pseudorefs
144
144
-
* Merge
145
145
-
* More merge strategies (recursive, ort, rename)
146
146
-
* Conflict resolution
147
147
-
* Pseudo-merge bitmaps
148
148
-
* Checkout
149
149
-
* Sparse checkout
150
150
-
* Sparse index
151
151
-
* Git attributes
152
152
-
* Ignore rules
153
153
-
* Notes
154
154
-
* Stash
155
155
-
* Blame (incl., incremental)
156
156
-
* Annotate
157
157
-
* Similarity detection
158
158
-
* Rename/copy detection
159
159
-
* Replace refs, grafts
160
160
-
* Rebase
161
161
-
* More rebase variants
162
162
-
* Commit graph writing
163
163
-
* Config includes
164
164
-
* Writing configs
165
165
-
* Rerere
166
166
-
* Fast import/export
167
167
-
* Diff apply
168
168
-
* Patch-id
169
169
-
* Range-diff
170
170
-
* Filter branch
171
171
-
* Mail map
172
172
-
* format-patch, am
24
24
+
* Configuration
25
25
+
* [X] Parsing
26
26
+
* [ ] Includes
27
27
+
* [ ] Writing
28
28
+
* [X] Object IDs
29
29
+
* [X] SHA-256
30
30
+
* [X] SHA-1
31
31
+
* [X] Object model (incl., parse, serialize)
32
32
+
* [X] Blobs
33
33
+
* [X] Trees
34
34
+
* [X] File mode definitions
35
35
+
* [X] Entry insertion ordering
36
36
+
* [X] Traversal
37
37
+
* [ ] Pathspec
38
38
+
* [X] Commits
39
39
+
* [X] Annotated tags
40
40
+
* [X] Stored objects
41
41
+
* Further cryptography
42
42
+
* [ ] OpenPGP signatures
43
43
+
* [ ] SSH signatures
44
44
+
* [X] Reading object stores
45
45
+
* [X] Pluggable interface
46
46
+
* [X] Chain lookup store
47
47
+
* [X] Bundle store
48
48
+
* [X] MRU lookup store
49
49
+
* [X] Reading loose objects
50
50
+
* [ ] Promisor remotes
51
51
+
* [ ] Alternates
52
52
+
* [X] Reading packed objects
53
53
+
* [X] Pack index lookups
54
54
+
* [X] Delta caching
55
55
+
* [X] Delta application
56
56
+
* [ ] Multi pack indexes
57
57
+
* [ ] Writing objects
58
58
+
* [X] Loose object writing
59
59
+
* Misc bundle features
60
60
+
* [ ] Writing bundles
61
61
+
* Misc packfile features
62
62
+
* [X] Writing pack indexes
63
63
+
* [X] Writing reverse pack indexes
64
64
+
* [ ] Writing packfiles
65
65
+
* [ ] Writing thin packs
66
66
+
* [ ] Compressing deltas
67
67
+
* [ ] Delta islands
68
68
+
* [ ] Pack verification
69
69
+
* Compression
70
70
+
* [ ] Plugabble compression algorithms
71
71
+
* [X] ZLIB support
72
72
+
* [ ] DEFLATE optimizations
73
73
+
* [X] Adler-32 SIMD optimizations
74
74
+
* [X] References
75
75
+
* [X] Detached references
76
76
+
* [X] Symbolic references
77
77
+
* [X] Name verification/resolution
78
78
+
* [X] Annotated tag ref peeling
79
79
+
* [ ] Describe
80
80
+
* [ ] Revision syntax
81
81
+
* [ ] Namespaces
82
82
+
* [ ] Repalce refs, grafts
83
83
+
* [X] Reference stores
84
84
+
* [X] Chain lookup store
85
85
+
* [X] Files reference store
86
86
+
* [X] Reading loose refs
87
87
+
* [X] Reading packed refs
88
88
+
* [X] Atomic writes
89
89
+
* [X] Batched writes
90
90
+
* [ ] Packing refs
91
91
+
* [ ] Reflogs
92
92
+
* [ ] Reftable
93
93
+
* Reachability
94
94
+
* [X] Have/wants walks
95
95
+
* [X] Is ancestor
96
96
+
* [X] Merge bases
97
97
+
* [X] Commit graph
98
98
+
* [X] Changed path bloom filters
99
99
+
* [X] Chained graphs
100
100
+
* [ ] Writing
101
101
+
* [ ] Reachability bitmaps
102
102
+
* [ ] For a single packfile
103
103
+
* [ ] For Multi pack indexes
104
104
+
* Misc repository
105
105
+
* [X] Opening relevant stores
106
106
+
* [ ] Creating repositories
107
107
+
* [ ] Filter branch/repo
108
108
+
* [ ] Fast import/export
109
109
+
* [ ] Git notes
110
110
+
* [ ] Git attributes
111
111
+
* [ ] Pseudorefs
112
112
+
* Integrity and maintainence
113
113
+
* [ ] Fsck
114
114
+
* [ ] Repacking
115
115
+
* [ ] Garbage collection
116
116
+
* [ ] Cruft packing
117
117
+
* [ ] Expiration
118
118
+
* [ ] Grep
119
119
+
* [ ] Submodules
120
120
+
* [ ] Worktrees
121
121
+
* [ ] Archive
122
122
+
* [ ] LFS
123
123
+
* [ ] Revision log walk
124
124
+
* [ ] Topological ordering
125
125
+
* [ ] Date ordering
126
126
+
* [ ] Path-limited
127
127
+
* [ ] Diffing
128
128
+
* [ ] Blame
129
129
+
* [ ] Annotate
130
130
+
* [X] Tree diffing
131
131
+
* [ ] Similarity/rename/copy detection
132
132
+
* [ ] Multi-way diffs
133
133
+
* [ ] Patch-id
134
134
+
* [ ] Range-diff
135
135
+
* Blob diffing
136
136
+
* [ ] Word diffs
137
137
+
* [X] Myers
138
138
+
* [ ] Patience
139
139
+
* [ ] Histogram
140
140
+
* [ ] Tree-way
141
141
+
* Format patch
142
142
+
* Apply/amend patch
143
143
+
* Branch integration/rewrite/etc methods
144
144
+
* [ ] Merge
145
145
+
* [ ] Recursive
146
146
+
* [ ] ORT
147
147
+
* [ ] Rebase
148
148
+
* [ ] Cherry pick
149
149
+
* [ ] Revert
150
150
+
* [ ] Rerere
151
151
+
* Network protocols and related features
152
152
+
* [X] pkt-line
153
153
+
* [X] side-band-64k
154
154
+
* [X] Ingesting packfiles
155
155
+
* [X] Quarantine areas
156
156
+
* [X] Un-thinning thin packs
157
157
+
* Version 0, version 1 protocols
158
158
+
* [X] Server side
159
159
+
* [X] Reference advertisement
160
160
+
* [X] Capability negotiation
161
161
+
* [X] Receive
162
162
+
* [ ] "Upload"
163
163
+
* [ ] Client side
164
164
+
* [ ] Send
165
165
+
* [ ] Fetch
166
166
+
* Version 2 protocol
167
167
+
* [ ] Server side
168
168
+
* [ ] "Upload"
169
169
+
* [ ] Client side
170
170
+
* [ ] Fetch
171
171
+
* Protocol-independent logic
172
172
+
* Common
173
173
+
* [X] Progress meters
174
174
+
* Client side
175
175
+
* [ ] Refspec
176
176
+
* [ ] Fetch
177
177
+
* [ ] Partial clones
178
178
+
* [ ] Object filtering
179
179
+
* [ ] Bundle URI
180
180
+
* [ ] Packfile URI
181
181
+
* [ ] Shallow clones
182
182
+
* [ ] Send
183
183
+
* Server side
184
184
+
* [ ] Upload
185
185
+
* [ ] Object filtering
186
186
+
* [X] Receive
187
187
+
* [ ] Signed push
188
188
+
* Hooks
189
189
+
* Slots
190
190
+
* [ ] After ref negotiation
191
191
+
* [X] After object unpacking
192
192
+
* Provided samples
193
193
+
* [X] Chain
194
194
+
* [X] Force push rejection
195
195
+
* [ ] Working trees
196
196
+
* [ ] Stashing
197
197
+
* [ ] Ignore rules
198
198
+
* [ ] Checkouts
199
199
+
* [ ] Sparse checkouts
200
200
+
* [ ] CR/LF conversions
201
201
+
* [ ] File mode conversions
202
202
+
* [ ] Indexes
203
203
+
* [ ] Conflict resolution
204
204
+
* [ ] Split index
205
205
+
* [ ] Sparse index
206
206
+
* [ ] Untracked cache
207
207
+
* [ ] Status listing
208
208
+
* [ ] Filesystem monitor
209
209
+
* [ ] Worktree
210
210
+
* [ ] Common directory
211
211
+
* [ ] Worktree-specific references
173
212
174
213
## Not planned
175
214