* Fix archive-destroying "git repack -a -d" bug
@ 2005-09-18 1:46 Linus Torvalds
2005-09-18 3:18 ` Dave Jones
0 siblings, 1 reply; 4+ messages in thread
From: Linus Torvalds @ 2005-09-18 1:46 UTC (permalink / raw)
To: Git Mailing List, Junio C Hamano
Using "git repack -a -d" can destroy your git archive if you use it twice
in succession.
Why? Because the new pack will be called the same as the old pack. And we
delete the old packs _after_ we've moved the new pack to the .git/objects/
directory, which means that we'll delete the new pack too!
This is a totally untested patch that may or may not fix this.
Signed-off-by: Linus "testing is for suckers" Torvalds <torvalds@osdl.org>
---
diff --git a/git-repack.sh b/git-repack.sh
--- a/git-repack.sh
+++ b/git-repack.sh
@@ -31,10 +31,6 @@ case ",$all_into_one," in
rev_list=
rev_parse='--all'
pack_objects=
- # This part is a stop-gap until we have proper pack redundancy
- # checker.
- existing=`cd "$PACKDIR" && \
- find . -type f \( -name '*.pack' -o -name '*.idx' \) -print`
;;
esac
name=$(git-rev-list --objects $rev_list $(git-rev-parse $rev_parse) |
@@ -54,8 +50,13 @@ exit
if test "$remove_redandant" = t
then
+ # This part is a stop-gap until we have proper pack redundancy
+ # checker.
# We know $existing are all redandant only when
# all-into-one is used.
+ existing=`cd "$PACKDIR" && \
+ find . -type f \( -name '*.pack' -o -name '*.idx' \) -print |
+ grep -v $name`
if test "$all_into_one" != '' && test "$existing" != ''
then
( cd "$PACKDIR" && rm -f $existing )
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Fix archive-destroying "git repack -a -d" bug
2005-09-18 1:46 Fix archive-destroying "git repack -a -d" bug Linus Torvalds
@ 2005-09-18 3:18 ` Dave Jones
2005-09-18 17:00 ` Linus Torvalds
2005-09-18 17:26 ` Junio C Hamano
0 siblings, 2 replies; 4+ messages in thread
From: Dave Jones @ 2005-09-18 3:18 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Git Mailing List, Junio C Hamano
On Sat, Sep 17, 2005 at 06:46:40PM -0700, Linus Torvalds wrote:
>
> Using "git repack -a -d" can destroy your git archive if you use it twice
> in succession.
>
> Why? Because the new pack will be called the same as the old pack. And we
> delete the old packs _after_ we've moved the new pack to the .git/objects/
> directory, which means that we'll delete the new pack too!
Hmm, I'm sure I've done this several times in my x86info git repo
(http://www.codemonkey.org.uk/projects/x86info/x86info.git)
It seems to look ok to git-fsck-cache though. Would that pick up
any breakage if present ?
Running git-whatchanged, the history seems to go all the way
back to the beginning of its cvs doppelganger.
Dave
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Fix archive-destroying "git repack -a -d" bug
2005-09-18 3:18 ` Dave Jones
@ 2005-09-18 17:00 ` Linus Torvalds
2005-09-18 17:26 ` Junio C Hamano
1 sibling, 0 replies; 4+ messages in thread
From: Linus Torvalds @ 2005-09-18 17:00 UTC (permalink / raw)
To: Dave Jones; +Cc: Git Mailing List, Junio C Hamano
On Sat, 17 Sep 2005, Dave Jones wrote:
>
> Hmm, I'm sure I've done this several times in my x86info git repo
> (http://www.codemonkey.org.uk/projects/x86info/x86info.git)
>
> It seems to look ok to git-fsck-cache though. Would that pick up
> any breakage if present ?
It will literally remove every single object in the system, so yes, there
would be major breakage. Even "git log" won't work.
Note: this only happens if you haven't done _anything_ in between repacks.
If you commit anything or do anything else to cause the list of objects to
change, "git repack" is fine.
Linus
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Fix archive-destroying "git repack -a -d" bug
2005-09-18 3:18 ` Dave Jones
2005-09-18 17:00 ` Linus Torvalds
@ 2005-09-18 17:26 ` Junio C Hamano
1 sibling, 0 replies; 4+ messages in thread
From: Junio C Hamano @ 2005-09-18 17:26 UTC (permalink / raw)
To: Dave Jones; +Cc: git, torvalds
Dave Jones <davej@redhat.com> writes:
> Hmm, I'm sure I've done this several times in my x86info git repo
> (http://www.codemonkey.org.uk/projects/x86info/x86info.git)
>
> It seems to look ok to git-fsck-cache though. Would that pick up
> any breakage if present ?
Yes. This is a real bug and I owe Linus big for spotting it
before 0.99.7.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2005-09-18 17:26 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-18 1:46 Fix archive-destroying "git repack -a -d" bug Linus Torvalds
2005-09-18 3:18 ` Dave Jones
2005-09-18 17:00 ` Linus Torvalds
2005-09-18 17:26 ` Junio C Hamano
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).