@@ -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
194237class 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