{"thread":{"id":"24904","subject":"[PATCH] help.c: Pull cmd_version out of this file.","startedAt":"2010-08-29T20:44:19Z","lastAt":"2010-10-28T03:11:47Z","messageCount":18,"participants":["Thiago Farina","Jonathan Nieder","Nguyen Thai Ngoc Duy","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"149236","messageId":"2ae543604216146b742253584d8393c5e3179697.1283114573.git.tfransosi@gmail.com","threadId":"24904","inReplyTo":null,"subject":"[PATCH] help.c: Pull cmd_version out of this file.","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2010-08-29T20:44:19Z","receivedAt":"2010-08-29T20:44:19Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"Promote cmd_version to a builtin, by moving it to its own file\nin builtin/version.c\n\nSigned-off-by: Thiago Farina <tfransosi@gmail.com>\n---\n Makefile          |    1 +\n builtin/version.c |    7 +++++++\n help.c            |    6 ------\n 3 files changed, 8 insertions(+), 6 deletions(-)\n create mode 100644 builtin/version.c\n\ndiff --git a/Makefile b/Makefile\nindex b4745a5..0f3b6d8 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -738,6 +738,7 @@ BUILTIN_OBJS += builtin/upload-archive.o\n BUILTIN_OBJS += builtin/var.o\n BUILTIN_OBJS += builtin/verify-pack.o\n BUILTIN_OBJS += builtin/verify-tag.o\n+BUILTIN_OBJS += builtin/version.o\n BUILTIN_OBJS += builtin/write-tree.o\n \n GITLIBS = $(LIB_FILE) $(XDIFF_LIB)\ndiff --git a/builtin/version.c b/builtin/version.c\nnew file mode 100644\nindex 0000000..d98e260\n--- /dev/null\n+++ b/builtin/version.c\n@@ -0,0 +1,7 @@\n+#include \"builtin.h\"\n+\n+int cmd_version(int argc, const char **argv, const char *prefix)\n+{\n+\tprintf(\"git version %s\\n\", git_version_string);\n+\treturn 0;\n+}\ndiff --git a/help.c b/help.c\nindex 7f4928e..ad4f923 100644\n--- a/help.c\n+++ b/help.c\n@@ -362,9 +362,3 @@ const char *help_unknown_cmd(const char *cmd)\n \n \texit(1);\n }\n-\n-int cmd_version(int argc, const char **argv, const char *prefix)\n-{\n-\tprintf(\"git version %s\\n\", git_version_string);\n-\treturn 0;\n-}\n-- \n1.7.2.1.95.g3d045\n"},{"id":"149273","messageId":"20100830023812.GA4010@burratino","threadId":"24904","inReplyTo":"2ae543604216146b742253584d8393c5e3179697.1283114573.git.tfransosi@gmail.com","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-08-30T02:38:12Z","receivedAt":"2010-08-30T02:38:12Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Thiago Farina wrote:\n\n> Promote cmd_version to a builtin, by moving it to its own file\n> in builtin/version.c\n\nCould you explain further?  If the goal is \"one command per source\nfile\", then we already violate that in a number of places:\n\n - \"git blame\" and \"git pickaxe\" are both cmd_blame() in\n   builtin/blame.c.\n\n - \"git whatchanged\", \"git show\", \"git reflog\", and \"git log\" are\n   separate builtins in builtin/log.c.\n\n - etc\n\nWhat does this make easier?\n"},{"id":"149274","messageId":"20100830024020.GB4010@burratino","threadId":"24904","inReplyTo":"20100830023812.GA4010@burratino","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-08-30T02:40:20Z","receivedAt":"2010-08-30T02:40:20Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Jonathan Nieder wrote:\n> Thiago Farina wrote:\n>\n>> Promote cmd_version to a builtin, by moving it to its own file\n>> in builtin/version.c\n[...]\n> What does this make easier?\n\nTo answer my own question: it moves the code to the builtin/\nsubdirectory.\n\n $ git grep -F -e cmd_version -- builtin;\t# before\n $ git grep -F -e cmd_version -- builtin;\t# after\n builtin/version.c:int cmd_version(int argc, const char **argv, const char *prefix)\n\nSo for what it's worth,\n\nAcked-by: Jonathan Nieder <jrnieder@gmail.com>\n"},{"id":"149519","messageId":"AANLkTimDjRz=JmiVn+ybQ5ewaj=7N5tp48fUArD5vG_H@mail.gmail.com","threadId":"24904","inReplyTo":"20100830024020.GB4010@burratino","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2010-09-01T02:38:57Z","receivedAt":"2010-09-01T02:38:57Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"On Sun, Aug 29, 2010 at 11:40 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n> Jonathan Nieder wrote:\n>> Thiago Farina wrote:\n>>\n>>> Promote cmd_version to a builtin, by moving it to its own file\n>>> in builtin/version.c\n> [...]\n> So for what it's worth,\n>\n> Acked-by: Jonathan Nieder <jrnieder@gmail.com>\n>\n\nPing Junio.\n"},{"id":"149522","messageId":"AANLkTik7P2nC9zMp5+srrRNEAOKLcXnsJA5+_43S9A3=@mail.gmail.com","threadId":"24904","inReplyTo":"AANLkTimDjRz=JmiVn+ybQ5ewaj=7N5tp48fUArD5vG_H@mail.gmail.com","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-09-01T03:04:37Z","receivedAt":"2010-09-01T03:04:37Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"On Wed, Sep 1, 2010 at 12:38 PM, Thiago Farina <tfransosi@gmail.com> wrote:\n> On Sun, Aug 29, 2010 at 11:40 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n>> Jonathan Nieder wrote:\n>>> Thiago Farina wrote:\n>>>\n>>>> Promote cmd_version to a builtin, by moving it to its own file\n>>>> in builtin/version.c\n>> [...]\n>> So for what it's worth,\n>>\n>> Acked-by: Jonathan Nieder <jrnieder@gmail.com>\n>>\n>\n> Ping Junio.\n\nNot my call, but should you also update .gitignore to ignore git-version?\n-- \nDuy\n"},{"id":"149524","messageId":"AANLkTim-onah671F=9sr4wfQFPBb-vWzjD9YKY5O7f2J@mail.gmail.com","threadId":"24904","inReplyTo":"AANLkTik7P2nC9zMp5+srrRNEAOKLcXnsJA5+_43S9A3=@mail.gmail.com","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2010-09-01T03:11:47Z","receivedAt":"2010-09-01T03:11:47Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"On Wed, Sep 1, 2010 at 12:04 AM, Nguyen Thai Ngoc Duy <pclouds@gmail.com> wrote:\n> Not my call, but should you also update .gitignore to ignore git-version?\n\nThanks for the catch, fixed in patchset v2.\n"},{"id":"149532","messageId":"7v1v9e803a.fsf@alter.siamese.dyndns.org","threadId":"24904","inReplyTo":"AANLkTimDjRz=JmiVn+ybQ5ewaj=7N5tp48fUArD5vG_H@mail.gmail.com","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2010-09-01T06:11:21Z","receivedAt":"2010-09-01T06:11:21Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Thiago Farina <tfransosi@gmail.com> writes:\n\n> On Sun, Aug 29, 2010 at 11:40 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n>> Jonathan Nieder wrote:\n>>> Thiago Farina wrote:\n>>>\n>>>> Promote cmd_version to a builtin, by moving it to its own file\n>>>> in builtin/version.c\n>> [...]\n>> So for what it's worth,\n>>\n>> Acked-by: Jonathan Nieder <jrnieder@gmail.com>\n>\n> Ping Junio.\n\nIf the patch were to also move git_version_string[] from git.c to this new\nfile, whose sole purpose will be to give the version information, then it\nmight be worth it, as we would need to recompile a file with only 10 lines\ninstead of git.c with 570 lines, but what the patch does is not even that.\n\nNot that I would be happy to see such a change that affects dependency and\nrisk causing broken builds this late in the cycle, though.\n\nI ended up spending 10+ minutes re-checking how the dependency between the\nversion string and the resulting binaries work.  The patch probably would\ncause \"git clean\" to report a new unignored file, too.\n\nWhat did we gain through this exercise?  Did we fix any real problem?\n\n\"git grep\" sees directory boundaries through just fine, and I do not find\nJonathan's explanation very satisfactory.\n\n\n\t\tJunio, who gets a lot more grumpy than necessary at night...\n"},{"id":"149533","messageId":"AANLkTinHJHzcoFFjv-TaQ+DYVyqn46fqA802m8Lq5anp@mail.gmail.com","threadId":"24904","inReplyTo":"7v1v9e803a.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2010-09-01T06:22:56Z","receivedAt":"2010-09-01T06:22:56Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"On Wed, Sep 1, 2010 at 3:11 AM, Junio C Hamano <gitster@pobox.com> wrote:\n> If the patch were to also move git_version_string[] from git.c to this new\n> file, whose sole purpose will be to give the version information, then it\n> might be worth it, as we would need to recompile a file with only 10 lines\n> instead of git.c with 570 lines, but what the patch does is not even that.\n>\nIt doesn't do that, but if you suggest that, I can fix it up later and\nresend it.\n\n>risk causing broken builds?\nHum, how such trivial change can cause that?\n\n>What did we gain through this exercise?  Did we fix any real problem?\nAll patches should just fix real problems?\n\nI think it just makes more sense, since *all* other commands are in\nbuiltin/ and it's own files.\n"},{"id":"149613","messageId":"7v39tt552b.fsf@alter.siamese.dyndns.org","threadId":"24904","inReplyTo":"AANLkTinHJHzcoFFjv-TaQ+DYVyqn46fqA802m8Lq5anp@mail.gmail.com","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2010-09-02T01:04:28Z","receivedAt":"2010-09-02T01:04:28Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Thiago Farina <tfransosi@gmail.com> writes:\n\n>>risk causing broken builds?\n> Hum, how such trivial change can cause that?\n\nImagine if we had this in help.c:\n\n        int cmd_version(int argc, const char **argv, const char *prefix)\n        {\n                printf(\"git version %s\\n\", GIT_VERSION);\n                return 0;\n        }\n\nwhich were compiled with this rule in Makefile:\n\n\thelp.o: help.c GIT-VERSION-FILE\n\nand then you moved the function to a new file without touching the\ndependency.  Especially because the change is trivial (just moving a\nfunction from here to there), you don't immediately notice the broken\ndependency.\n\nI just spent 15+ minutes explaining this to you (and another 10+ minutes\nchecking that the above is _not_ the actual case before giving the same\nexplanation to you last night).  Now is this still a trivial change that\ncosts nothing?\n\n>>What did we gain through this exercise?  Did we fix any real problem?\n> All patches should just fix real problems?\n\nThere is a \"cost vs benefit\" ratio you need to consider.\n"},{"id":"149614","messageId":"AANLkTim1tyTQEUHHo-AuF789v72ag=waqC_V5K77VS2a@mail.gmail.com","threadId":"24904","inReplyTo":"7v39tt552b.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2010-09-02T01:16:53Z","receivedAt":"2010-09-02T01:16:53Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"On Wed, Sep 1, 2010 at 10:04 PM, Junio C Hamano <gitster@pobox.com> wrote:\n> Thiago Farina <tfransosi@gmail.com> writes:\n>\n>>>risk causing broken builds?\n>> Hum, how such trivial change can cause that?\n>\n> Imagine if we had this in help.c:\n>\nBut we don't have.\n\n>        int cmd_version(int argc, const char **argv, const char *prefix)\n>        {\n>                printf(\"git version %s\\n\", GIT_VERSION);\n>                return 0;\n>        }\n>\n> which were compiled with this rule in Makefile:\n>\n>        help.o: help.c GIT-VERSION-FILE\n>\nBut it's not.\n\n> and then you moved the function to a new file without touching the\n> dependency.\nThat would be a mistake no?\n\n>  Especially because the change is trivial (just moving a\n> function from here to there), you don't immediately notice the broken\n> dependency.\n>\nAs far as I know that does not go unnoticed.\n\n\n> I just spent 15+ minutes explaining this to you (and another 10+ minutes\n> checking that the above is _not_ the actual case before giving the same\n> explanation to you last night).\nThanks for being so careful.\n\n>  Now is this still a trivial change that\n> costs nothing?\n>\nWhy you impose so much obstacles to a trivial change like this?\n\n>>>What did we gain through this exercise?  Did we fix any real problem?\n>> All patches should just fix real problems?\n>\n> There is a \"cost vs benefit\" ratio you need to consider.\n>\nThanks.\n"},{"id":"149617","messageId":"20100902043500.GF29713@burratino","threadId":"24904","inReplyTo":"AANLkTinHJHzcoFFjv-TaQ+DYVyqn46fqA802m8Lq5anp@mail.gmail.com","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-09-02T04:35:00Z","receivedAt":"2010-09-02T04:35:00Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Thiago Farina wrote:\n\n> All patches should just fix real problems?\n\nYes.\n\n> I think it just makes more sense, since *all* other commands are in\n> builtin/ and it's own files.\n\nI was careless before and was not even thinking about\n\n BUILT_INS += $(patsubst builtin/%.o,git-%$X,$(BUILTIN_OBJS))\n\nSorry.\n\nWith that line in mind, what Junio wrote in the \"what's cooking\"\nmessage makes a lot of sense.  A good direction to go in long term\nmight be to freeze the list of built-ins installed to $gitexecdir in\nsome clean way and avoid adding new ones.\n\nWould you be interested in working on that?  That would solve a\nproblem (turning back the tide of scripts that use git- commands,\nwithout breaking compatibility) that some people are interested in.\nThe hardest part would probably be to make sure commands like\n\"git help version\" work properly.\n"},{"id":"149657","messageId":"7vvd6o14zz.fsf@alter.siamese.dyndns.org","threadId":"24904","inReplyTo":"20100902043500.GF29713@burratino","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2010-09-02T16:31:44Z","receivedAt":"2010-09-02T16:31:44Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jonathan Nieder <jrnieder@gmail.com> writes:\n\n> Thiago Farina wrote:\n>\n>> All patches should just fix real problems?\n>\n> Yes.\n\nThis answer while it is correct needs to be qualified ;-)\n\nA bugfix for end-user facing part of the system is obviously a fix for a\n\"real problem\", but clean-up without changing external behaviour to reduce\nmaintenance burden in the longer term also is fixing a real problem, i.e.\n\"the code, while it might be bug-free, is error prone and costs a lot to\nmaintain\".\n"},{"id":"154539","messageId":"AANLkTimX2NhXGdK0vVMaw-Fm6fpg4i5pbOZGA8Cc-+ui@mail.gmail.com","threadId":"24904","inReplyTo":"7vvd6o14zz.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2010-10-27T15:12:01Z","receivedAt":"2010-10-27T15:12:01Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"What happened to this patch? I can't see it on any branch (master, pu, maint).\n"},{"id":"154540","messageId":"20101027151832.GA10614@burratino","threadId":"24904","inReplyTo":"AANLkTimX2NhXGdK0vVMaw-Fm6fpg4i5pbOZGA8Cc-+ui@mail.gmail.com","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-10-27T15:18:33Z","receivedAt":"2010-10-27T15:18:33Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Thiago Farina wrote:\n\n> What happened to this patch? I can't see it on any branch (master, pu, maint).\n\nI thought there was some discussion about another binary in\n/usr/lib/git-core being a bad thing?\n"},{"id":"154547","messageId":"AANLkTinxG-=EKeNH3--34Ya4w0E=i_bdmJ7iv2em8C+8@mail.gmail.com","threadId":"24904","inReplyTo":"20101027151832.GA10614@burratino","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2010-10-27T16:06:50Z","receivedAt":"2010-10-27T16:06:50Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"On Wed, Oct 27, 2010 at 1:18 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n> Thiago Farina wrote:\n>\n>> What happened to this patch? I can't see it on any branch (master, pu, maint).\n>\n> I thought there was some discussion about another binary in\n> /usr/lib/git-core being a bad thing?\n>\n\nI don't recall, why it's a bad thing?\n"},{"id":"154551","messageId":"20101027164508.GB11069@burratino","threadId":"24904","inReplyTo":"AANLkTinxG-=EKeNH3--34Ya4w0E=i_bdmJ7iv2em8C+8@mail.gmail.com","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-10-27T16:45:08Z","receivedAt":"2010-10-27T16:45:08Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Thiago Farina wrote:\n> On Wed, Oct 27, 2010 at 1:18 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n\n>> I thought there was some discussion about another binary in\n>> /usr/lib/git-core being a bad thing?\n>\n> I don't recall, why it's a bad thing?\n\nBecause those hardlinks for builtins are present for historical reasons\nonly.  They slow down filename lookup by some miniscule amount and tempt\nauthors of scripts to try the dashed form of commands.\n\nAh, found it.[1]\n\n| At this point, adding the dashed-form \"git-version\" to the filesystem is\n| going backwards.  These files are only to help people who have old scripts\n| from pre 1.6.0 days with \"PATH=$(git --exec-path):$PATH\" with their\n| environment.\n| \n| We should instead try to not adding them (which would probably need tweak\n| in the command list generation code in \"git help\"), as nobody from pre\n| 1.6.0 era would have called \"git-version\" binary.\n\nHope that helps.\n\n[1] 4a7a62f3:whats-cooking.txt\nhttp://thread.gmane.org/gmane.comp.version-control.git/155073\n"},{"id":"154605","messageId":"AANLkTinGomS0OS-ZpOQun7E_KVRkL4A-w7MU1AG0bBAH@mail.gmail.com","threadId":"24904","inReplyTo":"20101027164508.GB11069@burratino","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2010-10-28T02:13:25Z","receivedAt":"2010-10-28T02:13:25Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"On Wed, Oct 27, 2010 at 2:45 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n> Ah, found it.[1]\n>\n> | At this point, adding the dashed-form \"git-version\" to the filesystem is\n> | going backwards.  These files are only to help people who have old scripts\n> | from pre 1.6.0 days with \"PATH=$(git --exec-path):$PATH\" with their\n> | environment.\n> |\n> | We should instead try to not adding them (which would probably need tweak\n> | in the command list generation code in \"git help\"), as nobody from pre\n> | 1.6.0 era would have called \"git-version\" binary.\n>\n> Hope that helps.\n>\nNope, sorry. I don't fully understand his explanation.\n\nAlso, Junio, thanks for the \"I don't like\nchurning-for-the-sake-of-churning\". This is very incentive.\n"},{"id":"154608","messageId":"20101028031147.GA31913@burratino","threadId":"24904","inReplyTo":"AANLkTinGomS0OS-ZpOQun7E_KVRkL4A-w7MU1AG0bBAH@mail.gmail.com","subject":"Re: [PATCH] help.c: Pull cmd_version out of this file.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-10-28T03:11:47Z","receivedAt":"2010-10-28T03:11:47Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Thiago Farina wrote:\n\n> Nope, sorry. I don't fully understand his explanation.\n\nAny questions then?\n\n> Also, Junio, thanks for the \"I don't like\n> churning-for-the-sake-of-churning\". This is very incentive.\n\nFor the scenario \"one person likes this change and another doesn't\",\nin the Linux kernel world (which I find amusing to take as a model),\nthere is a well established method to deal with that.  (I'm a big fan\nof this method.)  It works like this:\n\n 1. Write a patch.\n 2. Send a copy to the list and get feedback.\n 3. Use it locally.  Foist it on your friends.  Accept bug reports\n    and keep a git tree to handle them.  When conscience or users\n    provide the pressure for it, move on to step 4:\n 4. Send another report to the list and get more feedback.\n    ...\n n. (Ideally) the patch evolves to be more useful.  Eventually, it\n    gets applied upstream or, if upstream is out of touch, the\n    patched version becomes the new mainstream.\n\nWhy am I saying such things?  Isn't it extreme to ask you to take\nmatters into you own hands, especially for such an unrisky patch?\n\nWhat I want to get at is that to make your work available, you don't\nneed Junio.  You can do that yourself.  It can still be very useful\nto people!  What Junio offers is help in maintaining code --- once a\npatch hits mainline, there is no need to keep forward-porting it, you\nare less alone in dealing with bug reports, you will find more people\nout there to give advice in changing it for new requirements.\n\nSo when someone like Junio says\n\n I don't like churning for the sake of churning\n\npart of what this means is that in order to take on new code, there\nhas to be an obvious benefit that outweighs the maintenance burden.\n(Keep in mind: \"obvious\" doesn't mean \"big\", it just means \"clear\".)\n\nWhat maintenance burden?  Here, I thought I had explained that if\nit weren't for existing scripts, there would not be more than one\nhardlink for builtins in /usr/lib/git-core at all.  Those hardlinks\nare technically just bad --- they require munging the PATH and\nbasing behavior on argv[0], they are confusing, their command-line\nsyntax is not as flexible as the git <options> foo syntax, and use\nof them makes it hard to grep for a real bug that some old programs\nhave of assuming dashed-form commands are in the user's $PATH.\n\nSo your patch is exciting in a way, because it serves as a reminder\nof a problem it would be nice to solve (that each new builtin adds\nto the builtins in /usr/lib/git-core for no good reason and that\n'git help' is relying on that).\n\nSorry to be vague, hope that helps.\n"}]}