diff --git a/.hgtags b/.hgtags
new file mode 100644
index 0000000..1af47c2
--- /dev/null
+++ b/.hgtags
@@ -0,0 +1,1 @@
+1092123ef78598eade56aa9c57e484f3670c8da8 v1.9.0
diff --git a/.travis.yml b/.travis.yml
index 205f2ea..b731edf 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,7 +6,7 @@ python:
 - '3.3'
 - '3.4'
 - '3.5'
-- '3.6'
+- '3.6-dev'
 env:
 - TOXENV=py-test
 
@@ -46,4 +46,4 @@ deploy:
   - <<: *pypi
     on:
       tags: true
-    distributions: "bdist_egg"
+    distributions: "bdist_egg"
\ No newline at end of file
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 6956fae..c71114b 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -2,7 +2,7 @@ v1.15.3
 =======
 
 * bring back correctly getting our version in the own sdist, finalizes #114
-
+* fix issue #150: strip local components of tags
 
 v1.15.2
 =======
@@ -15,9 +15,6 @@ v1.15.1
 
 * fix issue #126: the local part of any tags is discarded
   when guessing new versions
-* minor performance optimization by doing fewer git calls
-  in the usual cases
-
 
 v1.15.0
 =======
diff --git a/README.rst b/README.rst
index 4262fdd..5d83ba2 100644
--- a/README.rst
+++ b/README.rst
@@ -114,18 +114,15 @@ and uses roughly the following logic to render the version:
 :code:`no distance and clean`:
     :code:`{tag}`
 :code:`distance and clean`:
-    :code:`{next_version}.dev{distance}+{scm letter}{revision hash}`
+    :code:`{next_version}.dev{distance}+n{revision hash}`
 :code:`no distance and not clean`:
     :code:`{tag}+dYYYMMMDD`
 :code:`distance and not clean`:
-    :code:`{next_version}.dev{distance}+{scm letter}{revision hash}.dYYYMMMDD`
+    :code:`{next_version}.dev{distance}+n{revision hash}.dYYYMMMDD`
 
 The next version is calculated by adding ``1`` to the last numeric component
 of the tag.
 
-For git projects, the version relies on `git describe <https://git-scm.com/docs/git-describe>`_,
-so you will see an additional ``g`` prepended to the ``{revision hash}``.
-
 Semantic Versioning (SemVer)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
diff --git a/setup.cfg b/setup.cfg
index d0092d4..f5f917c 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,10 +1,6 @@
 [bdist_wheel]
 universal=1
 
-[metadata]
-# ensure that the LICENSE file is included in the built wheels
-license_file = LICENSE
-
 [devpi:upload]
 formats=sdist,bdist_wheel
 
diff --git a/setuptools_scm/git.py b/setuptools_scm/git.py
index b60279c..e330e58 100644
--- a/setuptools_scm/git.py
+++ b/setuptools_scm/git.py
@@ -4,7 +4,7 @@ from os.path import abspath, normcase, realpath, isfile, join
 import warnings
 
 FILES_COMMAND = 'git ls-files'
-DEFAULT_DESCRIBE = 'git describe --dirty --tags --long --match *.*'
+DEFAULT_DESCRIBE = 'git describe --tags --long --match *.*'
 
 
 def _normalized(path):
@@ -83,31 +83,21 @@ def parse(root, describe_command=DEFAULT_DESCRIBE, pre_parse=warn_on_shallow):
         return
     if pre_parse:
         pre_parse(wd)
+    rev_node = wd.node()
+    dirty = wd.is_dirty()
+
+    if rev_node is None:
+        return meta('0.0', distance=0, dirty=dirty)
 
     out, err, ret = do_ex(describe_command, root)
     if ret:
-        # If 'git describe' failed, try to get the information otherwise.
-        rev_node = wd.node()
-        dirty = wd.is_dirty()
-
-        if rev_node is None:
-            return meta('0.0', distance=0, dirty=dirty)
-
         return meta(
             '0.0',
             distance=wd.count_all_nodes(),
-            node='g' + rev_node,
+            node=rev_node,
             dirty=dirty,
         )
 
