我尝试应用我的"合并并非所有更改"从git
到svn
的技能。 svn
中没有关于交互式舞台演出的事情,毫无疑问。但你可以制作一个补丁,并从中应用几个帅哥,并做一个提交。等等。或者我想。
使用git
,我不仅没有提交选定的帅哥的问题,而且我能够编辑帅哥(选择帅哥的哪些部分提交)。使用svn
,我能够做第一次提交。在那之后,事情变得混乱。考虑一下这个差异:
diff --git a/lib/simplegit.rb b/lib/simplegit.rb
index dd5ecc4..57399e0 100644
--- a/lib/simplegit.rb
+++ b/lib/simplegit.rb
@@ -22,7 +22,7 @@ class SimpleGit
end
def log(treeish = 'master')
- command("git log -n 25 #{treeish}")
+ command("git log -n 30 #{treeish}")
end
def blame(path)
要应用补丁,我应该修复-22,7 +22,7
部分,以反映大块的当前位置。 git
我从来不需要这样的东西。应用补丁时git
使用更宽松的设置吗?有没有办法用svn简化这个工作流程?在应用补丁时,我可以指定哪些内容使其不那么严格吗?
UPD 与svn
无关。例如,我将三行添加到文件中:
line 1
line 2
line 3
使用git
我可以运行git add -p
,按 e (编辑大块)并删除line 2
。然后git
成功地发布了这个:
line 1
line 3
使用svn
,当我执行:svn diff > 1.patch
时,从补丁文件中删除第二行,并尝试将其应用回来(patch -p0 < 1.patch
),它不会解决问题:
patch: **** malformed patch at line ..:
答案 0 :(得分:0)
我的猜测是这条线具有魔力:
index dd5ecc4..57399e0 100644
这允许Git跟踪提交。因此,它知道哪些帅哥已被应用,哪些尚未被应用。另一方面,Subversion无法跟踪部分补丁。它在提交时使用“全有或全无”的方法。
如果您仍想在Subversion中部分提交而不会疯狂,那么您可以执行以下操作:
或者您可以尝试使用众多Git-Subversion之一。但是你需要了解Subversion是一个来自“黑暗时代”的工具。它不像CVS那样“石器时代”,但它仍然缺乏DCVS开箱即用的许多奇特功能。