summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--command.py5
-rwxr-xr-xmain.py10
-rw-r--r--subcmds/help.py4
-rw-r--r--subcmds/init.py4
-rw-r--r--subcmds/sync.py4
-rw-r--r--subcmds/version.py4
6 files changed, 22 insertions, 9 deletions
diff --git a/command.py b/command.py
index 516c2d9d..c3cad5ea 100644
--- a/command.py
+++ b/command.py
@@ -114,3 +114,8 @@ class PagedCommand(Command):
114 """Command which defaults to output in a pager, as its 114 """Command which defaults to output in a pager, as its
115 display tends to be larger than one screen full. 115 display tends to be larger than one screen full.
116 """ 116 """
117
118class MirrorSafeCommand(object):
119 """Command permits itself to run within a mirror,
120 and does not require a working directory.
121 """
diff --git a/main.py b/main.py
index db4fa0fb..0e0a61de 100755
--- a/main.py
+++ b/main.py
@@ -27,7 +27,9 @@ import os
27import re 27import re
28import sys 28import sys
29 29
30from command import InteractiveCommand, PagedCommand 30from command import InteractiveCommand
31from command import MirrorSafeCommand
32from command import PagedCommand
31from editor import Editor 33from editor import Editor
32from error import ManifestInvalidRevisionError 34from error import ManifestInvalidRevisionError
33from error import NoSuchProjectError 35from error import NoSuchProjectError
@@ -91,6 +93,12 @@ class _Repo(object):
91 cmd.manifest = Manifest(cmd.repodir) 93 cmd.manifest = Manifest(cmd.repodir)
92 Editor.globalConfig = cmd.manifest.globalConfig 94 Editor.globalConfig = cmd.manifest.globalConfig
93 95
96 if not isinstance(cmd, MirrorSafeCommand) and cmd.manifest.IsMirror:
97 print >>sys.stderr, \
98 "fatal: '%s' requires a working directory"\
99 % name
100 sys.exit(1)
101
94 if not gopts.no_pager and not isinstance(cmd, InteractiveCommand): 102 if not gopts.no_pager and not isinstance(cmd, InteractiveCommand):
95 config = cmd.manifest.globalConfig 103 config = cmd.manifest.globalConfig
96 if gopts.pager: 104 if gopts.pager:
diff --git a/subcmds/help.py b/subcmds/help.py
index 6e0238a0..a2814e11 100644
--- a/subcmds/help.py
+++ b/subcmds/help.py
@@ -17,9 +17,9 @@ import sys
17from formatter import AbstractFormatter, DumbWriter 17from formatter import AbstractFormatter, DumbWriter
18 18
19from color import Coloring 19from color import Coloring
20from command import PagedCommand 20from command import PagedCommand, MirrorSafeCommand
21 21
22class Help(PagedCommand): 22class Help(PagedCommand, MirrorSafeCommand):
23 common = False 23 common = False
24 helpSummary = "Display detailed help on a command" 24 helpSummary = "Display detailed help on a command"
25 helpUsage = """ 25 helpUsage = """
diff --git a/subcmds/init.py b/subcmds/init.py
index ad28a611..d1fb4316 100644
--- a/subcmds/init.py
+++ b/subcmds/init.py
@@ -17,12 +17,12 @@ import os
17import sys 17import sys
18 18
19from color import Coloring 19from color import Coloring
20from command import InteractiveCommand 20from command import InteractiveCommand, MirrorSafeCommand
21from error import ManifestParseError 21from error import ManifestParseError
22from remote import Remote 22from remote import Remote
23from git_command import git, MIN_GIT_VERSION 23from git_command import git, MIN_GIT_VERSION
24 24
25class Init(InteractiveCommand): 25class Init(InteractiveCommand, MirrorSafeCommand):
26 common = True 26 common = True
27 helpSummary = "Initialize repo in the current directory" 27 helpSummary = "Initialize repo in the current directory"
28 helpUsage = """ 28 helpUsage = """
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 8050e515..fff1281a 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -19,11 +19,11 @@ import subprocess
19import sys 19import sys
20 20
21from git_command import GIT 21from git_command import GIT
22from command import Command 22from command import Command, MirrorSafeCommand
23from error import RepoChangedException, GitError 23from error import RepoChangedException, GitError
24from project import R_HEADS 24from project import R_HEADS
25 25
26class Sync(Command): 26class Sync(Command, MirrorSafeCommand):
27 common = True 27 common = True
28 helpSummary = "Update working tree to the latest revision" 28 helpSummary = "Update working tree to the latest revision"
29 helpUsage = """ 29 helpUsage = """
diff --git a/subcmds/version.py b/subcmds/version.py
index 4f19a0ca..83e77d0b 100644
--- a/subcmds/version.py
+++ b/subcmds/version.py
@@ -14,11 +14,11 @@
14# limitations under the License. 14# limitations under the License.
15 15
16import sys 16import sys
17from command import Command 17from command import Command, MirrorSafeCommand
18from git_command import git 18from git_command import git
19from project import HEAD 19from project import HEAD
20 20
21class Version(Command): 21class Version(Command, MirrorSafeCommand):
22 common = False 22 common = False
23 helpSummary = "Display the version of repo" 23 helpSummary = "Display the version of repo"
24 helpUsage = """ 24 helpUsage = """