-    # 'out' looks e.g. like 'v1.5.0-0-g4060507' or
-    # 'v1.15.1rc1-37-g9bd1298-dirty'.
-    if out.endswith('-dirty'):
-        dirty = True
-        out = out[:-6]
-    else:
-        dirty = False
-
     tag, number, node = out.rsplit('-', 2)
     number = int(number)
     if number:
diff --git a/setuptools_scm/hg.py b/setuptools_scm/hg.py
index cda5fc3..9e126a2 100644
--- a/setuptools_scm/hg.py
+++ b/setuptools_scm/hg.py
@@ -7,7 +7,7 @@ FILES_COMMAND = 'hg locate -I .'
 
 def _hg_tagdist_normalize_tagcommit(root, tag, dist, node):
     dirty = node.endswith('+')
-    node = 'h' + node.strip('+')
+    node = node.strip('+')
     revset = ("(branch(.) and tag({tag!r})::. and file('re:^(?!\.hgtags).*$')"
               " - tag({tag!r}))").format(tag=tag)
     if tag != '0.0':
@@ -58,17 +58,14 @@ def parse(root):
 
 def archival_to_version(data):
     trace('data', data)
-    node = data.get('node', '')[:12]
-    if node:
-        node = 'h' + node
     if 'tag' in data:
         return meta(data['tag'])
     elif 'latesttag' in data:
         return meta(data['latesttag'],
                     distance=data['latesttagdistance'],
-                    node=node)
+                    node=data['node'][:12])
     else:
-        return meta('0.0', node=node)
+        return meta('0.0', node=data.get('node', '')[:12])
 
 
 def parse_archival(root):
diff --git a/setuptools_scm/version.py b/setuptools_scm/version.py
index 042644c..d2caf3d 100644
--- a/setuptools_scm/version.py
+++ b/setuptools_scm/version.py
@@ -1,5 +1,6 @@
 from __future__ import print_function
 import datetime
+import warnings
 import re
 from .utils import trace
 
@@ -31,8 +32,12 @@ def callable_or_entrypoint(group, callable_or_name):
 
 def tag_to_version(tag):
     trace('tag', tag)
+    if '+' in tag:
+        warnings.warn("tag %r will be stripped of the local component" % tag)
+        tag = tag.split('+')[0]
     # lstrip the v because of py2/py3 differences in setuptools
     # also required for old versions of setuptools
+
     version = tag.rsplit('-', 1)[-1].lstrip('v')
     if parse_version is None:
         return version
@@ -125,7 +130,7 @@ def get_local_node_and_date(version):
     if version.exact or version.node is None:
         return version.format_choice("", "+d{time:%Y%m%d}")
     else:
-        return version.format_choice("+{node}", "+{node}.d{time:%Y%m%d}")
+        return version.format_choice("+n{node}", "+n{node}.d{time:%Y%m%d}")
 
 
 def get_local_dirty_tag(version):

cant parse version None
With a repo on an oddly-tagged commit,

```
$ git describe --all
23.46.2post210+gbe48adfpost3+g0cc25f2
```

I get an odd error message for `setuptools_scm.get_version()`:

```
$ rwt -q setuptools_scm==1.15.0 -- -c "import setuptools_scm; setuptools_scm.get_version()"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/rwt-d1ylkuc8/setuptools_scm/__init__.py", line 117, in get_version
    parsed_version = _do_parse(root, parse)
  File "/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/rwt-d1ylkuc8/setuptools_scm/__init__.py", line 82, in _do_parse
    version = version_from_scm(root)
  File "/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/rwt-d1ylkuc8/setuptools_scm/__init__.py", line 31, in version_from_scm
    return _version_from_entrypoint(root, 'setuptools_scm.parse_scm')
  File "/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/rwt-d1ylkuc8/setuptools_scm/__init__.py", line 37, in _version_from_entrypoint
    return ep.load()(root)
  File "/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/rwt-d1ylkuc8/setuptools_scm/git.py", line 103, in parse
    return meta(tag, node=node, dirty=dirty)
  File "/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/rwt-d1ylkuc8/setuptools_scm/version.py", line 86, in meta
    assert tag is not None, 'cant parse version %s' % tag
AssertionError: cant parse version None
```

