Changeset 30

Show
Ignore:
Timestamp:
2008年07月30日 17时11分05秒 (4 years ago)
Author:
jiangx
Message:

See #7: add cat, differ function.

Location:
trunk/pysvnmanager
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/pysvnmanager/model/rcsbackup.py

    r29 r30  
    6262    if not is_rcs_exist(wcfile): 
    6363        # -l : lock mode, make wcfile writable 
    64         cmd.append('%(cmd)s -i -q -l -t-"%(msg)s" -w"%(user)s" %(file)s 2>&1' % \ 
     64        cmd.append('%(cmd)s -i -q -l -t-"%(msg)s" -w"%(user)s" "%(file)s" 2>&1' % \ 
    6565                {'cmd':CMD_CI, "file":wcfile, "msg":comment, "user":user}) 
    6666        # -U : set locking to no-strict. 
    67         cmd.append('%(cmd)s -U -q %(file)s' % {'cmd':CMD_RCS, "file":wcfile}) 
     67        cmd.append('%(cmd)s -U -q "%(file)s"' % {'cmd':CMD_RCS, "file":wcfile}) 
    6868    else: 
    6969        # Warning: w/o -l or -u option, wcfile will be removed after checkin. 
    7070        # -l makes wcfile writable; 
    7171        # -u : wcfile is not writable unless rcsfile is set to no-strict locking. 
    72         cmd.append('%(cmd)s -q -l -m"%(msg)s" -w"%(user)s" %(file)s 2>&1' % \ 
     72        cmd.append('%(cmd)s -q -l -m"%(msg)s" -w"%(user)s" "%(file)s" 2>&1' % \ 
    7373                {'cmd':CMD_CI, "file":wcfile, "msg":comment, "user":user}) 
    7474 
     
    9292        opts = "-u%s" % revision 
    9393 
    94     cmd = "%(cmd)s %(opts)s -q -f %(file)s 2>&1" % {'cmd':CMD_CO, "opts":opts, "file":wcfile } 
     94    cmd = '%(cmd)s %(opts)s -q -f "%(file)s" 2>&1' % {'cmd':CMD_CO, "opts":opts, "file":wcfile } 
    9595    buff = os.popen(cmd).read().strip() 
    9696    if buff: 
    9797        raise Exception, "Command: %s\nError Message: %s\n" % (cmd, buff) 
    98      
     98 
     99 
     100def cat(wcfile, revision=""): 
     101    if not wcfile or not is_rcs_exist(wcfile): 
     102        return "" 
     103    opts = "-p" 
     104    if revision: 
     105        # -pRev : cat rather then checkout 
     106        opts = "-p%s" % revision 
     107 
     108    cmd = '%(cmd)s %(opts)s -q "%(file)s"' % {'cmd':CMD_CO, "opts":opts, "file":wcfile } 
     109    buff = os.popen(cmd).read().strip() 
     110    return buff 
     111 
     112def differ(filename, rev1="", rev2=""): 
     113    filename=get_utf8(filename) 
     114    opts="" 
     115    if rev1 and rev2: 
     116        opts="-r%s -r%s" % (rev1, rev2) 
     117    elif rev1 or rev2: 
     118        opts="-r%s%s" % (rev1, rev2) 
     119         
     120    cmd = '%(cmd)s %(opts)s -u -q "%(file)s"' % {'cmd':CMD_RCSDIFF, 'opts':opts, 'file':filename} 
     121    log.debug('Command: '+cmd) 
     122    buff = os.popen(cmd).read() 
     123    return buff 
    99124 
    100125class RcsLog(object): 
     
    145170     
    146171    def reload(self): 
    147         cmd = '%(cmd)s -L -h -N %(file)s' % {'cmd':CMD_RLOG, 'file':self.__file} 
     172        cmd = '%(cmd)s -L -h -N "%(file)s"' % {'cmd':CMD_RLOG, 'file':self.__file} 
    148173        buff = os.popen(cmd).read().strip() 
    149174         
     
    213238            opts="%s,%s" % (opts, rev3) 
    214239 
    215         cmd = '%(cmd)s %(opts)s -L -N %(file)s' % {'cmd':CMD_RLOG, 'opts':opts, 'file':self.__file} 
     240        cmd = '%(cmd)s %(opts)s -L -N "%(file)s"' % {'cmd':CMD_RLOG, 'opts':opts, 'file':self.__file} 
    216241        log.debug('Command: '+cmd) 
    217242        buff = os.popen(cmd).read().strip().rstrip('=').rstrip() 
     
    265290         
    266291        return self.revs 
     292     
     293    def cat(self, revision=""): 
     294        return cat(self.__file, revision) 
     295     
     296    def differ(self, rev1="", rev2=""): 
     297        return differ(self.__file, rev1, rev2) 
     298         
  • trunk/pysvnmanager/tests/test_rcs_backup.py

    r29 r30  
    4545        f.write('='*20 + '\n') 
    4646        f.write('Revision: %d\n' % rev) 
    47         f.write('Date: %s\n' % time.strftime('%F %T')) 
     47        f.write('Date: %s\n' % time.strftime('%F')) 
    4848        f.close() 
    4949 
     
    199199                [x['revision'] for x in logs] 
    200200 
     201        buff = rcslog.differ('1.2','1.5') 
     202        assert "-Revision: 2\n+Revision: 5" in buff, buff 
     203        buff = rcslog.differ('1.13') 
     204        assert "-Revision: 13\n+Revision: 14" in buff, buff 
     205         
     206        buff = rcslog.cat() 
     207        assert "Revision: 14\n" in buff, buff 
     208 
     209        buff = rcslog.cat('1.8') 
     210        assert "Revision: 8\n" in buff, buff 
    201211         
    202212    def testLogsNone(self): 
     
    205215        assert rcslog.total == 0, rcslog.total 
    206216        assert rcslog.get_page_logs(1) == [], rcslog.get_page_logs(1) 
     217        assert rcslog.cat()=="" 
    207218         
    208219if __name__ == '__main__':