Answers:
Tortoise SVN 1.8 现在支持 “提交后恢复”功能。这使您可以对文件进行编辑,并在提交后撤消所有编辑
根据文档:
只提交与一个特定问题相关的文件部分:
- 在提交对话框中,右键单击文件,选择“提交后还原”
- 在例如TortoiseMerge中编辑文件:撤消您尚未提交的更改
- 保存文件
- 提交文件
我已经使用TortoiseSVN做到了这一点。
内置的合并实用程序允许您显示存储库版本和工作副本之间的差异。
使用diff实用程序的创建备份功能
现在,您应该使用两个单独的提交来提交所有更改。
尝试使用,svn diff > out.patch
然后将out.patch
文件复制到out.patch.add
和out.patch.modify
仅当您有可用的补丁程序文件时,才使用恢复原始文件svn revert out.c
。
手工编辑补丁文件,以便它们只包含了帅哥的添加或修改。使用patch
命令将它们应用于原始文件,测试添加是否有效,然后测试svn commit
添加。
重复冲洗out.patch.modify
贴片。
如果您的第一个问题说的是文件中的更改是分开的-添加新方法,更改现有方法-这将起作用
这是一个非常繁琐的解决方案-尽管我不认为您应该有任何理由分开提交。
您还可能签出了同一来源的多个工作副本,以将您的工作应用于:
svn co http://location/repository methodAdd
svn co http://location/repository methodModify
请务必进行svn up
测试以确保一切正常。
从v1.8开始,可以使用TortoiseSvn(Windows)进行此操作。
4.4.1。提交对话框
如果您的工作副本是最新的,并且没有冲突,则准备提交更改。选择要提交的任何文件和/或文件夹,然后选择TortoiseSVN→提交...。
<snip>
4.4.3。只提交部分文件
有时您只想提交对文件所做的部分更改。这种情况通常在您处理某些事情时发生,但随后需要提交紧急修复程序,而该修复程序恰好与您正在处理的文件位于同一文件中。
右键单击文件,然后使用上下文菜单→提交后还原。这将按原样创建文件的副本。然后,您可以编辑文件,例如在TortoiseMerge中,并撤消所有不想提交的更改。保存这些更改后,您可以提交文件。
提交完成后,该文件的副本将自动还原,并且您的文件中包含所有未提交的修改。
在Linux上,我可以尝试http://webstaff.itn.liu.se/~karlu20/div/blog/2013-05-31_SVNPartialCommit.php。不过,我自己还没有尝试过。
我使用本地darcs仓库,或者只是逐渐合并更改。合并(opendiff打开Xcode附带的合并程序FileMerge;用您喜欢的合并工具替换):
cp file file.new
svn revert file
opendiff file.new file -merge file
合并相关更改,保存合并,退出合并程序
svn ci -m 'first hunk' file
mv file.new file
svn ci -m 'second hunk' file
如果文件中有多个不相关的块,请冲洗并重复(但是为什么要等这么长时间才提交?!)
另外,如果您知道git,则可以使用git-svn来维护本地git repo并将提交提交同步到svn主服务器;根据我有限的经验,效果很好。
尝试使用VisualSVN for Visual Studio。在最新的6.1版本中引入了QuickCommit功能。您可以使用Visual Studio编辑器中新的“ 提交此阻止和提交选择”上下文菜单命令来部分提交文件中的选定更改。