Re: auto-packing on kernel.org? please?
- From
- Catalin Marinas <catalin.marinas@gmail.com>
- Date
- Nov 22, 2005, 14:13 UTC
- Message-ID
- <b0943d9e0511220613h5978a600l@mail.gmail.com>
- In-Reply-To
- <Pine.LNX.4.64.0511212134330.13959@g5.osdl.org>
On 22/11/05, Linus Torvalds <torvalds@osdl.org> wrote:
Show 10 quoted lines
> On Tue, 22 Nov 2005, Chuck Lever wrote: > > 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, 'git repack -d' or 'git prune' might remove the patches which are not applied since there is no link to them from .git/refs/.
> Could somebody (Catalin?) perhaps tell how tools like git-fsck-cache and > git-repack could figure out which objects are still in use by stgit?
They don't figure this out at the moment. I initially thought about implementing these commands in StGIT so that they would pass the proper references.
Show 6 quoted lines
> Preferably with some generic mechanism that _other_ projects (not just > stgit) might want to use? > > 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 ;).
I thought about adding .git/refs/patches/<branch>/* files corresponding to the every StGIT patch. Are the above git commands looking at all depths in the .git/refs/ directory?
Show 10 quoted lines
> > 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. > > 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.
The 'git repack -a' command would include the applied patches in the newly created pack but leave out the unapplied ones. It would be even better to leave all of them out since the StGIT patches are frequently changed but an independent mechanism for this would complicate GIT - 'git repack' shouldn't pack any of the objects found in .git/refs/patches/, even if they are reachable via .git/refs/heads/* (and maybe call the patches directory something like .git/refs/unpackable or volatile).
-- Catalin