如何将TortoiseSVN生成的补丁应用到Windows中的git存储库?



我正在做一个subversion版本的项目,但是在我提交最新的修改之前,它被迁移到了git。我使用TortoiseSVN创建了一个补丁文件,但现在我不知道如何应用它。我尝试使用git apply,但它没有工作:

C:Usersga1009Documentsquantlib>git apply ..devOasisCatBond_QuantLib_wXL.p
atch
..devOasisCatBond_QuantLib_wXL.patch:6: trailing whitespace.
/* This file is automatically generated; do not edit.     */
..devOasisCatBond_QuantLib_wXL.patch:7: trailing whitespace.
/* Add the files to be included into Makefile.am instead. */
..devOasisCatBond_QuantLib_wXL.patch:8: trailing whitespace.
..devOasisCatBond_QuantLib_wXL.patch:9: trailing whitespace.
#include <ql/experimental/catbonds/catbond.hpp>
..devOasisCatBond_QuantLib_wXL.patch:10: trailing whitespace.
#include <ql/experimental/catbonds/catrisk.hpp>
error: QuantLib_vc10.vcxproj: No such file or directory
error: QuantLib_vc10.vcxproj.filters: No such file or directory
error: test-suite/quantlibtestsuite.cpp: No such file or directory
error: test-suite/testsuite_vc10.vcxproj: No such file or directory
error: test-suite/testsuite_vc10.vcxproj.filters: No such file or directory
error: gensrc/config/categories.xml: No such file or directory
error: gensrc/metadata/types/types.xml: No such file or directory
error: QuantLibObjects_vc10.vcxproj: No such file or directory
error: QuantLibObjects_vc10.vcxproj.filters: No such file or directory
error: qlxl/QuantLibXLStatic_vc10.vcxproj: No such file or directory
error: qlxl/QuantLibXLStatic_vc10.vcxproj.filters: No such file or directory

这些错误有点奇怪,因为所有这些文件都应该以另一个目录作为前缀,例如来自补丁文件:

--- QuantLib/QuantLib_vc10.vcxproj  (revision 18468)
+++ QuantLib/QuantLib_vc10.vcxproj  (working copy)

我也尝试使用https://stackoverflow.com/a/5415912/5363中建议的TortoiseMerge,但是这个工具抱怨目标文件夹不是一个存储库(它显然不是一个svn存储库)

编辑:gnuwin32项目的patch.exe抱怨相同的文件。补丁文件在某些方面是错误的?第一个错误文件的条目是:

Index: QuantLib/QuantLib_vc10.vcxproj
===================================================================
--- QuantLib/QuantLib_vc10.vcxproj  (revision 18468)
+++ QuantLib/QuantLib_vc10.vcxproj  (working copy)
@@ -250,6 +250,11 @@
   <ItemGroup>
     <ClInclude Include="qlcashflowscpicoupon.hpp" />
     <ClInclude Include="qlcashflowscpicouponpricer.hpp" />
+    <ClInclude Include="qlexperimentalcatbondsall.hpp" />
+    <ClInclude Include="qlexperimentalcatbondscatbond.hpp" />
+    <ClInclude Include="qlexperimentalcatbondscatrisk.hpp" />
+    <ClInclude Include="qlexperimentalcatbondsmontecarlocatbondengine.hpp" />
+    <ClInclude Include="qlexperimentalcatbondsriskynotional.hpp" />
     <ClInclude Include="qlexperimentalfinitedifferencesdynprogvppintrinsicvalueengine.hpp" />
     <ClInclude Include="qlexperimentalfinitedifferencesfdextoujumpvanillaengine.hpp" />
     <ClInclude Include="qlexperimentalfinitedifferencesfdklugeextouspreadengine.hpp" />
@@ -1375,6 +1380,10 @@
   <ItemGroup>
     <ClCompile Include="qlcashflowscpicoupon.cpp" />
     <ClCompile Include="qlcashflowscpicouponpricer.cpp" />
+    <ClCompile Include="qlexperimentalcatbondscatbond.cpp" />
+    <ClCompile Include="qlexperimentalcatbondscatrisk.cpp" />
+    <ClCompile Include="qlexperimentalcatbondsmontecarlocatbondengine.cpp" />
+    <ClCompile Include="qlexperimentalcatbondsriskynotional.cpp" />
     <ClCompile Include="qlexperimentalfinitedifferencesdynprogvppintrinsicvalueengine.cpp" />
     <ClCompile Include="qlexperimentalfinitedifferencesfdextoujumpvanillaengine.cpp" />
     <ClCompile Include="qlexperimentalfinitedifferencesfdklugeextouspreadengine.cpp" />

您可以尝试使用git-svn将svn存储库重新转换为git。一旦它在git中,您就可以向现有的存储库添加一个远程提交,并从"忘记提交"分支中挑选出有问题的提交到常规分支中。然后按

或者,使用真正的低技术,只是使用diff/merge工具将文件更改从一个文件夹复制到另一个文件夹。

最新更新