I would expect the tag it couldn't parse to be `23.46.2post210+gbe48adfpost3+g0cc25f2` and not `None`.
diff --git a/testing/test_git.py b/testing/test_git.py
index 9e951a9..5e60d42 100644
--- a/testing/test_git.py
+++ b/testing/test_git.py
@@ -19,21 +19,25 @@ def test_version_from_git(wd):
     assert wd.version == '0.1.dev0'
 
     wd.commit_testfile()
-    assert wd.version.startswith('0.1.dev1+g')
+    assert wd.version.startswith('0.1.dev1+')
     assert not wd.version.endswith('1-')
 
     wd('git tag v0.1')
     assert wd.version == '0.1'
 
     wd.write('test.txt', 'test2')
-    assert wd.version.startswith('0.2.dev0+g')
+    assert wd.version.startswith('0.2.dev0+')
 
     wd.commit_testfile()
-    assert wd.version.startswith('0.2.dev1+g')
+    assert wd.version.startswith('0.2.dev1+')
 
     wd('git tag version-0.2')
     assert wd.version.startswith('0.2')
 
+    wd.commit_testfile()
+    wd('git tag version-0.2.post210+gbe48adfpost3+g0cc25f2')
+    assert wd.version.startswith('0.2')
+
 
 @pytest.mark.issue(108)
 @pytest.mark.issue(109)
@@ -101,4 +105,4 @@ def test_parse_no_worktree(tmpdir):
 def test_alphanumeric_tags_match(wd):
     wd.commit_testfile()
     wd('git tag newstyle-development-started')
