the amount of data that has to be stored as differing versions (as the whole of each changed version of a file has to be offered for users to access), but also those costs in the uploading (and sometimes the downloading) of each file that has been updated (by just the smaller delta having to be used, rather than the whole file). Delta updates For large software packages, there is usually little data changed between versions. Many vendors choose to use delta transfers to save time and bandwidth. Diff Diff is a file comparison program, which is mainly used for text files. By default, it generates symmetric deltas that are reversible. Two formats used for software patches, context and unified, provides additional context lines that allow for tolerating shifts in line number. Git The Git source code control system employs delta compression in an auxiliary "git repack" operation. Objects in the repository that have not yet been delta-compressed ("loose objects") are compared against a heuristically chosen subset of all other objects, and the common data and differences are concatenated into a "pack file" which is then compressed using conventional methods. In common use cases, where source or data files are changed incrementally between commits, this can result in significant space savings. The repack operation is typically performed as part of the "git gc" process, which is triggered automatically when the numbers of loose objects or pack files exceed configured thresholds. The format is documented in the pack-format page of the Git documentation. It implements a directed delta. VCDIFF One general format for directed delta encoding is VCDIFF, described in RFC 3284. Free software implementations include Xdelta and open-vcdiff. GDIFF Generic Diff Format (GDIFF) is another directed delta encoding format. It was submitted to W3C in 1997. In many cases, VCDIFF has better compression rate than GDIFF. bsdiff Bsdiff is a binary diff program using suffix sorting. For executables that contain many changes in pointer addresses, it performs better than VCDIFF-type "copy and literal" encodings. The intent is to find a way to generate a small diff without needing to parse assembly code (as in Google's Courgette). Bsdiff achieves this by allowing "copy" matches with errors, which are then corrected using an extra "add" array of bytewise differences. Since this array is mostly either zero or repeated values for offset changes, it takes up little space after compression. Bsdiff is useful