Russell,thanks for your reply so elaborate and i have gotten the idea now.<br><br><div class="gmail_quote">On 16 January 2011 21:42, Russell King - ARM Linux <span dir="ltr"><<a href="mailto:linux@arm.linux.org.uk">linux@arm.linux.org.uk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">On Sun, Jan 16, 2011 at 09:10:17PM +0800, Jello huang wrote:<br>
> yes,git doesn't handle that case and i rename the pack name,but there is<br>
> also the similar error.Now i just delet the git tree and clone it again<br>
> tonight .<br>
<br>
</div>_Always_ without fail fetch Linus' tree before pulling my tree.<br>
<br>
My tree is a rsync clone of the objects and pack files in Linus' tree,<br>
plus whatever git decided to build on top of that - for local commits<br>
that's individual object files. For remote pulls, that's probably a few<br>
small pack files.<br>
<br>
There is *no* repacking of my tree. So the only times it gets 'repacked'<br>
is when Linus repacks his tree.<br>
<br>
Let's say you already have a copy of my tree from a month ago, and Linus<br>
has pulled some work from me into his tree, and repacked his tree into one<br>
single pack file. At the moment, the largest pack file from Linus is<br>
400MB plus a 50MB index.<br>
<br>
You already have most of the contents of that 400MB pack file, but if<br>
you're missing even _one_ object which is contained within it, git will<br>
have to download the _entire_ 400MB pack file and index file to retrieve<br>
it.<br>
<br>
However, if you first fetch Linus' tree via the git protocol, it can just<br>
request the objects it doesn't have from the git server. That will mean<br>
you'll have all the objects in the large pack files before you start trying<br>
to pull my tree, and git won't have to download 400MB for the sake of<br>
retrieving just maybe 10k that you didn't have.<br>
<br>
This isn't something special with my tree - it's a side effect of the<br>
http protocol git uses. So, before you fetch _any_ http-based git tree,<br>
first make sure you're up to date with Linus'.<br>
<br>
(I update my tree from Linus' in rsync mode to make http-based stuff a<br>
lot more friendly to people using it - some of whom are stuck behind<br>
firewalls which can only do http. Fetching a constantly repacked git<br>
tree via http results in hundreds of megabytes needing to be fetched<br>
every time.)<br>
<br>
So please, whenever possible, always fetch Linus' latest tree _first_<br>
and then mine. Same goes for any other http based tree which doesn't<br>
auto-repack.<br>
</blockquote></div><br><br clear="all"><br>-- <br>JUST DO IT,NOTHING IS IMPOSSIBLE<br>