From: Jeff Garzik Date: Thu, 28 Feb 2008 20:13:31 GMT Subject: Re: 'git gc' always run, on old kernel repo? Message-ID: <47C715EB.3060303@garzik.org> In-Reply-To: <47C71233.4050705@garzik.org> Jeff Garzik wrote: >> [jgarzik@pretzel netdev-2.6]$ git-am --signoff --utf8 /g/tmp/mbox >> Applying Add support for HT1100 SATA controller - sent from evolution >> Auto packing your repository for optimum performance. You may also >> run "git gc" manually. See "git help gc" for more information. >> Counting objects: 1, done. >> Writing objects: 100% (1/1), done. >> Total 1 (delta 0), reused 0 (delta 0) >> warning: There are too many unreachable loose objects; run 'git prune' >> to remove them. > > IMO there is a broken hueristic in there somewhere... I regularly run > 'git gc' on my repos... Follow-up... this is already becoming a PITA. I am going through and rebasing multiple repos in the same repository... and it keeps running 'git gc' on each branch! grrrr. Step 1: pull "../linux-2.6" into master branch of local repo. this repo was created with "--reference". It _might_ be reasonable to expect 'git gc' to be run: > [jgarzik@pretzel libata-dev]$ git pull ../linux-2.6/ > Updating bfa274e..7704a8b > Fast forward > Auto packing your repository for optimum performance. You may also > run "git gc" manually. See "git help gc" for more information. > Counting objects: 462, done. > Compressing objects: 100% (333/333), done. > Writing objects: 100% (462/462), done. > Total 462 (delta 345), reused 176 (delta 129) > warning: There are too many unreachable loose objects; run 'git prune' to remove them. Step 2: In the same repo, rebase a branch (contains a single changeset), immediately following step #1: > [jgarzik@pretzel libata-dev]$ git branch > ALL > NEXT > * master > mv-ahci-pata > new-eh > sii-lbt > [jgarzik@pretzel libata-dev]$ git-checkout sii-lbt && git-rebase master > Switched to branch "sii-lbt" > First, rewinding head to replay your work on top of it... > HEAD is now at 7704a8b... Merge branch 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6 > Applying [libata] sata_sil: Turn on Large Block Transfer (LBT) feature > Auto packing your repository for optimum performance. You may also > run "git gc" manually. See "git help gc" for more information. > Counting objects: 4, done. > Compressing objects: 100% (4/4), done. > Writing objects: 100% (4/4), done. > Total 4 (delta 0), reused 0 (delta 0) > warning: There are too many unreachable loose objects; run 'git prune' to remove them. Step 3: Ditto, a second rebase in the same repo, immediately following step #2: > [jgarzik@pretzel libata-dev]$ git-checkout new-eh && git-rebase master > Switched to branch "new-eh" > First, rewinding head to replay your work on top of it... > HEAD is now at 7704a8b... Merge branch 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6 > Applying [libata #new-eh] sata_sx4: convert to new EH > Auto packing your repository for optimum performance. You may also > run "git gc" manually. See "git help gc" for more information. > Counting objects: 4, done. > Compressing objects: 100% (4/4), done. > Writing objects: 100% (4/4), done. > Total 4 (delta 0), reused 0 (delta 0) > warning: There are too many unreachable loose objects; run 'git prune' to remove them. Step 4: Ditto, a third rebase in the same repo, immediately following step #3: > [jgarzik@pretzel libata-dev]$ git-checkout mv-ahci-pata && git-rebase master > Switched to branch "mv-ahci-pata" > First, rewinding head to replay your work on top of it... > HEAD is now at 7704a8b... Merge branch 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6 > Applying [libata #mv-ahci-pata] ahci: add rough draft Marvell PATA support > Auto packing your repository for optimum performance. You may also > run "git gc" manually. See "git help gc" for more information. > Counting objects: 5, done. > Compressing objects: 100% (5/5), done. > Writing objects: 100% (5/5), done. > Total 5 (delta 0), reused 0 (delta 0) > warning: There are too many unreachable loose objects; run 'git prune' to remove them. Will the 'git gc' never end??? Jeff