Adapted behaviour of ui.username() to documentation and mention it explicitly:
authorThomas Arendsen Hein <thomas@intevation.de>
Tue, 21 Mar 2006 15:33:29 +0100
changeset 1985 c577689006fa
parent 1984 df7436f439a0
child 1986 719cf07b076d
child 1987 04c17fc39c84
Adapted behaviour of ui.username() to documentation and mention it explicitly: Searched in this order: $HGUSER, [ui] section of hgrcs, $EMAIL and stop searching if one of these is set. Abort if found username is an empty string to force specifying the commit user elsewhere, e.g. with line option or repo hgrc. If not found, use $LOGNAME or $USERNAME +"@full.hostname".
doc/hgrc.5.txt
mercurial/ui.py
--- a/doc/hgrc.5.txt
+++ b/doc/hgrc.5.txt
@@ -257,7 +257,9 @@ ui::
   username;;
     The committer of a changeset created when running "commit".
     Typically a person's name and email address, e.g. "Fred Widget
-    <fred@example.com>".  Default is $EMAIL or username@hostname.
+    <fred@example.com>".  Default is $EMAIL or username@hostname, unless
+    username is set to an empty string, which enforces specifying the
+    username manually.
   verbose;;
     Increase the amount of output printed.  True or False.  Default is False.
 
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -141,12 +141,26 @@ class ui(object):
         return ret
 
     def username(self):
-        return (os.environ.get("HGUSER") or
-                self.config("ui", "username") or
-                os.environ.get("EMAIL") or
-                (os.environ.get("LOGNAME",
-                                os.environ.get("USERNAME", "unknown"))
-                 + '@' + socket.getfqdn()))
+        """Return default username to be used in commits.
+
+        Searched in this order: $HGUSER, [ui] section of hgrcs, $EMAIL
+        and stop searching if one of these is set.
+        Abort if found username is an empty string to force specifying
+        the commit user elsewhere, e.g. with line option or repo hgrc.
+        If not found, use $LOGNAME or $USERNAME +"@full.hostname".
+        """
+        user = os.environ.get("HGUSER")
+        if user is None:
+            user = self.config("ui", "username")
+        if user is None:
+            user = os.environ.get("EMAIL")
+        if user is None:
+            user = os.environ.get("LOGNAME") or os.environ.get("USERNAME")
+            if user:
+                user = "%s@%s" % (user, socket.getfqdn())
+        if not user:
+            raise util.Abort(_("Please specify a username."))
+        return user
 
     def shortuser(self, user):
         """Return a short representation of a user name or email address."""