Файл исправления TortoiseSVN применяется неправильно

Я пытаюсь использовать файлы исправлений SVN для удаления аутентификации из веб-API во время разработки. Патч-файл для удаления аутентификации работает нормально и выглядит так:

Index: WebApplication.Api/Global.asax.cs
===================================================================
--- WebApplication.Api/Global.asax.cs   (revision 18939)
+++ WebApplication.Api/Global.asax.cs   (working copy)
@@ -115,7 +115,7 @@
             _dependencyRegister.AddRegistration<WebApplication.Application.Aspects.AuthorisationAspect>();

             // WebApplication.Application.CurrentUser
-            _dependencyRegister.AddRegistration<WebApplication.Application.CurrentUser.ICurrentUserService, WebApplication.Application.CurrentUser.CurrentUserService>();
+            _dependencyRegister.AddRegistration<WebApplication.Application.CurrentUser.ICurrentUserService, WebApplication.Api.DummyServices.CurrentUserService>();

             // WebApplication.Application.Interface.Manager
             _dependencyRegister.AddRegistration<WebApplication.Application.Interface.Manager.IAspNetMembershipManager, WebApplication.Application.Manager.AspNetMembershipManager>();
Index: WebApplication.Api/Web.config
===================================================================
--- WebApplication.Api/Web.config   (revision 18939)
+++ WebApplication.Api/Web.config   (working copy)
@@ -64,14 +64,12 @@
     </sessionState>
       <httpModules>
           <add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.Windsor" />
-          <add name="ProtectedResourceModule" type="WebApplication.Api.Modules.ProtectionModule"/>
       </httpModules>
   </system.web>
   <system.webServer>
     <validation validateIntegratedModeConfiguration="false" />
       <modules runAllManagedModulesForAllRequests="true">
           <add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.Windsor" />
-          <add name="ProtectedResourceModule" type="WebApplication.Api.Modules.ProtectionModule"/>
       </modules>
       <httpErrors existingResponse="PassThrough" />
   </system.webServer>

Как вы можете видеть, он изменяет реализацию DI интерфейса и удаляет два узла из файла конфигурации XML.

Поскольку нет способа (который я нашел) для обратного применения исправления (я использую VisualSVN в Visual Studio для применения исправления), я создал «обратное исправление» на основе исходного файла исправления:

Index: WebApplication.Api/Global.asax.cs
===================================================================
--- WebApplication.Api/Global.asax.cs   (revision 18939)
+++ WebApplication.Api/Global.asax.cs   (working copy)
@@ -115,7 +115,7 @@
             _dependencyRegister.AddRegistration<WebApplication.Application.Aspects.AuthorisationAspect>();

             // WebApplication.Application.CurrentUser
+            _dependencyRegister.AddRegistration<WebApplication.Application.CurrentUser.ICurrentUserService, WebApplication.Application.CurrentUser.CurrentUserService>();
-            _dependencyRegister.AddRegistration<WebApplication.Application.CurrentUser.ICurrentUserService, WebApplication.Api.DummyServices.CurrentUserService>();

             // WebApplication.Application.Interface.Manager
             _dependencyRegister.AddRegistration<WebApplication.Application.Interface.Manager.IAspNetMembershipManager, WebApplication.Application.Manager.AspNetMembershipManager>();
Index: WebApplication.Api/Web.config
===================================================================
--- WebApplication.Api/Web.config   (revision 18939)
+++ WebApplication.Api/Web.config   (working copy)
@@ -64,14 +64,12 @@
     </sessionState>
       <httpModules>
           <add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.Windsor" />
+          <add name="ProtectedResourceModule" type="WebApplication.Api.Modules.ProtectionModule"/>
       </httpModules>
   </system.web>
   <system.webServer>
     <validation validateIntegratedModeConfiguration="false" />
       <modules runAllManagedModulesForAllRequests="true">
           <add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.Windsor" />
+          <add name="ProtectedResourceModule" type="WebApplication.Api.Modules.ProtectionModule"/>
       </modules>
       <httpErrors existingResponse="PassThrough" />
   </system.webServer>

Проще говоря, все, что я сделал, это заменил символы + на - и наоборот. Это создает файл обратного исправления, который имеет для меня смысл.

Обратное исправление работает нормально, за исключением того, что последнее «добавление строки» в файле конфигурации XML, а также добавление строки также удаляет несколько следующих строк, что приводит к неправильно сформированному XML.

Кто-нибудь может подсказать, почему это так? Нужно ли что-то делать с магией @@ -64,14 +64,12 @@?


person David    schedule 18.05.2012    source источник


Ответы (3)


Мне было просто любопытно, я думал, что это должно быть найдено в Интернете. Итак, вот что я сделал:

Кажется, что это справится с вашим обычным патчем и сделает то, что вы хотите. Таким образом, не должно быть необходимости вручную отменять патч вручную.

Другой способ — просто начать с правильного diff command, есть возможность создать обратный патч, поменяв порядок ревизий.

person mliebelt    schedule 18.05.2012

Кажется, самый простой способ сделать это — через командную строку. Я не могу найти способ применить файл исправления в обратном порядке через пользовательский интерфейс Visual SVN или Tortoise, и я понятия не имею, почему ручное изменение файла исправления не сработало.

В командной строке перейдите в каталог рабочей копии и введите следующую команду, чтобы применить файл исправления:

svn patch [path and name of patch file]

Чтобы применить его в обратном порядке:

svn patch --reverse-diff [path and name of patch file]
person David    schedule 28.05.2012

Сработает ли замена 14 и 12 местами? (Изменение @@ -64,14 +64,12 @@ на @@ -64,12 +64,14 )

person samHumeniuk    schedule 05.04.2016