Don't permit users to run repo status in a mirror client

If a client was created with "repo init --mirror" then there are
no working directories present, and no files checked out.  Using
a command like "repo status" in this context makes no sense, and
actually throws back a Pytyon traceback at the console when the
underlying commands fail out.

We now tag commands with the MirrorSafeCommand type if they are
able to be executed within a mirror directory safely.  Using a
command in a mirror which lacks this base class results in a
useful error letting you know the command isn't supported.

Bug: REPO-14
Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
Shawn O. Pearce
2009-03-03 17:47:06 -08:00
parent 6a5644d392
commit c95583bf4f
6 changed files with 22 additions and 9 deletions

View File

@ -17,9 +17,9 @@ import sys
from formatter import AbstractFormatter, DumbWriter
from color import Coloring
from command import PagedCommand
from command import PagedCommand, MirrorSafeCommand
class Help(PagedCommand):
class Help(PagedCommand, MirrorSafeCommand):
common = False
helpSummary = "Display detailed help on a command"
helpUsage = """

View File

@ -17,12 +17,12 @@ import os
import sys
from color import Coloring
from command import InteractiveCommand
from command import InteractiveCommand, MirrorSafeCommand
from error import ManifestParseError
from remote import Remote
from git_command import git, MIN_GIT_VERSION
class Init(InteractiveCommand):
class Init(InteractiveCommand, MirrorSafeCommand):
common = True
helpSummary = "Initialize repo in the current directory"
helpUsage = """

View File

@ -19,11 +19,11 @@ import subprocess
import sys
from git_command import GIT
from command import Command
from command import Command, MirrorSafeCommand
from error import RepoChangedException, GitError
from project import R_HEADS
class Sync(Command):
class Sync(Command, MirrorSafeCommand):
common = True
helpSummary = "Update working tree to the latest revision"
helpUsage = """

View File

@ -14,11 +14,11 @@
# limitations under the License.
import sys
from command import Command
from command import Command, MirrorSafeCommand
from git_command import git
from project import HEAD
class Version(Command):
class Version(Command, MirrorSafeCommand):
common = False
helpSummary = "Display the version of repo"
helpUsage = """