Изменения из тайника не применяются к рабочей копии. Зачем?
Я изменил свой файл:
--- a/lib/Mojolicious/Plugin/OpenAPI3.pm
+++ b/lib/Mojolicious/Plugin/OpenAPI3.pm
@@ -396,6 +396,7 @@ sub _check_response {
# Here we do not know what to do with all of this.
# Thus we just say: Not Implemented
# $c->stash->{ status } //= 404;
+ DB::x;
$c->render( status => 501, data => '' );
}
Когда при попытке применить тайник я получаю ошибку:
error: Your local changes to the following files would be overwritten by merge:
lib/Mojolicious/Plugin/OpenAPI3.pm
Please commit your changes or stash them before you merge.
Но у тайника нет перекрестных изменений в тех же строках:
$ git stash show -p
--- a/lib/Mojolicious/Plugin/OpenAPI3.pm
+++ b/lib/Mojolicious/Plugin/OpenAPI3.pm
@@ -452,6 +463,7 @@ sub validate_response {
# NOTICE: Depending on status we will check normal or error response
my $status = $stash->{ status } //= 200;
my $schema = $stash->{ 'openapi3.schema' }{ responses };
+ $status = 'default' if !$schema->{ $status };
# TODO: Schema also not found for not found request:
# Request which come to not defined path. In this case we should provide
# something like default response, should not?
Почему я получаю ошибку выше? Почему изменения в stash просто объединяются в рабочий каталог?
1 ответ
Я думаю, что проблема здесь заключается в том, что в файле есть выдающиеся изменения OpenAPI3.pm
в вашем рабочем каталоге. Применение тайника напрямую перезапишет некоторые из этих изменений, отсюда и сообщение об ошибке:
Ваши локальные изменения в следующих файлах будут перезаписаны слиянием:
Решение для этого следует за сообщением выше:
Пожалуйста, передайте свои изменения или спрячьте их, прежде чем объединить.
Вы можете либо зафиксировать изменения, либо сделать еще один тайник. Или, возможно, вам не нужны изменения, и третий вариант будет просто сбросить файл OpenAPI3.pm
до последнего коммита.