Why does mercurial.util.username() return None on Windows?

Matt Harbison mharbison72 at gmail.com
Mon Jul 8 21:00:32 EDT 2019

On Mon, 08 Jul 2019 14:58:36 -0400, Augie Fackler <raf at durin42.com> wrote:

> I just tripped on this today:  
> https://www.mercurial-scm.org/repo/hg/file/tip/mercurial/windows.py#l514
> It's been that way since at least 2009 when mpm split out the  
> {posix,windows,win32} modules. Does anyone (maybe mharbison?) have an  
> idea why this is the case? Would it be okay to make util.username(None)  
> return getpass.getuser() on Windows? I'm guessing the answer is yes, but  
> figured I should ask some Windows gurus before I leap into the unknown.

I can't think of any issue offhand.  The help says USERNAME must be set on  
Windows, but experimentally, it seems to work without it.  It also doesn't  
seem to report a different value if USERNAME is tampered with.  I'll check  
tomorrow to see how a domain account is reported, if I remember.

However, `os.stat($file).st_uid` seems to always return 0 on py2 and py3.   
And the only usage I see of `util.username()` with no argument compares  
against `util.username(st.st_uid)`.  So I can't see how it's useful for  
the current codebase.

More information about the Mercurial-devel mailing list