假设我有文件
helloworld.c
helloworld.m
15个编辑前,有人在helloworld.c中泄露了memroy,并设法将其变成了几个分支。我想在它设法进入的所有分支上更正历史上的那个版本。
还原文件并尝试重新检入文件的净效果是什么?显然,自那以后的14次变化我不想失去?
更新:我确信有人遇到过这个问题,我想知道他们找到了什么对他们有效以及为什么。
我是否认为管理分支和中继的方式是密集的,我必须在它存在的每个上下文中访问该文件?
答案 0 :(得分:9)
您为什么要更正历史记录?这个伎俩一直让Star Trek陷入困境。
更好的是,在当前版本中进行更改 - 或者还原当前版本 - 并提交它。然后将更改合并到任何分支。
答案 1 :(得分:3)
您不想修改历史记录。历史记录是文件所经历的编辑序列 - 而不是您篡改的内容。
只需使用内存泄漏修复程序更新每个分支和主干的头部即可。通常,在新提交中引用您正在恢复旧的更改是一个好主意。例如:
答案 2 :(得分:0)
您可以还原单个版本。可能存在冲突,但您可以解决它们。
或者您可以修复当前文件中的错误并提交它们。
答案 3 :(得分:0)
即使您恢复了主干上的更改,已经创建的分支也会出现问题 - 人们将不得不使用您的最新分支重新分支,或者只是将主干中的修复合并到他们的分支 - 我认为可能是如果这个问题对任何一个问题都是一个真正的问题,那就是最好的。
答案 4 :(得分:0)
不幸的是,您需要为每个头添加修复程序。 虽然我确信在技术上有一种方法可以使用svnadmin dump和dumpfilter来做这个技巧,但至少可以说是对历史的重写并要求重建你的存储库。
最新的tortoisesvn 1.6有一个非常好的修订图,可以让你找出所有变化的地方。