annotate contrib/hg-interdiff @ 1109:e1ca493f011d
2.8.4 first 2 para zh translated
author |
Zhaoping Sun <zhaopingsun@gmail.com> |
date |
Wed Dec 23 23:29:17 2009 -0500 (2009-12-23) |
parents |
f992b16d18a1 |
children |
|
rev |
line source |
bos@106
|
1 #!/usr/bin/env python
|
bos@106
|
2 #
|
bos@106
|
3 # Adapter for using interdiff with mercurial's extdiff extension.
|
bos@127
|
4 #
|
bos@106
|
5 # Copyright 2006 Bryan O'Sullivan <bos@serpentine.com>
|
bos@127
|
6 #
|
bos@127
|
7 # This software may be used and distributed according to the terms of
|
bos@127
|
8 # the GNU General Public License, incorporated herein by reference.
|
bos@106
|
9
|
bos@106
|
10 import os, sys
|
bos@106
|
11
|
bos@106
|
12 def walk(base):
|
bos@106
|
13 # yield all non-directories below the base path.
|
bos@106
|
14 for root, dirs, files in os.walk(base):
|
bos@106
|
15 for f in files:
|
bos@106
|
16 path = os.path.join(root, f)
|
bos@106
|
17 yield path[len(base)+1:], path
|
njriley@286
|
18 else:
|
njriley@286
|
19 if os.path.isfile(base):
|
njriley@286
|
20 yield '', base
|
bos@106
|
21
|
bos@106
|
22 # create list of unique file names under both directories.
|
bos@106
|
23 files = dict(walk(sys.argv[1]))
|
bos@106
|
24 files.update(walk(sys.argv[2]))
|
bos@106
|
25 files = files.keys()
|
bos@106
|
26 files.sort()
|
bos@106
|
27
|
bos@106
|
28 def name(base, f):
|
njriley@286
|
29 if f:
|
njriley@286
|
30 path = os.path.join(base, f)
|
njriley@286
|
31 else:
|
njriley@286
|
32 path = base
|
bos@106
|
33 # interdiff requires two files; use /dev/null if one is missing.
|
bos@106
|
34 if os.path.exists(path):
|
bos@106
|
35 return path
|
bos@106
|
36 return '/dev/null'
|
bos@106
|
37
|
bos@106
|
38 ret = 0
|
bos@106
|
39
|
bos@106
|
40 for f in files:
|
bos@106
|
41 if os.system('interdiff "%s" "%s"' % (name(sys.argv[1], f),
|
bos@106
|
42 name(sys.argv[2], f))):
|
bos@106
|
43 ret = 1
|
bos@106
|
44
|
bos@106
|
45 sys.exit(ret)
|