From: Johannes Sixt <J.Sixt@eudaptics.com>
To: git@vger.kernel.org
Subject: grafts+repack+prune = history at danger
Date: Thu, 25 Jan 2007 18:17:18 +0100 [thread overview]
Message-ID: <45B8E61E.C9C5E6C6@eudaptics.com> (raw)
Isn't there a major hole in the logic how repack works when grafts are
in effect?
I did this (details follow):
1. specify grafts
2. repack
3. prune
4. clone
Result: Broken history in the clone; info/grafts was not copied.
This is with git version 1.5.0.rc2.g18af.
1. I imported a cvs repository into git and "fixed" the history using
grafts. In particular:
o--B--X <== this commit is should be skipped
\ \
graft => ---A--o
I specified in .git/info/grafts that the parent of A should be B. Of
course, commit A has still recorded X as its parent.
2. Then I repacked the repo. But this did not erase all objects:
$ git repack -a -d
$ git count-objects -v
count: 5
size: 28
in-pack: 3392
packs: 1
prune-packable: 0
garbage: 0
$ git fsck-objects
dangling commit bb828bfbd213a97817a95506bab4eeaa70538e2e
This commit bb828... is X.
3. Now git prune happily removes the 5 objects.
4. 'git clone First Second' clones the repository without problems.
But now in the clone the history is kaputt. Because commit X is not in
the cloned pack. Nor is there any info/grafts file. The original history
is still OK as long as the info/grafts file is present; but if it is
removed, the original repo is also damaged.
IMHO, this is a very serious issue. I think that repack should not walk
the grafted history. Alternatively, the info/grafts file must be copied
by the clone and respected by fsck-objects.
-- Hannes
next reply other threads:[~2007-01-25 17:16 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-25 17:17 Johannes Sixt [this message]
2007-01-25 23:07 ` grafts+repack+prune = history at danger Junio C Hamano
2007-01-26 8:13 ` Johannes Sixt
2007-01-26 8:54 ` Junio C Hamano
2007-01-26 9:21 ` Johannes Sixt
2007-01-26 9:31 ` Junio C Hamano
2007-01-26 9:48 ` Johannes Sixt
2007-01-26 10:15 ` Junio C Hamano
2007-01-26 10:41 ` Johannes Sixt
2007-01-26 11:29 ` Junio C Hamano
2007-01-26 13:08 ` Jakub Narebski
2007-01-26 15:55 ` Linus Torvalds
2007-01-26 23:46 ` Junio C Hamano
2007-01-27 0:56 ` Linus Torvalds
2007-01-26 9:15 ` Mark Wooding
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=45B8E61E.C9C5E6C6@eudaptics.com \
--to=j.sixt@eudaptics.com \
--cc=git@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.