On Mon, May 25, 2015 at 11:49 AM, Stephen Kelly <steveire@xxxxxxxxx> wrote: > On 05/24/2015 07:28 AM, Christian Couder wrote: >> Hi, >> >> On Fri, May 22, 2015 at 4:38 PM, Stephen Kelly <steveire@xxxxxxxxx> wrote: >>> I have tried out using `git replace --graft` and >>> .git/objects/info/alternates to 'refer to' the history in the origin >>> repo instead of 'duplicating' it. This is similar to how Qt5 repos >>> refer to Qt 4 history in a different repo. >>> >>> Question 1) Is this a reasonable thing to do for this scenario? >> I think it should work without too much work, but see the answer to >> the next question. > > Ok, thanks. The concern is that there is plenty of documentation for > git-filter-branch, but no documentation or porcelain for info/alternates > and little out on the internet about it or git replace and using them > together. > > However, it seems to be a reasonable thing to do. Yeah. By the way it looks like I was wrong in my answer to your second question. You might want to clone using the --reference option to automatically set up .git/objects/info/alternates properly. (There is an ongoing related thread on the list: http://thread.gmane.org/gmane.comp.version-control.git/269537) You might also be able to clone using an option like "--config remote.origin.fetch = 'refs/replace/*:refs/replace/*'" to fetch the replace ref when cloning. So it looks like you might just need to clone with a few more options than usual. I haven't tested it so please tell me if it works :-) >>> echo "../../calculator/objects" > >>> ../.git/modules/compute/objects/info/alternates >>> git replace --graft HEAD $extraction_sha >> Maybe use the following instead of the above line: >> >> git fetch 'refs/replace/*:refs/replace/*' > > Thanks. > >>> # And now we see the history from the calculator repo. Great. But, it >>> required user action after the clone. >> Yeah, but if the 2 above commands are in a script maybe it's >> reasonable to ask the user to launch the script once after cloning. > > Would it be possible to do this in a hook in the 'integration repo' > which contains both submodules in the example I posted? Like a fetch > hook or something? It is possible to do whatever you want in a hook, but the question is why would you do it in a hook as it looks like it needs to be done only once? Or maybe I am missing something? Best, Christian. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html