Re: Pushing and pulling the result of `git replace` and objects/info/alternates
From: Christian Couder <hidden>
Date: 2016-06-15 23:04:54
On Mon, May 25, 2015 at 11:49 AM, Stephen Kelly [off-list ref] wrote:
On 05/24/2015 07:28 AM, Christian Couder wrote:quoted
Hi, On Fri, May 22, 2015 at 4:38 PM, Stephen Kelly [off-list ref] wrote:quoted
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 :-)
quoted
quoted
echo "../../calculator/objects" > ../.git/modules/compute/objects/info/alternates git replace --graft HEAD $extraction_shaMaybe use the following instead of the above line: git fetch 'refs/replace/*:refs/replace/*'Thanks.quoted
quoted
# 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.