| Index: scm.py | 
| diff --git a/scm.py b/scm.py | 
| index 8dc127e33eafea38c44e6f8ea59acea2a251ba35..96ae2647c603a739ccf184ef801f503d93f260a3 100644 | 
| --- a/scm.py | 
| +++ b/scm.py | 
| @@ -486,3 +486,22 @@ class SVN(object): | 
| break | 
| values[key] = value | 
| return values | 
| + | 
| +  @staticmethod | 
| +  def GetCheckoutRoot(directory): | 
| +    """Returns the top level directory of the current repository. | 
| + | 
| +    The directory is returned as an absolute path. | 
| +    """ | 
| +    infos = SVN.CaptureInfo(directory, print_error=False) | 
| +    cur_dir_repo_root = infos.get("Repository Root") | 
| +    if not cur_dir_repo_root: | 
| +      return None | 
| + | 
| +    while True: | 
| +      parent = os.path.dirname(directory) | 
| +      if (SVN.CaptureInfo(parent, print_error=False).get( | 
| +              "Repository Root") != cur_dir_repo_root): | 
| +        break | 
| +      directory = parent | 
| +    return directory | 
|  |