@@ -96,6 +96,14 @@ class UnpackError(BBFetchException):
BBFetchException.__init__(self, msg)
self.args = (message, url)
+class LocalModificationsError(UnpackError):
+ """Exception raised when a checkout cannot be updated due to local modifications"""
+ def __init__(self, repodir, url, git_output):
+ message = ("Repository at %s has uncommitted changes, unable to update:\n%s\n"
+ "Please commit, stash or discard your changes and re-run the update." % (repodir, git_output))
+ UnpackError.__init__(self, message, url)
+ self.args = (repodir, url, git_output)
+
class NoMethodError(BBFetchException):
"""Exception raised when there is no method to obtain a supplied url or set of urls"""
def __init__(self, url):
@@ -730,7 +730,7 @@ class Git(FetchMethod):
output = runfetchcmd("%s status --untracked-files=no --porcelain" % (ud.basecmd), d, workdir=destdir)
if output:
- raise bb.fetch2.UnpackError("Repository at %s has uncommitted changes, unable to update:\n%s" % (destdir, output), ud.url)
+ raise bb.fetch2.LocalModificationsError(destdir, ud.url, output)
# Set up remote for the download location if it doesn't exist
try: