diff options
author | Guido van Rossum <guido@python.org> | 1995-04-28 14:32:26 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1995-04-28 14:32:26 (GMT) |
commit | ae21ced5da51e5ed74a4206ef919dba939dfaf4f (patch) | |
tree | f1ce5bfdbe29c12deaa3074ce4bd2e5bb04c8754 /Demo/pdist/rcvs.py | |
parent | 8bcd301cc62af41622ffb02427968a8101edcbeb (diff) | |
download | cpython-ae21ced5da51e5ed74a4206ef919dba939dfaf4f.zip cpython-ae21ced5da51e5ed74a4206ef919dba939dfaf4f.tar.gz cpython-ae21ced5da51e5ed74a4206ef919dba939dfaf4f.tar.bz2 |
Added some more machinery -- still not finished
Diffstat (limited to 'Demo/pdist/rcvs.py')
-rwxr-xr-x | Demo/pdist/rcvs.py | 102 |
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() |