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">&lt;<a href="mailto:linux@arm.linux.org.uk">linux@arm.linux.org.uk</a>&gt;</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>
&gt; yes,git doesn&#39;t  handle that case and i rename the pack name,but there is<br>
&gt; also the similar error.Now i just delet the git tree and  clone it again<br>
&gt; tonight .<br>
<br>
</div>_Always_ without fail fetch Linus&#39; tree before pulling my tree.<br>
<br>
My tree is a rsync clone of the objects and pack files in Linus&#39; tree,<br>
plus whatever git decided to build on top of that - for local commits<br>
that&#39;s individual object files.  For remote pulls, that&#39;s probably a few<br>
small pack files.<br>
<br>
There is *no* repacking of my tree.  So the only times it gets &#39;repacked&#39;<br>
is when Linus repacks his tree.<br>
<br>
Let&#39;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&#39;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&#39; tree via the git protocol, it can just<br>
request the objects it doesn&#39;t have from the git server.  That will mean<br>
you&#39;ll have all the objects in the large pack files before you start trying<br>
to pull my tree, and git won&#39;t have to download 400MB for the sake of<br>
retrieving just maybe 10k that you didn&#39;t have.<br>
<br>
This isn&#39;t something special with my tree - it&#39;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&#39;re up to date with Linus&#39;.<br>
<br>
(I update my tree from Linus&#39; 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&#39; latest tree _first_<br>
and then mine.  Same goes for any other http based tree which doesn&#39;t<br>
auto-repack.<br>
</blockquote></div><br><br clear="all"><br>-- <br>JUST DO IT,NOTHING IS IMPOSSIBLE<br>