mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
Raise a NoManifestException when the manifest DNE
When a command (eg, `repo forall`) expects the manifest project to exist, but there is no manifest, an IOException gets raised. This change defines a new Exception type to be raised in these cases and raises it when project.py fails to read the manifest. Change-Id: Iac576c293a37f7d8f60cd4f6aa95b2c97f9e7957
This commit is contained in:
parent
88b86728a4
commit
75ee0570da
4
error.py
4
error.py
@ -21,6 +21,10 @@ class ManifestInvalidRevisionError(Exception):
|
|||||||
"""The revision value in a project is incorrect.
|
"""The revision value in a project is incorrect.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
class NoManifestException(Exception):
|
||||||
|
"""The required manifest does not exist.
|
||||||
|
"""
|
||||||
|
|
||||||
class EditorError(Exception):
|
class EditorError(Exception):
|
||||||
"""Unspecified error from the user's text editor.
|
"""Unspecified error from the user's text editor.
|
||||||
"""
|
"""
|
||||||
|
5
main.py
5
main.py
@ -42,6 +42,7 @@ from editor import Editor
|
|||||||
from error import DownloadError
|
from error import DownloadError
|
||||||
from error import ManifestInvalidRevisionError
|
from error import ManifestInvalidRevisionError
|
||||||
from error import ManifestParseError
|
from error import ManifestParseError
|
||||||
|
from error import NoManifestException
|
||||||
from error import NoSuchProjectError
|
from error import NoSuchProjectError
|
||||||
from error import RepoChangedException
|
from error import RepoChangedException
|
||||||
from manifest_xml import XmlManifest
|
from manifest_xml import XmlManifest
|
||||||
@ -140,6 +141,10 @@ class _Repo(object):
|
|||||||
except ManifestInvalidRevisionError as e:
|
except ManifestInvalidRevisionError as e:
|
||||||
print('error: %s' % str(e), file=sys.stderr)
|
print('error: %s' % str(e), file=sys.stderr)
|
||||||
result = 1
|
result = 1
|
||||||
|
except NoManifestException as e:
|
||||||
|
print('error: manifest required for this command -- please run init',
|
||||||
|
file=sys.stderr)
|
||||||
|
result = 1
|
||||||
except NoSuchProjectError as e:
|
except NoSuchProjectError as e:
|
||||||
if e.name:
|
if e.name:
|
||||||
print('error: project %s not found' % e.name, file=sys.stderr)
|
print('error: project %s not found' % e.name, file=sys.stderr)
|
||||||
|
@ -30,6 +30,7 @@ from git_command import GitCommand, git_require
|
|||||||
from git_config import GitConfig, IsId, GetSchemeFromUrl, ID_RE
|
from git_config import GitConfig, IsId, GetSchemeFromUrl, ID_RE
|
||||||
from error import GitError, HookError, UploadError
|
from error import GitError, HookError, UploadError
|
||||||
from error import ManifestInvalidRevisionError
|
from error import ManifestInvalidRevisionError
|
||||||
|
from error import NoManifestException
|
||||||
from trace import IsTrace, Trace
|
from trace import IsTrace, Trace
|
||||||
|
|
||||||
from git_refs import GitRefs, HEAD, R_HEADS, R_TAGS, R_PUB, R_M
|
from git_refs import GitRefs, HEAD, R_HEADS, R_TAGS, R_PUB, R_M
|
||||||
@ -1894,7 +1895,10 @@ class Project(object):
|
|||||||
path = os.path.join(self._project.gitdir, HEAD)
|
path = os.path.join(self._project.gitdir, HEAD)
|
||||||
else:
|
else:
|
||||||
path = os.path.join(self._project.worktree, '.git', HEAD)
|
path = os.path.join(self._project.worktree, '.git', HEAD)
|
||||||
|
try:
|
||||||
fd = open(path, 'rb')
|
fd = open(path, 'rb')
|
||||||
|
except IOError:
|
||||||
|
raise NoManifestException(path)
|
||||||
try:
|
try:
|
||||||
line = fd.read()
|
line = fd.read()
|
||||||
finally:
|
finally:
|
||||||
|
Loading…
Reference in New Issue
Block a user