![]() The first is name order, or the index at which you’d find a given object if you sorted those objects according to their object ID (OID). Pack indexes map between the positions of all objects in the corresponding pack among two orders. If you’ve seen a file in the pack directory above ending in *.idx, that is where the pack index is stored. This new file stores information similar to what’s in a packfile index. git/objects/pack directory: the *.rev file. Starting in Git 2.41, you may notice a new kind of file in your repository’s. To learn more about cruft packs, you can check out our previous post, “ Scaling Git’s garbage collection.” In Git 2.41, cruft pack generation is now on by default, meaning that a normal git gc will generate a cruft pack in your repository. Storing unreachable objects together allows Git to store your unreachable data more efficiently, without worry that it will put strain on your system’s resources. ![]() The figure above shows a cruft pack, along with its corresponding *.idx and *.mtimes file. By storing unreachable objects together, Git prevents inode exhaustion, and allows unreachable objects to be stored as deltas. Git 2.37 introduced “ cruft packs,” which store unreachable objects together in a packfile, and use an auxiliary *.mtimes file stored alongside the pack to keep track of object ages. If there are many unreachable objects, they could cause your repository to balloon in size, and/or exhaust the available inodes on your system. However, storing unreachable objects as loose until they age out can have a number of negative side-effects. Until Git 2.37, Git kept track of the last write time of unreachable objects by storing them as loose copies of themselves, and using the object file’s mtime as a proxy for when the object was last written.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |