{"thread":{"id":"50419","subject":"Proposal: Output should push to different servers in parallel","startedAt":"2019-02-06T22:40:02Z","lastAt":"2019-02-07T18:27:00Z","messageCount":3,"participants":["Victor Porton","Ævar Arnfjörð Bjarmason","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"368651","messageId":"173ed6e2-7f33-62a0-e1bd-f4663e68490e@narod.ru","threadId":"50419","inReplyTo":null,"subject":"Proposal: Output should push to different servers in parallel","fromName":"Victor Porton","fromEmail":"porton@narod.ru","sentAt":"2019-02-06T22:33:22Z","receivedAt":"2019-02-06T22:40:02Z","isPatch":false,"sender":{"key":"porton@narod.ru","avatar":"https://gravatar.com/avatar/26fbbd66c3da4108798dc4fccb153ea484585216cc8f62e678c07a05e8dcd165?d=mp&s=160"},"body":"I experienced a slowdown in Git pushing when I push to more than one server.\n\nI propose:\n\nRun push to several servers in parallel.\n\nNot to mix the output, nevertheless serialize the output, that is for \nexample cache the output of the second server push and start to output \nit immediately after the first server push is finished.\n\nThis approach combines the advantages of the current way (I suppose it \nis so) to serialize pushes: first push to the first server, then to the \nsecond, etc. and of my idea to push in parallel.\n\nI think the best way would be use multithreading, but multiprocessing \nwould be a good quick solution.\n\n"},{"id":"368672","messageId":"878syskn9f.fsf@evledraar.gmail.com","threadId":"50419","inReplyTo":"173ed6e2-7f33-62a0-e1bd-f4663e68490e@narod.ru","subject":"Re: Proposal: Output should push to different servers in parallel","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2019-02-07T08:37:16Z","receivedAt":"2019-02-07T08:37:21Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Wed, Feb 06 2019, Victor Porton wrote:\n\n> I experienced a slowdown in Git pushing when I push to more than one server.\n>\n> I propose:\n>\n> Run push to several servers in parallel.\n>\n> Not to mix the output, nevertheless serialize the output, that is for\n> example cache the output of the second server push and start to output\n> it immediately after the first server push is finished.\n>\n> This approach combines the advantages of the current way (I suppose it\n> is so) to serialize pushes: first push to the first server, then to\n> the second, etc. and of my idea to push in parallel.\n>\n> I think the best way would be use multithreading, but multiprocessing\n> would be a good quick solution.\n\nThis seems like a reasonable idea, until such time as someone submits\npatches to implement this in git you can do this with some invocation of\nGNU parallel -k, i.e. operate on N remotes in parallel, and use the -k\noption to buffer up all their output and present it in sequence.\n"},{"id":"368715","messageId":"xmqqk1ibpi8h.fsf@gitster-ct.c.googlers.com","threadId":"50419","inReplyTo":"878syskn9f.fsf@evledraar.gmail.com","subject":"Re: Proposal: Output should push to different servers in parallel","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-02-07T18:26:54Z","receivedAt":"2019-02-07T18:27:00Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n\n> This seems like a reasonable idea, until such time as someone submits\n> patches to implement this in git you can do this with some invocation of\n> GNU parallel -k, i.e. operate on N remotes in parallel, and use the -k\n> option to buffer up all their output and present it in sequence.\n\nStopping the message there makes it sound like a polite way to say\n\"a generic tool to allow you doing it on anything, not limited to\nGit, is already available, and a solution specific to Git is\nunwanted.\"\n\nI wanted to follow up with something that says \"The 'parallel' tool\nworks in the meantime, but here are examples of very useful things\nthat we would not be able to live without that 'parallel' wouldn't\nlet us do, and we need a Git specific solution to obtain that\", but\nI am coming up with empty, so perhaps indeed we do not want a Git\nspecific solution ;-)\n\n"}]}