Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ec8cfd4

Browse files
committed
largely rewritten FileClass and RCVS
1 parent 1c653bd commit ec8cfd4

1 file changed

Lines changed: 70 additions & 48 deletions

File tree

Demo/pdist/rcvs.py

Lines changed: 70 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ def action(self):
3434
'c' -- create entry
3535
'u' -- update entry
3636
"""
37+
if not self.lseen:
38+
self.getlocal()
39+
if not self.rseen:
40+
self.getremote()
3741
if not self.eseen:
3842
if not self.lseen:
3943
if not self.rseen: return '0' # Never heard of
@@ -114,6 +118,7 @@ def commit(self, message = ""):
114118
self.file
115119

116120
def diff(self, opts = []):
121+
self.action() # To update lseen, rseen
117122
if self.lsum == self.rsum:
118123
return
119124
import tempfile
@@ -170,25 +175,63 @@ class RCVS(CVS):
170175
def __init__(self):
171176
CVS.__init__(self)
172177

173-
def checkfiles(self, files):
174-
if not files:
175-
def ok(file, self=self):
176-
e = self.entries[file]
177-
return e.eseen or e.rseen
178-
files[:] = filter(ok, self.entries.keys())
179-
files.sort()
180-
if not files:
181-
print "no files to be processed"
182-
return 1
183-
else:
184-
return None
185-
else:
186-
sts = None
178+
def update(self, files):
179+
for e in self.whichentries(files, 1):
180+
e.update()
181+
182+
def commit(self, files, message = ""):
183+
list = self.whichentries(files)
184+
ok = 1
185+
for e in list:
186+
if not e.commitcheck():
187+
ok = 0
188+
if not ok:
189+
print "correct above errors first"
190+
return
191+
if not message:
192+
message = raw_input("One-liner: ")
193+
for e in list:
194+
e.commit(message)
195+
196+
def report(self, files):
197+
for e in self.whichentries(files):
198+
e.report()
199+
200+
def diff(self, files, opts):
201+
for e in self.whichentries(files):
202+
e.diff(opts)
203+
204+
def whichentries(self, files, localfilestoo = 0):
205+
if files:
206+
list = []
187207
for file in files:
188-
if not self.entries.has_key(file):
189-
print "%s: nothing known" % file
190-
sts = 1
191-
return sts
208+
if self.entries.has_key(file):
209+
e = self.entries[file]
210+
else:
211+
e = self.FileClass(file)
212+
self.entries[file] = e
213+
list.append(e)
214+
else:
215+
list = self.entries.values()
216+
for file in self.proxy.listfiles():
217+
if self.entries.has_key(file):
218+
continue
219+
e = self.FileClass(file)
220+
self.entries[file] = e
221+
list.append(e)
222+
if localfilestoo:
223+
for file in os.listdir(os.curdir):
224+
if not self.entries.has_key(file) \
225+
and not self.ignored(file):
226+
e = self.FileClass(file)
227+
self.entries[file] = e
228+
list.append(e)
229+
list.sort()
230+
if self.proxy:
231+
for e in list:
232+
if e.proxy is None:
233+
e.proxy = self.proxy
234+
return list
192235

193236

194237
class rcvs(CommandFrameWork):
@@ -213,50 +256,29 @@ def ready(self):
213256
self.proxy = rcsclient.openrcsclient(self.opts)
214257
self.cvs.setproxy(self.proxy)
215258
self.cvs.getentries()
216-
self.cvs.getlocalfiles()
217-
self.cvs.getremotefiles(self.proxy)
218259

219260
def default(self):
220-
files = []
221-
if self.cvs.checkfiles(files):
222-
return 1
223-
for file in files:
224-
print self.cvs.entries[file].action(), file
261+
self.cvs.report([])
225262

226263
def do_update(self, opts, files):
227264
"""update [file] ..."""
228-
if self.cvs.checkfiles(files):
229-
return 1
230-
for file in files:
231-
if not self.cvs.entries.has_key(file):
232-
print "%s: not found" % file
233-
else:
234-
self.cvs.entries[file].update()
265+
self.cvs.update(files)
235266
self.cvs.putentries()
236267
do_up = do_update
237268

238269
def do_commit(self, opts, files):
239-
"""commit [file] ..."""
240-
if self.cvs.checkfiles(files):
241-
return 1
242-
sts = 0
243-
for file in files:
244-
if not self.cvs.entries[file].commitcheck():
245-
sts = 1
246-
if sts:
247-
return sts
248-
message = raw_input("One-liner: ")
249-
for file in files:
250-
self.cvs.entries[file].commit(message)
270+
"""commit [-m message] [file] ..."""
271+
message = ""
272+
for o, a in opts:
273+
if o == '-m': message = a
274+
self.cvs.commit(files, message)
251275
self.cvs.putentries()
252276
do_com = do_commit
277+
flags_commit = 'm:'
253278

254279
def do_diff(self, opts, files):
255280
"""diff [difflags] [file] ..."""
256-
if self.cvs.checkfiles(files):
257-
return 1
258-
for file in files:
259-
self.cvs.entries[file].diff(opts)
281+
self.cvs.diff(files, opts)
260282
do_dif = do_diff
261283
flags_diff = 'cbitwcefhnlrsD:S:'
262284

0 commit comments

Comments
 (0)