10 ) |
10 ) |
11 |
11 |
12 cmdtable = {} |
12 cmdtable = {} |
13 command = registrar.command(cmdtable) |
13 command = registrar.command(cmdtable) |
14 |
14 |
15 @command('autodiff', |
15 @command(b'autodiff', |
16 [('', 'git', '', 'git upgrade mode (yes/no/auto/warn/abort)')], |
16 [(b'', b'git', b'', b'git upgrade mode (yes/no/auto/warn/abort)')], |
17 '[OPTION]... [FILE]...') |
17 b'[OPTION]... [FILE]...') |
18 def autodiff(ui, repo, *pats, **opts): |
18 def autodiff(ui, repo, *pats, **opts): |
19 diffopts = patch.difffeatureopts(ui, opts) |
19 diffopts = patch.difffeatureopts(ui, opts) |
20 git = opts.get('git', 'no') |
20 git = opts.get(b'git', b'no') |
21 brokenfiles = set() |
21 brokenfiles = set() |
22 losedatafn = None |
22 losedatafn = None |
23 if git in ('yes', 'no'): |
23 if git in (b'yes', b'no'): |
24 diffopts.git = git == 'yes' |
24 diffopts.git = git == b'yes' |
25 diffopts.upgrade = False |
25 diffopts.upgrade = False |
26 elif git == 'auto': |
26 elif git == b'auto': |
27 diffopts.git = False |
27 diffopts.git = False |
28 diffopts.upgrade = True |
28 diffopts.upgrade = True |
29 elif git == 'warn': |
29 elif git == b'warn': |
30 diffopts.git = False |
30 diffopts.git = False |
31 diffopts.upgrade = True |
31 diffopts.upgrade = True |
32 def losedatafn(fn=None, **kwargs): |
32 def losedatafn(fn=None, **kwargs): |
33 brokenfiles.add(fn) |
33 brokenfiles.add(fn) |
34 return True |
34 return True |
35 elif git == 'abort': |
35 elif git == b'abort': |
36 diffopts.git = False |
36 diffopts.git = False |
37 diffopts.upgrade = True |
37 diffopts.upgrade = True |
38 def losedatafn(fn=None, **kwargs): |
38 def losedatafn(fn=None, **kwargs): |
39 raise error.Abort('losing data for %s' % fn) |
39 raise error.Abort(b'losing data for %s' % fn) |
40 else: |
40 else: |
41 raise error.Abort('--git must be yes, no or auto') |
41 raise error.Abort(b'--git must be yes, no or auto') |
42 |
42 |
43 node1, node2 = scmutil.revpair(repo, []) |
43 node1, node2 = scmutil.revpair(repo, []) |
44 m = scmutil.match(repo[node2], pats, opts) |
44 m = scmutil.match(repo[node2], pats, opts) |
45 it = patch.diff(repo, node1, node2, match=m, opts=diffopts, |
45 it = patch.diff(repo, node1, node2, match=m, opts=diffopts, |
46 losedatafn=losedatafn) |
46 losedatafn=losedatafn) |
47 for chunk in it: |
47 for chunk in it: |
48 ui.write(chunk) |
48 ui.write(chunk) |
49 for fn in sorted(brokenfiles): |
49 for fn in sorted(brokenfiles): |
50 ui.write(('data lost for: %s\n' % fn)) |
50 ui.write((b'data lost for: %s\n' % fn)) |