{"thread":{"id":"58225","subject":"--creation-factor=100 does not show code","startedAt":"2022-07-26T13:01:39Z","lastAt":"2023-04-02T21:56:08Z","messageCount":17,"participants":["Eugen Konkov","Johannes Schindelin","Junio C Hamano","Ævar Arnfjörð Bjarmason","Eric Sunshine"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"459967","messageId":"1196830250.20220726145447@yandex.ru","threadId":"58225","inReplyTo":null,"subject":"--creation-factor=100 does not show code","fromName":"Eugen Konkov","fromEmail":"kes-kes@yandex.ru","sentAt":"2022-07-26T12:54:47Z","receivedAt":"2022-07-26T13:01:39Z","isPatch":false,"sender":{"key":"kes-kes@yandex.ru","avatar":null},"body":"$ git range-diff --creation-factor=100 branch...origin/branch\n1:  a87daecd47 < -:  ---------- Add mocked exchanges for ...::AutoRenew::General test\n-:  ---------- > 1:  36eaeb56a9 Add mocked exchanges for ...::AutoRenew::General test\n2:  9594ccf145 = 2:  70681dd13b Remove a call to DB::state\n3:  740903e01c = 3:  5745ae5702 Run cpanm without tests\n4:  e8e6cac09c < -:  ---------- Do not use 'require'\n\n--creation-factor=101 does =)\n\nbut maximum value for percentage is 100. So expected behaviour is to display range-diff when value 100 was provided\n-- \nBest regards,\nEugen Konkov\n\n"},{"id":"460074","messageId":"7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr","threadId":"58225","inReplyTo":"1196830250.20220726145447@yandex.ru","subject":"Re: --creation-factor=100 does not show code","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2022-07-28T14:59:32Z","receivedAt":"2022-07-28T14:59:39Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Eugen,\n\nOn Tue, 26 Jul 2022, Eugen Konkov wrote:\n\n> $ git range-diff --creation-factor=100 branch...origin/branch\n> 1:  a87daecd47 < -:  ---------- Add mocked exchanges for ...::AutoRenew::General test\n> -:  ---------- > 1:  36eaeb56a9 Add mocked exchanges for ...::AutoRenew::General test\n> 2:  9594ccf145 = 2:  70681dd13b Remove a call to DB::state\n> 3:  740903e01c = 3:  5745ae5702 Run cpanm without tests\n> 4:  e8e6cac09c < -:  ---------- Do not use 'require'\n>\n> --creation-factor=101 does =)\n>\n> but maximum value for percentage is 100. So expected behaviour is to display range-diff when value 100 was provided\n\nPlease see https://git-scm.com/docs/git-range-diff#_algorithm for an\nexplanation what the meaning of the factor is, and why 100 is not the\nmaximal sensible value.\n\nCiao,\nJohannes\n"},{"id":"460126","messageId":"xmqqo7x9ch7n.fsf_-_@gitster.g","threadId":"58225","inReplyTo":"7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr","subject":"Re* --creation-factor=100 does not show code","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-07-28T16:52:44Z","receivedAt":"2022-07-28T16:52:55Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n> Hi Eugen,\n>\n> On Tue, 26 Jul 2022, Eugen Konkov wrote:\n>\n>> $ git range-diff --creation-factor=100 branch...origin/branch\n>> 1:  a87daecd47 < -:  ---------- Add mocked exchanges for ...::AutoRenew::General test\n>> -:  ---------- > 1:  36eaeb56a9 Add mocked exchanges for ...::AutoRenew::General test\n>> 2:  9594ccf145 = 2:  70681dd13b Remove a call to DB::state\n>> 3:  740903e01c = 3:  5745ae5702 Run cpanm without tests\n>> 4:  e8e6cac09c < -:  ---------- Do not use 'require'\n>>\n>> --creation-factor=101 does =)\n>>\n>> but maximum value for percentage is 100. So expected behaviour is to display range-diff when value 100 was provided\n>\n> Please see https://git-scm.com/docs/git-range-diff#_algorithm for an\n> explanation what the meaning of the factor is, and why 100 is not the\n> maximal sensible value.\n\nWhen I had to give a huge value to the option the last time, I think\nI used --creation-factor=999 or something.  The thing that bugged me\nin the output of \"git range-diff --help\" is that SYNOPSIS section\nhas \"--creation-factor=<factor>\" but the OPTIONS heading says\n\"--creation-factor=<percent>\" and the word is used in description as\nwell.\n\n----- >8 --------- >8 --------- >8 --------- >8 --------- >8 -----\nSubject: range-diff: clarify --creation-factor=<factor>\n\nThe value is not a per-cent that ranges from 0 to 100.  The SYNOPSIS\nsection gets it right, but the body of the documentation said \"percent\"\nwhich confused readers.\n\nWhile we are at it, rephrase \"smaller one\" that corresponds to\n\"larger value\" earlier in the sentence to \"smaller value\" to be more\nexplicit, to avoid misleading eyes of the readers to an unrelated \"a\nlarge change\" nearby.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n Documentation/git-range-diff.txt | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git c/Documentation/git-range-diff.txt w/Documentation/git-range-diff.txt\nindex fe350d7f40..e49630e8ad 100644\n--- c/Documentation/git-range-diff.txt\n+++ w/Documentation/git-range-diff.txt\n@@ -61,11 +61,11 @@ This is known to `range-diff` as \"dual coloring\". Use `--no-dual-color`\n to revert to color all lines according to the outer diff markers\n (and completely ignore the inner diff when it comes to color).\n \n---creation-factor=<percent>::\n-\tSet the creation/deletion cost fudge factor to `<percent>`.\n+--creation-factor=<factor>::\n+\tSet the creation/deletion cost fudge factor to `<factor>`.\n \tDefaults to 60. Try a larger value if `git range-diff` erroneously\n \tconsiders a large change a total rewrite (deletion of one commit\n-\tand addition of another), and a smaller one in the reverse case.\n+\tand addition of another), and a smaller value in the reverse case.\n \tSee the ``Algorithm`` section below for an explanation why this is\n \tneeded.\n \n\n\n"},{"id":"460131","messageId":"220728.86k07xjh11.gmgdl@evledraar.gmail.com","threadId":"58225","inReplyTo":"xmqqo7x9ch7n.fsf_-_@gitster.g","subject":"Re: Re* --creation-factor=100 does not show code","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2022-07-28T17:12:45Z","receivedAt":"2022-07-28T17:14:59Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Thu, Jul 28 2022, Junio C Hamano wrote:\n\n> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n>\n>> Hi Eugen,\n>>\n>> On Tue, 26 Jul 2022, Eugen Konkov wrote:\n>>\n>>> $ git range-diff --creation-factor=100 branch...origin/branch\n>>> 1:  a87daecd47 < -:  ---------- Add mocked exchanges for ...::AutoRenew::General test\n>>> -:  ---------- > 1:  36eaeb56a9 Add mocked exchanges for ...::AutoRenew::General test\n>>> 2:  9594ccf145 = 2:  70681dd13b Remove a call to DB::state\n>>> 3:  740903e01c = 3:  5745ae5702 Run cpanm without tests\n>>> 4:  e8e6cac09c < -:  ---------- Do not use 'require'\n>>>\n>>> --creation-factor=101 does =)\n>>>\n>>> but maximum value for percentage is 100. So expected behaviour is to display range-diff when value 100 was provided\n>>\n>> Please see https://git-scm.com/docs/git-range-diff#_algorithm for an\n>> explanation what the meaning of the factor is, and why 100 is not the\n>> maximal sensible value.\n>\n> When I had to give a huge value to the option the last time, I think\n> I used --creation-factor=999 or something.  The thing that bugged me\n> in the output of \"git range-diff --help\" is that SYNOPSIS section\n> has \"--creation-factor=<factor>\" but the OPTIONS heading says\n> \"--creation-factor=<percent>\" and the word is used in description as\n> well.\n>\n> ----- >8 --------- >8 --------- >8 --------- >8 --------- >8 -----\n> Subject: range-diff: clarify --creation-factor=<factor>\n>\n> The value is not a per-cent that ranges from 0 to 100.  The SYNOPSIS\n> section gets it right, but the body of the documentation said \"percent\"\n> which confused readers.\n>\n> While we are at it, rephrase \"smaller one\" that corresponds to\n> \"larger value\" earlier in the sentence to \"smaller value\" to be more\n> explicit, to avoid misleading eyes of the readers to an unrelated \"a\n> large change\" nearby.\n>\n> Signed-off-by: Junio C Hamano <gitster@pobox.com>\n> ---\n>  Documentation/git-range-diff.txt | 6 +++---\n>  1 file changed, 3 insertions(+), 3 deletions(-)\n>\n> diff --git c/Documentation/git-range-diff.txt w/Documentation/git-range-diff.txt\n> index fe350d7f40..e49630e8ad 100644\n> --- c/Documentation/git-range-diff.txt\n> +++ w/Documentation/git-range-diff.txt\n> @@ -61,11 +61,11 @@ This is known to `range-diff` as \"dual coloring\". Use `--no-dual-color`\n>  to revert to color all lines according to the outer diff markers\n>  (and completely ignore the inner diff when it comes to color).\n>  \n> ---creation-factor=<percent>::\n> -\tSet the creation/deletion cost fudge factor to `<percent>`.\n> +--creation-factor=<factor>::\n> +\tSet the creation/deletion cost fudge factor to `<factor>`.\n>  \tDefaults to 60. Try a larger value if `git range-diff` erroneously\n>  \tconsiders a large change a total rewrite (deletion of one commit\n> -\tand addition of another), and a smaller one in the reverse case.\n> +\tand addition of another), and a smaller value in the reverse case.\n>  \tSee the ``Algorithm`` section below for an explanation why this is\n>  \tneeded.\n>  \n\nThat algorithm section also says:\n\n\tThe cost of an edge o--C is the size of C's diff, modified by a\n\tfudge factor that should be smaller than 100%.\n\nWhich I find quite confusing to follow, isn't that \"fudge factor\" the\n<percent> (or <factor>) we're accepting with --creation-factor? Doesn't\nthat also need to be adjusted?\n\nI still find this documentation quicke lacking, if the default is 60 and\nit's not 0..100 what is it then? Are values of 200 sensible in some\ncases, 1k? 10k?\n"},{"id":"460135","messageId":"xmqqwnbxb092.fsf@gitster.g","threadId":"58225","inReplyTo":"220728.86k07xjh11.gmgdl@evledraar.gmail.com","subject":"Re: Re* --creation-factor=100 does not show code","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-07-28T17:44:25Z","receivedAt":"2022-07-28T17:44:33Z","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> That algorithm section also says:\n>\n> \tThe cost of an edge o--C is the size of C's diff, modified by a\n> \tfudge factor that should be smaller than 100%.\n>\n> Which I find quite confusing to follow, isn't that \"fudge factor\" the\n> <percent> (or <factor>) we're accepting with --creation-factor? Doesn't\n> that also need to be adjusted?\n>\n> I still find this documentation quicke lacking, if the default is 60 and\n> it's not 0..100 what is it then? Are values of 200 sensible in some\n> cases, 1k? 10k?\n\nI think 90% of your responses are better answered not by me.  Feel\nfree to edit \"to:\" header field when that happens next time ;-)\n\nThanks.\n"},{"id":"460137","messageId":"20220728174953.66964-1-sunshine@sunshineco.com","threadId":"58225","inReplyTo":"xmqqo7x9ch7n.fsf_-_@gitster.g","subject":"[PATCH] format-patch: clarify --creation-factor=<factor>","fromName":"Eric Sunshine","fromEmail":"sunshine@sunshineco.com","sentAt":"2022-07-28T17:49:53Z","receivedAt":"2022-07-28T17:50:55Z","isPatch":true,"sender":{"key":"sunshine@sunshineco.com","avatar":"https://avatars.githubusercontent.com/u/163641?v=4"},"body":"The value is not a percentage that ranges from 0 to 100, so stop\nreferring to it as `percent`; instead follow the lead of the `git\nrange-diff` documentation and call it `factor`.\n\nSigned-off-by: Eric Sunshine <sunshine@sunshineco.com>\n---\n\nThis is a sibling to Junio's patch[1].\n\n[1]: https://lore.kernel.org/git/xmqqo7x9ch7n.fsf_-_@gitster.g/\n\n Documentation/git-format-patch.txt | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt\nindex be797d7a28..e06475abcd 100644\n--- a/Documentation/git-format-patch.txt\n+++ b/Documentation/git-format-patch.txt\n@@ -27,7 +27,7 @@ SYNOPSIS\n \t\t   [--[no-]encode-email-headers]\n \t\t   [--no-notes | --notes[=<ref>]]\n \t\t   [--interdiff=<previous>]\n-\t\t   [--range-diff=<previous> [--creation-factor=<percent>]]\n+\t\t   [--range-diff=<previous> [--creation-factor=<factor>]]\n \t\t   [--filename-max-length=<n>]\n \t\t   [--progress]\n \t\t   [<common diff options>]\n@@ -321,7 +321,7 @@ product of `format-patch` is generated, and they are not passed to\n the underlying `range-diff` machinery used to generate the cover-letter\n material (this may change in the future).\n \n---creation-factor=<percent>::\n+--creation-factor=<factor>::\n \tUsed with `--range-diff`, tweak the heuristic which matches up commits\n \tbetween the previous and current series of patches by adjusting the\n \tcreation/deletion cost fudge factor. See linkgit:git-range-diff[1])\n-- \n2.37.1.550.gb06344481a\n\n"},{"id":"460144","messageId":"220728.86fsilj9w1.gmgdl@evledraar.gmail.com","threadId":"58225","inReplyTo":"xmqqwnbxb092.fsf@gitster.g","subject":"Re: Re* --creation-factor=100 does not show code","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2022-07-28T19:46:49Z","receivedAt":"2022-07-28T19:49:10Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Thu, Jul 28 2022, Junio C Hamano wrote:\n\n> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n>\n>> That algorithm section also says:\n>>\n>> \tThe cost of an edge o--C is the size of C's diff, modified by a\n>> \tfudge factor that should be smaller than 100%.\n>>\n>> Which I find quite confusing to follow, isn't that \"fudge factor\" the\n>> <percent> (or <factor>) we're accepting with --creation-factor? Doesn't\n>> that also need to be adjusted?\n>>\n>> I still find this documentation quicke lacking, if the default is 60 and\n>> it's not 0..100 what is it then? Are values of 200 sensible in some\n>> cases, 1k? 10k?\n>\n> I think 90% of your responses are better answered not by me.  Feel\n> free to edit \"to:\" header field when that happens next time ;-)\n\nIt's a comment on your patch: If you're updating the <percent> early in\nthe doc, shouldn't the proposed update also update the wording later on\nto refer to \"factor?\"\n\n"},{"id":"460145","messageId":"xmqqa68tau7k.fsf@gitster.g","threadId":"58225","inReplyTo":"220728.86fsilj9w1.gmgdl@evledraar.gmail.com","subject":"Re: Re* --creation-factor=100 does not show code","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-07-28T19:54:55Z","receivedAt":"2022-07-28T19:55:07Z","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> On Thu, Jul 28 2022, Junio C Hamano wrote:\n>\n>> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n>>\n>>> That algorithm section also says:\n>>>\n>>> \tThe cost of an edge o--C is the size of C's diff, modified by a\n>>> \tfudge factor that should be smaller than 100%.\n>>>\n>>> Which I find quite confusing to follow, isn't that \"fudge factor\" the\n>>> <percent> (or <factor>) we're accepting with --creation-factor? Doesn't\n>>> that also need to be adjusted?\n>>>\n>>> I still find this documentation quicke lacking, if the default is 60 and\n>>> it's not 0..100 what is it then? Are values of 200 sensible in some\n>>> cases, 1k? 10k?\n>>\n>> I think 90% of your responses are better answered not by me.  Feel\n>> free to edit \"to:\" header field when that happens next time ;-)\n>\n> It's a comment on your patch: If you're updating the <percent> early in\n> the doc, shouldn't the proposed update also update the wording later on\n> to refer to \"factor?\"\n\nPer-cent in \"100%\" is clearly a unit.  I do not know what to use to\nreplace the mention of \"100%\" with.  Rewriting it to \"... should be\nsmaller than 100-factor\" does not result in a sensible description.\n\nWithout other good questions like \"if it is not 0..100 then in what\nrange does the default 60 fall?\" answered, I do not think anybody\ncan come up with a useful replacement to that part.\n\n"},{"id":"460148","messageId":"220728.867d3xj6s0.gmgdl@evledraar.gmail.com","threadId":"58225","inReplyTo":"20220728174953.66964-1-sunshine@sunshineco.com","subject":"Re: [PATCH] format-patch: clarify --creation-factor=<factor>","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2022-07-28T20:55:31Z","receivedAt":"2022-07-28T20:56:24Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Thu, Jul 28 2022, Eric Sunshine wrote:\n\n> The value is not a percentage that ranges from 0 to 100, so stop\n> referring to it as `percent`; instead follow the lead of the `git\n> range-diff` documentation and call it `factor`.\n>\n> Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>\n> ---\n>\n> This is a sibling to Junio's patch[1].\n>\n> [1]: https://lore.kernel.org/git/xmqqo7x9ch7n.fsf_-_@gitster.g/\n>\n>  Documentation/git-format-patch.txt | 4 ++--\n>  1 file changed, 2 insertions(+), 2 deletions(-)\n>\n> diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt\n> index be797d7a28..e06475abcd 100644\n> --- a/Documentation/git-format-patch.txt\n> +++ b/Documentation/git-format-patch.txt\n> @@ -27,7 +27,7 @@ SYNOPSIS\n>  \t\t   [--[no-]encode-email-headers]\n>  \t\t   [--no-notes | --notes[=<ref>]]\n>  \t\t   [--interdiff=<previous>]\n> -\t\t   [--range-diff=<previous> [--creation-factor=<percent>]]\n> +\t\t   [--range-diff=<previous> [--creation-factor=<factor>]]\n>  \t\t   [--filename-max-length=<n>]\n>  \t\t   [--progress]\n>  \t\t   [<common diff options>]\n> @@ -321,7 +321,7 @@ product of `format-patch` is generated, and they are not passed to\n>  the underlying `range-diff` machinery used to generate the cover-letter\n>  material (this may change in the future).\n>  \n> ---creation-factor=<percent>::\n> +--creation-factor=<factor>::\n>  \tUsed with `--range-diff`, tweak the heuristic which matches up commits\n>  \tbetween the previous and current series of patches by adjusting the\n>  \tcreation/deletion cost fudge factor. See linkgit:git-range-diff[1])\n\nLooks good as far as it goes, looks like both of your patches need to\nalso tweak this bit though:\n\n\t$ git -P grep 'percentage.*creation' -- '*.c'\n\tbuiltin/log.c:                      N_(\"percentage by which creation is weighted\")),\n\tbuiltin/range-diff.c:                       N_(\"percentage by which creation is weighted\")),\n\nProbably just s/percentage/factor/ in for those -h strings?\n"},{"id":"460149","messageId":"xmqqv8rh9co5.fsf@gitster.g","threadId":"58225","inReplyTo":"220728.867d3xj6s0.gmgdl@evledraar.gmail.com","subject":"Re: [PATCH] format-patch: clarify --creation-factor=<factor>","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-07-28T20:59:06Z","receivedAt":"2022-07-28T21:00:24Z","isPatch":true,"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>> diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt\n>> index be797d7a28..e06475abcd 100644\n>> --- a/Documentation/git-format-patch.txt\n>> +++ b/Documentation/git-format-patch.txt\n>> @@ -27,7 +27,7 @@ SYNOPSIS\n>>  \t\t   [--[no-]encode-email-headers]\n>>  \t\t   [--no-notes | --notes[=<ref>]]\n>>  \t\t   [--interdiff=<previous>]\n>> -\t\t   [--range-diff=<previous> [--creation-factor=<percent>]]\n>> +\t\t   [--range-diff=<previous> [--creation-factor=<factor>]]\n>>  \t\t   [--filename-max-length=<n>]\n>>  \t\t   [--progress]\n>>  \t\t   [<common diff options>]\n>> @@ -321,7 +321,7 @@ product of `format-patch` is generated, and they are not passed to\n>>  the underlying `range-diff` machinery used to generate the cover-letter\n>>  material (this may change in the future).\n>>  \n>> ---creation-factor=<percent>::\n>> +--creation-factor=<factor>::\n>>  \tUsed with `--range-diff`, tweak the heuristic which matches up commits\n>>  \tbetween the previous and current series of patches by adjusting the\n>>  \tcreation/deletion cost fudge factor. See linkgit:git-range-diff[1])\n>\n> Looks good as far as it goes, looks like both of your patches need to\n> also tweak this bit though:\n>\n> \t$ git -P grep 'percentage.*creation' -- '*.c'\n> \tbuiltin/log.c:                      N_(\"percentage by which creation is weighted\")),\n> \tbuiltin/range-diff.c:                       N_(\"percentage by which creation is weighted\")),\n>\n> Probably just s/percentage/factor/ in for those -h strings?\n\nThanks for being extra careful.\n\nEric, I am not sure if the other patch for the range-diff command as\na standalone patch is worth it.  Perhaps you can help me by\nsubmitting a single combined patch to cover the above as well as\nwhat we wrote in the two patches, with you marked as the primary\nauthor and with Helped-by: that credits Ævar?\n\nThanks.\n"},{"id":"460151","messageId":"CAPig+cTxM2vr11XRU-zrNAJRwveP0W9d0x8Euvr6HKmQicKgPQ@mail.gmail.com","threadId":"58225","inReplyTo":"xmqqv8rh9co5.fsf@gitster.g","subject":"Re: [PATCH] format-patch: clarify --creation-factor=<factor>","fromName":"Eric Sunshine","fromEmail":"sunshine@sunshineco.com","sentAt":"2022-07-28T21:09:38Z","receivedAt":"2022-07-28T21:09:58Z","isPatch":true,"sender":{"key":"sunshine@sunshineco.com","avatar":"https://avatars.githubusercontent.com/u/163641?v=4"},"body":"On Thu, Jul 28, 2022 at 4:59 PM Junio C Hamano <gitster@pobox.com> wrote:\n> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n> >> diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt\n> >> @@ -27,7 +27,7 @@ SYNOPSIS\n> >> -               [--range-diff=<previous> [--creation-factor=<percent>]]\n> >> +               [--range-diff=<previous> [--creation-factor=<factor>]]\n> >> @@ -321,7 +321,7 @@ product of `format-patch` is generated, and they are not passed to\n> >> ---creation-factor=<percent>::\n> >> +--creation-factor=<factor>::\n> >\n> > Looks good as far as it goes, looks like both of your patches need to\n> > also tweak this bit though:\n> >\n> >       $ git -P grep 'percentage.*creation' -- '*.c'\n> >       builtin/log.c:                      N_(\"percentage by which creation is weighted\")),\n> >       builtin/range-diff.c:                       N_(\"percentage by which creation is weighted\")),\n> >\n> > Probably just s/percentage/factor/ in for those -h strings?\n>\n> Thanks for being extra careful.\n>\n> Eric, I am not sure if the other patch for the range-diff command as\n> a standalone patch is worth it.  Perhaps you can help me by\n> submitting a single combined patch to cover the above as well as\n> what we wrote in the two patches, with you marked as the primary\n> author and with Helped-by: that credits Ævar?\n\nWill do.\n\n(Slightly chagrined that I forgot to check the usage-string in the C\nfiles. Thanks, Ævar.)\n"},{"id":"460212","messageId":"85snn12q-po05-osqs-n1o0-n6040392q01q@tzk.qr","threadId":"58225","inReplyTo":"xmqqo7x9ch7n.fsf_-_@gitster.g","subject":"Re: Re* --creation-factor=100 does not show code","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2022-07-29T13:16:12Z","receivedAt":"2022-07-29T13:16:32Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Junio,\n\nOn Thu, 28 Jul 2022, Junio C Hamano wrote:\n\n> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n>\n> > On Tue, 26 Jul 2022, Eugen Konkov wrote:\n> >\n> >> $ git range-diff --creation-factor=100 branch...origin/branch\n> >> 1:  a87daecd47 < -:  ---------- Add mocked exchanges for ...::AutoRenew::General test\n> >> -:  ---------- > 1:  36eaeb56a9 Add mocked exchanges for ...::AutoRenew::General test\n> >> 2:  9594ccf145 = 2:  70681dd13b Remove a call to DB::state\n> >> 3:  740903e01c = 3:  5745ae5702 Run cpanm without tests\n> >> 4:  e8e6cac09c < -:  ---------- Do not use 'require'\n> >>\n> >> --creation-factor=101 does =)\n> >>\n> >> but maximum value for percentage is 100. So expected behaviour is to display range-diff when value 100 was provided\n> >\n> > Please see https://git-scm.com/docs/git-range-diff#_algorithm for an\n> > explanation what the meaning of the factor is, and why 100 is not the\n> > maximal sensible value.\n>\n> When I had to give a huge value to the option the last time, I think\n> I used --creation-factor=999 or something.  The thing that bugged me\n> in the output of \"git range-diff --help\" is that SYNOPSIS section\n> has \"--creation-factor=<factor>\" but the OPTIONS heading says\n> \"--creation-factor=<percent>\" and the word is used in description as\n> well.\n>\n> ----- >8 --------- >8 --------- >8 --------- >8 --------- >8 -----\n> Subject: range-diff: clarify --creation-factor=<factor>\n>\n> The value is not a per-cent that ranges from 0 to 100.\n\nThis sentence is a bit misleading because the factor _is_ measured in\nterms of percent (not \"per-cent\", nor \"per cent\", see\nhttps://writingexplained.org/per-cent-or-percent-difference).\n\nThe fact that we multiply by the number and divide by 100 makes it a\npercentage, see e.g.\nhttps://github.com/git/git/blob/v2.37.1/range-diff.c#L331:\n\n\t\tc = a_util->matching < 0 ?\n\t\t\ta_util->diffsize * creation_factor / 100 : COST_MAX;\n\nThe reason why I chose to write `<percent>` in the original patch\n(https://github.com/git/git/commit/ba931edd284f) is to avoid confusion:\n0.6 would be a factor, equivalent to 60%. But I had carefully decided not\nto extend the `parse_options()` machinery to allow for floating point\nnumbers, hence I chose to allow specifying the factor in terms of a\npercentage, which could be specified as an integer value. I _just_ noticed\na minute ago, though, that the synopsis makes the mistake of describing\nthe value as a `<factor>`, that's on me.\n\nAs to the original claim that percentages only go from 0-100, that is\neasily refuted. If you wanted to pay $12 for something but ended up having\nto pay $30, you'll end up having paid 150% more than planned. There you\nare. A percentage that is greater than 100.\n\nIn this context, the explanation in\nhttps://git-scm.com/docs/git-range-diff#_algorithm reveals how this\npercentage is used: to determine the cost of _not_ pairing a patch on one\nside of the range-diff with a patch on the other side, in terms that are\nrelative to the line count of the diff of said patch. The cost of pairing\ntwo patches is the line count of the _diff between their diffs_.\n\nThis also explains why the default value of the creation factor is not\n100% (as the original poster might have come to expect) but instead 60%, a\nvalue that was at first picked out of thin air, but that turned out to be\nreasonable: https://github.com/trast/tbdiff/commit/92ed41c84a89c.\n\nSide note: One of my math teachers insisted on _not_ calling percent a\nunit, as it is by definition unit-less: a percentage leaves the unit of\nthe value it modifies unchanged. Which is absolutely true. So I think we\nshould heed that advice here and avoid calling `%` a unit.\n\nCiao,\nDscho\n\n> The SYNOPSIS section gets it right, but the body of the documentation\n> said \"percent\" which confused readers.\n>\n> While we are at it, rephrase \"smaller one\" that corresponds to\n> \"larger value\" earlier in the sentence to \"smaller value\" to be more\n> explicit, to avoid misleading eyes of the readers to an unrelated \"a\n> large change\" nearby.\n>\n> Signed-off-by: Junio C Hamano <gitster@pobox.com>\n> ---\n>  Documentation/git-range-diff.txt | 6 +++---\n>  1 file changed, 3 insertions(+), 3 deletions(-)\n>\n> diff --git c/Documentation/git-range-diff.txt w/Documentation/git-range-diff.txt\n> index fe350d7f40..e49630e8ad 100644\n> --- c/Documentation/git-range-diff.txt\n> +++ w/Documentation/git-range-diff.txt\n> @@ -61,11 +61,11 @@ This is known to `range-diff` as \"dual coloring\". Use `--no-dual-color`\n>  to revert to color all lines according to the outer diff markers\n>  (and completely ignore the inner diff when it comes to color).\n>\n> ---creation-factor=<percent>::\n> -\tSet the creation/deletion cost fudge factor to `<percent>`.\n> +--creation-factor=<factor>::\n> +\tSet the creation/deletion cost fudge factor to `<factor>`.\n>  \tDefaults to 60. Try a larger value if `git range-diff` erroneously\n>  \tconsiders a large change a total rewrite (deletion of one commit\n> -\tand addition of another), and a smaller one in the reverse case.\n> +\tand addition of another), and a smaller value in the reverse case.\n>  \tSee the ``Algorithm`` section below for an explanation why this is\n>  \tneeded.\n>\n>\n>\n>\n"},{"id":"460287","messageId":"xmqq5yjf4l60.fsf@gitster.g","threadId":"58225","inReplyTo":"85snn12q-po05-osqs-n1o0-n6040392q01q@tzk.qr","subject":"Re: Re* --creation-factor=100 does not show code","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-07-29T22:19:03Z","receivedAt":"2022-07-29T22:19:11Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n> As to the original claim that percentages only go from 0-100, that is\n> easily refuted. If you wanted to pay $12 for something but ended up having\n> to pay $30, you'll end up having paid 150% more than planned. There you\n> are. A percentage that is greater than 100.\n\nPlaying word games and nitpicks on what I said may have helped you\nstroke your ego and annoy other folks (including me) in the\ndiscussion, but unfortunately I do not think it is helping us get\ncloser to improve either the documentation or behaviour of\nrange-diff.  Now, let's be a bit more constructive and find a way to\nunconfuse people like the original reporter?\n\nWhen we say an option's value is expressed in <percent>, unless we\nare careful, people will assume that the valid value the option will\ntake will lie between 0 and 100, and you cannot blame them.  IOW,\nwhile the word \"percent\" may be 100% correct in your mind, the way\nit is used to describe the feature in \"git range-diff --help\", it\nwas not sufficient to help readers.\n\nIf we were describing a hypothetical Git subcommand that shows a\npicture of a panda, with an option to show the picture in different\nsizes, perhaps \"git panda --scale=<percent>\" option is described\nlike so:\n\n\t--scale=<percent>::\n\t\tInstead of showing the picture of a panda at its\n\t\tdefault size, show it scaled.  \"--scale=50\" means\n\t\tshow it at 50%, i.e. half the width and height.\n\t\t\"--scale=200\" would show the picture at twice the\n\t\twidth and height.\n\nand such a description would make it plenty clear that the valid\nvalue range is not constrainted in 0..100.  We'd need something\nsimilar to help users of \"git range-diff\".\n\nThanks.\n"},{"id":"460294","messageId":"CAPig+cQ94oC-6wftkP_=RSEsOVPKeuBWuMshDkwV+Xu_FjrKeg@mail.gmail.com","threadId":"58225","inReplyTo":"CAPig+cTxM2vr11XRU-zrNAJRwveP0W9d0x8Euvr6HKmQicKgPQ@mail.gmail.com","subject":"Re: [PATCH] format-patch: clarify --creation-factor=<factor>","fromName":"Eric Sunshine","fromEmail":"sunshine@sunshineco.com","sentAt":"2022-07-30T00:25:26Z","receivedAt":"2022-07-30T00:25:45Z","isPatch":true,"sender":{"key":"sunshine@sunshineco.com","avatar":"https://avatars.githubusercontent.com/u/163641?v=4"},"body":"On Thu, Jul 28, 2022 at 5:09 PM Eric Sunshine <sunshine@sunshineco.com> wrote:\n> On Thu, Jul 28, 2022 at 4:59 PM Junio C Hamano <gitster@pobox.com> wrote:\n> > >> -               [--range-diff=<previous> [--creation-factor=<percent>]]\n> > >> +               [--range-diff=<previous> [--creation-factor=<factor>]]\n> >\n> > Eric, I am not sure if the other patch for the range-diff command as\n> > a standalone patch is worth it.  Perhaps you can help me by\n> > submitting a single combined patch to cover the above as well as\n> > what we wrote in the two patches, with you marked as the primary\n> > author and with Helped-by: that credits Ævar?\n>\n> Will do.\n\nGiven Dscho's response in [1] which states that \"percent\" is more\naccurate than \"factor\", perhaps these two patches are unwanted after\nall, and instead the documentation of \"creation factor\" in\nDocumentation/git-range-diff.txt ought to be expanded with a better\nexplanation, as hinted in [2].\n\n[1]: https://lore.kernel.org/git/85snn12q-po05-osqs-n1o0-n6040392q01q@tzk.qr/\n[2]: https://lore.kernel.org/git/xmqq5yjf4l60.fsf@gitster.g/\n"},{"id":"460336","messageId":"xmqqa68p157n.fsf@gitster.g","threadId":"58225","inReplyTo":"CAPig+cQ94oC-6wftkP_=RSEsOVPKeuBWuMshDkwV+Xu_FjrKeg@mail.gmail.com","subject":"Re: [PATCH] format-patch: clarify --creation-factor=<factor>","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-07-31T18:56:28Z","receivedAt":"2022-07-31T18:56:35Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Eric Sunshine <sunshine@sunshineco.com> writes:\n\n> On Thu, Jul 28, 2022 at 5:09 PM Eric Sunshine <sunshine@sunshineco.com> wrote:\n>> On Thu, Jul 28, 2022 at 4:59 PM Junio C Hamano <gitster@pobox.com> wrote:\n>> > >> -               [--range-diff=<previous> [--creation-factor=<percent>]]\n>> > >> +               [--range-diff=<previous> [--creation-factor=<factor>]]\n>> >\n>> > Eric, I am not sure if the other patch for the range-diff command as\n>> > a standalone patch is worth it.  Perhaps you can help me by\n>> > submitting a single combined patch to cover the above as well as\n>> > what we wrote in the two patches, with you marked as the primary\n>> > author and with Helped-by: that credits Ævar?\n>>\n>> Will do.\n>\n> Given Dscho's response in [1] which states that \"percent\" is more\n> accurate than \"factor\", perhaps these two patches are unwanted after\n> all, and instead the documentation of \"creation factor\" in\n> Documentation/git-range-diff.txt ought to be expanded with a better\n> explanation, as hinted in [2].\n\nYup, I do not mind \"percent\" at all.  As long as it is clear that we\nuse it to avoid fractions by multiplying by 100.  Something along\nthe lines of \"This number is expressed by 'percent', but its range\nis not constrained to 0-100%.  It is a weight given to X relative to\nY, and default is 60% (i.e. 0.6).  You give it larger value when you\nwant to do Z and smaller value when you want to do W\" would be what\nour readers need to see, I would think.\n\nThanks.\n"},{"id":"460395","messageId":"xmqqa68nlfiz.fsf@gitster.g","threadId":"58225","inReplyTo":"xmqq5yjf4l60.fsf@gitster.g","subject":"Re: Re* --creation-factor=100 does not show code","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2022-08-01T23:17:56Z","receivedAt":"2022-08-01T23:18:02Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> When we say an option's value is expressed in <percent>, unless we\n> are careful, people will assume that the valid value the option will\n> take will lie between 0 and 100, and you cannot blame them.  IOW,\n> while the word \"percent\" may be 100% correct in your mind, the way\n> it is used to describe the feature in \"git range-diff --help\", it\n> was not sufficient to help readers.\n\nStepping back a bit, I find that saying\n\"--creation-factor=<percent>\" is like giving \"--max-size=<bytes>\".\nThey both make it clear that the readers express the number in what\nscale, but fails to explain what the number means.  It is especially\nhard for readers when the name of the option does not help explain\nwhat the number is, e.g. \"max size, size of what?\" is a valid\nquestion when dealing with \"--max-size\", and without the question\nanswered, the readers cannot decide what value they want to give to\nachieve the effect they want.\n\nthe reader would want to know what it is (e.g. maximum memory that\nis allowed to be allocated on heap) and how it is measured (i.e. in\nbytes).  The former helps the readers guess what a reasonable value\nthey want to specify is (e.g. \"I can afford to dedicate yMB\"), and\nthe latter is essential for the readers to decide how exactly they\nexpress what they chose (e.g. \"I want to give yMB, but it is\nmeasured in bytes, so I'll write y * 10^20 here\").  We need both.\n\nSo _after_ they decide that 1.20 is the right number they want to\ngive to --creation-factor, the knowledge that the number is\nexpressed as percent does help them to write --creation-factor=120\ncorrectly (not --creation-factor=1.20).\n\nBut for readers to come up with the number 1.20, there needs a\nbetter explanation of what the number means in the first place.  \"Go\nread the algorithm section\" is better than having nothing there, but\nwe should be able to do better by having a simple-to-understand\nsingle paragraph description.\n\nThanks.\n"},{"id":"474669","messageId":"1343013223.20230402175555@yandex.ru","threadId":"58225","inReplyTo":"xmqqa68nlfiz.fsf@gitster.g","subject":"Re: Re* --creation-factor=100 does not show code","fromName":"Eugen Konkov","fromEmail":"kes-kes@yandex.ru","sentAt":"2023-04-02T21:55:55Z","receivedAt":"2023-04-02T21:56:08Z","isPatch":false,"sender":{"key":"kes-kes@yandex.ru","avatar":null},"body":"Hello, everybody.\nSorry, if I bring back old theme, but --creation-factor again bother me.\n\nWhen I provide a bit higher value, then command compares wrong commits.\n\nI attached the file with my branches and two git commands with creation factor of 108 and 109 respectively.\nFor second case, when I used 109, I get unexpected output from git. Two unrelated commits are compared.\n\nCould it be possible to consider commit messages?\n\nIn my case commit messages \"Renamed: replace -> update\" are same and are located in same point of history.\nThus, to my mind, they should be diffed.\n\n--\nBest regards,\nEugen Konkov \n\ngit version 2.40.0\n\nExpected output:\ngit range-diff --creation-factor=108 modalnew...refactoring\n 1:  d1bbaf5 !  1:  015bc3e Renamed: replace -> update\n    @@ src/views/blocks/common/form.html: response<br>\n          $( '#ajax-form' ).data( 'replace-form', 'yes' );\n        \" value=\"Replace form\"/>\n\n    +\n    + ## src/views/blocks/common/modal.html ##\n    +@@\n    +       <br>\n    +       <!-- Form should not be closed if content received -->\n    +       <button type=\"submit\" class=\"btn btn-primary\" onclick=\"\n    +-        $( this.form ).attr( 'action', '/replace-content.html' );\n    +-      \">Send 200 & display</button><br>\n    ++        $( this.form ).attr( 'action', '/update-content.html' );\n    ++      \">Send 200 & display HTML</button><br>\n    +       <button type=\"submit\" class=\"btn btn-primary\" onclick=\"\n    +-        $( this.form ).attr( 'action', '/replace-content.json' );\n    +-      \">Send 200 & display</button><br>\n    ++        $( this.form ).attr( 'action', '/update-content.json' );\n    ++      \">Send 200 & display JSON</button><br>\n    +\n    +       <br>\n    +       <!-- Form should not be closed if error occur -->\n 2:  d7792ad =  2:  62343cd Implemented tests for messages with different types\n 3:  c681ba1 =  3:  307203e Removed ajaxFormModal: No reason to duplicate code\n 4:  1c0919e =  4:  804922f Changed function name: give_name ->after_submit_handler_name\n 5:  9cdaeb3 =  5:  50573a9 Improved text on example page\n 6:  0e8defa =  6:  4263831 Renamed flag which controls how deal with new content: replace-form -> replace-me\n 7:  068723b =  7:  3ac9601 Removed outdated example\n 8:  c7f6e55 =  8:  05f4206 Renamed: form -> containerEl\n 9:  8405d9e =  9:  9b58983 FIXED: html not defined\n10:  90e76c0 = 10:  d169cf6 Remove useless parameter\n11:  fe80807 = 11:  31dc239 Added more logging and messages to user\n12:  46caa01 = 12:  2f235a5 Implement and reuse processResponse\n -:  ------- > 13:  b2c417e Renamed: form -> triggerEl\n -:  ------- > 14:  39470fb Moved code to its own function\n -:  ------- > 15:  1ed3596 Pass target element explicitly\n -:  ------- > 16:  305ea24 Be more explecit about content\n -:  ------- > 17:  a3b1bb2 Improved displayResponse\n -:  ------- > 18:  aa25331 Improved examples for lazy loading\n -:  ------- > 19:  5183551 Improved documentation for lazy_load\n -:  ------- > 20:  3632554 Improved text for examples\n -:  ------- > 21:  1586539 Options should be on trigger element and not on target\n -:  ------- > 22:  ef069d7 Improved comment\n -:  ------- > 23:  e9ae2a3 Improved documentation\n -:  ------- > 24:  395ddf9 Do not close modal window when ESC is keypressed and there is not an active modal window\n -:  ------- > 25:  fa75d0e Implemented deprecation message about 'data-close-modal'\n -:  ------- > 26:  5daa3ef Close modal when response was processed\n -:  ------- > 27:  f83a68e Improved example message\n -:  ------- > 28:  5790dc8 Extended tests for button/input/link\n -:  ------- > 29:  a19a3ae BUGFIX: Do not scroll when a link button is pressed\n -:  ------- > 30:  3928191 Hint type was changed: warning -> error\n -:  ------- > 31:  a023d27 Issue warning when we are trying to load content into button\n -:  ------- > 32:  9fc16f6 Put simple functionality first\n -:  ------- > 33:  daad594 Typo fix\n -:  ------- > 34:  53329f9 Removed A::SaveData module\n -:  ------- > 35:  deecd9c Simplified code\n -:  ------- > 36:  8c8dbc0 Removed Example.pm\n -:  ------- > 37:  5016343 Update to Mojolicious v9.31\n -:  ------- > 38:  3bc7958 Updated modules\n -:  ------- > 39:  95a704d Install missed module\n -:  ------- > 40:  802df67 This project does not have Globals. We provide modules location via command line\n -:  ------- > 41:  05cf81a Do not query live servers while testing\n\nNot expected output:\ngit range-diff --creation-factor=109 modalnew...refactoring\n -:  ------- >  1:  015bc3e Renamed: replace -> update\n 2:  d7792ad =  2:  62343cd Implemented tests for messages with different types\n 3:  c681ba1 =  3:  307203e Removed ajaxFormModal: No reason to duplicate code\n 4:  1c0919e =  4:  804922f Changed function name: give_name ->after_submit_handler_name\n 5:  9cdaeb3 =  5:  50573a9 Improved text on example page\n 6:  0e8defa =  6:  4263831 Renamed flag which controls how deal with new content: replace-form -> replace-me\n 7:  068723b =  7:  3ac9601 Removed outdated example\n 8:  c7f6e55 =  8:  05f4206 Renamed: form -> containerEl\n 9:  8405d9e =  9:  9b58983 FIXED: html not defined\n10:  90e76c0 = 10:  d169cf6 Remove useless parameter\n11:  fe80807 = 11:  31dc239 Added more logging and messages to user\n12:  46caa01 = 12:  2f235a5 Implement and reuse processResponse\n -:  ------- > 13:  b2c417e Renamed: form -> triggerEl\n -:  ------- > 14:  39470fb Moved code to its own function\n -:  ------- > 15:  1ed3596 Pass target element explicitly\n -:  ------- > 16:  305ea24 Be more explecit about content\n -:  ------- > 17:  a3b1bb2 Improved displayResponse\n -:  ------- > 18:  aa25331 Improved examples for lazy loading\n -:  ------- > 19:  5183551 Improved documentation for lazy_load\n -:  ------- > 20:  3632554 Improved text for examples\n -:  ------- > 21:  1586539 Options should be on trigger element and not on target\n -:  ------- > 22:  ef069d7 Improved comment\n -:  ------- > 23:  e9ae2a3 Improved documentation\n -:  ------- > 24:  395ddf9 Do not close modal window when ESC is keypressed and there is not an active modal window\n -:  ------- > 25:  fa75d0e Implemented deprecation message about 'data-close-modal'\n -:  ------- > 26:  5daa3ef Close modal when response was processed\n -:  ------- > 27:  f83a68e Improved example message\n -:  ------- > 28:  5790dc8 Extended tests for button/input/link\n -:  ------- > 29:  a19a3ae BUGFIX: Do not scroll when a link button is pressed\n -:  ------- > 30:  3928191 Hint type was changed: warning -> error\n -:  ------- > 31:  a023d27 Issue warning when we are trying to load content into button\n -:  ------- > 32:  9fc16f6 Put simple functionality first\n -:  ------- > 33:  daad594 Typo fix\n -:  ------- > 34:  53329f9 Removed A::SaveData module\n -:  ------- > 35:  deecd9c Simplified code\n -:  ------- > 36:  8c8dbc0 Removed Example.pm\n -:  ------- > 37:  5016343 Update to Mojolicious v9.31\n 1:  d1bbaf5 ! 38:  3bc7958 Renamed: replace -> update\n    @@ Metadata\n     Author: Eugen Konkov <konkove@gmail.com>\n\n      ## Commit message ##\n    -    Renamed: replace -> update\n    +    Updated modules\n\n    -    Because we just send content and not command to from interface\n    -\n    - ## gulp/config-mock.js ##\n    -@@\n    - module.exports = {\n    -   option: {\n    --    \"/replace-content.html\": {\n    -+    \"/update-content.html\": {\n    -       \"GET\": {\n    -         code: \"200\",\n    -         header:  [ \"Content-Type\", \"text/html\" ],\n    --        file: \"mock/replace-content.html\",\n    -+        file: \"mock/update-content.html\",\n    -       },\n    -     },\n    -\n    --    \"/replace-content.json\": {\n    -+    \"/update-content.json\": {\n    -       \"GET\": {\n    -         code: \"200\",\n    --        file: \"mock/replace-content.json\",\n    -+        file: \"mock/update-content.json\",\n    -       },\n    -     },\n    -\n    -\n    - ## mock/replace-content.html => mock/update-content.html ##\n    -\n    - ## mock/replace-content.json => mock/update-content.json ##\n    -\n    - ## src/views/blocks/common/form.html ##\n    -@@ src/views/blocks/common/form.html: response<br>\n    -\n    -   <br>\n    -   <input  type='submit' class=\"btn btn-primary\" style=\"width: 170px\" onclick=\"\n    --    $( '#ajax-form' ).attr( 'action', '/replace-content.html' );\n    -+    $( '#ajax-form' ).attr( 'action', '/update-content.html' );\n    -   \" value=\"No replacement\"/>\n    -\n    -   <input  type='submit' class=\"btn btn-primary\" style=\"width: 170px\" onclick=\"\n    --    $( '#ajax-form' ).attr( 'action', '/replace-content.html' );\n    -+    $( '#ajax-form' ).attr( 'action', '/update-content.html' );\n    -     $( '#ajax-form' ).data( 'load-to', '#form-result' );\n    -   \" value=\"Load into target\"/>\n    -\n    -   <input  type='submit' class=\"btn btn-primary\" style=\"width: 170px\" onclick=\"\n    --    $( '#ajax-form' ).attr( 'action', '/replace-content.json' );\n    -+    $( '#ajax-form' ).attr( 'action', '/update-content.json' );\n    -     $( '#ajax-form' ).data( 'replace-form', 'yes' );\n    -   \" value=\"Replace form\"/>\n    -\n    + ## cpanfile.snapshot ##\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       Algorithm::Diff::_impl 1.201\n    +     requirements:\n    +       ExtUtils::MakeMaker 0\n    ++  Algorithm-Loops-1.032\n    ++    pathname: T/TY/TYEMQ/Algorithm-Loops-1.032.tar.gz\n    ++    provides:\n    ++      Algorithm::Loops 1.032\n    ++    requirements:\n    ++      ExtUtils::MakeMaker 0\n    +   App-cpm-0.997011\n    +     pathname: S/SK/SKAJI/App-cpm-0.997011.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       ExtUtils::MakeMaker 0\n    +       Math::BigInt 0\n    +       perl 5.006\n    +-  DBD-Pg-3.15.1\n    +-    pathname: T/TU/TURNSTEP/DBD-Pg-3.15.1.tar.gz\n    ++  DBD-Pg-3.16.1\n    ++    pathname: T/TU/TURNSTEP/DBD-Pg-3.16.1.tar.gz\n    +     provides:\n    +-      Bundle::DBD::Pg v3.15.1\n    +-      DBD::Pg v3.15.1\n    ++      Bundle::DBD::Pg v3.16.1\n    ++      DBD::Pg v3.16.1\n    +     requirements:\n    +-      DBI 1.614\n    +-      ExtUtils::MakeMaker 6.11\n    +-      File::Temp 0\n    +-      Test::More 0.88\n    +-      Time::HiRes 0\n    +-      version 0\n    +   DBD-SQLite-1.70\n    +     pathname: I/IS/ISHIGAKI/DBD-SQLite-1.70.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       Sub::Install 0.921\n    +       strict 0\n    +       warnings 0\n    +-  Data-Printer-1.000004\n    +-    pathname: G/GA/GARU/Data-Printer-1.000004.tar.gz\n    ++  Data-Printer-1.001000\n    ++    pathname: G/GA/GARU/Data-Printer-1.001000.tar.gz\n    +     provides:\n    +-      DDP undef\n    +-      Data::Printer 1.000004\n    ++      DDP 1.001000\n    ++      Data::Printer 1.001000\n    +       Data::Printer::Common undef\n    +       Data::Printer::Config undef\n    +       Data::Printer::Filter undef\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       perl 5.006\n    +       strict 0\n    +       warnings 0\n    +-  DateTime-1.58\n    +-    pathname: D/DR/DROLSKY/DateTime-1.58.tar.gz\n    +-    provides:\n    +-      DateTime 1.58\n    +-      DateTime::Duration 1.58\n    +-      DateTime::Helpers 1.58\n    +-      DateTime::Infinite 1.58\n    +-      DateTime::Infinite::Future 1.58\n    +-      DateTime::Infinite::Past 1.58\n    +-      DateTime::LeapSecond 1.58\n    +-      DateTime::PP 1.58\n    +-      DateTime::PPExtra 1.58\n    +-      DateTime::Types 1.58\n    ++  DateTime-1.59\n    ++    pathname: D/DR/DROLSKY/DateTime-1.59.tar.gz\n    ++    provides:\n    ++      DateTime 1.59\n    ++      DateTime::Duration 1.59\n    ++      DateTime::Helpers 1.59\n    ++      DateTime::Infinite 1.59\n    ++      DateTime::Infinite::Future 1.59\n    ++      DateTime::Infinite::Past 1.59\n    ++      DateTime::LeapSecond 1.59\n    ++      DateTime::PP 1.59\n    ++      DateTime::PPExtra 1.59\n    ++      DateTime::Types 1.59\n    +     requirements:\n    +       Carp 0\n    +       DateTime::Locale 1.06\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       Specio::Subs 0\n    +       Try::Tiny 0\n    +       XSLoader 0\n    +-      base 0\n    +       integer 0\n    +       namespace::autoclean 0.19\n    +       overload 0\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       ExtUtils::MakeMaker 0\n    +       Sub::Exporter::Progressive 0.001011\n    +       perl 5.006\n    ++  Devel-GlobalPhase-0.003003\n    ++    pathname: H/HA/HAARG/Devel-GlobalPhase-0.003003.tar.gz\n    ++    provides:\n    ++      Devel::GlobalPhase 0.003003\n    ++    requirements:\n    ++      perl 5.008\n    +   Devel-OverloadInfo-0.007\n    +     pathname: I/IL/ILMARI/Devel-OverloadInfo-0.007.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       perl 5.006\n    +       strict 0\n    +       warnings 0\n    +-  Digest-HMAC-1.04\n    +-    pathname: A/AR/ARODLAND/Digest-HMAC-1.04.tar.gz\n    +-    provides:\n    +-      Digest::HMAC 1.04\n    +-      Digest::HMAC_MD5 1.04\n    +-      Digest::HMAC_SHA1 1.04\n    +-    requirements:\n    +-      Digest::MD5 2\n    +-      Digest::SHA 1\n    +-      ExtUtils::MakeMaker 0\n    +-      perl 5.004\n    +   Dist-CheckConflicts-0.11\n    +     pathname: D/DO/DOY/Dist-CheckConflicts-0.11.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +     requirements:\n    +       ExtUtils::MakeMaker 0\n    +       Mail::Address 0\n    +-      Net::DNS 0\n    +       Scalar::Util 0\n    +       Test::More 0\n    +       perl 5.006\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       perl 5.006\n    +       strict 0\n    +       warnings 0\n    ++  ExtUtils-Install-2.20\n    ++    pathname: B/BI/BINGOS/ExtUtils-Install-2.20.tar.gz\n    ++    provides:\n    ++      ExtUtils::Install 2.20\n    ++      ExtUtils::Install::Warn 2.20\n    ++      ExtUtils::Installed 2.20\n    ++      ExtUtils::Packlist 2.20\n    ++    requirements:\n    ++      Carp 0\n    ++      Cwd 0\n    ++      ExtUtils::MakeMaker 0\n    ++      File::Basename 0\n    ++      File::Compare 0\n    ++      File::Copy 0\n    ++      File::Find 0\n    ++      File::Path 0\n    ++      File::Spec 0\n    ++      File::Temp 0\n    ++      Test::More 0.47\n    ++      perl 5.006\n    +   ExtUtils-InstallPaths-0.012\n    +     pathname: L/LE/LEONT/ExtUtils-InstallPaths-0.012.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       perl 5.006\n    +       strict 0\n    +       warnings 0\n    ++  ExtUtils-MakeMaker-7.64\n    ++    pathname: B/BI/BINGOS/ExtUtils-MakeMaker-7.64.tar.gz\n    ++    provides:\n    ++      ExtUtils::Command 7.64\n    ++      ExtUtils::Command::MM 7.64\n    ++      ExtUtils::Liblist 7.64\n    ++      ExtUtils::Liblist::Kid 7.64\n    ++      ExtUtils::MM 7.64\n    ++      ExtUtils::MM_AIX 7.64\n    ++      ExtUtils::MM_Any 7.64\n    ++      ExtUtils::MM_BeOS 7.64\n    ++      ExtUtils::MM_Cygwin 7.64\n    ++      ExtUtils::MM_DOS 7.64\n    ++      ExtUtils::MM_Darwin 7.64\n    ++      ExtUtils::MM_MacOS 7.64\n    ++      ExtUtils::MM_NW5 7.64\n    ++      ExtUtils::MM_OS2 7.64\n    ++      ExtUtils::MM_OS390 7.64\n    ++      ExtUtils::MM_QNX 7.64\n    ++      ExtUtils::MM_UWIN 7.64\n    ++      ExtUtils::MM_Unix 7.64\n    ++      ExtUtils::MM_VMS 7.64\n    ++      ExtUtils::MM_VOS 7.64\n    ++      ExtUtils::MM_Win32 7.64\n    ++      ExtUtils::MM_Win95 7.64\n    ++      ExtUtils::MY 7.64\n    ++      ExtUtils::MakeMaker 7.64\n    ++      ExtUtils::MakeMaker::Config 7.64\n    ++      ExtUtils::MakeMaker::Locale 7.64\n    ++      ExtUtils::MakeMaker::_version 7.64\n    ++      ExtUtils::MakeMaker::charstar 7.64\n    ++      ExtUtils::MakeMaker::version 7.64\n    ++      ExtUtils::MakeMaker::version::regex 7.64\n    ++      ExtUtils::MakeMaker::version::vpp 7.64\n    ++      ExtUtils::Mkbootstrap 7.64\n    ++      ExtUtils::Mksymlists 7.64\n    ++      ExtUtils::testlib 7.64\n    ++      MM 7.64\n    ++      MY 7.64\n    ++    requirements:\n    ++      Data::Dumper 0\n    ++      Encode 0\n    ++      File::Basename 0\n    ++      File::Spec 0.8\n    ++      Pod::Man 0\n    ++      perl 5.006\n    +   ExtUtils-MakeMaker-CPANfile-0.09\n    +     pathname: I/IS/ISHIGAKI/ExtUtils-MakeMaker-CPANfile-0.09.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       File::Which 0.05\n    +       POSIX 0\n    +       perl 5.008003\n    ++  File-Listing-6.15\n    ++    pathname: P/PL/PLICEASE/File-Listing-6.15.tar.gz\n    ++    provides:\n    ++      File::Listing 6.15\n    ++      File::Listing::apache 6.15\n    ++      File::Listing::dosftp 6.15\n    ++      File::Listing::netware 6.15\n    ++      File::Listing::unix 6.15\n    ++      File::Listing::vms 6.15\n    ++    requirements:\n    ++      Exporter 5.57\n    ++      ExtUtils::MakeMaker 0\n    ++      HTTP::Date 0\n    ++      perl 5.006\n    +   File-Remove-1.61\n    +     pathname: S/SH/SHLOMIF/File-Remove-1.61.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       perl 5.006\n    +       strict 0\n    +       warnings 0\n    ++  Filter-signatures-0.17\n    ++    pathname: C/CO/CORION/Filter-signatures-0.17.tar.gz\n    ++    provides:\n    ++      Filter::signatures 0.17\n    ++    requirements:\n    ++      ExtUtils::MakeMaker 0\n    ++      Filter::Simple 0.91\n    ++      perl 5.006\n    ++  Future-0.48\n    ++    pathname: P/PE/PEVANS/Future-0.48.tar.gz\n    ++    provides:\n    ++      Future 0.48\n    ++      Future::Exception 0.48\n    ++      Future::Mutex 0.48\n    ++      Future::Queue 0.48\n    ++      Future::Utils 0.48\n    ++      Test::Future 0.48\n    ++      Test::Future::Deferred 0.48\n    ++    requirements:\n    ++      Carp 1.25\n    ++      Module::Build 0.4004\n    ++      Test::Builder::Module 0\n    ++      Time::HiRes 0\n    ++      perl 5.010\n    ++  Future-HTTP-0.14\n    ++    pathname: C/CO/CORION/Future-HTTP-0.14.tar.gz\n    ++    provides:\n    ++      Future::HTTP 0.14\n    ++      Future::HTTP::AnyEvent 0.14\n    ++      Future::HTTP::Handler 0.14\n    ++      Future::HTTP::Mojo 0.14\n    ++      Future::HTTP::NetAsync 0.14\n    ++      Future::HTTP::Tiny 0.14\n    ++      Future::HTTP::Tiny::Paranoid 0.14\n    ++    requirements:\n    ++      ExtUtils::MakeMaker 0\n    ++      Filter::signatures 0.13\n    ++      Future 0.31\n    ++      HTTP::Headers 6.07\n    ++      HTTP::Tiny 0\n    ++      Moo 2\n    ++      perl 5.006\n    +   Getopt-Long-Descriptive-0.110\n    +     pathname: R/RJ/RJBS/Getopt-Long-Descriptive-0.110.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       perl 5.012\n    +       strict 0\n    +       warnings 0\n    ++  HTML-Form-6.07\n    ++    pathname: O/OA/OALDERS/HTML-Form-6.07.tar.gz\n    ++    provides:\n    ++      HTML::Form 6.07\n    ++      HTML::Form::FileInput 6.07\n    ++      HTML::Form::IgnoreInput 6.07\n    ++      HTML::Form::ImageInput 6.07\n    ++      HTML::Form::Input 6.07\n    ++      HTML::Form::KeygenInput 6.07\n    ++      HTML::Form::ListInput 6.07\n    ++      HTML::Form::SubmitInput 6.07\n    ++      HTML::Form::TextInput 6.07\n    ++    requirements:\n    ++      Carp 0\n    ++      Encode 2\n    ++      ExtUtils::MakeMaker 0\n    ++      HTML::TokeParser 0\n    ++      HTTP::Request 6\n    ++      HTTP::Request::Common 6.03\n    ++      URI 1.10\n    ++      perl 5.008001\n    ++      strict 0\n    ++      vars 0\n    +   HTML-Parser-3.78\n    +     pathname: O/OA/OALDERS/HTML-Parser-3.78.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       URI::URL 0\n    +       XSLoader 0\n    +       strict 0\n    ++  HTML-Selector-XPath-0.26\n    ++    pathname: C/CO/CORION/HTML-Selector-XPath-0.26.tar.gz\n    ++    provides:\n    ++      HTML::Selector::XPath 0.26\n    ++    requirements:\n    ++      Carp 0\n    ++      Exporter 0\n    ++      ExtUtils::MakeMaker 0\n    ++      perl 5.008001\n    ++      strict 0\n    +   HTML-Tagset-3.20\n    +     pathname: P/PE/PETDANCE/HTML-Tagset-3.20.tar.gz\n    +     provides:\n    +       HTML::Tagset 3.20\n    +     requirements:\n    +       ExtUtils::MakeMaker 0\n    ++  HTML-Tree-5.07\n    ++    pathname: K/KE/KENTNL/HTML-Tree-5.07.tar.gz\n    ++    provides:\n    ++      HTML::AsSubs 5.07\n    ++      HTML::Element 5.07\n    ++      HTML::Element::traverse 5.07\n    ++      HTML::Parse 5.07\n    ++      HTML::Tree 5.07\n    ++      HTML::TreeBuilder 5.07\n    ++    requirements:\n    ++      Carp 0\n    ++      Encode 0\n    ++      Exporter 0\n    ++      HTML::Entities 0\n    ++      HTML::Parser 3.46\n    ++      HTML::Tagset 3.02\n    ++      Module::Build 0.2808\n    ++      Scalar::Util 0\n    ++      Test::Fatal 0\n    ++      Test::More 0\n    ++      base 0\n    ++      integer 0\n    ++      perl 5.008\n    ++  HTTP-Cookies-6.10\n    ++    pathname: O/OA/OALDERS/HTTP-Cookies-6.10.tar.gz\n    ++    provides:\n    ++      HTTP::Cookies 6.10\n    ++      HTTP::Cookies::Microsoft 6.10\n    ++      HTTP::Cookies::Netscape 6.10\n    ++    requirements:\n    ++      Carp 0\n    ++      ExtUtils::MakeMaker 0\n    ++      HTTP::Date 6\n    ++      HTTP::Headers::Util 6\n    ++      HTTP::Request 0\n    ++      locale 0\n    ++      perl 5.008001\n    ++      strict 0\n    +   HTTP-Date-6.05\n    +     pathname: O/OA/OALDERS/HTTP-Date-6.05.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       perl 5.008001\n    +       strict 0\n    +       warnings 0\n    ++  HTTP-Negotiate-6.01\n    ++    pathname: G/GA/GAAS/HTTP-Negotiate-6.01.tar.gz\n    ++    provides:\n    ++      HTTP::Negotiate 6.01\n    ++    requirements:\n    ++      ExtUtils::MakeMaker 0\n    ++      HTTP::Headers 6\n    ++      perl 5.008001\n    +   HTTP-Tinyish-0.17\n    +     pathname: M/MI/MIYAGAWA/HTTP-Tinyish-0.17.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       ExtUtils::MakeMaker 0\n    +       Scalar::Util 0\n    +       perl 5.008001\n    ++  IO-Async-0.801\n    ++    pathname: P/PE/PEVANS/IO-Async-0.801.tar.gz\n    ++    provides:\n    ++      Future::IO::Impl::IOAsync undef\n    ++      IO::Async 0.801\n    ++      IO::Async::Channel 0.801\n    ++      IO::Async::Debug 0.801\n    ++      IO::Async::File 0.801\n    ++      IO::Async::FileStream 0.801\n    ++      IO::Async::Function 0.801\n    ++      IO::Async::Future 0.801\n    ++      IO::Async::Handle 0.801\n    ++      IO::Async::Internals::ChildManager 0.801\n    ++      IO::Async::Internals::FunctionWorker 0.801\n    ++      IO::Async::Listener 0.801\n    ++      IO::Async::Loop 0.801\n    ++      IO::Async::Loop::Poll 0.801\n    ++      IO::Async::Loop::Select 0.801\n    ++      IO::Async::LoopTests 0.801\n    ++      IO::Async::Metrics undef\n    ++      IO::Async::Notifier 0.801\n    ++      IO::Async::OS 0.801\n    ++      IO::Async::OS::MSWin32 0.801\n    ++      IO::Async::OS::cygwin 0.801\n    ++      IO::Async::OS::linux 0.801\n    ++      IO::Async::PID 0.801\n    ++      IO::Async::Process 0.801\n    ++      IO::Async::Protocol 0.801\n    ++      IO::Async::Protocol::LineStream 0.801\n    ++      IO::Async::Protocol::Stream 0.801\n    ++      IO::Async::Resolver 0.801\n    ++      IO::Async::Routine 0.801\n    ++      IO::Async::Signal 0.801\n    ++      IO::Async::Socket 0.801\n    ++      IO::Async::Stream 0.801\n    ++      IO::Async::Test 0.801\n    ++      IO::Async::Timer 0.801\n    ++      IO::Async::Timer::Absolute 0.801\n    ++      IO::Async::Timer::Countdown 0.801\n    ++      IO::Async::Timer::Periodic 0.801\n    ++    requirements:\n    ++      Exporter 5.57\n    ++      File::stat 0\n    ++      Future 0.33\n    ++      Future::Utils 0.18\n    ++      IO::Poll 0\n    ++      List::Util 0\n    ++      Module::Build 0.4004\n    ++      Socket 2.007\n    ++      Storable 0\n    ++      Struct::Dumb 0\n    ++      Time::HiRes 0\n    ++      perl 5.008004\n    +   IO-HTML-1.004\n    +     pathname: C/CJ/CJM/IO-HTML-1.004.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       ExtUtils::MakeMaker 0\n    +       Test::More 0.31\n    +       Time::HiRes 0\n    ++  Imager-1.019\n    ++    pathname: T/TO/TONYC/Imager-1.019.tar.gz\n    ++    provides:\n    ++      Imager 1.019\n    ++      Imager::Color 1.015\n    ++      Imager::Color::Float 1.008\n    ++      Imager::Color::Table 1.004\n    ++      Imager::CountColor 0.03\n    ++      Imager::Expr 1.008\n    ++      Imager::Expr::Assem 1.004\n    ++      Imager::Expr::Infix 1.008\n    ++      Imager::Expr::Postfix 1.008\n    ++      Imager::ExtUtils 1.003\n    ++      Imager::FORMATS 1.019\n    ++      Imager::File::CUR 1.000\n    ++      Imager::File::ICO 0.08\n    ++      Imager::File::SGI 0.05\n    ++      Imager::Fill 1.013\n    ++      Imager::Filter::DynTest 0.03\n    ++      Imager::Filter::Flines 0.04\n    ++      Imager::Filter::Mandelbrot 0.05\n    ++      Imager::Font 1.039\n    ++      Imager::Font::BBox 1.007\n    ++      Imager::Font::FreeType2 1.021\n    ++      Imager::Font::Image 1.000\n    ++      Imager::Font::Test 1.002\n    ++      Imager::Font::Truetype 1.013\n    ++      Imager::Font::Type1 1.013\n    ++      Imager::Font::Wrap 1.005\n    ++      Imager::Fountain 1.009\n    ++      Imager::IO 1.019\n    ++      Imager::Matrix2d 1.013\n    ++      Imager::Preprocess 1.003\n    ++      Imager::Probe 1.008\n    ++      Imager::Regops 1.000\n    ++      Imager::Test 1.007\n    ++      Imager::Test::OverUtf8 1.007\n    ++      Imager::Transform 1.007\n    ++      Imager::TrimColorList 1.000\n    ++    requirements:\n    ++      Exporter 5.57\n    ++      ExtUtils::MakeMaker 0\n    ++      Scalar::Util 1.00\n    ++      Test::More 0.99\n    ++      XSLoader 0\n    ++  Imager-File-PNG-0.99\n    ++    pathname: T/TO/TONYC/Imager-File-PNG-0.99.tar.gz\n    ++    provides:\n    ++      Imager::File::PNG 0.99\n    ++    requirements:\n    ++      ExtUtils::MakeMaker 0\n    ++      Imager 0.90\n    ++      XSLoader 0\n    +   Import-Into-1.002005\n    +     pathname: H/HA/HAARG/Import-Into-1.002005.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       perl 5.006\n    +       strict 0\n    +       warnings 0\n    ++  JSON-4.07\n    ++    pathname: I/IS/ISHIGAKI/JSON-4.07.tar.gz\n    ++    provides:\n    ++      JSON 4.07\n    ++      JSON::Backend::PP 4.07\n    ++    requirements:\n    ++      ExtUtils::MakeMaker 0\n    ++      Test::More 0\n    +   JSON-MaybeXS-1.004003\n    +     pathname: E/ET/ETHER/JSON-MaybeXS-1.004003.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       ExtUtils::MakeMaker 0\n    +       Moo 1.003\n    +       Scalar::Util 0\n    ++  Log-Log4perl-1.57\n    ++    pathname: E/ET/ETJ/Log-Log4perl-1.57.tar.gz\n    ++    provides:\n    ++      L4pResurrectable 0.01\n    ++      Log::Log4perl 1.57\n    ++      Log::Log4perl::Appender undef\n    ++      Log::Log4perl::Appender::Buffer 1.53\n    ++      Log::Log4perl::Appender::DBI undef\n    ++      Log::Log4perl::Appender::File undef\n    ++      Log::Log4perl::Appender::Limit 1.53\n    ++      Log::Log4perl::Appender::RRDs undef\n    ++      Log::Log4perl::Appender::Screen undef\n    ++      Log::Log4perl::Appender::ScreenColoredLevels undef\n    ++      Log::Log4perl::Appender::Socket undef\n    ++      Log::Log4perl::Appender::String undef\n    ++      Log::Log4perl::Appender::Synchronized 1.53\n    ++      Log::Log4perl::Appender::TestArrayBuffer undef\n    ++      Log::Log4perl::Appender::TestBuffer undef\n    ++      Log::Log4perl::Appender::TestFileCreeper undef\n    ++      Log::Log4perl::Catalyst 1.53\n    ++      Log::Log4perl::Config undef\n    ++      Log::Log4perl::Config::BaseConfigurator undef\n    ++      Log::Log4perl::Config::DOMConfigurator 0.03\n    ++      Log::Log4perl::Config::PropertyConfigurator undef\n    ++      Log::Log4perl::Config::Watch undef\n    ++      Log::Log4perl::DateFormat undef\n    ++      Log::Log4perl::Filter undef\n    ++      Log::Log4perl::Filter::Boolean undef\n    ++      Log::Log4perl::Filter::LevelMatch undef\n    ++      Log::Log4perl::Filter::LevelRange undef\n    ++      Log::Log4perl::Filter::MDC undef\n    ++      Log::Log4perl::Filter::StringMatch undef\n    ++      Log::Log4perl::InternalDebug undef\n    ++      Log::Log4perl::JavaMap undef\n    ++      Log::Log4perl::JavaMap::ConsoleAppender undef\n    ++      Log::Log4perl::JavaMap::FileAppender undef\n    ++      Log::Log4perl::JavaMap::JDBCAppender undef\n    ++      Log::Log4perl::JavaMap::NTEventLogAppender undef\n    ++      Log::Log4perl::JavaMap::RollingFileAppender undef\n    ++      Log::Log4perl::JavaMap::SyslogAppender undef\n    ++      Log::Log4perl::JavaMap::TestBuffer undef\n    ++      Log::Log4perl::Layout undef\n    ++      Log::Log4perl::Layout::NoopLayout undef\n    ++      Log::Log4perl::Layout::PatternLayout undef\n    ++      Log::Log4perl::Layout::PatternLayout::Multiline undef\n    ++      Log::Log4perl::Layout::SimpleLayout undef\n    ++      Log::Log4perl::Level undef\n    ++      Log::Log4perl::Logger undef\n    ++      Log::Log4perl::MDC undef\n    ++      Log::Log4perl::NDC undef\n    ++      Log::Log4perl::Resurrector undef\n    ++      Log::Log4perl::Util undef\n    ++      Log::Log4perl::Util::Semaphore undef\n    ++      Log::Log4perl::Util::TimeTracker undef\n    ++    requirements:\n    ++      ExtUtils::MakeMaker 0\n    ++      File::Path 2.07\n    ++      File::Spec 0.82\n    ++      perl 5.006\n    +   MIME-Charset-1.012.2\n    +     pathname: N/NE/NEZUMI/MIME-Charset-1.012.2.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       perl 5.012\n    +       strict 0\n    +       warnings 0\n    +-  Modern-Perl-1.20220515\n    +-    pathname: C/CH/CHROMATIC/Modern-Perl-1.20220515.tar.gz\n    ++  Modern-Perl-1.20230106\n    ++    pathname: C/CH/CHROMATIC/Modern-Perl-1.20230106.tar.gz\n    +     provides:\n    +-      Modern::Perl 1.20220515\n    +-      odern::Perl 1.20220515\n    ++      Modern::Perl 1.20230106\n    ++      odern::Perl 1.20230106\n    +     requirements:\n    +       ExtUtils::MakeMaker 0\n    +       IO::File 0\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       File::Spec 3.00\n    +       File::Spec::Functions 0\n    +       if 0\n    +-      perl 5.005030\n    ++      perl 5.00503\n    +       strict 0\n    +   Module-Runtime-0.016\n    +     pathname: Z/ZE/ZEFRAM/Module-Runtime-0.016.tar.gz\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       Scalar::Util 0\n    +       YAML::PP 0.027\n    +       perl 5.008001\n    +-  Mojolicious-9.26\n    +-    pathname: S/SR/SRI/Mojolicious-9.26.tar.gz\n    ++  Mojolicious-9.31\n    ++    pathname: S/SR/SRI/Mojolicious-9.31.tar.gz\n    +     provides:\n    +       Mojo undef\n    +       Mojo::Asset undef\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       Mojo::UserAgent::Transactor undef\n    +       Mojo::Util undef\n    +       Mojo::WebSocket undef\n    +-      Mojolicious 9.26\n    ++      Mojolicious 9.31\n    +       Mojolicious::Command undef\n    +       Mojolicious::Command::Author::cpanify undef\n    +       Mojolicious::Command::Author::generate undef\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       perl 5.008001\n    +       strict 0\n    +       warnings 0\n    +-  Net-DNS-1.34\n    +-    pathname: N/NL/NLNETLABS/Net-DNS-1.34.tar.gz\n    +-    provides:\n    +-      Net::DNS 1.34\n    +-      Net::DNS::Domain 1855\n    +-      Net::DNS::DomainName 1855\n    +-      Net::DNS::DomainName1035 1855\n    +-      Net::DNS::DomainName2535 1855\n    +-      Net::DNS::Header 1855\n    +-      Net::DNS::Mailbox 1855\n    +-      Net::DNS::Mailbox1035 1855\n    +-      Net::DNS::Mailbox2535 1855\n    +-      Net::DNS::Nameserver 1860\n    +-      Net::DNS::Packet 1865\n    +-      Net::DNS::Parameters 1865\n    +-      Net::DNS::Question 1855\n    +-      Net::DNS::RR 1864\n    +-      Net::DNS::RR::A 1857\n    +-      Net::DNS::RR::AAAA 1857\n    +-      Net::DNS::RR::AFSDB 1857\n    +-      Net::DNS::RR::AMTRELAY 1855\n    +-      Net::DNS::RR::APL 1857\n    +-      Net::DNS::RR::APL::Item 1857\n    +-      Net::DNS::RR::CAA 1857\n    +-      Net::DNS::RR::CDNSKEY 1857\n    +-      Net::DNS::RR::CDS 1857\n    +-      Net::DNS::RR::CERT 1856\n    +-      Net::DNS::RR::CNAME 1857\n    +-      Net::DNS::RR::CSYNC 1857\n    +-      Net::DNS::RR::DHCID 1857\n    +-      Net::DNS::RR::DNAME 1857\n    +-      Net::DNS::RR::DNSKEY 1856\n    +-      Net::DNS::RR::DS 1856\n    +-      Net::DNS::RR::EUI48 1857\n    +-      Net::DNS::RR::EUI64 1857\n    +-      Net::DNS::RR::GPOS 1857\n    +-      Net::DNS::RR::HINFO 1857\n    +-      Net::DNS::RR::HIP 1857\n    +-      Net::DNS::RR::HTTPS 1857\n    +-      Net::DNS::RR::IPSECKEY 1857\n    +-      Net::DNS::RR::ISDN 1857\n    +-      Net::DNS::RR::KEY 1857\n    +-      Net::DNS::RR::KX 1857\n    +-      Net::DNS::RR::L32 1857\n    +-      Net::DNS::RR::L64 1857\n    +-      Net::DNS::RR::LOC 1857\n    +-      Net::DNS::RR::LP 1857\n    +-      Net::DNS::RR::MB 1857\n    +-      Net::DNS::RR::MG 1857\n    +-      Net::DNS::RR::MINFO 1857\n    +-      Net::DNS::RR::MR 1857\n    +-      Net::DNS::RR::MX 1857\n    +-      Net::DNS::RR::NAPTR 1857\n    +-      Net::DNS::RR::NID 1857\n    +-      Net::DNS::RR::NS 1857\n    +-      Net::DNS::RR::NSEC 1857\n    +-      Net::DNS::RR::NSEC3 1857\n    +-      Net::DNS::RR::NSEC3PARAM 1857\n    +-      Net::DNS::RR::NULL 1857\n    +-      Net::DNS::RR::OPENPGPKEY 1857\n    +-      Net::DNS::RR::OPT 1864\n    +-      Net::DNS::RR::OPT::CHAIN 1864\n    +-      Net::DNS::RR::OPT::CLIENT_SUBNET 1864\n    +-      Net::DNS::RR::OPT::COOKIE 1864\n    +-      Net::DNS::RR::OPT::DAU 1864\n    +-      Net::DNS::RR::OPT::DHU 1864\n    +-      Net::DNS::RR::OPT::EXPIRE 1864\n    +-      Net::DNS::RR::OPT::EXTENDED_ERROR 1864\n    +-      Net::DNS::RR::OPT::KEY_TAG 1864\n    +-      Net::DNS::RR::OPT::N3U 1864\n    +-      Net::DNS::RR::OPT::PADDING 1864\n    +-      Net::DNS::RR::OPT::TCP_KEEPALIVE 1864\n    +-      Net::DNS::RR::PTR 1857\n    +-      Net::DNS::RR::PX 1857\n    +-      Net::DNS::RR::RP 1857\n    +-      Net::DNS::RR::RRSIG 1856\n    +-      Net::DNS::RR::RT 1857\n    +-      Net::DNS::RR::SIG 1856\n    +-      Net::DNS::RR::SMIMEA 1857\n    +-      Net::DNS::RR::SOA 1857\n    +-      Net::DNS::RR::SPF 1857\n    +-      Net::DNS::RR::SRV 1857\n    +-      Net::DNS::RR::SSHFP 1857\n    +-      Net::DNS::RR::SVCB 1857\n    +-      Net::DNS::RR::TKEY 1857\n    +-      Net::DNS::RR::TLSA 1857\n    +-      Net::DNS::RR::TSIG 1856\n    +-      Net::DNS::RR::TXT 1857\n    +-      Net::DNS::RR::URI 1857\n    +-      Net::DNS::RR::X25 1857\n    +-      Net::DNS::RR::ZONEMD 1857\n    +-      Net::DNS::Resolver 1855\n    +-      Net::DNS::Resolver::Base 1864\n    +-      Net::DNS::Resolver::MSWin32 1856\n    +-      Net::DNS::Resolver::Recurse 1856\n    +-      Net::DNS::Resolver::UNIX 1856\n    +-      Net::DNS::Resolver::android 1856\n    +-      Net::DNS::Resolver::cygwin 1856\n    +-      Net::DNS::Resolver::os2 1856\n    +-      Net::DNS::Resolver::os390 1856\n    +-      Net::DNS::Text 1855\n    +-      Net::DNS::Update 1855\n    +-      Net::DNS::ZoneFile 1855\n    +-      Net::DNS::ZoneFile::Generator 1855\n    +-      Net::DNS::ZoneFile::Text 1855\n    +-    requirements:\n    +-      Carp 1.1\n    +-      Digest::HMAC 1.03\n    +-      Digest::MD5 2.13\n    +-      Digest::SHA 5.23\n    +-      Encode 2.26\n    +-      Exporter 5.56\n    +-      ExtUtils::MakeMaker 6.66\n    +-      File::Spec 0.86\n    +-      Getopt::Long 2.43\n    +-      IO::File 1.08\n    +-      IO::Select 1.14\n    +-      IO::Socket 1.26\n    +-      IO::Socket::IP 0.38\n    +-      MIME::Base64 2.13\n    +-      PerlIO 1.05\n    +-      Scalar::Util 1.25\n    +-      Time::Local 1.19\n    +-      perl 5.008009\n    ++  Net-Async-WebSocket-0.13\n    ++    pathname: P/PE/PEVANS/Net-Async-WebSocket-0.13.tar.gz\n    ++    provides:\n    ++      Net::Async::WebSocket 0.13\n    ++      Net::Async::WebSocket::Client 0.13\n    ++      Net::Async::WebSocket::Protocol 0.13\n    ++      Net::Async::WebSocket::Server 0.13\n    ++    requirements:\n    ++      IO::Async::Listener 0.61\n    ++      IO::Async::Notifier 0.63\n    ++      IO::Async::Stream 0.34\n    ++      Module::Build 0.4004\n    ++      Protocol::WebSocket 0.22\n    ++      Protocol::WebSocket::Frame 0\n    ++      Protocol::WebSocket::Handshake::Client 0\n    ++      Protocol::WebSocket::Handshake::Server 0\n    ++      Sub::Util 1.40\n    ++      URI 0\n    ++      perl 5.010\n    ++  Net-HTTP-6.22\n    ++    pathname: O/OA/OALDERS/Net-HTTP-6.22.tar.gz\n    ++    provides:\n    ++      Net::HTTP 6.22\n    ++      Net::HTTP::Methods 6.22\n    ++      Net::HTTP::NB 6.22\n    ++      Net::HTTPS 6.22\n    ++    requirements:\n    ++      Carp 0\n    ++      Compress::Raw::Zlib 0\n    ++      ExtUtils::MakeMaker 0\n    ++      IO::Socket::INET 0\n    ++      IO::Uncompress::Gunzip 0\n    ++      URI 0\n    ++      base 0\n    ++      perl 5.006002\n    ++      strict 0\n    ++      warnings 0\n    ++  Object-Import-1.005\n    ++    pathname: C/CO/CORION/Object-Import-1.005.tar.gz\n    ++    provides:\n    ++      Object::Import 1.005\n    ++    requirements:\n    ++      ExtUtils::MakeMaker 0\n    ++      File::Temp 0\n    ++      IO::Handle 0\n    ++      MRO::Compat 0\n    ++      Math::BigInt 1.59\n    ++      Scalar::Util 0\n    ++      Test::More 0.47\n    ++      perl 5.008\n    ++      strict 0\n    ++      warnings 0\n    ++  PDF-WebKit-1.2\n    ++    pathname: M/MI/MITHALDU/PDF-WebKit-1.2.tar.gz\n    ++    provides:\n    ++      PDF::WebKit 1.2\n    ++      PDF::WebKit::Configuration undef\n    ++      PDF::WebKit::Source undef\n    ++    requirements:\n    ++      ExtUtils::MakeMaker 6.42\n    ++      IPC::Run3 0\n    ++      Moo 0\n    ++      Test::Spec 0\n    ++      namespace::clean 0\n    ++      perl 5.008008\n    +   Package-DeprecationManager-0.17\n    +     pathname: D/DR/DROLSKY/Package-DeprecationManager-0.17.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       perl 5.008\n    +       strict 0\n    +       warnings 0\n    +-  Pod-Parser-1.65\n    +-    pathname: M/MA/MAREKR/Pod-Parser-1.65.tar.gz\n    +-    provides:\n    +-      Pod::Cache 1.65\n    +-      Pod::Cache::Item 1.65\n    +-      Pod::Find 1.65\n    +-      Pod::Hyperlink 1.65\n    +-      Pod::InputObjects 1.65\n    +-      Pod::InputSource 1.65\n    +-      Pod::InteriorSequence 1.65\n    +-      Pod::List 1.65\n    +-      Pod::Paragraph 1.65\n    +-      Pod::ParseTree 1.65\n    +-      Pod::ParseUtils 1.65\n    +-      Pod::Parser 1.65\n    +-      Pod::PlainText 2.07\n    +-      Pod::Select 1.65\n    ++  PerlX-Maybe-1.202\n    ++    pathname: T/TO/TOBYINK/PerlX-Maybe-1.202.tar.gz\n    ++    provides:\n    ++      PerlX::Maybe 1.202\n    ++      Syntax::Feature::Maybe 1.202\n    +     requirements:\n    +-      Cwd 0\n    +-      ExtUtils::MakeMaker 0\n    +-      File::Basename 0\n    +-      Test::More 0.6\n    ++      ExtUtils::MakeMaker 6.17\n    ++      Scalar::Util 0\n    ++      perl 5.006\n    ++  Protocol-WebSocket-0.26\n    ++    pathname: V/VT/VTI/Protocol-WebSocket-0.26.tar.gz\n    ++    provides:\n    ++      Protocol::WebSocket 0.26\n    ++      Protocol::WebSocket::Client undef\n    ++      Protocol::WebSocket::Cookie undef\n    ++      Protocol::WebSocket::Cookie::Request undef\n    ++      Protocol::WebSocket::Cookie::Response undef\n    ++      Protocol::WebSocket::Frame undef\n    ++      Protocol::WebSocket::Handshake undef\n    ++      Protocol::WebSocket::Handshake::Client undef\n    ++      Protocol::WebSocket::Handshake::Server undef\n    ++      Protocol::WebSocket::Message undef\n    ++      Protocol::WebSocket::Request undef\n    ++      Protocol::WebSocket::Response undef\n    ++      Protocol::WebSocket::Stateful undef\n    ++      Protocol::WebSocket::URL undef\n    ++    requirements:\n    ++      Carp 0\n    ++      Digest::MD5 0\n    ++      Digest::SHA 0\n    ++      Module::Build::Tiny 0.035\n    ++      Scalar::Util 0\n    +   Regexp-Common-2017060201\n    +     pathname: A/AB/ABIGAIL/Regexp-Common-2017060201.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       Sub::Quote 0\n    +       Try::Tiny 0.04\n    +       perl 5.008001\n    ++  Scalar-List-Utils-1.62\n    ++    pathname: P/PE/PEVANS/Scalar-List-Utils-1.62.tar.gz\n    ++    provides:\n    ++      List::Util 1.62\n    ++      List::Util::XS 1.62\n    ++      Scalar::Util 1.62\n    ++      Sub::Util 1.62\n    ++    requirements:\n    ++      ExtUtils::MakeMaker 0\n    ++      perl 5.006\n    +   Scope-Guard-0.21\n    +     pathname: C/CH/CHOCOLATE/Scope-Guard-0.21.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       perl 5.008001\n    +       strict 0\n    +       warnings 0\n    ++  Struct-Dumb-0.12\n    ++    pathname: P/PE/PEVANS/Struct-Dumb-0.12.tar.gz\n    ++    provides:\n    ++      Struct::Dumb 0.12\n    ++    requirements:\n    ++      Module::Build 0.4004\n    +   Sub-Exporter-0.988\n    +     pathname: R/RJ/RJBS/Sub-Exporter-0.988.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       Test::Harness 3.35\n    +       Test::More 1.302047\n    +       Test::Warn 0.30\n    ++  Test-Spec-0.54\n    ++    pathname: A/AK/AKZHAN/Test-Spec-0.54.tar.gz\n    ++    provides:\n    ++      Test::Spec 0.54\n    ++      Test::Spec::Context undef\n    ++      Test::Spec::Example undef\n    ++      Test::Spec::ExportProxy 0.54\n    ++      Test::Spec::Mocks undef\n    ++      Test::Spec::Mocks::Expectation undef\n    ++      Test::Spec::Mocks::MockObject undef\n    ++      Test::Spec::Mocks::Stub undef\n    ++      Test::Spec::SharedHash undef\n    ++      Test::Spec::TodoExample undef\n    ++    requirements:\n    ++      Carp 0\n    ++      Devel::GlobalPhase 0\n    ++      Exporter 0\n    ++      ExtUtils::MakeMaker 0\n    ++      List::Util 0\n    ++      Package::Stash 0.23\n    ++      Scalar::Util 1.11\n    ++      TAP::Parser 0\n    ++      Test::Deep 0.103\n    ++      Test::More 0.88\n    ++      Test::Trap 0\n    ++      Tie::IxHash 0\n    ++      constant 0\n    ++  Test-Trap-v0.3.4\n    ++    pathname: E/EB/EBHANSSEN/Test-Trap-v0.3.4.tar.gz\n    ++    provides:\n    ++      Test::Trap v0.3.4\n    ++      Test::Trap::Builder v0.3.4\n    ++      Test::Trap::Builder::PerlIO v0.3.4\n    ++      Test::Trap::Builder::SystemSafe v0.3.4\n    ++      Test::Trap::Builder::TempFile v0.3.4\n    ++    requirements:\n    ++      Carp 0\n    ++      Config 0\n    ++      Data::Dump 0\n    ++      Exporter 0\n    ++      File::Temp 0\n    ++      IO::Handle 0\n    ++      Module::Build 0\n    ++      Test::Builder 0\n    ++      Test::More 0\n    ++      Test::Tester 0.107\n    ++      base 0\n    ++      constant 0\n    ++      lib 0\n    ++      perl v5.6.2\n    ++      strict 0\n    ++      version 0\n    ++      warnings 0\n    +   Test-Warn-0.36\n    +     pathname: B/BI/BIGJ/Test-Warn-0.36.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       Tie::Handle 0\n    +       perl 5.006\n    +       strict 0\n    ++  Tie-IxHash-1.23\n    ++    pathname: C/CH/CHORNY/Tie-IxHash-1.23.tar.gz\n    ++    provides:\n    ++      Tie::IxHash 1.23\n    ++    requirements:\n    ++      Test::More 0\n    ++      perl 5.005\n    +   Tie-ToObject-0.03\n    +     pathname: N/NU/NUFFIN/Tie-ToObject-0.03.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       strict 0\n    +       utf8 0\n    +       warnings 0\n    ++  URI-ws-0.03\n    ++    pathname: P/PL/PLICEASE/URI-ws-0.03.tar.gz\n    ++    provides:\n    ++      URI::ws 0.03\n    ++      URI::wss 0.03\n    ++    requirements:\n    ++      ExtUtils::MakeMaker 6.30\n    ++      URI 0\n    +   Unicode-LineBreak-2019.001\n    +     pathname: N/NE/NEZUMI/Unicode-LineBreak-2019.001.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       base 0\n    +       lib 0\n    +       perl 5.008\n    ++  WWW-Mechanize-2.10\n    ++    pathname: O/OA/OALDERS/WWW-Mechanize-2.10.tar.gz\n    ++    provides:\n    ++      WWW::Mechanize 2.10\n    ++      WWW::Mechanize::Image 2.10\n    ++      WWW::Mechanize::Link 2.10\n    ++    requirements:\n    ++      Carp 0\n    ++      ExtUtils::MakeMaker 0\n    ++      Getopt::Long 0\n    ++      HTML::Form 1.00\n    ++      HTML::HeadParser 0\n    ++      HTML::TokeParser 0\n    ++      HTML::TreeBuilder 5\n    ++      HTTP::Cookies 0\n    ++      HTTP::Request 1.30\n    ++      HTTP::Request::Common 0\n    ++      LWP::UserAgent 6.45\n    ++      Pod::Usage 0\n    ++      Scalar::Util 1.14\n    ++      Tie::RefHash 0\n    ++      URI::URL 0\n    ++      URI::file 0\n    ++      base 0\n    ++      perl 5.006\n    ++      strict 0\n    ++      warnings 0\n    ++  WWW-Mechanize-Chrome-0.68\n    ++    pathname: C/CO/CORION/WWW-Mechanize-Chrome-0.68.tar.gz\n    ++    provides:\n    ++      Chrome::DevToolsProtocol 0.68\n    ++      Chrome::DevToolsProtocol::Target 0.68\n    ++      Chrome::DevToolsProtocol::Transport 0.68\n    ++      Chrome::DevToolsProtocol::Transport::AnyEvent 0.68\n    ++      Chrome::DevToolsProtocol::Transport::Mojo 0.68\n    ++      Chrome::DevToolsProtocol::Transport::NetAsync 0.68\n    ++      Chrome::DevToolsProtocol::Transport::Pipe 0.68\n    ++      Chrome::DevToolsProtocol::Transport::Pipe::AnyEvent 0.68\n    ++      Chrome::DevToolsProtocol::Transport::Pipe::Mojo 0.68\n    ++      Chrome::DevToolsProtocol::Transport::Pipe::NetAsync 0.68\n    ++      HTTP::Cookies::ChromeDevTools 0.68\n    ++      WWW::Mechanize::Chrome 0.68\n    ++      WWW::Mechanize::Chrome::Cookbook 0.68\n    ++      WWW::Mechanize::Chrome::DSL 0.68\n    ++      WWW::Mechanize::Chrome::Examples 0.68\n    ++      WWW::Mechanize::Chrome::Node 0.68\n    ++      WWW::Mechanize::Chrome::Troubleshooting 0.68\n    ++      WWW::Mechanize::Chrome::URLBlacklist 0.68\n    ++      Win32::InheritHandles 0.68\n    ++    requirements:\n    ++      Algorithm::Loops 0\n    ++      Carp 0\n    ++      Exporter 5\n    ++      ExtUtils::MakeMaker 5.52_01\n    ++      File::Basename 0\n    ++      File::Spec 0\n    ++      Filter::signatures 0.16\n    ++      Future 0.35\n    ++      Future::HTTP 0.06\n    ++      HTML::Selector::XPath 0\n    ++      HTTP::Cookies 0\n    ++      HTTP::Headers 0\n    ++      HTTP::Response 0\n    ++      IO::Async 0\n    ++      IO::Socket::INET 0\n    ++      IPC::Open3 0\n    ++      Imager 0\n    ++      Imager::File::PNG 0\n    ++      JSON 0\n    ++      Log::Log4perl 0\n    ++      MIME::Base64 0\n    ++      Moo 2\n    ++      Net::Async::WebSocket::Client 0.12\n    ++      Object::Import 0\n    ++      POSIX 0\n    ++      PerlX::Maybe 0\n    ++      Scalar::Util 0\n    ++      Storable 0\n    ++      Try::Tiny 0\n    ++      URI 0\n    ++      URI::file 0\n    ++      URI::ws 0\n    ++      WWW::Mechanize::Link 0\n    ++      perl 5.010\n    ++  WWW-RobotRules-6.02\n    ++    pathname: G/GA/GAAS/WWW-RobotRules-6.02.tar.gz\n    ++    provides:\n    ++      WWW::RobotRules 6.02\n    ++      WWW::RobotRules::AnyDBM_File 6.00\n    ++      WWW::RobotRules::InCore 6.02\n    ++    requirements:\n    ++      AnyDBM_File 0\n    ++      ExtUtils::MakeMaker 0\n    ++      Fcntl 0\n    ++      URI 1.10\n    ++      perl 5.008001\n    +   Win32-ShellQuote-0.003001\n    +     pathname: H/HA/HAARG/Win32-ShellQuote-0.003001.tar.gz\n    +     provides:\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +     requirements:\n    +       ExtUtils::MakeMaker 0\n    +       perl 5.008001\n    +-  YAML-LibYAML-0.83\n    +-    pathname: T/TI/TINITA/YAML-LibYAML-0.83.tar.gz\n    ++  YAML-LibYAML-0.86\n    ++    pathname: I/IN/INGY/YAML-LibYAML-0.86.tar.gz\n    +     provides:\n    +-      YAML::LibYAML 0.83\n    +-      YAML::XS 0.83\n    ++      YAML::LibYAML 0.86\n    ++      YAML::XS 0.86\n    +       YAML::XS::LibYAML undef\n    +     requirements:\n    +       ExtUtils::MakeMaker 0\n    +@@ cpanfile.snapshot: DISTRIBUTIONS\n    +       XSLoader 0\n    +       lib 0\n    +       perl 5.008001\n    ++  libwww-perl-6.67\n    ++    pathname: O/OA/OALDERS/libwww-perl-6.67.tar.gz\n    ++    provides:\n    ++      LWP 6.67\n    ++      LWP::Authen::Basic 6.67\n    ++      LWP::Authen::Digest 6.67\n    ++      LWP::Authen::Ntlm 6.67\n    ++      LWP::ConnCache 6.67\n    ++      LWP::Debug 6.67\n    ++      LWP::Debug::TraceHTTP 6.67\n    ++      LWP::DebugFile 6.67\n    ++      LWP::MemberMixin 6.67\n    ++      LWP::Protocol 6.67\n    ++      LWP::Protocol::cpan 6.67\n    ++      LWP::Protocol::data 6.67\n    ++      LWP::Protocol::file 6.67\n    ++      LWP::Protocol::ftp 6.67\n    ++      LWP::Protocol::gopher 6.67\n    ++      LWP::Protocol::http 6.67\n    ++      LWP::Protocol::loopback 6.67\n    ++      LWP::Protocol::mailto 6.67\n    ++      LWP::Protocol::nntp 6.67\n    ++      LWP::Protocol::nogo 6.67\n    ++      LWP::RobotUA 6.67\n    ++      LWP::Simple 6.67\n    ++      LWP::UserAgent 6.67\n    ++    requirements:\n    ++      CPAN::Meta::Requirements 2.120620\n    ++      Digest::MD5 0\n    ++      Encode 2.12\n    ++      Encode::Locale 0\n    ++      ExtUtils::MakeMaker 0\n    ++      File::Copy 0\n    ++      File::Listing 6\n    ++      File::Temp 0\n    ++      Getopt::Long 0\n    ++      HTML::Entities 0\n    ++      HTML::HeadParser 0\n    ++      HTTP::Cookies 6\n    ++      HTTP::Date 6\n    ++      HTTP::Negotiate 6\n    ++      HTTP::Request 6\n    ++      HTTP::Request::Common 6\n    ++      HTTP::Response 6\n    ++      HTTP::Status 6.18\n    ++      IO::Select 0\n    ++      IO::Socket 0\n    ++      LWP::MediaTypes 6\n    ++      MIME::Base64 2.1\n    ++      Module::Metadata 0\n    ++      Net::FTP 2.58\n    ++      Net::HTTP 6.18\n    ++      Scalar::Util 0\n    ++      Try::Tiny 0\n    ++      URI 1.10\n    ++      URI::Escape 0\n    ++      WWW::RobotRules 6\n    ++      parent 0.217\n    ++      perl 5.008001\n    ++      strict 0\n    ++      warnings 0\n    +   local-lib-2.000029\n    +     pathname: H/HA/HAARG/local-lib-2.000029.tar.gz\n    +     provides:\n -:  ------- > 39:  95a704d Install missed module\n -:  ------- > 40:  802df67 This project does not have Globals. We provide modules location via command line\n -:  ------- > 41:  05cf81a Do not query live servers while testing\n\n\nLeft-right comparison of this brances:\n> 05cf81a (HEAD -> refactoring) Do not query live servers while testing\n> 802df67 This project does not have Globals. We provide modules location via command line\n> 95a704d Install missed module\n> 3bc7958 Updated modules\n> 5016343 Update to Mojolicious v9.31\n> 8c8dbc0 Removed Example.pm\n> deecd9c Simplified code\n> 53329f9 Removed A::SaveData module\n> daad594 Typo fix\n> 9fc16f6 Put simple functionality first\n> a023d27 Issue warning when we are trying to load content into button\n> 3928191 Hint type was changed: warning -> error\n> a19a3ae BUGFIX: Do not scroll when a link button is pressed\n> 5790dc8 Extended tests for button/input/link\n> f83a68e Improved example message\n> 5daa3ef Close modal when response was processed\n> fa75d0e Implemented deprecation message about 'data-close-modal'\n> 395ddf9 Do not close modal window when ESC is keypressed and there is not an active modal window\n> e9ae2a3 Improved documentation\n> ef069d7 Improved comment\n> 1586539 Options should be on trigger element and not on target\n> 3632554 Improved text for examples\n> 5183551 Improved documentation for lazy_load\n> aa25331 Improved examples for lazy loading\n> a3b1bb2 Improved displayResponse\n> 305ea24 Be more explecit about content\n> 1ed3596 Pass target element explicitly\n> 39470fb Moved code to its own function\n> b2c417e Renamed: form -> triggerEl\n= 2f235a5 Implement and reuse processResponse\n= 31dc239 Added more logging and messages to user\n= d169cf6 Remove useless parameter\n= 9b58983 FIXED: html not defined\n= 05f4206 Renamed: form -> containerEl\n= 3ac9601 Removed outdated example\n= 4263831 Renamed flag which controls how deal with new content: replace-form -> replace-me\n= 50573a9 Improved text on example page\n= 804922f Changed function name: give_name ->after_submit_handler_name\n= 307203e Removed ajaxFormModal: No reason to duplicate code\n= 62343cd Implemented tests for messages with different types\n> 015bc3e Renamed: replace -> update\n| = 46caa01 (modalnew) Implement and reuse processResponse\n| = fe80807 Added more logging and messages to user\n| = 90e76c0 Remove useless parameter\n| = 8405d9e FIXED: html not defined\n| = c7f6e55 Renamed: form -> containerEl\n| = 068723b Removed outdated example\n| = 0e8defa Renamed flag which controls how deal with new content: replace-form -> replace-me\n| = 9cdaeb3 Improved text on example page\n| = 1c0919e Changed function name: give_name ->after_submit_handler_name\n| = c681ba1 Removed ajaxFormModal: No reason to duplicate code\n| = d7792ad Implemented tests for messages with different types\n| < d1bbaf5 Renamed: replace -> update\n|/\no aa81394 Tests were regroped by meaning\n"}]}