Show More
@@ -97,7 +97,21 b' try:' | |||||
97 | except ImportError: |
|
97 | except ImportError: | |
98 | pass |
|
98 | pass | |
99 |
|
99 | |||
100 | version = None |
|
100 | def runcmd(cmd): | |
|
101 | p = subprocess.Popen(cmd, stdout=subprocess.PIPE, | |||
|
102 | stderr=subprocess.PIPE, env=env) | |||
|
103 | out, err = p.communicate() | |||
|
104 | # If root is executing setup.py, but the repository is owned by | |||
|
105 | # another user (as in "sudo python setup.py install") we will get | |||
|
106 | # trust warnings since the .hg/hgrc file is untrusted. That is | |||
|
107 | # fine, we don't want to load it anyway. | |||
|
108 | err = [e for e in err.splitlines() | |||
|
109 | if not e.startswith('Not trusting file')] | |||
|
110 | if err: | |||
|
111 | return '' | |||
|
112 | return out | |||
|
113 | ||||
|
114 | version = '' | |||
101 |
|
115 | |||
102 | if os.path.isdir('.hg'): |
|
116 | if os.path.isdir('.hg'): | |
103 | # Execute hg out of this directory with a custom environment which |
|
117 | # Execute hg out of this directory with a custom environment which | |
@@ -113,34 +127,28 b" if os.path.isdir('.hg'):" | |||||
113 | # error 0xc0150004. See: http://bugs.python.org/issue3440 |
|
127 | # error 0xc0150004. See: http://bugs.python.org/issue3440 | |
114 | env['SystemRoot'] = os.environ['SystemRoot'] |
|
128 | env['SystemRoot'] = os.environ['SystemRoot'] | |
115 | cmd = [sys.executable, 'hg', 'id', '-i', '-t'] |
|
129 | cmd = [sys.executable, 'hg', 'id', '-i', '-t'] | |
116 |
|
130 | l = runcmd(cmd).split() | ||
117 | p = subprocess.Popen(cmd, stdout=subprocess.PIPE, |
|
131 | while len(l) > 1 and l[-1][0].isalpha(): # remove non-numbered tags | |
118 | stderr=subprocess.PIPE, env=env) |
|
132 | l.pop() | |
119 | out, err = p.communicate() |
|
133 | if len(l) > 1: # tag found | |
120 |
|
134 | version = l[-1] | ||
121 | # If root is executing setup.py, but the repository is owned by |
|
135 | if l[0].endswith('+'): # propagate the dirty status to the tag | |
122 | # another user (as in "sudo python setup.py install") we will get |
|
136 | version += '+' | |
123 | # trust warnings since the .hg/hgrc file is untrusted. That is |
|
137 | elif len(l) == 1: # no tag found | |
124 | # fine, we don't want to load it anyway. |
|
138 | cmd = [sys.executable, 'hg', 'parents', '--template', | |
125 | err = [e for e in err.splitlines() |
|
139 | '{latesttag}+{latesttagdistance}-'] | |
126 | if not e.startswith('Not trusting file')] |
|
140 | version = runcmd(cmd) + l[0] | |
127 | if err: |
|
141 | if version.endswith('+'): | |
128 | sys.stderr.write('warning: could not establish Mercurial ' |
|
142 | version += time.strftime('%Y%m%d') | |
129 | 'version:\n%s\n' % '\n'.join(err)) |
|
143 | elif os.path.exists('.hg_archival.txt'): | |
|
144 | kw = dict([t.strip() for t in l.split(':', 1)] | |||
|
145 | for l in open('.hg_archival.txt')) | |||
|
146 | if 'tag' in kw: | |||
|
147 | version = kw['tag'] | |||
|
148 | elif 'latesttag' in kw: | |||
|
149 | version = '%(latesttag)s+%(latesttagdistance)s-%(node).12s' % kw | |||
130 | else: |
|
150 | else: | |
131 | l = out.split() |
|
151 | version = kw.get('node', '')[:12] | |
132 | while len(l) > 1 and l[-1][0].isalpha(): # remove non-numbered tags |
|
|||
133 | l.pop() |
|
|||
134 | if l: |
|
|||
135 | version = l[-1] # latest tag or revision number |
|
|||
136 | if version.endswith('+'): |
|
|||
137 | version += time.strftime('%Y%m%d') |
|
|||
138 | elif os.path.exists('.hg_archival.txt'): |
|
|||
139 | hgarchival = open('.hg_archival.txt') |
|
|||
140 | for line in hgarchival: |
|
|||
141 | if line.startswith('node:'): |
|
|||
142 | version = line.split(':')[1].strip()[:12] |
|
|||
143 | break |
|
|||
144 |
|
152 | |||
145 | if version: |
|
153 | if version: | |
146 | f = open("mercurial/__version__.py", "w") |
|
154 | f = open("mercurial/__version__.py", "w") |
General Comments 0
You need to be logged in to leave comments.
Login now