Show
Ignore:
Timestamp:
2009年08月23日 12时15分25秒 (3 years ago)
Author:
jiangx
Message:

Fixed #26: EolStyleCheck? plugin enhancement : in loose mode, svn:eol-style no need for unix files.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/pysvnmanager/hooks/init/hook1.5/scripts/check-mime-type.py

    r90 r92  
    2727MIN_LENGTH = 5 
    2828 
    29 def main(repos, txn): 
     29def main(repos, txn, force=""): 
    3030    """main entry point""" 
     31     
     32    if force == "no": 
     33        force = False  
     34    else: 
     35        force = True 
    3136 
    3237    files_added = [] 
     
    6267         
    6368        if check_mime: 
    64             if mime_type == "" and eol_style == '': 
    65                 errmsg.append( "%s : 属性 svn:mime-type 或者 svn:eol-style 没有设置" % path.decode('utf-8','replace').encode('utf-8','replace') ) 
    66             elif ptext.match(mime_type) and eol_style == '': 
    67                 errmsg.append( "%s : svn:mime-type=%s 但是 svn:eol-style 没有设置" % (path.decode('utf-8','replace').encode('utf-8','replace'), mime_type) ) 
     69            if mime_type == "" or ptext.match(mime_type): 
     70                if eol_style == '': 
     71                    ## check if crlf in file contents 
     72                    if not force: 
     73                        if crlf_in_file(txn, repos, path): 
     74                            errmsg.append( "CRLF (DOS style EOL) in file: %s" % path.decode('utf-8','replace').encode('utf-8','replace') ) 
     75                        else: 
     76                            continue 
     77                    if mime_type == "": 
     78                        errmsg.append( "%s : 属性 svn:mime-type 或者 svn:eol-style 没有设置" % path.decode('utf-8','replace').encode('utf-8','replace') ) 
     79                    else: 
     80                        errmsg.append( "%s : svn:mime-type=%s 但是 svn:eol-style 没有设置" % (path.decode('utf-8','replace').encode('utf-8','replace'), mime_type) ) 
    6881 
    6982    if len( errmsg ) > 0: 
    7083        die( errmsg ) 
    7184 
    72  
     85def crlf_in_file(txn, repos, path): 
     86    cmd = '%s cat -t "%s" "%s" "%s"' % (SVNLOOK, txn, repos, path) 
     87    buff = os.popen(cmd, 'r').read(1024) 
     88    if '\r' in buff: 
     89        return True 
     90    else: 
     91        return False 
     92  
    7393def die(msg): 
    7494    """ 
     
    106126        sys.stderr.write("Usage: %s REPOS TXN\n" % (sys.argv[0])) 
    107127    else: 
    108         main(sys.argv[1], sys.argv[2]) 
     128        main(sys.argv[1], sys.argv[2], sys.argv[3:] and sys.argv[3] or '')