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

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_sha
Maybe 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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help