Mercurial > public > mercurial-scm > hg
comparison mercurial/util.py @ 7523:e60aaae83323
hgweb: recurse down collections only if ** in [paths]
collections: direct child repos only
paths *: direct child repos only (like collections)
paths **: recursive discovery
When ** is used, the mq repository (if any) is also shown.
author | Benoit Allard <benoit@aeteurope.nl> |
---|---|
date | Thu, 18 Dec 2008 22:32:48 +0100 |
parents | 85dc88630beb |
children | 6a49fa7674c1 9a962209dc28 |
comparison
equal
deleted
inserted
replaced
7522:2f4a399a8787 | 7523:e60aaae83323 |
---|---|
1874 if len(text) <= maxlength: | 1874 if len(text) <= maxlength: |
1875 return text | 1875 return text |
1876 else: | 1876 else: |
1877 return "%s..." % (text[:maxlength-3]) | 1877 return "%s..." % (text[:maxlength-3]) |
1878 | 1878 |
1879 def walkrepos(path, followsym=False, seen_dirs=None): | 1879 def walkrepos(path, followsym=False, seen_dirs=None, recurse=False): |
1880 '''yield every hg repository under path, recursively.''' | 1880 '''yield every hg repository under path, recursively.''' |
1881 def errhandler(err): | 1881 def errhandler(err): |
1882 if err.filename == path: | 1882 if err.filename == path: |
1883 raise err | 1883 raise err |
1884 if followsym and hasattr(os.path, 'samestat'): | 1884 if followsym and hasattr(os.path, 'samestat'): |
1899 if (seen_dirs is None) and followsym: | 1899 if (seen_dirs is None) and followsym: |
1900 seen_dirs = [] | 1900 seen_dirs = [] |
1901 _add_dir_if_not_there(seen_dirs, path) | 1901 _add_dir_if_not_there(seen_dirs, path) |
1902 for root, dirs, files in os.walk(path, topdown=True, onerror=errhandler): | 1902 for root, dirs, files in os.walk(path, topdown=True, onerror=errhandler): |
1903 if '.hg' in dirs: | 1903 if '.hg' in dirs: |
1904 dirs[:] = [] # don't descend further | |
1905 yield root # found a repository | 1904 yield root # found a repository |
1906 qroot = os.path.join(root, '.hg', 'patches') | 1905 if recurse: |
1907 if os.path.isdir(os.path.join(qroot, '.hg')): | 1906 # avoid recursing inside the .hg directory |
1908 yield qroot # we have a patch queue repo here | 1907 # the mq repository is added in any case |
1908 dirs.remove('.hg') | |
1909 qroot = os.path.join(root, '.hg', 'patches') | |
1910 if os.path.isdir(os.path.join(qroot, '.hg')): | |
1911 yield qroot # we have a patch queue repo here | |
1912 else: | |
1913 dirs[:] = [] # don't descend further | |
1909 elif followsym: | 1914 elif followsym: |
1910 newdirs = [] | 1915 newdirs = [] |
1911 for d in dirs: | 1916 for d in dirs: |
1912 fname = os.path.join(root, d) | 1917 fname = os.path.join(root, d) |
1913 if _add_dir_if_not_there(seen_dirs, fname): | 1918 if _add_dir_if_not_there(seen_dirs, fname): |