Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: >> > The original code is: >> > >> > . "$author_script" >> >> [...] >> >> If the code in the sequencer.c reads things other than the three >> variables we ourselves set, and make them into environment variables >> and propagate to subprocesses (hooks and editors), it would be a >> bug. The original did not intend to do that (the dot-sourcing is >> overly loose than reading three known variables and nothing else, >> but is OK because we do not support the case where end users muck >> with the file). Also, writing FOO=BAR alone (not "export FOO=BAR" >> or "FOO=BAR; export FOO") to the file wouldn't have exported FOO to >> subprocesses anyway. > > That analysis cannot be completely correct, as the GIT_AUTHOR_* variables > *are* used by the `git commit` subprocess. In the scripted version, do_with_author shell function explicitly exports GIT_AUTHOR_* variables because they are the only ones we care about that are read from existing commit and carried forward via the author-script mechanism. We do not care about, and in fact we do not intend to support, any other variables or shell commands that appear in the author-script.