Fast implementation of Git in pure Go codeberg.org/lindenii/furgit
git go
6
fork

Configure Feed

Select the types of activity you want to include in your feed.

README: Add more future things

Runxi Yu 46f66e8e ad6b0a9e

+122 -9
+122 -9
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 - ## Implemented 22 + ## Features 23 + 24 + Succinct ideas of the areas that we lack. 25 + Some may be a few minutes of work, others may be months. 26 + 27 + ### Implemented 23 28 24 29 * Parsing configs 25 30 * Object ID and hash algorithms (SHA-256, SHA-1) 26 31 * Object type enums 27 - * Object representation types 32 + * Blobs 33 + * Trees 34 + * Commits 35 + * Annotated tags 28 36 * Object header parsing 29 37 * Parsing objects 30 38 * Serializing objects 31 - * Diffing lines 39 + * Diffing lines via Myers 32 40 * Diffing trees 33 41 * Object storer interface 34 42 * Reading loose objects ··· 36 44 * `.idx` lookup 37 45 * Reading packed objects 38 46 * Object storer chain and mixer 39 - * Ref types 47 + * Ref types (detached, symbolic) 48 + * Basic ref resolution 49 + * Tag ref peeling 40 50 * Ref storer interface 41 51 * Reading loose refs 42 52 * Reading packed refs 43 53 * Ref storer chain 44 54 * Reachability iterators 55 + * Is-ancestor 45 56 * Repository abstractions 46 57 * Adler-32 optimizations 47 58 * ZLIB pooling ··· 50 61 * Pack ingestion 51 62 * Un-thinning thin packs 52 63 * Commit graph reading 64 + * Commit graph chain reading 65 + * Commit graph bloom filters 53 66 * `pkt-line` 54 67 * `side-band-64k` 55 68 56 - ## Planned 69 + ### Planned 57 70 71 + * Verify pack 72 + * ls-tree 73 + * Merge base 58 74 * Quarantine areas 59 75 * V0/V1 protocol 76 + * Protocol capabilities 60 77 * Receiving/fetching 78 + * Hooks (functions, not files) 79 + * Digital signatures 80 + * Patience, histogram diffs 81 + * Three-way diffs 82 + * Init 61 83 * Multi-pack indexes 62 - * Reachability bitmaps 84 + * Pack bitmaps 85 + * Multi-pack bitmaps 63 86 * Delta base selection, e.g., islands 64 87 * Compressing deltas 65 88 * Writing packfiles 66 - * Thin packs 89 + * Writing thin packs 90 + * Protocol V2 91 + * Ref advertisement 92 + * Signed push 93 + * Pushing/sending 67 94 * DEFLATE optimizations 68 95 * Aggressive buffer pooling 69 - * Ref tables 70 - * Large object promisors 96 + * Ref namespaces 97 + * Refname validation/normalization 98 + * Writing refs 99 + * Packing refs 100 + * Reflogs 101 + * Ref transactions 102 + * Fsck 103 + * reftable 104 + * Alternates 105 + * Object borrowing 106 + * Bundles 107 + * Bundle URI 108 + * Packfile URI 109 + * Submodules 110 + * Archive 111 + * Pathspec 112 + * Refspec 113 + * Revision syntax 114 + * Revision walking, log 115 + * Path-limited history 116 + * Revision walking ordering (e.g., topo, date) 117 + * grep 118 + * Word diff 119 + * Describe 120 + * Cherry pick 121 + * Revert 122 + * Promisors remotes 123 + * Shallow clones 124 + * Object filtering 125 + * Partial clones 71 126 * Repacking 127 + * Pack maintenance, gc 128 + * Cruft packs 129 + * Expiration 72 130 * Compression agility 73 131 * Working trees 132 + * File modes 133 + * Working tree conversions (e.g., CRLF) 134 + * Common dir 135 + * Worktree management 74 136 * Index 137 + * ls-files 138 + * LFS 139 + * add, rm, mv, clean 140 + * Index conflicts 141 + * Split index 142 + * Untracked cache 143 + * status 144 + * FS monitor 145 + * Other index extensions 146 + * reset, restore, switch, checkout 147 + * Pseudorefs 75 148 * Merge 149 + * More merge strategies (recursive, ort, rename) 150 + * Conflict resolution 151 + * Pseudo-merge bitmaps 76 152 * Checkout 153 + * Sparse checkout 154 + * Sparse index 155 + * Git attributes 156 + * Ignore rules 157 + * Notes 158 + * Stash 159 + * Blame (incl., incremental) 160 + * Annotate 161 + * Similarity detection 162 + * Rename/copy detection 163 + * Replace refs, grafts 77 164 * Rebase 165 + * More rebase variants 78 166 * Commit graph writing 167 + * Config includes 79 168 * Writing configs 169 + * Rerere 170 + * Fast import/export 171 + * Diff apply 172 + * Patch-id 173 + * Range-diff 174 + * Filter branch 175 + * Mail map 176 + * format-patch, am 177 + 178 + ### Not planned 179 + 180 + * Any CLI tools whatsoever 181 + * Clone 182 + * Anything reasonably considered "porcelain" 183 + * Credential helper 184 + * Transports 185 + * Auth 186 + * Remote management 187 + * Bisect 188 + * Any use of env vars 189 + * Repository discovery walking 190 + 191 + I might make a second project that supports these. 192 + Furgit will probably not, and will remain sans-IO. 80 193 81 194 ## Benchmarks 82 195