changeset 3228:ba2e2514a01a beta

reposcann should skip directories with starting with '.' some code cleanup, moved all skipping to get_repos function
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 26 Jan 2013 20:11:55 +0100
parents 99ce5d097a09
children aad51f79d040
files rhodecode/lib/utils.py rhodecode/lib/vcs/utils/helpers.py rhodecode/model/scm.py
diffstat 3 files changed, 18 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/lib/utils.py	Fri Jan 25 16:42:02 2013 +0100
+++ b/rhodecode/lib/utils.py	Sat Jan 26 20:11:55 2013 +0100
@@ -171,7 +171,7 @@
         raise
 
 
-def get_repos(path, recursive=False):
+def get_repos(path, recursive=False, skip_removed_repos=True):
     """
     Scans given path for repos and return (name,(type,path)) tuple
 
@@ -181,6 +181,7 @@
 
     # remove ending slash for better results
     path = path.rstrip(os.sep)
+    log.debug('now scanning in %s location recursive:%s...' % (path, recursive))
 
     def _get_repos(p):
         if not os.access(p, os.W_OK):
@@ -189,6 +190,15 @@
             if os.path.isfile(os.path.join(p, dirpath)):
                 continue
             cur_path = os.path.join(p, dirpath)
+
+            # skip removed repos
+            if skip_removed_repos and REMOVED_REPO_PAT.match(dirpath):
+                continue
+
+            #skip .<somethin> dirs
+            if dirpath.startswith('.'):
+                continue
+
             try:
                 scm_info = get_scm(cur_path)
                 yield scm_info[1].split(path, 1)[-1].lstrip(os.sep), scm_info
@@ -203,6 +213,9 @@
 
     return _get_repos(path)
 
+#alias for backward compat
+get_filesystem_repos = get_repos
+
 
 def is_valid_repo(repo_name, base_path, scm=None):
     """
--- a/rhodecode/lib/vcs/utils/helpers.py	Fri Jan 25 16:42:02 2013 +0100
+++ b/rhodecode/lib/vcs/utils/helpers.py	Sat Jan 26 20:11:55 2013 +0100
@@ -80,7 +80,7 @@
             continue
         dirname = os.path.join(path, 'rm__.' + key)
         if os.path.isdir(dirname):
-            return [None]
+            return result
         # We still need to check if it's not bare repository as
         # bare repos don't have working directories
         try:
@@ -131,6 +131,7 @@
         content = code
     return content
 
+
 def parse_changesets(text):
     """
     Returns dictionary with *start*, *main* and *end* ids.
--- a/rhodecode/model/scm.py	Fri Jan 25 16:42:02 2013 +0100
+++ b/rhodecode/model/scm.py	Sat Jan 26 20:11:55 2013 +0100
@@ -46,7 +46,7 @@
 from rhodecode.lib import helpers as h
 from rhodecode.lib.utils2 import safe_str, safe_unicode
 from rhodecode.lib.auth import HasRepoPermissionAny, HasReposGroupPermissionAny
-from rhodecode.lib.utils import get_repos as get_filesystem_repos, make_ui, \
+from rhodecode.lib.utils import get_filesystem_repos, make_ui, \
     action_logger, REMOVED_REPO_PAT
 from rhodecode.model import BaseModel
 from rhodecode.model.db import Repository, RhodeCodeUi, CacheInvalidation, \
@@ -238,10 +238,6 @@
         repos = {}
 
         for name, path in get_filesystem_repos(repos_path, recursive=True):
-            # skip removed repos
-            if REMOVED_REPO_PAT.match(name) or path[0] is None:
-                continue
-
             # name need to be decomposed and put back together using the /
             # since this is internal storage separator for rhodecode
             name = Repository.normalize_repo_name(name)
@@ -261,7 +257,7 @@
                         repos[name] = klass(path[1])
             except OSError:
                 continue
-
+        log.debug('found %s paths with repositories' % (len(repos)))
         return repos
 
     def get_repos(self, all_repos=None, sort_key=None, simple=False):