Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 419769
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 12, 20262026-05-12T18:48:37+00:00 2026-05-12T18:48:37+00:00

I haven’t found much on thin packs, and the man pages’ information is rather

  • 0

I haven’t found much on thin packs, and the man pages’ information is rather cryptic about this. I know it has something to do with slow connections, but what would be a “slow connection”?

What are its pros and cons? When should I use it, when should I not use it?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-12T18:48:37+00:00Added an answer on May 12, 2026 at 6:48 pm

    For the record, the man page (index-pack) states:

    It is possible for git-pack-objects to build “thin” pack, which records objects in deltified form based on objects not included in the pack to reduce network traffic.
    Those objects are expected to be present on the receiving end and they must be included in the pack for that pack to be self contained and indexable.

    That would complete the git push man page of the --thin option:

    Thin transfer spends extra cycles to minimize the number of objects to be sent and meant to be used on slower connection

    So a “slow network” in this case is a connection where you want to send the lowest amount of data as possible.

    See more at “Git fetch for many files is slow against a high-latency disk“.


    In this thread, Jakub Narębski explains a bit more (in the context on using git gc on the remote side as well as on the local side):

    Git does deltification only in packfiles.
    But when you push via SSH, git would generate a pack file with commits the other side doesn’t have, and those packs are thin packs, so they also have deltas…
    but the remote side then adds bases to those thin packs making them standalone.

    More precisely:

    On the local side:
    git-commit creates loose (compressed, but not deltified) objects. git-gc packs and deltifies.

    On the remote side (for smart protocols, i.e. git and ssh):
    git creates thin pack, deltified;
    on the remote side git either makes pack thick/self contained by adding base objects (object + deltas), or explodes pack into loose object (object).
    You need git-gc on remote server to fully deltify on remote side. But transfer is fully
    deltified.

    On the remote side (for dumb protocols, i.e. rsync and http):
    git finds required packs and transfers them whole.
    So the situation is like on local side, but git might transfer more than really needed because it transfers packs in full.


    The problem above was related to the use (or non-use) of git push --thin: when do you use it or not?
    Turns out you do need to carefully manage your binary objects if you want git to take advantage of those thin packets:

    1. Create the new filename by just copying the old (so the old blob is used)
    2. commit
    3. PUSH
    4. copy the real new file
    5. commit
    6. PUSH.

    If you omit the middle PUSH in step 3, neither “git push“, nor “git push --thin”
    can realize that this new file can be “incrementally built” on the remote side (even though git-gc totally squashes it in the pack).

    In fact, the way thin packs work is to store delta against a base object which is not included in the pack.
    Those objects which are not included but used as delta base are currently only the previous version of a file which is part of the update to be pushed/fetched.
    In other words, there must be a previous version under the same name for this to work.
    Doing otherwise wouldn’t scale if the previous commit had thousands of files to test against.

    Those thin packs were designed for different versions of the same file in mind, not different files with almost the same content. The issue is to decide what preferred delta base to add to the list of objects. Currently only objects with the same path as those being modified are considered.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I haven't found information about this anywhere. Is there a minimal required length for
Haven't found this in my search on Stackoverflow - I know I've seen a
Haven't found anything useful about this on the internet. I'm using my Windows 7
I haven't been able to find much about this but am I the only
I haven't used the STL much before, but I started to on this huffman
I'm parsing an RSS feed that has an ’ in it. SimpleXML turns this
Haven't seen this before so hopefully someone has a easy solve, I have a
I haven't used WPF that much so the solution to this is probably pretty
Haven't found a solution to this problem yet, have tried some things... I have
Haven't seen this feature anywhere else. I know that the 32nd bit is used

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.