首页 文章

svn从命令行unix更新/删除/提交

提问于
浏览
-1

我有奇怪的情况 . 我有文件在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 回答

  • 0

    问题似乎是您不仅修改了文件:而是删除了旧文件并添加了新文件 . 即使它们具有相同的名称,对于svn,它们是两个完全不同(和不相关)的文件,因此这是您没有看到新文件的任何文件历史记录的原因(它应该来自哪里 - 它只是新创建的! ) .

    如果我理解正确,您希望将文件包含最新提交的内容,但保留文件的历史记录 . 要实现此目的,请执行以下操作:

    • 撤消添加新文件的提交我反向合并它(即 svn merge -c -REV filename ,不要忘记修订号之前的破折号)并提交 . 您现在应该使用旧文件(包括历史记录)获得干净的工作副本 .

    • 获取旧文件和新文件之间的更改(例如,使用 diff )并将它们直接应用于工作副本中的文件 . 不要做 svn delete/add ,只需修改文件即可 . 如果执行 svn st ,您现在应该在文件状态的第一列中看到大写 M .

    • 确认文件的内容与先前错误提交的文件的新版本相同(即,如果在文件之间进行差异,则应该为空)

    • 提交文件 .

    您将最终得到新文件的内容和保留的旧文件的历史记录 .

相关问题