-    assert wd.version.startswith('0.1.dev1+g')
+    assert wd.version.startswith('0.1.dev1+')
diff --git a/testing/test_mercurial.py b/testing/test_mercurial.py
index 1fe6841..100094e 100644
--- a/testing/test_mercurial.py
+++ b/testing/test_mercurial.py
@@ -15,7 +15,7 @@ def wd(wd):
 
 archival_mapping = {
     '1.0': {'tag': '1.0'},
-    '1.1.dev3+h000000000000': {
+    '1.1.dev3+n000000000000': {
         'latesttag': '1.0',
         'latesttagdistance': '3',
         'node': '0'*20,
@@ -91,7 +91,7 @@ def test_version_from_archival(wd):
         'latesttagdistance: 3\n'
     )
 
-    assert wd.version == '0.2.dev3+h000000000000'
+    assert wd.version == '0.2.dev3+n000000000000'
 
 
 @pytest.mark.issue('#72')
diff --git a/testing/test_regressions.py b/testing/test_regressions.py
index 9d24d61..4a067b3 100644
--- a/testing/test_regressions.py
+++ b/testing/test_regressions.py
@@ -18,16 +18,16 @@ def test_pkginfo_noscmroot(tmpdir, monkeypatch):
         'from setuptools import setup;'
         'setup(use_scm_version={"root": ".."})')
 
-    _, stderr, ret = do_ex((sys.executable, 'setup.py', '--version'), p)
+    _, stderr, ret = do_ex('python setup.py --version', p)
     assert 'setuptools-scm was unable to detect version for' in stderr
     assert ret == 1
 
     p.join("PKG-INFO").write('Version: 1.0')
-    res = do((sys.executable, 'setup.py', '--version'), p)
+    res = do('python setup.py --version', p)
     assert res == '1.0'
 
     do('git init', p.dirpath())
-    res = do((sys.executable, 'setup.py', '--version'), p)
+    res = do('python setup.py --version', p)
     assert res == '1.0'
 
 
@@ -64,7 +64,7 @@ setup(use_scm_version=vcfg)
 ''')
     p.join("PKG-INFO").write('Version: 1.0')
 
-    res = do((sys.executable, 'setup.py', '--version'), p)
+    res = do('python setup.py --version', p)
     assert res == '1.0'
 
 

pip install -e .[dev]
parse_log_pytest
pytest
pytest flake8 wheel twine
python setup.py egg_info
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs @ file:///opt/conda/conda-bld/attrs_1642510447205/work
bleach==4.1.0
certifi==2021.5.30
cffi==1.15.1
charset-normalizer==2.0.12
colorama==0.4.5
cryptography==40.0.2
docutils==0.18.1
flake8==5.0.4
idna==3.10
importlib-metadata==4.2.0
importlib-resources==5.4.0
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
jeepney==0.7.1
keyring==23.4.1
mccabe==0.7.0
more-itertools @ file:///tmp/build/80754af9/more-itertools_1637733554872/work
packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work
pkginfo==1.10.0
pluggy @ file:///tmp/build/80754af9/pluggy_1615976315926/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pycodestyle==2.9.1
pycparser==2.21
pyflakes==2.5.0
Pygments==2.14.0
pyparsing @ file:///tmp/build/80754af9/pyparsing_1635766073266/work
pytest==6.2.4
readme-renderer==34.0
requests==2.27.1
requests-toolbelt==1.0.0
rfc3986==1.5.0
SecretStorage==3.3.3
-e git+https://github.com/pypa/setuptools_scm.git@10d75f60b0e7a949c6ad7f108a0cc1a044290fce#egg=setuptools_scm
six==1.17.0
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
tqdm==4.64.1
twine==3.8.0
typing_extensions @ file:///opt/conda/conda-bld/typing_extensions_1647553014482/work
urllib3==1.26.20
webencodings==0.5.1
zipp @ file:///tmp/build/80754af9/zipp_1633618647012/work

name: setuptools_scm
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=21.4.0=pyhd3eb1b0_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - importlib_metadata=4.8.1=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - more-itertools=8.12.0=pyhd3eb1b0_0
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=21.3=pyhd3eb1b0_0
  - pip=21.2.2=py36h06a4308_0
  - pluggy=0.13.1=py36h06a4308_0
  - py=1.11.0=pyhd3eb1b0_0
  - pyparsing=3.0.4=pyhd3eb1b0_0
  - pytest=6.2.4=py36h06a4308_2
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd3eb1b0_0
  - typing_extensions=4.1.1=pyh06a4308_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.6.0=pyhd3eb1b0_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - bleach==4.1.0
      - cffi==1.15.1
      - charset-normalizer==2.0.12
      - colorama==0.4.5
      - cryptography==40.0.2
      - docutils==0.18.1
      - flake8==5.0.4
      - idna==3.10
      - importlib-metadata==4.2.0
      - importlib-resources==5.4.0
      - jeepney==0.7.1
      - keyring==23.4.1
      - mccabe==0.7.0
      - pkginfo==1.10.0
      - pycodestyle==2.9.1
      - pycparser==2.21
      - pyflakes==2.5.0
      - pygments==2.14.0
      - readme-renderer==34.0
      - requests==2.27.1
      - requests-toolbelt==1.0.0
      - rfc3986==1.5.0
      - secretstorage==3.3.3
      - six==1.17.0
      - tqdm==4.64.1
      - twine==3.8.0
      - urllib3==1.26.20
      - webencodings==0.5.1
prefix: /opt/conda/envs/setuptools_scm

testing/test_mercurial.py::test_archival_to_version[1.1.dev3+n000000000000-data2] testing/test_mercurial.py::test_version_from_archival
testing/test_mercurial.py::test_archival_to_version[1.2.2.dev0-data4]
testing/test_git.py::test_version_from_git testing/test_git.py::test_git_worktree testing/test_git.py::test_git_dirty_notag testing/test_git.py::test_git_parse_shallow_warns testing/test_git.py::test_git_parse_shallow_fail testing/test_git.py::test_git_shallow_autocorrect testing/test_git.py::test_find_files_stop_at_root_git testing/test_git.py::test_parse_no_worktree testing/test_git.py::test_alphanumeric_tags_match testing/test_mercurial.py::test_archival_to_version[0.0-data0] testing/test_mercurial.py::test_archival_to_version[1.0-data1] testing/test_mercurial.py::test_archival_to_version[1.2.2-data3] testing/test_mercurial.py::test_find_files_stop_at_root_hg testing/test_mercurial.py::test_version_from_hg_id testing/test_mercurial.py::test_version_in_merge testing/test_mercurial.py::test_parse_no_worktree testing/test_regressions.py::test_pkginfo_noscmroot testing/test_regressions.py::test_pip_egg_info testing/test_regressions.py::test_use_scm_version_callable
README.rst setuptools_scm/version.py .hgtags CHANGELOG.rst .travis.yml setuptools_scm/hg.py setup.cfg setuptools_scm/git.py
README.rst setuptools_scm/version.py .hgtags CHANGELOG.rst .travis.yml setuptools_scm/hg.py setup.cfg setuptools_scm/git.py