diff --git a/command.py b/command.py index 6e4e2c57..4e0253fc 100644 --- a/command.py +++ b/command.py @@ -90,7 +90,7 @@ class Command(object): project = all.get(arg) if not project: - path = os.path.abspath(arg) + path = os.path.abspath(arg).replace('\\', '/') if not by_path: by_path = dict() @@ -100,13 +100,15 @@ class Command(object): try: project = by_path[path] except KeyError: + oldpath = None while path \ - and path != '/' \ + and path != oldpath \ and path != self.manifest.topdir: try: project = by_path[path] break except KeyError: + oldpath = path path = os.path.dirname(path) if not project: diff --git a/manifest_xml.py b/manifest_xml.py index d888653d..35318d0a 100644 --- a/manifest_xml.py +++ b/manifest_xml.py @@ -357,7 +357,7 @@ class XmlManifest(Manifest): worktree = None gitdir = os.path.join(self.topdir, '%s.git' % name) else: - worktree = os.path.join(self.topdir, path) + worktree = os.path.join(self.topdir, path).replace('\\', '/') gitdir = os.path.join(self.repodir, 'projects/%s.git' % path) project = Project(manifest = self, diff --git a/project.py b/project.py index 5a143a76..1cea959e 100644 --- a/project.py +++ b/project.py @@ -233,8 +233,8 @@ class Project(object): self.manifest = manifest self.name = name self.remote = remote - self.gitdir = gitdir - self.worktree = worktree + self.gitdir = gitdir.replace('\\', '/') + self.worktree = worktree.replace('\\', '/') self.relpath = relpath self.revisionExpr = revisionExpr diff --git a/repo b/repo index ff7c4188..3a545cc6 100755 --- a/repo +++ b/repo @@ -432,10 +432,14 @@ def _FindRepo(): dir = os.getcwd() repo = None - while dir != '/' and not repo: + olddir = None + while dir != '/' \ + and dir != olddir \ + and not repo: repo = os.path.join(dir, repodir, REPO_MAIN) if not os.path.isfile(repo): repo = None + olddir = dir dir = os.path.dirname(dir) return (repo, os.path.join(dir, repodir))