Changeset - 59670f091c76
[Not reviewed]
beta
0 1 0
Marcin Kuzminski - 15 years ago 2010-11-11 01:33:26
marcin@python-works.com
bugfix, repo_size crashed when broken symlinks where inside a repository.
1 file changed with 22 insertions and 16 deletions:
0 comments (0 inline, 0 general)
rhodecode/lib/hooks.py
Show inline comments
 
@@ -34,66 +34,72 @@ def repo_size(ui, repo, hooktype=None, *
 
    if hooktype != 'changegroup':
 
        return False
 
    size_hg, size_root = 0, 0
 
    for path, dirs, files in os.walk(repo.root):
 
        if path.find('.hg') != -1:
 
            for f in files:
 
                size_hg += os.path.getsize(os.path.join(path, f))
 
                try:
 
                    size_hg += os.path.getsize(os.path.join(path, f))
 
                except OSError:
 
                    pass
 
        else:
 
            for f in files:
 
                size_root += os.path.getsize(os.path.join(path, f))
 
                
 
                try:
 
                    size_root += os.path.getsize(os.path.join(path, f))
 
                except OSError:
 
                    pass
 

	
 
    size_hg_f = h.format_byte_size(size_hg)
 
    size_root_f = h.format_byte_size(size_root)
 
    size_total_f = h.format_byte_size(size_root + size_hg)
 
    sys.stdout.write('Repository size .hg:%s repo:%s total:%s\n' \
 
                     % (size_hg_f, size_root_f, size_total_f))
 
    
 

	
 
def log_pull_action(ui, repo, **kwargs):
 
    """
 
    Logs user last pull action
 
    :param ui:
 
    :param repo:
 
    """
 
        
 

	
 
    extra_params = dict(repo.ui.configitems('rhodecode_extras'))
 
    username = extra_params['username']
 
    repository = extra_params['repository']
 
    action = 'pull'
 
       
 

	
 
    action_logger(username, action, repository, extra_params['ip'])
 
    
 

	
 
    return 0
 

	
 
def log_push_action(ui, repo, **kwargs):
 
    """
 
    Maps user last push action to new changeset id, from mercurial
 
    :param ui:
 
    :param repo:
 
    """
 
    
 

	
 
    extra_params = dict(repo.ui.configitems('rhodecode_extras'))
 
    username = extra_params['username']
 
    repository = extra_params['repository']
 
    action = 'push:%s'
 
    node = kwargs['node']
 
    
 

	
 
    def get_revs(repo, rev_opt):
 
        if rev_opt:
 
            revs = revrange(repo, rev_opt)
 
            
 

	
 
            if len(revs) == 0:
 
                return (nullrev, nullrev)
 
            return (max(revs), min(revs))
 
        else:
 
            return (len(repo) - 1, 0)
 
    
 

	
 
    stop, start = get_revs(repo, [node + ':'])
 
    
 

	
 
    revs = (str(repo[r]) for r in xrange(start, stop + 1))
 
    
 

	
 
    action = action % ','.join(revs)
 
        
 

	
 
    action_logger(username, action, repository, extra_params['ip'])
 
    
 

	
 
    return 0
 
  
 

	
0 comments (0 inline, 0 general)