parent
c1ff2c53be
commit
abdfd2d502
|
@ -1104,6 +1104,80 @@ class FileDiff(Method):
|
||||||
else:
|
else:
|
||||||
w.application.data_buffer("*Diff*", errdata, switch_to=True)
|
w.application.data_buffer("*Diff*", errdata, switch_to=True)
|
||||||
w.set_error("There was an error: %d exited with status %s" % (pid, status))
|
w.set_error("There was an error: %d exited with status %s" % (pid, status))
|
||||||
|
|
||||||
|
class SvnCommit(Method):
|
||||||
|
'''diff the current file with the version in SVN'''
|
||||||
|
args = [Argument("msg", type=type(""), prompt="Commit Message: ")]
|
||||||
|
regex = re.compile('^new revision: ([0-9.]+); previous revision: ([0-9.]+)$')
|
||||||
|
def _execute(self, w, **vargs):
|
||||||
|
if not hasattr(w.buffer, 'path'):
|
||||||
|
w.set_error("Buffer has no corresponding file")
|
||||||
|
return
|
||||||
|
|
||||||
|
cwd = os.getcwd() + os.path.sep
|
||||||
|
path = w.buffer.path
|
||||||
|
if path.startswith(cwd):
|
||||||
|
path = path[len(cwd):]
|
||||||
|
|
||||||
|
cmd = "svn ci -m %r %r" % (vargs['msg'], path)
|
||||||
|
(status, data) = commands.getstatusoutput(cmd)
|
||||||
|
status = status >> 8
|
||||||
|
lines = data.split('\n')
|
||||||
|
|
||||||
|
try:
|
||||||
|
if status == 0:
|
||||||
|
raise Exception
|
||||||
|
for line in lines:
|
||||||
|
m = self.regex.match(lines[-1])
|
||||||
|
if m:
|
||||||
|
w.set_error("Committed [%s -> %s]" % (m.group(2), m.group(1)))
|
||||||
|
return
|
||||||
|
w.set_error("Up-to-date")
|
||||||
|
except:
|
||||||
|
w.set_error("Problems with SVN commit: %d" % status)
|
||||||
|
w.application.data_buffer("*Commit*", data, switch_to=True)
|
||||||
|
|
||||||
|
class SvnStatus(Method):
|
||||||
|
column = {
|
||||||
|
' ': 'Unmodified',
|
||||||
|
'A': 'Added',
|
||||||
|
'C': 'Conflicted',
|
||||||
|
'D': 'Deleted',
|
||||||
|
'I': 'Ignored',
|
||||||
|
'M': 'Modified',
|
||||||
|
'R': 'Replaced',
|
||||||
|
'X': 'External',
|
||||||
|
'?': 'Unknown',
|
||||||
|
'!': 'Missing',
|
||||||
|
'~': 'Obstructed',
|
||||||
|
}
|
||||||
|
def _execute(self, w, **vargs):
|
||||||
|
if not hasattr(w.buffer, 'path'):
|
||||||
|
w.set_error("Buffer has no corresponding file")
|
||||||
|
return
|
||||||
|
|
||||||
|
cwd = os.getcwd() + os.path.sep
|
||||||
|
path = w.buffer.path
|
||||||
|
if path.startswith(cwd):
|
||||||
|
path = path[len(cwd):]
|
||||||
|
cmd = "svn status -v %r" % path
|
||||||
|
(status, data) = commands.getstatusoutput(cmd)
|
||||||
|
status = status >> 8
|
||||||
|
|
||||||
|
if status != 0:
|
||||||
|
w.set_error("Problems with 'svn status': %d" % status)
|
||||||
|
return
|
||||||
|
|
||||||
|
c = data[0]
|
||||||
|
status = self.column.get(c, 'Error (%s)' % c)
|
||||||
|
fields = data[6:].split()
|
||||||
|
try:
|
||||||
|
(rrev, lrev, lauthor, filename) = fields
|
||||||
|
except:
|
||||||
|
raise Exception, '%r %r' % (fields, data[6:])
|
||||||
|
|
||||||
|
w.set_error('%s %s %s/%s [%s]' % (filename, status, rrev, lrev, lauthor))
|
||||||
|
|
||||||
class SvnDiff(Method):
|
class SvnDiff(Method):
|
||||||
'''diff the current file with the version in SVN'''
|
'''diff the current file with the version in SVN'''
|
||||||
def _execute(self, w, **vargs):
|
def _execute(self, w, **vargs):
|
||||||
|
|
Loading…
Reference in New Issue