On Tue, Feb 16, 2021 at 10:57:39AM -0800, Junio C Hamano wrote: > > It looks like there's some weirdness here, though; $smtp_server may be a > > hostname, and it looks like we use "/" to distinguish a file path. I > > wonder if allowing "!my-sendmail" would be more consistent with other > > parts of Git (not to mention more flexible). > > I am not sure '!' prefix fits well here. Why not? It matches alias config, credential config, and perhaps others as "treat this as a shell command". And like a leading "/", it would not be likely to be confused with an actual hostname. > When cloning from something (that is not yet known as an entity that > we must go over the network), we do an equivalent of "test -f" (for > bundles) and "test -d" (for local repositories), and I think the use > of "does it refer to a local file" here matches it as a precedent. Sure, but you cannot say "does it refer to a local file" for a non-absolute path. And that is the source of the problem, IMHO: there is no way to signal "this is a command I expect to be executed" except by using an absolute path. Or do you mean that we should see if $smtp_server exists in the PATH, and if so prefer it over a network hostname? > I do find it sloppy that the check uses file_name_is_absolute() that > only checks the shape of the string, without seeing if it actually > exists and is an executable file, though. Yes, though that comes with its own problems: you mean to say "foo", but due to a typo or missing program it is not found, and so you hit "foo" on the network. Probably not the end of the world, but unexpected, I would say. That's why I'd prefer having a syntactic marker that indicates what you mean. (I'd prefer to just have $smtp_program or similar as that signal instead, but it doesn't seem worth trying to retrofit it now). -Peff