git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andreas Ericsson <ae@op5.se>
To: Sergio Callegari <scallegari@arces.unibo.it>
Cc: git@vger.kernel.org
Subject: Re: Problem with pack
Date: Fri, 25 Aug 2006 12:20:12 +0200	[thread overview]
Message-ID: <44EECEDC.7090608@op5.se> (raw)
In-Reply-To: <44EECBE2.7090801@arces.unibo.it>

Sergio Callegari wrote:
>>
>> > git verify-pack -v pack-ebcdfbbda07e5a3e4136aa1f499990b35685bab4.idx
>> > fatal: failed to read delta-pack base object 
>> 2849bd2bd8a76bbca37df2a4c8e8b990811d01a7
>>
>> Eeeh! Not good.
>>
>> > 1) I am working on both a pc and a notebook, syncing the two 
>> everytime I move
>> > from one to the other.
>>
>> So, you still have one "good" version? Please make a backup 
>> immediately. (If only to reproduce the problem.)
>>   
> I have a good working tree, but unfortunately I realized that there was 
> a problem with the pack only _after_ the sync:
> I was not expecting this kind of problem, so I silly did a repack as the 
> last thing, I went home, I attached the laptop to the net, I run unison, 
> I started to work and I realized that there was a problem when I 
> attempted a new repack which failed complaining about the corrupted pack...
> 
> So actually, I do not even know where the corruption came from (an hd 
> error, the sync tool, ...)
> 
> I only have the corrupted pack and its index and a good last working tree.
> 
> BTW, it would be nice to have some "security measure" in git reset... 
> e.g. an option to trigger the following behavior:
> 
> - saving all current changes in a temporary commit
> - checking that the current HEAD can be re-checked out before the reset
> 

The recommended way is to do a throw-away branch to commit your 
temporary commit to (or the 'master' so long as you remember to use 
reset). The current HEAD can always, barring object database errors, be 
checked out if 'git status' reports no changes in the working tree. 
Unfortunately, the object database is often enormous, so doing a full 
fsck-objects before each change to the branch you're on (which is 
basically what a reset is), would take far too long to be viable.

>> Since unpack-objects does not use the index, it cannot extract 
>> anything after the first error. We _could_ enhance unpack-objects to 
>> be nice and optionally take a pack-index to try to reconstruct as many 
>> objects as possible.
>>   
> That would be very useful...
> Btw, even without that, if I understand correctly, git packs are 
> collections of compressed objects, each of which has its own header 
> stating how long is the compressed object itself. In my case, the error 
> is in inflating one object (git unpack-objects says inflate returns 
> -3)... so shouldn't there be a way to try to skip to the next object 
> even in this case?

It should be possible, assuming the pack index is still intact. The pack 
index is where the headers are stored, afaik.


>> BTW I'd recommend not syncing with unison, but with the git 
>> transports: If your PC and Laptop are connected, you could do 
>> something like
>>
>>     git pull laptop:my_project/.git
>>   
> Actually, the project, including the git archive gets syncronized as a 
> part of a syncronization process including all my Documents directory 
> (the project is in fact a LaTeX manual with somehow complex LaTeX 
> packages and classes). Syncronizing in this way actually worked very 
> well so far, because at once I was getting in sync all my working trees 
> and all my repos...
> 

The largest benefit of using git's synchronization methods is that you 
immediately get a pack-file verification, and also that you never risk 
overwriting anything in either repo if you've forgotten to sync between 
the two (say you've made changes on your laptop, forgot to send them to 
your workstation, then made changes on your workstation and then you try 
to sync them). It's possible to recover from such a situation using the 
lost-found tool, but it can be cumbersome, and uncommitted changes, as 
well as changes to the working tree, are lost forever.

-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

  reply	other threads:[~2006-08-25 10:20 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-25 10:07 Problem with pack Sergio Callegari
2006-08-25 10:20 ` Andreas Ericsson [this message]
2006-08-25 10:41   ` Jakub Narebski
2006-08-25 10:58   ` Junio C Hamano
2006-08-26 10:09 ` Junio C Hamano
2006-08-26 10:31   ` Junio C Hamano
  -- strict thread matches above, loose matches on Subject: below --
2006-08-27 17:45 Sergio Callegari
2006-08-27 18:27 ` Linus Torvalds
2006-08-27 19:26   ` Nicolas Pitre
2006-08-27 21:55   ` Junio C Hamano
2006-08-26 18:53 Sergio Callegari
2006-08-26 19:24 ` Linus Torvalds
2006-08-26 18:49 Sergio Callegari
2006-08-25 12:31 Sergio Callegari
2006-08-26 18:20 ` Linus Torvalds
2006-08-25  8:45 Sergio Callegari
2006-08-25  9:12 ` Johannes Schindelin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=44EECEDC.7090608@op5.se \
    --to=ae@op5.se \
    --cc=git@vger.kernel.org \
    --cc=scallegari@arces.unibo.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).