* src/VersionControl.py

Sort revision numbers based on numerical value instead of ASCII value.
* src/VersionControl.py
Check return values of all subprocesses


svn: r1659
This commit is contained in:
Don Allingham 2003-06-05 03:04:17 +00:00
parent 69eabdf997
commit 3320368e7f

View File

@ -30,8 +30,10 @@ import shutil
import const import const
import Utils import Utils
import ListModel import ListModel
import cStringIO
from re import compile from re import compile
from QuestionDialog import ErrorDialog
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -112,14 +114,18 @@ class RevisionSelect:
self.revlist = dialog.get_widget("revlist") self.revlist = dialog.get_widget("revlist")
l = self.vc.revision_list() l = self.vc.revision_list()
titles = [(_('Revision'),0,100),(_('Date'),1,100), (_('Changed by'),2,100), titles = [(_('Revision'),4,100),(_('Date'),1,100), (_('Changed by'),2,100),
('Comment',3,100)] (_('Comment'),3,100), ('',0,0)]
self.model = ListModel.ListModel(self.revlist,titles) self.model = ListModel.ListModel(self.revlist,titles)
index = 0 index = 0
for f in l: for f in l:
self.model.add([f[0],f[1],f[3],f[2]],f[0]) a = f[0].split('.')
revsort = ''
for v in a:
revsort = "%s.%06d" % (revsort,int(a[0]))
self.model.add([f[0],f[1],f[3],f[2],revsort],f[0])
def on_cancel_clicked(self,obj): def on_cancel_clicked(self,obj):
Utils.destroy_passed_object(obj) Utils.destroy_passed_object(obj)
@ -166,7 +172,7 @@ class VersionControl:
version - string representing the version to extract version - string representing the version to extract
target - file to extract to""" target - file to extract to"""
pass return None
class RcsVersionControl(VersionControl): class RcsVersionControl(VersionControl):
"""RCS (Revision Control System) based version control interface""" """RCS (Revision Control System) based version control interface"""
@ -191,9 +197,14 @@ class RcsVersionControl(VersionControl):
l = [] l = []
o = None o = None
d = None d = None
r,w = popen2.popen2("rlog %s" % self.vfile) proc = popen2.Popen3("rlog %s" % self.tfile,1)
proc.tochild.close()
status = proc.wait()
if status:
ErrorDialog("Error acessing revision control",proc.childerr.read())
return rlist
for line in r.readlines(): for line in proc.fromchild.readlines():
line = string.rstrip(line) line = string.rstrip(line)
if sname == 1: if sname == 1:
@ -267,8 +278,20 @@ class RcsVersionControl(VersionControl):
"""Extracts the requested version from the RCS database """Extracts the requested version from the RCS database
version_id - string containing the version to be extracted version_id - string containing the version to be extracted
target - file to extract the file to.""" target - file to extract the file to."""
r,w,e = popen2.popen3("co -p%s %s" % (version_id,self.vfile))
return r process = popen2.Popen3("co -p%s %s" % (version_id,self.vfile),1)
output = cStringIO.StringIO()
output.write(process.fromchild.read())
output.seek(0)
data = process.childerr.read()
status = process.wait()
process.tochild.close()
process.fromchild.close()
process.childerr.close()
if status != 0:
ErrorDialog(_("Could not retrieve version"),data)
return output
_version_control_list = [(RcsVersionControl, _("RCS"))] _version_control_list = [(RcsVersionControl, _("RCS"))]