{"thread":{"id":"47150","subject":"cherry-pick very slow on big repository","startedAt":"2017-11-10T09:45:32Z","lastAt":"2017-11-21T17:14:39Z","messageCount":13,"participants":["Peter Krefting","Jeff King","Derrick Stolee","Kevin Willford","Elijah Newren"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"332152","messageId":"alpine.DEB.2.00.1711100959300.2391@ds9.cixit.se","threadId":"47150","inReplyTo":null,"subject":"cherry-pick very slow on big repository","fromName":"Peter Krefting","fromEmail":"peter@softwolves.pp.se","sentAt":"2017-11-10T09:39:39Z","receivedAt":"2017-11-10T09:45:32Z","isPatch":false,"sender":{"key":"peter@softwolves.pp.se","avatar":"https://avatars.githubusercontent.com/u/990764?v=4"},"body":"Hi!\n\nOn a big repository (57000 files, 2,5 gigabytes in .git/objects), git \ncherry-pick is very slow for me (v2.15.0). This is cherry-picking a \none-file change, where the file is in the same place on both branches, \nand which applies cleanly (I am backporting a few fixes to a \nmaintenance version):\n\n$ time git cherry-pick -x 717eb328940ca2e33f14ed27576e656327854b7b\n[redacted 391454f16d] Redacted\n  Author: Redacted <redacted>\n  Date: Mon Oct 16 15:58:05 2017 +0200\n  1 file changed, 2 insertions(+), 2 deletions(-)\n\nreal    6m9,054s\nuser    5m49,432s\nsys     0m2,292s\n\nSomething is not how it should be here. The repo shares objects \n(.git/objects/info/alternates) with another repository (I have run \n\"git gc\" on both repositories).\n\nRunning strace, it seems like it is doing lstat(), open(), mmap(), \nclose() and munmap() on every single file in the repository, which \ntakes a lot of time.\n\nI thought it was just updating the status, but \"git status\" returns \nimmediately, while cherry-picking takes several minutes for every \ncherry-pick I do.\n\n-- \n\\\\// Peter - http://www.softwolves.pp.se/\n"},{"id":"332154","messageId":"20171110102011.yqtka6a3wmgcvkl6@sigill.intra.peff.net","threadId":"47150","inReplyTo":"alpine.DEB.2.00.1711100959300.2391@ds9.cixit.se","subject":"Re: cherry-pick very slow on big repository","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2017-11-10T10:20:12Z","receivedAt":"2017-11-10T10:20:19Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Fri, Nov 10, 2017 at 10:39:39AM +0100, Peter Krefting wrote:\n\n> Running strace, it seems like it is doing lstat(), open(), mmap(), close()\n> and munmap() on every single file in the repository, which takes a lot of\n> time.\n> \n> I thought it was just updating the status, but \"git status\" returns\n> immediately, while cherry-picking takes several minutes for every\n> cherry-pick I do.\n\nIt kind of sounds like a temporary index is being refreshed that doesn't\nhave the proper stat information.\n\nCan you get a backtrace? I'd do something like:\n\n  - gdb --args git cherry-pick ...\n  - 'r' to run\n  - give it a few seconds to hit the CPU heavy part, then ^C\n  - 'bt' to generate the backtrace\n\nwhich should give a sense of which code path is leading to the slowdown\n(or of course use real profiling tools, but if the slow path is taking 6\nminutes, you'll be likely to stop in the middle of it ;) ).\n\n-Peff\n"},{"id":"332170","messageId":"alpine.DEB.2.00.1711101333030.2391@ds9.cixit.se","threadId":"47150","inReplyTo":"20171110102011.yqtka6a3wmgcvkl6@sigill.intra.peff.net","subject":"Re: cherry-pick very slow on big repository","fromName":"Peter Krefting","fromEmail":"peter@softwolves.pp.se","sentAt":"2017-11-10T12:37:12Z","receivedAt":"2017-11-10T12:37:22Z","isPatch":false,"sender":{"key":"peter@softwolves.pp.se","avatar":"https://avatars.githubusercontent.com/u/990764?v=4"},"body":"Jeff King:\n\n> Can you get a backtrace? I'd do something like:\n\nSeems that it spends most time in diffcore_count_changes(), that is \nwhere it hits whenever I hit Ctrl+C (various line numbers 199-207 in \ndiffcore-delta.c; this is on the v2.15.0 tag).\n\n(gdb) bt\n#0  diffcore_count_changes (src=src@entry=0x55555db99970,\n     dst=dst@entry=0x55555d6a4810,\n     src_count_p=src_count_p@entry=0x55555db99998,\n     dst_count_p=dst_count_p@entry=0x55555d6a4838,\n     src_copied=src_copied@entry=0x7fffffffd3e0,\n     literal_added=literal_added@entry=0x7fffffffd3f0)\n     at diffcore-delta.c:203\n#1  0x00005555556dee1a in estimate_similarity (minimum_score=30000,\n     dst=0x55555d6a4810, src=0x55555db99970) at diffcore-rename.c:193\n#2  diffcore_rename (options=options@entry=0x7fffffffd4f0)\n     at diffcore-rename.c:560\n#3  0x0000555555623d83 in diffcore_std (\n     options=options@entry=0x7fffffffd4f0) at diff.c:5846\n#4  0x000055555564ab46 in get_renames (o=o@entry=0x7fffffffd850,\n     tree=tree@entry=0x5555559d1b98,\n     o_tree=o_tree@entry=0x5555559d1bc0,\n     a_tree=a_tree@entry=0x5555559d1b98,\n     b_tree=b_tree@entry=0x5555559d1b70,\n     entries=entries@entry=0x555559351d20) at merge-recursive.c:554\n#5  0x000055555564e7d9 in merge_trees (o=o@entry=0x7fffffffd850,\n     head=head@entry=0x5555559d1b98, merge=<optimized out>,\n     merge@entry=0x5555559d1b70, common=<optimized out>,\n     common@entry=0x5555559d1bc0, result=result@entry=0x7fffffffd830)\n     at merge-recursive.c:1985\n#6  0x000055555569b2cc in do_recursive_merge (opts=0x7fffffffdf70,\n     msgbuf=0x7fffffffd810, head=0x7fffffffd7f0,\n     next_label=<optimized out>, base_label=<optimized out>,\n     next=<optimized out>, base=0x5555559c1ba0) at sequencer.c:459\n#7  do_pick_commit (command=TODO_PICK,\n     commit=commit@entry=0x5555559c1b60,\n     opts=opts@entry=0x7fffffffdf70, final_fixup=final_fixup@entry=0)\n     at sequencer.c:1088\n#8  0x000055555569e324 in single_pick (opts=0x7fffffffdf70,\n     cmit=0x5555559c1b60) at sequencer.c:2306\n#9  sequencer_pick_revisions (opts=0x7fffffffdf70)\n     at sequencer.c:2355\n#10 0x00005555555d4097 in run_sequencer (argc=1, argc@entry=3,\n     argv=argv@entry=0x7fffffffe320, opts=<optimized out>,\n     opts@entry=0x7fffffffdf70) at builtin/revert.c:200\n#11 0x00005555555d449a in cmd_cherry_pick (argc=3,\n     argv=0x7fffffffe320, prefix=<optimized out>)\n     at builtin/revert.c:225\n#12 0x0000555555567a38 in run_builtin (argv=<optimized out>,\n     argc=<optimized out>, p=<optimized out>) at git.c:346\n#13 handle_builtin (argc=3, argv=0x7fffffffe320) at git.c:554\n#14 0x0000555555567cf6 in run_argv (argv=0x7fffffffe0e0,\n     argcp=0x7fffffffe0ec) at git.c:606\n#15 cmd_main (argc=<optimized out>, argv=<optimized out>)\n     at git.c:683\n#16 0x0000555555566e01 in main (argc=4, argv=0x7fffffffe318)\n     at common-main.c:43\n\n-- \n\\\\// Peter - http://www.softwolves.pp.se/\n"},{"id":"332171","messageId":"7e242038-50e5-2cfc-e810-401af78b8cdc@gmail.com","threadId":"47150","inReplyTo":"alpine.DEB.2.00.1711101333030.2391@ds9.cixit.se","subject":"Re: cherry-pick very slow on big repository","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2017-11-10T12:59:55Z","receivedAt":"2017-11-10T13:00:06Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 11/10/2017 7:37 AM, Peter Krefting wrote:\n> Jeff King:\n>\n>> Can you get a backtrace? I'd do something like:\n>\n> Seems that it spends most time in diffcore_count_changes(), that is \n> where it hits whenever I hit Ctrl+C (various line numbers 199-207 in \n> diffcore-delta.c; this is on the v2.15.0 tag).\n>\n> (gdb) bt\n> #0  diffcore_count_changes (src=src@entry=0x55555db99970,\n>     dst=dst@entry=0x55555d6a4810,\n>     src_count_p=src_count_p@entry=0x55555db99998,\n>     dst_count_p=dst_count_p@entry=0x55555d6a4838,\n>     src_copied=src_copied@entry=0x7fffffffd3e0,\n>     literal_added=literal_added@entry=0x7fffffffd3f0)\n>     at diffcore-delta.c:203\n> #1  0x00005555556dee1a in estimate_similarity (minimum_score=30000,\n>     dst=0x55555d6a4810, src=0x55555db99970) at diffcore-rename.c:193\n> #2  diffcore_rename (options=options@entry=0x7fffffffd4f0)\n>     at diffcore-rename.c:560\n> #3  0x0000555555623d83 in diffcore_std (\n>     options=options@entry=0x7fffffffd4f0) at diff.c:5846\n> ...\n\nGit is spending time detecting renames, which implies you probably \nrenamed a folder or added and deleted a large number of files. This \nrename detection is quadratic (# adds times # deletes).\n\nYou can remove this rename detection by running your cherry-pick with \n`git -c diff.renameLimit=1 cherry-pick ...`\n\nSee https://git-scm.com/docs/diff-config#diff-config-diffrenameLimit\n\nThanks,\n-Stolee\n"},{"id":"332183","messageId":"alpine.DEB.2.00.1711101436270.2391@ds9.cixit.se","threadId":"47150","inReplyTo":"7e242038-50e5-2cfc-e810-401af78b8cdc@gmail.com","subject":"Re: cherry-pick very slow on big repository","fromName":"Peter Krefting","fromEmail":"peter@softwolves.pp.se","sentAt":"2017-11-10T14:05:03Z","receivedAt":"2017-11-10T14:05:17Z","isPatch":false,"sender":{"key":"peter@softwolves.pp.se","avatar":"https://avatars.githubusercontent.com/u/990764?v=4"},"body":"Derrick Stolee:\n\n> Git is spending time detecting renames, which implies you probably \n> renamed a folder or added and deleted a large number of files. This \n> rename detection is quadratic (# adds times # deletes).\n\nYes, a couple of directories with a lot of template files have been \nrenamed (and some removed, some added) between the current development \nbranch and this old maintenance branch. I get the \"Performing inexact \nrename detection\" a lot when merging changes in the other direction.\n\nHowever, none of them applies to these particular commits, which only \ntouches files that are in the exact same location on both branches.\n\n> You can remove this rename detection by running your cherry-pick \n> with `git -c diff.renameLimit=1 cherry-pick ...`\n\nThat didn't work, actually it failed to finish with this setting in \neffect, it hangs in such a way that I can't stop it with Ctrl+C \n(neither when running from the command line, nor when running inside \ngdb). It didn't finish in the 20 minutes I gave it.\n\nI also tried with diff.renames=false, which also seemed to fail.\n\n-- \n\\\\// Peter - http://www.softwolves.pp.se/\n"},{"id":"332191","messageId":"CY4PR21MB0855CA8ABB6BE4F176902F36B7540@CY4PR21MB0855.namprd21.prod.outlook.com","threadId":"47150","inReplyTo":"alpine.DEB.2.00.1711101436270.2391@ds9.cixit.se","subject":"RE: cherry-pick very slow on big repository","fromName":"Kevin Willford","fromEmail":"kewillf@microsoft.com","sentAt":"2017-11-10T17:04:40Z","receivedAt":"2017-11-10T17:04:47Z","isPatch":false,"sender":{"key":"kewillf@microsoft.com","avatar":null},"body":"Since this is happening during a merge, you might need to use merge.renameLimit\nor the merge strategy option of -Xno-renames.  Although the code does fallback\nto use the diff.renameLimit but there is still a lot that is done before even checking\nthe rename limit so I would first try getting renames turned off.\n\nThanks,\nKevin\n\n> -----Original Message-----\n> From: git-owner@vger.kernel.org [mailto:git-owner@vger.kernel.org] On Behalf\n> Of Peter Krefting\n> Sent: Friday, November 10, 2017 7:05 AM\n> To: Derrick Stolee <stolee@gmail.com>\n> Cc: Jeff King <peff@peff.net>; Git Mailing List <git@vger.kernel.org>\n> Subject: Re: cherry-pick very slow on big repository\n> \n> Derrick Stolee:\n> \n> > Git is spending time detecting renames, which implies you probably\n> > renamed a folder or added and deleted a large number of files. This\n> > rename detection is quadratic (# adds times # deletes).\n> \n> Yes, a couple of directories with a lot of template files have been\n> renamed (and some removed, some added) between the current development\n> branch and this old maintenance branch. I get the \"Performing inexact\n> rename detection\" a lot when merging changes in the other direction.\n> \n> However, none of them applies to these particular commits, which only\n> touches files that are in the exact same location on both branches.\n> \n> > You can remove this rename detection by running your cherry-pick\n> > with `git -c diff.renameLimit=1 cherry-pick ...`\n> \n> That didn't work, actually it failed to finish with this setting in\n> effect, it hangs in such a way that I can't stop it with Ctrl+C\n> (neither when running from the command line, nor when running inside\n> gdb). It didn't finish in the 20 minutes I gave it.\n> \n> I also tried with diff.renames=false, which also seemed to fail.\n> \n> --\n> \\\\// Peter -\n> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.softw\n> olves.pp.se%2F&data=02%7C01%7Ckewillf%40microsoft.com%7C6b831a75739e4\n> 0428d3808d52844106c%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636\n> 459195209466999&sdata=kJtNLAs1LSoPy%2B%2BNADJkuEBPMZVcxkSkKzOEEeIG\n> VpM%3D&reserved=0\n"},{"id":"332192","messageId":"CABPp-BH4LLzeJjE5cvwWQJ8xTj3m9oC-41Tu8BM8c7R0gQTjWw@mail.gmail.com","threadId":"47150","inReplyTo":"alpine.DEB.2.00.1711101436270.2391@ds9.cixit.se","subject":"Re: cherry-pick very slow on big repository","fromName":"Elijah Newren","fromEmail":"newren@gmail.com","sentAt":"2017-11-10T17:37:59Z","receivedAt":"2017-11-10T17:38:06Z","isPatch":false,"sender":{"key":"newren@gmail.com","avatar":"https://avatars.githubusercontent.com/u/5455730?v=4"},"body":"Interesting timing.  I have some performance patches specifically\ndeveloped because rename detection during merges made a small\ncherry-pick in a large repo rather slow...in my case, I dropped the\ntime for the cherry pick by a factor of about 30 (no guarantees you'll\nsee the same; it's very history-specific).  I was just about to start\nsending my three series of patches, the performance one being the\nthird...\n\nOn Fri, Nov 10, 2017 at 6:05 AM, Peter Krefting <peter@softwolves.pp.se> wrote:\n> Derrick Stolee:\n>\n>> Git is spending time detecting renames, which implies you probably renamed\n>> a folder or added and deleted a large number of files. This rename detection\n>> is quadratic (# adds times # deletes).\n>\n>\n> Yes, a couple of directories with a lot of template files have been renamed\n> (and some removed, some added) between the current development branch and\n> this old maintenance branch. I get the \"Performing inexact rename detection\"\n> a lot when merging changes in the other direction.\n>\n> However, none of them applies to these particular commits, which only\n> touches files that are in the exact same location on both branches.\n>\n>> You can remove this rename detection by running your cherry-pick with `git\n>> -c diff.renameLimit=1 cherry-pick ...`\n>\n>\n> That didn't work, actually it failed to finish with this setting in effect,\n> it hangs in such a way that I can't stop it with Ctrl+C (neither when\n> running from the command line, nor when running inside gdb). It didn't\n> finish in the 20 minutes I gave it.\n>\n> I also tried with diff.renames=false, which also seemed to fail.\n>\n>\n> --\n> \\\\// Peter - http://www.softwolves.pp.se/\n"},{"id":"332268","messageId":"CABPp-BEu_DOg5t0qHnyLYSok+J+onGFPoFBbgp9P-S5JfhcRjw@mail.gmail.com","threadId":"47150","inReplyTo":"alpine.DEB.2.00.1711101436270.2391@ds9.cixit.se","subject":"Re: cherry-pick very slow on big repository","fromName":"Elijah Newren","fromEmail":"newren@gmail.com","sentAt":"2017-11-10T23:32:57Z","receivedAt":"2017-11-10T23:33:04Z","isPatch":false,"sender":{"key":"newren@gmail.com","avatar":"https://avatars.githubusercontent.com/u/5455730?v=4"},"body":"On Fri, Nov 10, 2017 at 6:05 AM, Peter Krefting <peter@softwolves.pp.se> wrote:\n> Derrick Stolee:\n>\n>> Git is spending time detecting renames, which implies you probably renamed\n>> a folder or added and deleted a large number of files. This rename detection\n>> is quadratic (# adds times # deletes).\n>\n> Yes, a couple of directories with a lot of template files have been renamed\n> (and some removed, some added) between the current development branch and\n> this old maintenance branch. I get the \"Performing inexact rename detection\"\n> a lot when merging changes in the other direction.\n>\n> However, none of them applies to these particular commits, which only\n> touches files that are in the exact same location on both branches.\n\nI would be very interested to hear how my rename detection performance\npatches work for you; this kind of usecase was the exact one it was\ndesigned to help the most.  See\nhttps://public-inbox.org/git/20171110222156.23221-1-newren@gmail.com/\n"},{"id":"332409","messageId":"alpine.DEB.2.00.1711131217010.22867@ds9.cixit.se","threadId":"47150","inReplyTo":"CY4PR21MB0855CA8ABB6BE4F176902F36B7540@CY4PR21MB0855.namprd21.prod.outlook.com","subject":"RE: cherry-pick very slow on big repository","fromName":"Peter Krefting","fromEmail":"peter@softwolves.pp.se","sentAt":"2017-11-13T11:19:00Z","receivedAt":"2017-11-13T11:19:16Z","isPatch":false,"sender":{"key":"peter@softwolves.pp.se","avatar":"https://avatars.githubusercontent.com/u/990764?v=4"},"body":"Kevin Willford:\n\n> Since this is happening during a merge, you might need to use merge.renameLimit\n> or the merge strategy option of -Xno-renames.  Although the code does fallback\n> to use the diff.renameLimit but there is still a lot that is done before even checking\n> the rename limit so I would first try getting renames turned off.\n\nThat makes quite a large difference, with this setting it finishes in \njust a few seconds:\n\n   $ time git -c merge.renameLimit=1 cherry-pick -x 717eb328940ca2e33f14ed27576e656327854b7b\n   [redacted 0576fbaf89] Redacted\n    Author: Redacted <redacted>\n    Date: Mon Oct 16 15:58:05 2017 +0200\n    1 file changed, 2 insertions(+), 2 deletions(-)\n\n   real    0m15,473s\n   user    0m14,904s\n   sys     0m0,488s\n\nI'll add this setting for the repository for the future, thank you!\n\n-- \n\\\\// Peter - http://www.softwolves.pp.se/\n"},{"id":"332410","messageId":"alpine.DEB.2.00.1711131221150.22867@ds9.cixit.se","threadId":"47150","inReplyTo":"CABPp-BEu_DOg5t0qHnyLYSok+J+onGFPoFBbgp9P-S5JfhcRjw@mail.gmail.com","subject":"Re: cherry-pick very slow on big repository","fromName":"Peter Krefting","fromEmail":"peter@softwolves.pp.se","sentAt":"2017-11-13T11:22:29Z","receivedAt":"2017-11-13T11:22:41Z","isPatch":false,"sender":{"key":"peter@softwolves.pp.se","avatar":"https://avatars.githubusercontent.com/u/990764?v=4"},"body":"Elijah Newren:\n\n> I would be very interested to hear how my rename detection \n> performance patches work for you; this kind of usecase was the exact \n> one it was designed to help the most.  See \n> https://public-inbox.org/git/20171110222156.23221-1-newren@gmail.com/\n\nI'd be happy to try them out. Is there a public repo where I can pull \nthese patches from instead of trying to apply them manually, as there \nare several patch series involved here?\n\n-- \n\\\\// Peter - http://www.softwolves.pp.se/\n"},{"id":"332429","messageId":"CABPp-BE-bJnLTf7Y-6_uy=+QA2pi=6EAmGy8S2n7B5Ry8ckHuA@mail.gmail.com","threadId":"47150","inReplyTo":"alpine.DEB.2.00.1711131221150.22867@ds9.cixit.se","subject":"Re: cherry-pick very slow on big repository","fromName":"Elijah Newren","fromEmail":"newren@gmail.com","sentAt":"2017-11-13T18:09:01Z","receivedAt":"2017-11-13T18:09:08Z","isPatch":false,"sender":{"key":"newren@gmail.com","avatar":"https://avatars.githubusercontent.com/u/5455730?v=4"},"body":"On Mon, Nov 13, 2017 at 3:22 AM, Peter Krefting <peter@softwolves.pp.se> wrote:\n> Elijah Newren:\n>\n>> I would be very interested to hear how my rename detection performance\n>> patches work for you; this kind of usecase was the exact one it was designed\n>> to help the most.  See\n>> https://public-inbox.org/git/20171110222156.23221-1-newren@gmail.com/\n>\n> I'd be happy to try them out. Is there a public repo where I can pull these\n> patches from instead of trying to apply them manually, as there are several\n> patch series involved here?\n\nSure, take a look at the big-repo-small-cherry-pick branch of\nhttps://github.com/newren/git\n"},{"id":"333091","messageId":"alpine.DEB.2.00.1711211303290.20686@ds9.cixit.se","threadId":"47150","inReplyTo":"CABPp-BE-bJnLTf7Y-6_uy=+QA2pi=6EAmGy8S2n7B5Ry8ckHuA@mail.gmail.com","subject":"Re: cherry-pick very slow on big repository","fromName":"Peter Krefting","fromEmail":"peter@softwolves.pp.se","sentAt":"2017-11-21T12:07:31Z","receivedAt":"2017-11-21T12:07:46Z","isPatch":false,"sender":{"key":"peter@softwolves.pp.se","avatar":"https://avatars.githubusercontent.com/u/990764?v=4"},"body":"Elijah Newren:\n\n> Sure, take a look at the big-repo-small-cherry-pick branch of\n> https://github.com/newren/git\n\nWith those changes, the time usage is the same as if I set \nmerge.renameLimit=1 for the repository, and the end result is identical:\n\n$ time /usr/local/stow/git-v2.15.0-323-g31fe956618/bin/git cherry-pick \n-x 717eb328940ca2e33f14ed27576e656327854b7b\n[redacted 19be3551bc] Redacted\n  Author: Redacted <redacted>\n  Date: Mon Oct 16 15:58:05 2017 +0200\n  1 file changed, 2 insertions(+), 2 deletions(-)\n\nreal    0m15,345s\nuser    0m14,908s\nsys     0m0,528s\n\nThanks!\n\n-- \n\\\\// Peter - http://www.softwolves.pp.se/\n"},{"id":"333108","messageId":"CABPp-BEQMMa4Q9MOHpjyzAs=n79qMe6XbOn6ryaeKeUtkrxenA@mail.gmail.com","threadId":"47150","inReplyTo":"alpine.DEB.2.00.1711211303290.20686@ds9.cixit.se","subject":"Re: cherry-pick very slow on big repository","fromName":"Elijah Newren","fromEmail":"newren@gmail.com","sentAt":"2017-11-21T17:14:30Z","receivedAt":"2017-11-21T17:14:39Z","isPatch":false,"sender":{"key":"newren@gmail.com","avatar":"https://avatars.githubusercontent.com/u/5455730?v=4"},"body":"On Tue, Nov 21, 2017 at 4:07 AM, Peter Krefting <peter@softwolves.pp.se> wrote:\n> Elijah Newren:\n>\n>> Sure, take a look at the big-repo-small-cherry-pick branch of\n>> https://github.com/newren/git\n>\n>\n> With those changes, the time usage is the same as if I set\n> merge.renameLimit=1 for the repository, and the end result is identical:\n>\n> $ time /usr/local/stow/git-v2.15.0-323-g31fe956618/bin/git cherry-pick -x\n> 717eb328940ca2e33f14ed27576e656327854b7b\n> [redacted 19be3551bc] Redacted\n>  Author: Redacted <redacted>\n>  Date: Mon Oct 16 15:58:05 2017 +0200\n>  1 file changed, 2 insertions(+), 2 deletions(-)\n>\n> real    0m15,345s\n> user    0m14,908s\n> sys     0m0,528s\n>\n> Thanks!\n\n\nCool, glad it worked for you.  Thanks for testing it out.\n"}]}