summaryrefslogtreecommitdiffstats
path: root/Demo
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1995-04-28 14:32:26 (GMT)
committerGuido van Rossum <guido@python.org>1995-04-28 14:32:26 (GMT)
commitae21ced5da51e5ed74a4206ef919dba939dfaf4f (patch)
treef1ce5bfdbe29c12deaa3074ce4bd2e5bb04c8754 /Demo
parent8bcd301cc62af41622ffb02427968a8101edcbeb (diff)
downloadcpython-ae21ced5da51e5ed74a4206ef919dba939dfaf4f.zip
cpython-ae21ced5da51e5ed74a4206ef919dba939dfaf4f.tar.gz
cpython-ae21ced5da51e5ed74a4206ef919dba939dfaf4f.tar.bz2
Added some more machinery -- still not finished
Diffstat (limited to 'Demo')
-rwxr-xr-xDemo/pdist/rcvs.py102
1 files changed, 89 insertions, 13 deletions
diff --git a/Demo/pdist/rcvs.py b/Demo/pdist/rcvs.py
index 9f9d8bd..fe8651c 100755
--- a/Demo/pdist/rcvs.py
+++ b/Demo/pdist/rcvs.py
@@ -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()