Thread (11 messages) flat view 11 messages, 4 authors, 2016-06-15

Re: auto-packing on kernel.org? please?

From: Chuck Lever <hidden>
Date: 2016-06-15 22:42:13

Linus Torvalds wrote:
On Tue, 22 Nov 2005, Chuck Lever wrote:
quoted
there are some things repacking does that breaks StGIT, though.

git repack -d

seems to remove old commits that StGIT was still depending on.

If that is true, then "git-fsck-cache" probably also reports errors on a 
StGIT repository. No? Basically, it implies that the tool doesn't know how 
to find all the "heads".
indeed.  this is one area where StGIT is "not safe" to use with other 
porcelains.  these raw GIT commands can show a bunch of confusing 
"dangling references" type errors, or actually modify the index in ways 
that eliminate StGIT-related commits that aren't currently attached to 
any ancestry.  (i think Catalin mentioned these are related to the 
unapplied patches in a stack, but there could be others; see below).
The preferred way would be to just list the references somewhere under 
.git/refs/stgit, in which case fsck and repack should pick them up 
automatically (so clearly stgit doesn't do that right now ;).
that could be an extremely large number of commits on a large repository 
with a lot of patches that have been worked on over a long period.  so 
whatever mechanism is created to do this needs to scale well in the 
number of commits.
It also implies that doing a "git prune" will do horribly bad things to a 
stgit repo, since it would remove all the objects that it thinks aren't 
reachable..
yup.  been there, done that.  lucky for me i have an excellent hourly 
backup scheme.
quoted
git repack -a -n

seems to work fine with StGIT,

Well, it "works", but not "fine". Since it doesn't know about the stgit 
objects, it won't ever pack them.
ah!
But maybe that's what stgit wants (since they are "temporary"), but it 
does mean that if you see a big advantage from packing, you might be 
losing some of it.
actually, those commits aren't all that "temporary".  the 
history/revision feature i'm working on would like to maintain all the 
commits ever done to an StGIT patch.

the only time you can throw away such commits is when the patch is 
deleted or when it is finally committed to the repository via "stg 
commit".  otherwise, keeping these commits in a pack would be quite a 
good thing.

maybe the first thing to do is to get a basic understanding of an StGIT 
commit's lifetime.

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help