diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2014-07-02 10:39:12 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2014-07-02 10:39:12 +0200 |
commit | 5ae512e69f37e37431239c8da6ffa48c75684f87 (patch) | |
tree | 261aed087e3abc7c43773d5133dd8adaeda1d524 /git/util.py | |
parent | 4a0ad305883201b6b3e68494fc70089180389f6e (diff) | |
parent | d9fc8b6c06b91dfddb73d18eaa8164e64cc2600a (diff) | |
download | gitpython-5ae512e69f37e37431239c8da6ffa48c75684f87.tar.gz |
Merge pull request #167 from williamgibb/0.3
Improved retrieval of login names on posix systems.
Diffstat (limited to 'git/util.py')
-rw-r--r-- | git/util.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/git/util.py b/git/util.py index 7c257b37..88a72c0c 100644 --- a/git/util.py +++ b/git/util.py @@ -22,6 +22,10 @@ from gitdb.util import ( to_bin_sha ) +# Import the user database on unix based systems +if os.name == "posix": + import pwd + __all__ = ( "stream_copy", "join_path", "to_native_path_windows", "to_native_path_linux", "join_path_native", "Stats", "IndexFileSHA1Writer", "Iterable", "IterableList", "BlockingLockFile", "LockFile", 'Actor', 'get_user_id', 'assure_directory_exists', @@ -113,12 +117,17 @@ def assure_directory_exists(path, is_file=False): def get_user_id(): """:return: string identifying the currently active system user as name@node - :note: user can be set with the 'USER' environment variable, usually set on windows""" - ukn = 'UNKNOWN' - username = os.environ.get('USER', os.environ.get('USERNAME', ukn)) - if username == ukn and hasattr(os, 'getlogin'): - username = os.getlogin() - # END get username from login + :note: user can be set with the 'USER' environment variable, usually set on windows + :note: on unix based systems you can use the password database + to get the login name of the effective process user""" + if os.name == "posix": + username = pwd.getpwuid(os.geteuid()).pw_name + else: + ukn = 'UNKNOWN' + username = os.environ.get('USER', os.environ.get('USERNAME', ukn)) + if username == ukn and hasattr(os, 'getlogin'): + username = os.getlogin() + # END get username from login return "%s@%s" % (username, platform.node()) #} END utilities |