diff --git a/mmdet/__init__.py b/mmdet/__init__.py
index 58f3ace6c03d093337c9fa417ccbe8bc267b6c69..8b5e1ac77ad2a9596409bba4464f746d56ef3176 100644
--- a/mmdet/__init__.py
+++ b/mmdet/__init__.py
@@ -1 +1 @@
-from .version import __version__
+from .version import __version__, short_version
diff --git a/mmdet/version.py b/mmdet/version.py
deleted file mode 100644
index 2b8877c505752cd3aaa805b09b88791d3ca0c9bb..0000000000000000000000000000000000000000
--- a/mmdet/version.py
+++ /dev/null
@@ -1 +0,0 @@
-__version__ = '0.5.0'
diff --git a/setup.py b/setup.py
index 759e8ebf37e0f197dfc8575ad33777584a470e3a..02dede74779edf0c281884b0b935b71691ee1af8 100644
--- a/setup.py
+++ b/setup.py
@@ -1,3 +1,6 @@
+import os
+import subprocess
+import time
 from setuptools import find_packages, setup
 
 
@@ -7,34 +10,99 @@ def readme():
     return content
 
 
+MAJOR = 0
+MINOR = 5
+PATCH = 0
+SUFFIX = ''
+SHORT_VERSION = '{}.{}.{}{}'.format(MAJOR, MINOR, PATCH, SUFFIX)
+
+version_file = 'mmdet/version.py'
+
+
+def get_git_hash():
+
+    def _minimal_ext_cmd(cmd):
+        # construct minimal environment
+        env = {}
+        for k in ['SYSTEMROOT', 'PATH', 'HOME']:
+            v = os.environ.get(k)
+            if v is not None:
+                env[k] = v
+        # LANGUAGE is used on win32
+        env['LANGUAGE'] = 'C'
+        env['LANG'] = 'C'
+        env['LC_ALL'] = 'C'
+        out = subprocess.Popen(
+            cmd, stdout=subprocess.PIPE, env=env).communicate()[0]
+        return out
+
+    try:
+        out = _minimal_ext_cmd(['git', 'rev-parse', 'HEAD'])
+        sha = out.strip().decode('ascii')
+    except OSError:
+        sha = 'unknown'
+
+    return sha
+
+
+def get_hash():
+    if os.path.exists('.git'):
+        sha = get_git_hash()[:7]
+    elif os.path.exists(version_file):
+        try:
+            from mmdet.version import __version__
+            sha = __version__.split('+')[-1]
+        except ImportError:
+            raise ImportError('Unable to get git version')
+    else:
+        sha = 'unknown'
+
+    return sha
+
+
+def write_version_py():
+    content = """# GENERATED VERSION FILE 
+# TIME: {}
+
+__version__ = '{}'
+short_version = '{}'
+"""
+    sha = get_hash()
+    VERSION = SHORT_VERSION + '+' + sha
+
+    with open(version_file, 'w') as f:
+        f.write(content.format(time.asctime(), VERSION, SHORT_VERSION))
+
+
 def get_version():
-    version_file = 'mmdet/version.py'
     with open(version_file, 'r') as f:
         exec(compile(f.read(), version_file, 'exec'))
     return locals()['__version__']
 
 
-setup(
-    name='mmdet',
-    version=get_version(),
-    description='Open MMLab Detection Toolbox',
-    long_description=readme(),
-    keywords='computer vision, object detection',
-    packages=find_packages(),
-    classifiers=[
-        'Development Status :: 4 - Beta',
-        'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
-        'Operating System :: OS Independent',
-        'Programming Language :: Python :: 2',
-        'Programming Language :: Python :: 2.7',
-        'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.4',
-        'Programming Language :: Python :: 3.5',
-        'Programming Language :: Python :: 3.6',
-        'Topic :: Utilities',
-    ],
-    license='GPLv3',
-    setup_requires=['pytest-runner'],
-    tests_require=['pytest'],
-    install_requires=['numpy', 'matplotlib', 'six', 'terminaltables'],
-    zip_safe=False)
+if __name__ == '__main__':
+    write_version_py()
+    setup(
+        name='mmdet',
+        version=get_version(),
+        description='Open MMLab Detection Toolbox',
+        long_description=readme(),
+        keywords='computer vision, object detection',
+        packages=find_packages(),
+        classifiers=[
+            'Development Status :: 4 - Beta',
+            'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
+            'Operating System :: OS Independent',
+            'Programming Language :: Python :: 2',
+            'Programming Language :: Python :: 2.7',
+            'Programming Language :: Python :: 3',
+            'Programming Language :: Python :: 3.4',
+            'Programming Language :: Python :: 3.5',
+            'Programming Language :: Python :: 3.6',
+            'Topic :: Utilities',
+        ],
+        license='GPLv3',
+        setup_requires=['pytest-runner'],
+        tests_require=['pytest'],
+        install_requires=['numpy', 'matplotlib', 'six', 'terminaltables'],
+        zip_safe=False)