Added some more machinery -- still not finished

This commit is contained in:
Guido van Rossum 1995-04-28 14:32:26 +00:00
parent 8bcd301cc6
commit ae21ced5da
1 changed files with 89 additions and 13 deletions

View File

@ -12,16 +12,64 @@ from cmdfw import CommandFrameWork
class MyFile(File):
def update(self):
print self.file, '...'
if self.lsum == self.esum == self.rsum:
print '=', self.file
return
if self.lsum and not self.erev and not self.rrev:
print '?', self.file
return
print 'X', self.file
def action(self):
"""Return a code indicating the update status of this file.
The possible return values are:
'=' -- everything's fine
'0' -- file doesn't exist anywhere
'?' -- exists locally only
'A' -- new locally
'R' -- deleted locally
'U' -- changed remotely, no changes locally
'M' -- changed locally, no changes remotely
'C' -- conflict: changed locally as well as remotely
(includes cases where the file has been added
or removed locally and remotely)
"""
if not self.eseen:
pass
return '?'
def update(self):
code = self.action()
print code, self.file
if code == 'U':
self.get()
elif code == 'C':
print "%s: conflict resolution not yet implemented" % \
self.file
def commit(self, message = ""):
code = self.action()
if code in ('A', 'M'):
self.put(message)
elif code == 'R':
print "%s: committing removes not yet implemented" % \
self.file
elif code == 'C':
print "%s: conflict resolution not yet implemented" % \
self.file
def commitcheck(self):
return self.action() != 'C'
def put(self, message = ""):
print "%s: put not yet implemented" % self.file
def get(self):
data = self.proxy.get(self.file)
f = open(self.file, 'w')
f.write(data)
f.close()
self.eseen = 1
self.esum = self.rsum
self.emtime, self.ectime = os.stat(self.file)[-2:]
self.erev = self.rrev
self.enew = 0
self.edeleted = 0
# XXX anything else?
class RCVS(CVS):
@ -38,6 +86,18 @@ class RCVS(CVS):
return e.eseen or e.rseen
files[:] = filter(ok, self.entries.keys())
files.sort()
if not files:
print "no files to be processed"
return 1
else:
return None
else:
sts = None
for file in files:
if not self.entries.has_key(file):
print "%s: nothing known" % file
sts = 1
return sts
class rcvs(CommandFrameWork):
@ -64,19 +124,35 @@ class rcvs(CommandFrameWork):
self.cvs.getremotefiles(self.proxy)
def default(self):
files = []
if self.cvs.checkfiles(files):
return 1
self.cvs.report()
def do_update(self, opts, files):
self.cvs.checkfiles(files)
if not files:
print "no files"
return
"""update [file] ..."""
if self.cvs.checkfiles(files):
return 1
for file in files:
if not self.cvs.entries.has_key(file):
print "%s: not found" % file
else:
self.cvs.entries[file].update()
def do_commit(self, opts, files):
"""commit [file] ..."""
if self.cvs.checkfiles(files):
return 1
sts = 0
for file in files:
if not self.entries[file].commitcheck():
sts = 1
if sts:
return sts
message = raw_input("One-liner: ")
for file in files:
self.entries[file].commit(message)
def main():
rcvs().run()