comparison cmdutil.py @ 256:7932d098cb5f

Refactor commands to wrap their hg equivalent adding a --svn flag where sane.
author Augie Fackler <durin42@gmail.com>
date Fri, 10 Apr 2009 18:47:18 -0500
parents 9ba31af57e4b
children ffccf0080e54
comparison
equal deleted inserted replaced
255:246aaefb1cc0 256:7932d098cb5f
1 #!/usr/bin/python 1 #!/usr/bin/python
2 import re 2 import re
3 import os
3 4
4 from mercurial import util as hgutil 5 from mercurial import util as hgutil
5 6
6 from svn import core 7 from svn import core
7 8
20 21
21 class NoFilesException(Exception): 22 class NoFilesException(Exception):
22 """Exception raised when you try and commit without files. 23 """Exception raised when you try and commit without files.
23 """ 24 """
24 25
25 26 def formatrev(rev):
26 def filterdiff(diff, base_revision): 27 if rev == -1:
28 return '\t(working copy)'
29 return '\t(revision %d)' % rev
30
31
32 def filterdiff(diff, oldrev, newrev):
27 diff = newfile_devnull_re.sub(r'--- \1\t(revision 0)' '\n' 33 diff = newfile_devnull_re.sub(r'--- \1\t(revision 0)' '\n'
28 r'+++ \1\t(working copy)', 34 r'+++ \1\t(working copy)',
29 diff) 35 diff)
30 diff = a_re.sub(r'--- \1'+ ('\t(revision %d)' % base_revision), diff) 36 oldrev = formatrev(oldrev)
31 diff = b_re.sub(r'+++ \1' + '\t(working copy)', diff) 37 newrev = formatrev(newrev)
32 diff = devnull_re.sub(r'\1 /dev/null' '\t(working copy)', diff) 38 diff = a_re.sub(r'--- \1'+ oldrev, diff)
33 39 diff = b_re.sub(r'+++ \1' + newrev, diff)
40 diff = devnull_re.sub(r'\1 /dev/null\t(working copy)', diff)
34 diff = header_re.sub(r'Index: \1' + '\n' + ('=' * 67), diff) 41 diff = header_re.sub(r'Index: \1' + '\n' + ('=' * 67), diff)
35 return diff 42 return diff
36 43
37 44
38 def parentrev(ui, repo, hge, svn_commit_hashes): 45 def parentrev(ui, repo, hge, svn_commit_hashes):
268 if hasattr(e, 'apr_err') and (e.apr_err == core.SVN_ERR_FS_TXN_OUT_OF_DATE 275 if hasattr(e, 'apr_err') and (e.apr_err == core.SVN_ERR_FS_TXN_OUT_OF_DATE
269 or e.apr_err == core.SVN_ERR_FS_CONFLICT): 276 or e.apr_err == core.SVN_ERR_FS_CONFLICT):
270 raise hgutil.Abort('Base text was out of date, maybe rebase?') 277 raise hgutil.Abort('Base text was out of date, maybe rebase?')
271 else: 278 else:
272 raise 279 raise
280
281 def filecheck(path):
282 for x in ('locks', 'hooks', 'format', 'db', ):
283 if not os.path.exists(os.path.join(path, x)):
284 return False
285 return True
286
287
288 def issvnurl(url):
289 return url.startswith('svn+') or (
290 url.startswith('file://') and
291 reduce(lambda x,y: x and y,
292 map(lambda p: os.path.exists(os.path.join(url[7:], p)),
293 ('locks', 'hooks', 'format', 'db', ))))