2012-05-18 4 views
3

개발하는 동안 SVN 패치 파일을 사용하여 웹 API에서 인증을 제거하려고합니다. 인증을 제거하는 패치 파일은 잘 작동하고 다음과 같습니다 : 당신이 볼 수 있듯이TortoiseSVN 패치 파일이 잘못 적용되었습니다.

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 구성 파일에서 두 개의 노드를 제거합니다.

Visual Studio에서 VisualSVN을 사용하여 패치를 적용하는 방법이 없으므로 원본 패치 파일을 기반으로 '역방향 패치'를 만들었습니다.

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 @@으로 무언가를해야합니까?

답변

4

가장 간단한 방법은 명령 줄을 사용하는 것입니다. Visual SVN 또는 Tortoise UI를 통해 역순으로 패치 파일을 적용 할 수있는 방법을 찾을 수 없으며 패치 파일의 수동 수정이 작동하지 않는 이유를 알 수 없습니다.

svn patch --reverse-diff [path and name of patch file] 
4

저는 궁금해서 인터넷에서 찾아야한다고 생각했습니다. 그래서 내가 무슨 짓을 :이 옵션 섹션을 http://www.visualsvn.com/support/svnbook/ref/svn/c/patch/

  • 읽고이 처리 할 것으로 보인다 reverse-diff
  • 발견

    • 선정 visualsvn create reverse patch
    • 에 대한 구글 첫 번째 링크를 검색 평소의 패치와 함께하고 싶은 일을하십시오. 따라서 수작업으로 패치를 반대로 다시 수행 할 필요는 없습니다..

      또 다른 방법은 올바른 diff command으로 시작하는 것일 수 있습니다. 리비전의 순서를 바꾸어 역방향 패치를 만드는 옵션이 있습니다.

    0

    겠습니까이 14 교환 :

    명령 줄에서

    , 작업 복사본의 디렉토리로 이동하여 패치 파일을 적용하려면 다음 명령을 입력

    svn patch [path and name of patch file] 
    

    이 역으로 적용하기를 12도 사용할 수 있습니까? (@@ -64,14 +64,12 @@@@ -64,12 +64,14으로 변경)

    관련 문제