我有奇怪的情况 . 我有文件在svn存储库和本地 . 修改和提交后,将创建存储库的新修订 . 历史遗失了 . 但我知道旧版本号,所以我试图做svn更新,它删除了当前文件(新版本)并添加了旧文件,但我无法在SVN存储库中找到它 . 当我尝试使用存储库中的修订版进行svn更新时,它会删除当前文件并从存储库中添加文件 . 现在我无法找到以前的版本 .
svn update -r4678 TEST
D TEST
A TEST
Updated to revision 4678.
svn update -r285795 TEST
D TEST
A TEST
Updated to revision 285795.
修订版285795存在于svn存储库中,但它没有历史记录 . 版本4678不是svn存储库 .
我不确定我是如何陷入这种情况的 .
我希望将带有修订版4678的文件添加到存储库,并在其上添加新版本285795 .
任何帮助表示赞赏 .
1 回答
问题似乎是您不仅修改了文件:而是删除了旧文件并添加了新文件 . 即使它们具有相同的名称,对于svn,它们是两个完全不同(和不相关)的文件,因此这是您没有看到新文件的任何文件历史记录的原因(它应该来自哪里 - 它只是新创建的! ) .
如果我理解正确,您希望将文件包含最新提交的内容,但保留文件的历史记录 . 要实现此目的,请执行以下操作:
撤消添加新文件的提交我反向合并它(即
svn merge -c -REV filename
,不要忘记修订号之前的破折号)并提交 . 您现在应该使用旧文件(包括历史记录)获得干净的工作副本 .获取旧文件和新文件之间的更改(例如,使用
diff
)并将它们直接应用于工作副本中的文件 . 不要做svn delete/add
,只需修改文件即可 . 如果执行svn st
,您现在应该在文件状态的第一列中看到大写M
.确认文件的内容与先前错误提交的文件的新版本相同(即,如果在文件之间进行差异,则应该为空)
提交文件 .
您将最终得到新文件的内容和保留的旧文件的历史记录 .