{"thread":{"id":"31926","subject":"Re: [PATCH] git-submodule add: Record branch name in .gitmodules","startedAt":"2012-10-23T20:44:37Z","lastAt":"2012-10-29T22:27:59Z","messageCount":19,"participants":["W. Trevor King","Jens Lehmann","Jeff King","Shawn Pearce","Phil Hord"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"201759","messageId":"20121023204437.GE28592@odin.tremily.us","threadId":"31926","inReplyTo":"CABURp0q7TJM_0E7g8EAB9jQ2q6rNcvncOqYnk4byehQxbZfo1w@mail.gmail.com","subject":"Re: [PATCH] git-submodule add: Record branch name in .gitmodules","fromName":"W. Trevor King","fromEmail":"wking@tremily.us","sentAt":"2012-10-23T20:44:37Z","receivedAt":"2012-10-23T20:44:37Z","isPatch":true,"sender":{"key":"wking@tremily.us","avatar":"https://avatars.githubusercontent.com/u/209920?v=4"},"body":"On Tue, Oct 23, 2012 at 03:44:36PM -0400, W. Trevor King wrote:\n> On Tue, Oct 23, 2012 at 12:16:22PM -0700, Nahor wrote:\n> > On 2012-10-22 09:34, W. Trevor King wrote:\n> > For instance, the module may later be updated to a commit in branch B \n> > instead of branch A. Unless you remember to also update .gitmodule, you \n> > have then inconsistent information.\n> \n> But you're explicitly *using* the configured setting in\n> \n>   git config --file $toplevel/.gitmodules submodule.$name.branch\n> \n> That should be a reminder that the configuration is important, and\n> you'll remember to change it.\n\nTo make my case more cleanly, people already handle all the\ntroublesome cases for branch.$name.remote, so handling similar\nupstream volatility for submodule.$name.branch should not be too\ndifficult or surprising.\n\nOn Tue, Oct 23, 2012 at 03:58:48PM -0400, Phil Hord wrote:\n> On Mon, Oct 22, 2012 at 6:55 PM, W. Trevor King <wking@tremily.us> wrote:\n> > How about -r/--record, with the recorded name being optional?\n> >\n> >   --record-branch[=<recorded_name>]\n> \n> I like that just fine.\n> \n> > This would satisfy Gerrit users that wanted to use '.', but also\n> > satisfy me with:\n> >\n> >   git submodule add -rb=master foo bar\n> >\n> > However, there is a change that people would see that, and then use\n> >\n> >   git submodule add -r -b=master foo bar\n> >\n> > which would checkout the HEAD from foo and store `-b=master` in\n> > submodule.$name.branch.\n> \n> I don't think it would.\n\nAh, right, forcing the =<name> attached case would mean they'd have to\nuse\n\n  git submodule add -r=-b=master\n\nwhich doesn't sound like the sort of thing you'd do accidentally.\n\n> Though I see in rev-parse--parseopts that the use of\n> optional-argument options \"is discouraged\".\n\nI'll work up a v2 patch and we'll see if anyone complains ;).\n\n-- \nThis email may be signed or encrypted with GnuPG (http://www.gnupg.org).\nFor more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy\n"},{"id":"201763","messageId":"1f6ee2966ffe0f58f4b96ae0efb2ffb13e2fa2d8.1351029479.git.wking@tremily.us","threadId":"31926","inReplyTo":"20121023204437.GE28592@odin.tremily.us","subject":"[PATCH v2] git-submodule add: Add -r/--record option.","fromName":"W. Trevor King","fromEmail":"wking@tremily.us","sentAt":"2012-10-23T21:57:59Z","receivedAt":"2012-10-23T21:57:59Z","isPatch":true,"sender":{"key":"wking@tremily.us","avatar":"https://avatars.githubusercontent.com/u/209920?v=4"},"body":"From: \"W. Trevor King\" <wking@tremily.us>\n\nThis option allows you to record a submodule.<name>.branch option in\n.gitmodules.  Git does not currently use this configuration option for\nanything, but users have used it for several things, so it makes sense\nto add some syntactic sugar for initializing the value.\n\nCurrent consumers:\n\nÆvar uses this setting to designate the upstream branch for pulling\nsubmodule updates:\n\n  $ git submodule foreach 'git checkout $(git config --file $toplevel/.gitmodules submodule.$name.branch) && git pull'\n\nas he describes in\n\n  commit f030c96d8643fa0a1a9b2bd9c2f36a77721fb61f\n  Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n  Date:   Fri May 21 16:10:10 2010 +0000\n\n    git-submodule foreach: Add $toplevel variable\n\nGerrit uses this setting to\n\n  “indicate the branch of a submodule project that when updated will\n  trigger automatic update of its registered gitlink.” [1]\n\nI'm not clear on what that means, but they accept special values like\n'.', so their usage is not compatible with Ævar's proposal.\n\nBy remaining agnostic on the variable usage, this patch makes\nsubmodule setup more convenient for all parties.\n\n[1] https://gerrit.googlesource.com/gerrit/+/master/Documentation/user-submodules.txt\n\nSigned-off-by: W. Trevor King <wking@tremily.us>\n---\n Documentation/git-submodule.txt | 11 ++++++++++-\n git-submodule.sh                | 19 ++++++++++++++++++-\n t/t7400-submodule-basic.sh      | 25 +++++++++++++++++++++++++\n 3 files changed, 53 insertions(+), 2 deletions(-)\n\ndiff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt\nindex b4683bb..f9c74d6 100644\n--- a/Documentation/git-submodule.txt\n+++ b/Documentation/git-submodule.txt\n@@ -9,7 +9,7 @@ git-submodule - Initialize, update or inspect submodules\n SYNOPSIS\n --------\n [verse]\n-'git submodule' [--quiet] add [-b branch] [-f|--force]\n+'git submodule' [--quiet] add [-b branch] [--record[=<branch>]] [-f|--force]\n \t      [--reference <repository>] [--] <repository> [<path>]\n 'git submodule' [--quiet] status [--cached] [--recursive] [--] [<path>...]\n 'git submodule' [--quiet] init [--] [<path>...]\n@@ -209,6 +209,15 @@ OPTIONS\n --branch::\n \tBranch of repository to add as submodule.\n \n+-r::\n+--record::\n+  Record a branch name used as `submodule.<path>.branch` in\n+  `.gitmodules` for future reference.  If you do not list an explicit\n+  name here, the name given with `--branch` will be recorded.  If that\n+  is not set either, `HEAD` will be recorded.  Because the branch name\n+  is optional, you must use the equal-sign form (`-r=<branch>`), not\n+  `-r <branch>`.\n+\n -f::\n --force::\n \tThis option is only valid for add and update commands.\ndiff --git a/git-submodule.sh b/git-submodule.sh\nindex ab6b110..bc33112 100755\n--- a/git-submodule.sh\n+++ b/git-submodule.sh\n@@ -5,7 +5,7 @@\n # Copyright (c) 2007 Lars Hjemli\n \n dashless=$(basename \"$0\" | sed -e 's/-/ /')\n-USAGE=\"[--quiet] add [-b branch] [-f|--force] [--reference <repository>] [--] <repository> [<path>]\n+USAGE=\"[--quiet] add [-b branch] [--record[=<branch>]] [-f|--force] [--reference <repository>] [--] <repository> [<path>]\n    or: $dashless [--quiet] status [--cached] [--recursive] [--] [<path>...]\n    or: $dashless [--quiet] init [--] [<path>...]\n    or: $dashless [--quiet] update [--init] [-N|--no-fetch] [-f|--force] [--rebase] [--reference <repository>] [--merge] [--recursive] [--] [<path>...]\n@@ -20,6 +20,8 @@ require_work_tree\n \n command=\n branch=\n+record_branch=\n+record_branch_empty=\n force=\n reference=\n cached=\n@@ -257,6 +259,12 @@ cmd_add()\n \t\t\tbranch=$2\n \t\t\tshift\n \t\t\t;;\n+\t\t-r | --record)\n+\t\t\trecord_branch_empty=true\n+\t\t\t;;\n+\t\t-r=* | --record=*)\n+\t\t\trecord_branch=\"${1#*=}\"\n+\t\t\t;;\n \t\t-f | --force)\n \t\t\tforce=$1\n \t\t\t;;\n@@ -328,6 +336,11 @@ cmd_add()\n \tgit ls-files --error-unmatch \"$sm_path\" > /dev/null 2>&1 &&\n \tdie \"$(eval_gettext \"'\\$sm_path' already exists in the index\")\"\n \n+\tif test -z \"$record_branch\" && test \"$record_branch_empty\" = \"true\"\n+\tthen\n+\t\trecord_branch=\"${branch:=HEAD}\"\n+\tfi\n+\n \tif test -z \"$force\" && ! git add --dry-run --ignore-missing \"$sm_path\" > /dev/null 2>&1\n \tthen\n \t\teval_gettextln \"The following path is ignored by one of your .gitignore files:\n@@ -366,6 +379,10 @@ Use -f if you really want to add it.\" >&2\n \n \tgit config -f .gitmodules submodule.\"$sm_path\".path \"$sm_path\" &&\n \tgit config -f .gitmodules submodule.\"$sm_path\".url \"$repo\" &&\n+\tif test -n \"$branch\"\n+\tthen\n+\t\tgit config -f .gitmodules submodule.\"$sm_path\".branch \"$record_branch\"\n+\tfi &&\n \tgit add --force .gitmodules ||\n \tdie \"$(eval_gettext \"Failed to register submodule '\\$sm_path'\")\"\n }\ndiff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh\nindex 5397037..88ae74c 100755\n--- a/t/t7400-submodule-basic.sh\n+++ b/t/t7400-submodule-basic.sh\n@@ -133,6 +133,7 @@ test_expect_success 'submodule add --branch' '\n \t(\n \t\tcd addtest &&\n \t\tgit submodule add -b initial \"$submodurl\" submod-branch &&\n+\t\ttest -z \"$(git config -f .gitmodules submodule.submod-branch.branch)\" &&\n \t\tgit submodule init\n \t) &&\n \n@@ -211,6 +212,30 @@ test_expect_success 'submodule add with ./, /.. and // in path' '\n \ttest_cmp empty untracked\n '\n \n+test_expect_success 'submodule add --record' '\n+\t(\n+\t\tcd addtest &&\n+\t\tgit submodule add -r \"$submodurl\" submod-record-head &&\n+\t\ttest \"$(git config -f .gitmodules submodule.submod-record-head.branch)\" = \"HEAD\"\n+\t)\n+'\n+\n+test_expect_success 'submodule add --record --branch' '\n+\t(\n+\t\tcd addtest &&\n+\t\tgit submodule add -r -b initial \"$submodurl\" submod-auto-record &&\n+\t\ttest \"$(git config -f .gitmodules submodule.submod-auto-record.branch)\" = \"initial\"\n+\t)\n+'\n+\n+test_expect_success 'submodule add --record=<name> --branch' '\n+\t(\n+\t\tcd addtest &&\n+\t\tgit submodule add -r=final -b initial \"$submodurl\" submod-record &&\n+\t\ttest \"$(git config -f .gitmodules submodule.submod-record.branch)\" = \"final\"\n+\t)\n+'\n+\n test_expect_success 'setup - add an example entry to .gitmodules' '\n \tGIT_CONFIG=.gitmodules \\\n \tgit config submodule.example.url git://example.com/init.git\n-- \n1.8.0.1.g61a31f6.dirty\n"},{"id":"201823","messageId":"50883E54.4080507@web.de","threadId":"31926","inReplyTo":"1f6ee2966ffe0f58f4b96ae0efb2ffb13e2fa2d8.1351029479.git.wking@tremily.us","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"Jens Lehmann","fromEmail":"jens.lehmann@web.de","sentAt":"2012-10-24T19:15:32Z","receivedAt":"2012-10-24T19:15:32Z","isPatch":true,"sender":{"key":"jens.lehmann@web.de","avatar":"https://avatars.githubusercontent.com/u/135220?v=4"},"body":"I still fail to see what adding that functionality to the submodule\ncommand buys us (unless we also add code which really uses the branch\nsetting). What's wrong with doing a simple:\n\n   git config -f .gitmodules submodule.<path>.branch <record_branch>\n\non the command line when you want to use the branch setting for your\nown purposes? You could easily wrap that into a helper script, no?\n\nAm 23.10.2012 23:57, schrieb W. Trevor King:\n> From: \"W. Trevor King\" <wking@tremily.us>\n> \n> This option allows you to record a submodule.<name>.branch option in\n> .gitmodules.  Git does not currently use this configuration option for\n> anything, but users have used it for several things, so it makes sense\n> to add some syntactic sugar for initializing the value.\n> \n> Current consumers:\n> \n> Ævar uses this setting to designate the upstream branch for pulling\n> submodule updates:\n> \n>   $ git submodule foreach 'git checkout $(git config --file $toplevel/.gitmodules submodule.$name.branch) && git pull'\n> \n> as he describes in\n> \n>   commit f030c96d8643fa0a1a9b2bd9c2f36a77721fb61f\n>   Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n>   Date:   Fri May 21 16:10:10 2010 +0000\n> \n>     git-submodule foreach: Add $toplevel variable\n> \n> Gerrit uses this setting to\n> \n>   “indicate the branch of a submodule project that when updated will\n>   trigger automatic update of its registered gitlink.” [1]\n> \n> I'm not clear on what that means, but they accept special values like\n> '.', so their usage is not compatible with Ævar's proposal.\n> \n> By remaining agnostic on the variable usage, this patch makes\n> submodule setup more convenient for all parties.\n> \n> [1] https://gerrit.googlesource.com/gerrit/+/master/Documentation/user-submodules.txt\n> \n> Signed-off-by: W. Trevor King <wking@tremily.us>\n> ---\n>  Documentation/git-submodule.txt | 11 ++++++++++-\n>  git-submodule.sh                | 19 ++++++++++++++++++-\n>  t/t7400-submodule-basic.sh      | 25 +++++++++++++++++++++++++\n>  3 files changed, 53 insertions(+), 2 deletions(-)\n> \n> diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt\n> index b4683bb..f9c74d6 100644\n> --- a/Documentation/git-submodule.txt\n> +++ b/Documentation/git-submodule.txt\n> @@ -9,7 +9,7 @@ git-submodule - Initialize, update or inspect submodules\n>  SYNOPSIS\n>  --------\n>  [verse]\n> -'git submodule' [--quiet] add [-b branch] [-f|--force]\n> +'git submodule' [--quiet] add [-b branch] [--record[=<branch>]] [-f|--force]\n>  \t      [--reference <repository>] [--] <repository> [<path>]\n>  'git submodule' [--quiet] status [--cached] [--recursive] [--] [<path>...]\n>  'git submodule' [--quiet] init [--] [<path>...]\n> @@ -209,6 +209,15 @@ OPTIONS\n>  --branch::\n>  \tBranch of repository to add as submodule.\n>  \n> +-r::\n> +--record::\n> +  Record a branch name used as `submodule.<path>.branch` in\n> +  `.gitmodules` for future reference.  If you do not list an explicit\n> +  name here, the name given with `--branch` will be recorded.  If that\n> +  is not set either, `HEAD` will be recorded.  Because the branch name\n> +  is optional, you must use the equal-sign form (`-r=<branch>`), not\n> +  `-r <branch>`.\n> +\n>  -f::\n>  --force::\n>  \tThis option is only valid for add and update commands.\n> diff --git a/git-submodule.sh b/git-submodule.sh\n> index ab6b110..bc33112 100755\n> --- a/git-submodule.sh\n> +++ b/git-submodule.sh\n> @@ -5,7 +5,7 @@\n>  # Copyright (c) 2007 Lars Hjemli\n>  \n>  dashless=$(basename \"$0\" | sed -e 's/-/ /')\n> -USAGE=\"[--quiet] add [-b branch] [-f|--force] [--reference <repository>] [--] <repository> [<path>]\n> +USAGE=\"[--quiet] add [-b branch] [--record[=<branch>]] [-f|--force] [--reference <repository>] [--] <repository> [<path>]\n>     or: $dashless [--quiet] status [--cached] [--recursive] [--] [<path>...]\n>     or: $dashless [--quiet] init [--] [<path>...]\n>     or: $dashless [--quiet] update [--init] [-N|--no-fetch] [-f|--force] [--rebase] [--reference <repository>] [--merge] [--recursive] [--] [<path>...]\n> @@ -20,6 +20,8 @@ require_work_tree\n>  \n>  command=\n>  branch=\n> +record_branch=\n> +record_branch_empty=\n>  force=\n>  reference=\n>  cached=\n> @@ -257,6 +259,12 @@ cmd_add()\n>  \t\t\tbranch=$2\n>  \t\t\tshift\n>  \t\t\t;;\n> +\t\t-r | --record)\n> +\t\t\trecord_branch_empty=true\n> +\t\t\t;;\n> +\t\t-r=* | --record=*)\n> +\t\t\trecord_branch=\"${1#*=}\"\n> +\t\t\t;;\n>  \t\t-f | --force)\n>  \t\t\tforce=$1\n>  \t\t\t;;\n> @@ -328,6 +336,11 @@ cmd_add()\n>  \tgit ls-files --error-unmatch \"$sm_path\" > /dev/null 2>&1 &&\n>  \tdie \"$(eval_gettext \"'\\$sm_path' already exists in the index\")\"\n>  \n> +\tif test -z \"$record_branch\" && test \"$record_branch_empty\" = \"true\"\n> +\tthen\n> +\t\trecord_branch=\"${branch:=HEAD}\"\n> +\tfi\n> +\n>  \tif test -z \"$force\" && ! git add --dry-run --ignore-missing \"$sm_path\" > /dev/null 2>&1\n>  \tthen\n>  \t\teval_gettextln \"The following path is ignored by one of your .gitignore files:\n> @@ -366,6 +379,10 @@ Use -f if you really want to add it.\" >&2\n>  \n>  \tgit config -f .gitmodules submodule.\"$sm_path\".path \"$sm_path\" &&\n>  \tgit config -f .gitmodules submodule.\"$sm_path\".url \"$repo\" &&\n> +\tif test -n \"$branch\"\n> +\tthen\n> +\t\tgit config -f .gitmodules submodule.\"$sm_path\".branch \"$record_branch\"\n> +\tfi &&\n>  \tgit add --force .gitmodules ||\n>  \tdie \"$(eval_gettext \"Failed to register submodule '\\$sm_path'\")\"\n>  }\n> diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh\n> index 5397037..88ae74c 100755\n> --- a/t/t7400-submodule-basic.sh\n> +++ b/t/t7400-submodule-basic.sh\n> @@ -133,6 +133,7 @@ test_expect_success 'submodule add --branch' '\n>  \t(\n>  \t\tcd addtest &&\n>  \t\tgit submodule add -b initial \"$submodurl\" submod-branch &&\n> +\t\ttest -z \"$(git config -f .gitmodules submodule.submod-branch.branch)\" &&\n>  \t\tgit submodule init\n>  \t) &&\n>  \n> @@ -211,6 +212,30 @@ test_expect_success 'submodule add with ./, /.. and // in path' '\n>  \ttest_cmp empty untracked\n>  '\n>  \n> +test_expect_success 'submodule add --record' '\n> +\t(\n> +\t\tcd addtest &&\n> +\t\tgit submodule add -r \"$submodurl\" submod-record-head &&\n> +\t\ttest \"$(git config -f .gitmodules submodule.submod-record-head.branch)\" = \"HEAD\"\n> +\t)\n> +'\n> +\n> +test_expect_success 'submodule add --record --branch' '\n> +\t(\n> +\t\tcd addtest &&\n> +\t\tgit submodule add -r -b initial \"$submodurl\" submod-auto-record &&\n> +\t\ttest \"$(git config -f .gitmodules submodule.submod-auto-record.branch)\" = \"initial\"\n> +\t)\n> +'\n> +\n> +test_expect_success 'submodule add --record=<name> --branch' '\n> +\t(\n> +\t\tcd addtest &&\n> +\t\tgit submodule add -r=final -b initial \"$submodurl\" submod-record &&\n> +\t\ttest \"$(git config -f .gitmodules submodule.submod-record.branch)\" = \"final\"\n> +\t)\n> +'\n> +\n>  test_expect_success 'setup - add an example entry to .gitmodules' '\n>  \tGIT_CONFIG=.gitmodules \\\n>  \tgit config submodule.example.url git://example.com/init.git\n> \n"},{"id":"201832","messageId":"20121025005307.GE801@odin.tremily.us","threadId":"31926","inReplyTo":"50883E54.4080507@web.de","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"W. Trevor King","fromEmail":"wking@tremily.us","sentAt":"2012-10-25T00:53:07Z","receivedAt":"2012-10-25T00:53:07Z","isPatch":true,"sender":{"key":"wking@tremily.us","avatar":"https://avatars.githubusercontent.com/u/209920?v=4"},"body":"On Wed, Oct 24, 2012 at 09:15:32PM +0200, Jens Lehmann wrote:\n> I still fail to see what adding that functionality to the submodule\n> command buys us (unless we also add code which really uses the branch\n> setting). What's wrong with doing a simple:\n> \n>    git config -f .gitmodules submodule.<path>.branch <record_branch>\n> \n> on the command line when you want to use the branch setting for your\n> own purposes? You could easily wrap that into a helper script, no?\n\nSure.  But why maintain my own helper script if I can edit\ngit-submodules.sh?  It seems like a number of people are using this\nconfig option, and they generally store the same name in it that they\nuse to create the submodule.  This way I can save them time too.\n\n-- \nThis email may be signed or encrypted with GnuPG (http://www.gnupg.org).\nFor more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy\n"},{"id":"201928","messageId":"20121025221431.GH13647@odin.tremily.us","threadId":"31926","inReplyTo":"1f6ee2966ffe0f58f4b96ae0efb2ffb13e2fa2d8.1351029479.git.wking@tremily.us","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"W. Trevor King","fromEmail":"wking@tremily.us","sentAt":"2012-10-25T22:14:31Z","receivedAt":"2012-10-25T22:14:31Z","isPatch":true,"sender":{"key":"wking@tremily.us","avatar":"https://avatars.githubusercontent.com/u/209920?v=4"},"body":"Should I rebase this so it lands cleanly atop 38ae92e4 in next?\n\n  commit 38ae92e4d027063b9b87e51a9bf12809d10066f6\n  Author: W. Trevor King <wking@tremily.us>\n  Date:   Tue Oct 23 17:00:21 2012 -0400\n\n    git-submodule: wrap branch option with \"<>\" in usage strings.\n\n-- \nThis email may be signed or encrypted with GnuPG (http://www.gnupg.org).\nFor more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy\n"},{"id":"201949","messageId":"20121026140056.GL1455@sigill.intra.peff.net","threadId":"31926","inReplyTo":"20121025221431.GH13647@odin.tremily.us","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2012-10-26T14:00:56Z","receivedAt":"2012-10-26T14:00:56Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Oct 25, 2012 at 06:14:31PM -0400, W. Trevor King wrote:\n\n> Should I rebase this so it lands cleanly atop 38ae92e4 in next?\n> \n>   commit 38ae92e4d027063b9b87e51a9bf12809d10066f6\n>   Author: W. Trevor King <wking@tremily.us>\n>   Date:   Tue Oct 23 17:00:21 2012 -0400\n> \n>     git-submodule: wrap branch option with \"<>\" in usage strings.\n\nIn general, it is not a good idea to base your patches on things in\nnext, because it means your topic is held hostage to the one in next,\nwhich may or may not graduate to master. We can always do a merge later\n(and in this case, it is really just a one-line conflict).\n\n-Peff\n"},{"id":"202063","messageId":"508D9A12.6010104@web.de","threadId":"31926","inReplyTo":"20121025005307.GE801@odin.tremily.us","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"Jens Lehmann","fromEmail":"jens.lehmann@web.de","sentAt":"2012-10-28T20:48:18Z","receivedAt":"2012-10-28T20:48:18Z","isPatch":true,"sender":{"key":"jens.lehmann@web.de","avatar":"https://avatars.githubusercontent.com/u/135220?v=4"},"body":"Am 25.10.2012 02:53, schrieb W. Trevor King:\n> On Wed, Oct 24, 2012 at 09:15:32PM +0200, Jens Lehmann wrote:\n>> I still fail to see what adding that functionality to the submodule\n>> command buys us (unless we also add code which really uses the branch\n>> setting). What's wrong with doing a simple:\n>>\n>>    git config -f .gitmodules submodule.<path>.branch <record_branch>\n>>\n>> on the command line when you want to use the branch setting for your\n>> own purposes? You could easily wrap that into a helper script, no?\n> \n> Sure.  But why maintain my own helper script if I can edit\n> git-submodules.sh?  It seems like a number of people are using this\n> config option, and they generally store the same name in it that they\n> use to create the submodule.  This way I can save them time too.\n\nBut people are already using the \"branch\" setting in *different* ways:\n\nAm 23.10.2012 22:55, schrieb W. Trevor King:\n> As Phil pointed out, doing anything with this variable is ambiguous:\n>\n> On Mon, Oct 22, 2012 at 06:03:53PM -0400, Phil Hord wrote:\n>> Some projects now use the 'branch' config value to record the tracking\n>> branch for the submodule.  Some ascribe different meaning to the\n>> configuration if the value is given vs. undefined.  For example, see\n>> the Gerrit submodule-subscription mechanism.  This change will cause\n>> those workflows to behave differently than they do now.\n\nI don't have a problem with the amount or complexity of the code being\nadded, But by adding that option we may be giving the impression that it\nis officially sanctioned, or that it will be kept up to date by further\nsubmodule commands. I added Shawn to the CC, maybe he can comment on how\nthe \"branch\" setting is used in Gerrit and what he thinks about adding\ncode to set that with \"git submodule add -r <branch> ...\" to core git.\n"},{"id":"202067","messageId":"20121028211623.GE26675@odin.tremily.us","threadId":"31926","inReplyTo":"508D9A12.6010104@web.de","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"W. Trevor King","fromEmail":"wking@tremily.us","sentAt":"2012-10-28T21:16:23Z","receivedAt":"2012-10-28T21:16:23Z","isPatch":true,"sender":{"key":"wking@tremily.us","avatar":"https://avatars.githubusercontent.com/u/209920?v=4"},"body":"On Sun, Oct 28, 2012 at 09:48:18PM +0100, Jens Lehmann wrote:\n> Am 25.10.2012 02:53, schrieb W. Trevor King:\n> > On Wed, Oct 24, 2012 at 09:15:32PM +0200, Jens Lehmann wrote:\n> >> I still fail to see what adding that functionality to the submodule\n> >> command buys us (unless we also add code which really uses the branch\n> >> setting). What's wrong with doing a simple:\n> >>\n> >>    git config -f .gitmodules submodule.<path>.branch <record_branch>\n> >>\n> >> on the command line when you want to use the branch setting for your\n> >> own purposes? You could easily wrap that into a helper script, no?\n> > \n> > Sure.  But why maintain my own helper script if I can edit\n> > git-submodules.sh?  It seems like a number of people are using this\n> > config option, and they generally store the same name in it that they\n> > use to create the submodule.  This way I can save them time too.\n> \n> But people are already using the \"branch\" setting in *different* ways:\n\nAnd they are usually storing the same string.  Now, more easily.  If\nthey want a different string, it is also easier.  If they don't want\nto use --record, they can do things however they were already doing\nthem.  I don't see the problem.\n\n> Am 23.10.2012 22:55, schrieb W. Trevor King:\n> > As Phil pointed out, doing anything with this variable is ambiguous:\n> >\n> > On Mon, Oct 22, 2012 at 06:03:53PM -0400, Phil Hord wrote:\n> >> Some projects now use the 'branch' config value to record the tracking\n> >> branch for the submodule.  Some ascribe different meaning to the\n> >> configuration if the value is given vs. undefined.  For example, see\n> >> the Gerrit submodule-subscription mechanism.  This change will cause\n> >> those workflows to behave differently than they do now.\n> \n> I don't have a problem with the amount or complexity of the code being\n> added, But by adding that option we may be giving the impression that it\n> is officially sanctioned, or that it will be kept up to date by further\n> submodule commands.\n\nStoring something there will be officially sanctioned.  Using it for\nanything in particular will not be officially sanctioned.  Phil's\nsubmodule_<var-name> export in foreach will expose the variable so the\nuser can do whatever they think is appropriate with it, but it's still\nup to the user to give the option some kind of semantic meaning.\n\n> I added Shawn to the CC, maybe he can comment on how the \"branch\"\n> setting is used in Gerrit and what he thinks about adding code to\n> set that with \"git submodule add -r <branch> ...\" to core git.\n\nGood idea.\n\nTrevor\n\n-- \nThis email may be signed or encrypted with GnuPG (http://www.gnupg.org).\nFor more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy\n"},{"id":"202072","messageId":"CAJo=hJt_A5FCCcvR=sZ5Ni+-ZGq+MjxqkONbh9k+A46xBH9jzA@mail.gmail.com","threadId":"31926","inReplyTo":"508D9A12.6010104@web.de","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"Shawn Pearce","fromEmail":"spearce@spearce.org","sentAt":"2012-10-28T21:59:33Z","receivedAt":"2012-10-28T21:59:33Z","isPatch":true,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"On Sun, Oct 28, 2012 at 1:48 PM, Jens Lehmann <Jens.Lehmann@web.de> wrote:\n> Am 23.10.2012 22:55, schrieb W. Trevor King:\n>> As Phil pointed out, doing anything with this variable is ambiguous:\n>>\n>> On Mon, Oct 22, 2012 at 06:03:53PM -0400, Phil Hord wrote:\n>>> Some projects now use the 'branch' config value to record the tracking\n>>> branch for the submodule.  Some ascribe different meaning to the\n>>> configuration if the value is given vs. undefined.  For example, see\n>>> the Gerrit submodule-subscription mechanism.  This change will cause\n>>> those workflows to behave differently than they do now.\n>\n> I don't have a problem with the amount or complexity of the code being\n> added, But by adding that option we may be giving the impression that it\n> is officially sanctioned, or that it will be kept up to date by further\n> submodule commands. I added Shawn to the CC, maybe he can comment on how\n> the \"branch\" setting is used in Gerrit and what he thinks about adding\n> code to set that with \"git submodule add -r <branch> ...\" to core git.\n\nLooks like the Gerrit meaning is basically the same as Ævar's. Gerrit\nupdates the parent project as if you had done:\n\n  $ git submodule foreach 'git checkout $(git config --file\n$toplevel/.gitmodules submodule.$name.branch) && git pull'\n  $ git commit -a -m \"Updated submodules\"\n  $ git push\n\nand it does this automatically each time the submodule's branch is\nmodified by the Gerrit server.\n\nOn Tue, Oct 23, 2012 at 2:57 PM, W. Trevor King <wking@tremily.us> wrote:\n> I'm not clear on what that means, but they accept special values like\n> '.', so their usage is not compatible with Ævar's proposal.\n\n\".\" is a special value to mean use the parent project's branch name.\nSo its more like this:\n\n  $ git submodule foreach 'git checkout $(git --git-dir $toplevel/.git\nread-ref HEAD | sed s,^refs/heads/,,) && git pull'\n  $ git commit -a -m \"Updated submodules\"\n  $ git push\n\nWe use \".\" in Gerrit to make branching an entire forest of projects\neasier. Setting up dev-fix-yy in the parent project will automatically\ntrack dev-fix-yy in each submodule.\n"},{"id":"202073","messageId":"20121028223431.GF26675@odin.tremily.us","threadId":"31926","inReplyTo":"CAJo=hJt_A5FCCcvR=sZ5Ni+-ZGq+MjxqkONbh9k+A46xBH9jzA@mail.gmail.com","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"W. Trevor King","fromEmail":"wking@tremily.us","sentAt":"2012-10-28T22:34:31Z","receivedAt":"2012-10-28T22:34:31Z","isPatch":true,"sender":{"key":"wking@tremily.us","avatar":"https://avatars.githubusercontent.com/u/209920?v=4"},"body":"On Sun, Oct 28, 2012 at 02:59:33PM -0700, Shawn Pearce wrote:\n> Looks like the Gerrit meaning is basically the same as Ævar's. Gerrit\n> updates the parent project as if you had done:\n> \n>   $ git submodule foreach 'git checkout $(git config --file\n> $toplevel/.gitmodules submodule.$name.branch) && git pull'\n>   $ git commit -a -m \"Updated submodules\"\n>   $ git push\n\nAh, good, then we *are* all using the option for the same thing.\n\n> On Tue, Oct 23, 2012 at 2:57 PM, W. Trevor King <wking@tremily.us> wrote:\n> > I'm not clear on what that means, but they accept special values like\n> > '.', so their usage is not compatible with Ævar's proposal.\n> \n> \".\" is a special value to mean use the parent project's branch name.\n> So its more like this:\n> \n>   $ git submodule foreach 'git checkout $(git --git-dir $toplevel/.git\n> read-ref HEAD | sed s,^refs/heads/,,) && git pull'\n>   $ git commit -a -m \"Updated submodules\"\n>   $ git push\n> \n> We use \".\" in Gerrit to make branching an entire forest of projects\n> easier. Setting up dev-fix-yy in the parent project will automatically\n> track dev-fix-yy in each submodule.\n\nOk.  If we wanted \".\" expansion to be a general submodule thing, it\nwould add a special case to Phil's submodule_<var-name> export.  I\ndon't think such a special case would be worth the mental overhead,\nbut obviously the Gerrit folks think it is.  I don't care either way\non this one.\n\nTrevor\n\n-- \nThis email may be signed or encrypted with GnuPG (http://www.gnupg.org).\nFor more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy\n"},{"id":"202083","messageId":"20121029053401.GB30186@sigill.intra.peff.net","threadId":"31926","inReplyTo":"20121028223431.GF26675@odin.tremily.us","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2012-10-29T05:34:01Z","receivedAt":"2012-10-29T05:34:01Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Sun, Oct 28, 2012 at 06:34:31PM -0400, W. Trevor King wrote:\n\n> On Sun, Oct 28, 2012 at 02:59:33PM -0700, Shawn Pearce wrote:\n> > Looks like the Gerrit meaning is basically the same as Ævar's. Gerrit\n> > updates the parent project as if you had done:\n> > \n> >   $ git submodule foreach 'git checkout $(git config --file\n> > $toplevel/.gitmodules submodule.$name.branch) && git pull'\n> >   $ git commit -a -m \"Updated submodules\"\n> >   $ git push\n> \n> Ah, good, then we *are* all using the option for the same thing.\n\nThat makes me more comfortable. Your patch adds support for setting the\nvariable initially. Does it need any special magic for maintenance, or\nis it something that would always be updated by hand?\n\nRight now, the variable is not an official git-submodule thing and it is\nOK to say \"you are on your own by setting and using it from external\ntools\". But as soon as we support setting it in the first place, it is\nreasonable to claim it as a bug if we do not keep it up to date for\ncertain operations.\n\nI'm not familiar enough with the workflows around branching submodules\nto know whether any such operations actually exist.\n\n-Peff\n"},{"id":"202113","messageId":"20121029104544.GA2424@odin.tremily.us","threadId":"31926","inReplyTo":"20121029053401.GB30186@sigill.intra.peff.net","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"W. Trevor King","fromEmail":"wking@tremily.us","sentAt":"2012-10-29T10:45:44Z","receivedAt":"2012-10-29T10:45:44Z","isPatch":true,"sender":{"key":"wking@tremily.us","avatar":"https://avatars.githubusercontent.com/u/209920?v=4"},"body":"On Mon, Oct 29, 2012 at 01:34:01AM -0400, Jeff King wrote:\n> On Sun, Oct 28, 2012 at 06:34:31PM -0400, W. Trevor King wrote:\n> \n> > On Sun, Oct 28, 2012 at 02:59:33PM -0700, Shawn Pearce wrote:\n> > > Looks like the Gerrit meaning is basically the same as Ævar's. Gerrit\n> > > updates the parent project as if you had done:\n> > > \n> > >   $ git submodule foreach 'git checkout $(git config --file\n> > > $toplevel/.gitmodules submodule.$name.branch) && git pull'\n> > >   $ git commit -a -m \"Updated submodules\"\n> > >   $ git push\n> > \n> > Ah, good, then we *are* all using the option for the same thing.\n> \n> That makes me more comfortable. Your patch adds support for setting the\n> variable initially. Does it need any special magic for maintenance, or\n> is it something that would always be updated by hand?\n\nEveryone we've heard from so far interprets the setting as “pull from\n$branch in the remote repository $url to update the submodule”.  With\nPhil's export, that would become\n\n  $ git submodule foreach 'git checkout \"$submodule_branch\" && git pull'\n  $ git commit -a -m \"Updated submodules\"\n  $ git push\n\nAs Nahor mentioned on the 23rd, there are a number of ways that the\nupstream branch could disappear, but Git has no way to know what the\nnew branch setting should be.  This means that even if we make “pull\nfrom $branch” interpretation official, we still couldn't do anything\nslick about updating it.  So, yes, it will be updated by hand.\n\n-- \nThis email may be signed or encrypted with GnuPG (http://www.gnupg.org).\nFor more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy\n"},{"id":"202114","messageId":"20121029105855.GA15075@sigill.intra.peff.net","threadId":"31926","inReplyTo":"20121029104544.GA2424@odin.tremily.us","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2012-10-29T10:58:55Z","receivedAt":"2012-10-29T10:58:55Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Mon, Oct 29, 2012 at 06:45:44AM -0400, W. Trevor King wrote:\n\n> > > Ah, good, then we *are* all using the option for the same thing.\n> > \n> > That makes me more comfortable. Your patch adds support for setting the\n> > variable initially. Does it need any special magic for maintenance, or\n> > is it something that would always be updated by hand?\n> \n> Everyone we've heard from so far interprets the setting as “pull from\n> $branch in the remote repository $url to update the submodule”.  With\n> Phil's export, that would become\n> \n>   $ git submodule foreach 'git checkout \"$submodule_branch\" && git pull'\n>   $ git commit -a -m \"Updated submodules\"\n>   $ git push\n> \n> As Nahor mentioned on the 23rd, there are a number of ways that the\n> upstream branch could disappear, but Git has no way to know what the\n> new branch setting should be.  This means that even if we make “pull\n> from $branch” interpretation official, we still couldn't do anything\n> slick about updating it.  So, yes, it will be updated by hand.\n\nOK.\n\nCan you send an updated version of the patch that summarizes the\nsituation in the commit message?\n\nI also think it is probably worth saying something in the documentation\nfor the feature like \"Note that this value is not actually used by git;\nhowever, some external tools and workflows may make use of it.\"\n\n-Peff\n"},{"id":"202116","messageId":"20121029112945.GD2424@odin.tremily.us","threadId":"31926","inReplyTo":"20121029105855.GA15075@sigill.intra.peff.net","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"W. Trevor King","fromEmail":"wking@tremily.us","sentAt":"2012-10-29T11:29:45Z","receivedAt":"2012-10-29T11:29:45Z","isPatch":true,"sender":{"key":"wking@tremily.us","avatar":"https://avatars.githubusercontent.com/u/209920?v=4"},"body":"On Mon, Oct 29, 2012 at 06:58:55AM -0400, Jeff King wrote:\n> Can you send an updated version of the patch that summarizes the\n> situation in the commit message?\n\nSure.  Should I include Phil's $submodule_<var-name> export, or would\nyou rather have that be a separate series?\n\nPhil, were you planning on rolling your patch into something more\nformal, or was your preliminary patch a suggestion for me to build\nfrom?\n\n-- \nThis email may be signed or encrypted with GnuPG (http://www.gnupg.org).\nFor more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy\n"},{"id":"202119","messageId":"20121029114310.GA16046@sigill.intra.peff.net","threadId":"31926","inReplyTo":"20121029112945.GD2424@odin.tremily.us","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2012-10-29T11:43:10Z","receivedAt":"2012-10-29T11:43:10Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Mon, Oct 29, 2012 at 07:29:45AM -0400, W. Trevor King wrote:\n\n> On Mon, Oct 29, 2012 at 06:58:55AM -0400, Jeff King wrote:\n> > Can you send an updated version of the patch that summarizes the\n> > situation in the commit message?\n> \n> Sure.  Should I include Phil's $submodule_<var-name> export, or would\n> you rather have that be a separate series?\n\nI think it probably makes sense as a separate patch in the same series,\nsince it is meant to support the same workflows.\n\nI am not sure it is sufficient as-is, though. It does not seem to ever\nclear variables, only set them, which means that values could leak\nacross iterations of the loop, or down to recursive calls. E.g., when\nthe first submodule has submodule.*.foo set but the second one does not,\nyou will still end up with $submodule_foo set when you process the\nsecond one.\n\n-Peff\n"},{"id":"202130","messageId":"CABURp0pFLi+2A+9wi-ZamiRze2u6z+6oyoCsNpWOLq_cq2L1rQ@mail.gmail.com","threadId":"31926","inReplyTo":"20121029114310.GA16046@sigill.intra.peff.net","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"Phil Hord","fromEmail":"phil.hord@gmail.com","sentAt":"2012-10-29T17:38:28Z","receivedAt":"2012-10-29T17:38:28Z","isPatch":true,"sender":{"key":"phil.hord@gmail.com","avatar":"https://avatars.githubusercontent.com/u/123908?v=4"},"body":"On Mon, Oct 29, 2012 at 7:43 AM, Jeff King <peff@peff.net> wrote:\n> On Mon, Oct 29, 2012 at 07:29:45AM -0400, W. Trevor King wrote:\n>\n>> On Mon, Oct 29, 2012 at 06:58:55AM -0400, Jeff King wrote:\n>> > Can you send an updated version of the patch that summarizes the\n>> > situation in the commit message?\n>>\n>> Sure.  Should I include Phil's $submodule_<var-name> export, or would\n>> you rather have that be a separate series?\n>\n> I think it probably makes sense as a separate patch in the same series,\n> since it is meant to support the same workflows.\n\nI agree.  I did expect to clean it up some, but also to suffer some\nreview.  Feel free to clean it up as you see fit and submit it with\nyour series.\n\n> I am not sure it is sufficient as-is, though. It does not seem to ever\n> clear variables, only set them, which means that values could leak\n> across iterations of the loop,  [...] E.g., when\n> the first submodule has submodule.*.foo set but the second one does not,\n> you will still end up with $submodule_foo set when you process the\n> second one.\n\nGood point.  That should not happen.\n\n> or down to recursive calls.\n\nFrankly, I consider that to be a feature.  However, I can see how it\nwould be considered inconsistent in many ways, so it's probably best\nto squash it.  :-\\\n\nPhil\n"},{"id":"202148","messageId":"20121029213652.GC20513@sigill.intra.peff.net","threadId":"31926","inReplyTo":"CABURp0pFLi+2A+9wi-ZamiRze2u6z+6oyoCsNpWOLq_cq2L1rQ@mail.gmail.com","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2012-10-29T21:36:52Z","receivedAt":"2012-10-29T21:36:52Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Mon, Oct 29, 2012 at 01:38:28PM -0400, Phil Hord wrote:\n\n> > I am not sure it is sufficient as-is, though. It does not seem to ever\n> > clear variables, only set them, which means that values could leak\n> > across iterations of the loop,  [...] E.g., when\n> > the first submodule has submodule.*.foo set but the second one does not,\n> > you will still end up with $submodule_foo set when you process the\n> > second one.\n> \n> Good point.  That should not happen.\n> \n> > or down to recursive calls.\n> \n> Frankly, I consider that to be a feature.  However, I can see how it\n> would be considered inconsistent in many ways, so it's probably best\n> to squash it.  :-\\\n\nI think it would depend on the semantics of the option. Some options\nwould probably make sense to apply recursively, and some not.\n\nMaybe instead of blindly converting config into the environment, it\nshould forward or clear specific known-meaning config.\n\n-Peff\n"},{"id":"202149","messageId":"CABURp0otR2S1aOAWwnaFYFGRi_2cCBODbghck-BqUTw2B_ci3A@mail.gmail.com","threadId":"31926","inReplyTo":"20121029213652.GC20513@sigill.intra.peff.net","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"Phil Hord","fromEmail":"phil.hord@gmail.com","sentAt":"2012-10-29T22:21:08Z","receivedAt":"2012-10-29T22:21:08Z","isPatch":true,"sender":{"key":"phil.hord@gmail.com","avatar":"https://avatars.githubusercontent.com/u/123908?v=4"},"body":"On Mon, Oct 29, 2012 at 5:36 PM, Jeff King <peff@peff.net> wrote:\n> On Mon, Oct 29, 2012 at 01:38:28PM -0400, Phil Hord wrote:\n>\n>> > I am not sure it is sufficient as-is, though. It does not seem to ever\n>> > clear variables, only set them, which means that values could leak\n>> > across iterations of the loop,  [...] E.g., when\n>> > the first submodule has submodule.*.foo set but the second one does not,\n>> > you will still end up with $submodule_foo set when you process the\n>> > second one.\n>>\n>> Good point.  That should not happen.\n>>\n>> > or down to recursive calls.\n>>\n>> Frankly, I consider that to be a feature.  However, I can see how it\n>> would be considered inconsistent in many ways, so it's probably best\n>> to squash it.  :-\\\n>\n> I think it would depend on the semantics of the option. Some options\n> would probably make sense to apply recursively, and some not.\n>\n> Maybe instead of blindly converting config into the environment, it\n> should forward or clear specific known-meaning config.\n\nWell, that's where we started.  I was aiming for the more generic\n\"never needs updating\" direction.\n\nP\n"},{"id":"202151","messageId":"20121029222759.GI20513@sigill.intra.peff.net","threadId":"31926","inReplyTo":"CABURp0otR2S1aOAWwnaFYFGRi_2cCBODbghck-BqUTw2B_ci3A@mail.gmail.com","subject":"Re: [PATCH v2] git-submodule add: Add -r/--record option.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2012-10-29T22:27:59Z","receivedAt":"2012-10-29T22:27:59Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Mon, Oct 29, 2012 at 06:21:08PM -0400, Phil Hord wrote:\n\n> > Maybe instead of blindly converting config into the environment, it\n> > should forward or clear specific known-meaning config.\n> \n> Well, that's where we started.  I was aiming for the more generic\n> \"never needs updating\" direction.\n\nThen I think you are probably stuck taking the conservative approach of\nnot propagating recursively.\n\n-Peff\n"}]}