Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/patch.py @ 7267:6a51ca1e05c3
patch: rewrite diffstat with util.filter()
Simpler and works under Windows.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Mon, 27 Oct 2008 22:57:55 +0100 |
parents | c4461ea8b4c8 |
children | b6f5490effbf |
comparison
equal
deleted
inserted
replaced
7266:e7f6401584f7 | 7267:6a51ca1e05c3 |
---|---|
1320 single(rev, seqno+1, fp) | 1320 single(rev, seqno+1, fp) |
1321 | 1321 |
1322 def diffstat(patchlines): | 1322 def diffstat(patchlines): |
1323 if not util.find_exe('diffstat'): | 1323 if not util.find_exe('diffstat'): |
1324 return | 1324 return |
1325 fd, name = tempfile.mkstemp(prefix="hg-patchbomb-", suffix=".txt") | 1325 output = util.filter('\n'.join(patchlines), |
1326 try: | 1326 'diffstat -p1 -w79 2>%s' % util.nulldev) |
1327 p = util.Popen3('diffstat -p1 -w79 2>/dev/null > ' + name) | 1327 stat = [l.lstrip() for l in output.splitlines(True)] |
1328 try: | 1328 last = stat.pop() |
1329 for line in patchlines: | 1329 stat.insert(0, last) |
1330 p.tochild.write(line + "\n") | 1330 stat = ''.join(stat) |
1331 p.tochild.close() | 1331 return stat |
1332 if p.wait(): return | |
1333 fp = os.fdopen(fd, 'r') | |
1334 stat = [] | |
1335 for line in fp: stat.append(line.lstrip()) | |
1336 last = stat.pop() | |
1337 stat.insert(0, last) | |
1338 stat = ''.join(stat) | |
1339 return stat | |
1340 except: raise | |
1341 finally: | |
1342 try: os.unlink(name) | |
1343 except: pass |