Re: [PATCH 20/48] i18n: git-submodule die + eval_gettext messages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 5/12/2011 15:48, schrieb Ãvar ArnfjÃrà Bjarmason:
> On Thu, May 12, 2011 at 10:08, Johannes Sixt <j.sixt@xxxxxxxxxxxxx> wrote:
>> Am 5/8/2011 14:20, schrieb Ãvar ArnfjÃrà Bjarmason:
>>> -             say "Submodule '$name' ($url) registered for path '$path'"
>>> +             say "$(eval_gettext "Submodule '\$name' (\$url) registered for path '\$path'")"
>>
>> On Windows, we have a problem with messages like this (and many others)
>> that reference $path. eval_gettext has to export 'path', but on Windows
>> environment variables are case-insensitive. In the substitution, this
>> happens to pick the value of 'PATH' rather than of 'path'... Can you do
>> something about this?
>>
>> Of course, the problem is not limited to 'path' at all, but it is a
>> prominent example discovered by the test suite.
> 
> I didn't know Windows had that limitation. We can easily work around
> it by just renaming $path to something else (e.g. $filepath).
> 
> Since we do:
> 
>     export PATH $(git sh-i18n--envsubst --variables "$1");
> 
> I assume this problem only occurs with variables that match
> /^path$/i. Or are there other problems on Windows?

It is *not* limited to PATH. There can be other variables in the
environment that are the same name as some that are exported in this
statement. Here's a brief test:

--- 8< ---
$ cat git-test
#!/bin/sh

. git-sh-setup
. git-sh-i18n

AppData=myappdata
username=myUserName
proMPT=myprompt

echo "$(eval_gettext "AppData: '\$AppData'
username: \$username
proMPT: \$proMPT
path: '\$path'")"

$ git --exec-path=. test
AppData: 'C:\Dokumente und Einstellungen\jsixt\Anwendungsdaten'
username: jsixt
proMPT: $P$G
path:
'd:/Src/mingw-git/.;d:\Src\mingw-git;d:\Src\mingw-git\;d:\Src\mingw-git;...snip...;.'
--- 8< ---

Particularly PROMPT and USERNAME appear regularly in the environment and
are rather generic names likely to be used in scripts as (non-exported)
variables. For exposition, these are the environment variables that I use
in production:

ALLUSERSPROFILE
APPDATA
CLIENTNAME
CommonProgramFiles
COMPUTERNAME
ComSpec
FP_NO_HOST_CHECK
GIT_EDITOR
HOME
HOMEDRIVE
HOMEPATH
LESS
LOGONSERVER
MSYSDIR
NUMBER_OF_PROCESSORS
OS
OS_ROOTDIR
OS_TMPDIR
Path
PATHEXT
PROCESSOR_ARCHITECTURE
PROCESSOR_IDENTIFIER
PROCESSOR_LEVEL
PROCESSOR_REVISION
ProgramFiles
PROMPT
SESSIONNAME
SystemDrive
SystemRoot
TEMP
TERM
TMP
USERDOMAIN
USERNAME
USERPROFILE
VS100COMNTOOLS
VS90COMNTOOLS
windir
WXWIN

-- Hannes
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]