mercurial/util.py
changeset 2645 e6a41cbaa260
parent 2612 ffb895f16925
child 2647 c54ecfc360a9
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -12,7 +12,7 @@ platform-specific details from the core.
 
 from i18n import gettext as _
 from demandload import *
-demandload(globals(), "cStringIO errno popen2 re shutil sys tempfile")
+demandload(globals(), "cStringIO errno getpass popen2 re shutil sys tempfile")
 demandload(globals(), "os threading time")
 
 # used by parsedate
@@ -510,6 +510,17 @@ def is_win_9x():
     except AttributeError:
         return os.name == 'nt' and 'command' in os.environ.get('comspec', '')
 
+getuser_fallback = None
+
+def getuser():
+    '''return name of current user'''
+    try:
+        return getpass.getuser()
+    except ImportError:
+        return getuser_fallback and getuser_fallback()
+    raise util.Abort(_('user name not available - set USERNAME '
+                       'environment variable'))
+
 # Platform specific variants
 if os.name == 'nt':
     demandload(globals(), "msvcrt")