首页 文章

如何防止SVN恢复已删除的文件

提问于
浏览
12

我在一个开发团队工作,我们没有完全分开的代码 . 因此,当我处理某事长达一周时,我需要在我提交更改之前进行更新 . 但是当我这样做时,所有已删除的文件都将被恢复 . 我知道有SVN删除操作,但是对每个删除的文件或目录都很烦人 .

有什么诀窍,如何防止这个功能?

5 回答

  • 2

    所以,这基本上不是一个新的答案,但现有的似乎都不适合你的确切问题(以及我经常遇到的问题) .

    这是我的方法:如果您删除了文件,并且不希望它们在必要的更新期间恢复:

    • 使用TortoiseSVN函数"Check for modifications"

    • 按状态排序列表

    • 选择状态为"missing"的所有文件

    • 右键单击,删除

    当然这是“SVN删除”,但这样你就不必在实际删除文件时这样做,并且能够批量标记所有文件 .

  • 4

    这里有两种删除 .

    • 从文件系统中删除( rmdelete ) .

    • 从版本控制中删除( svn delete ) .

    确保你知道你在做什么 . 如果您只是从文件系统(本地计算机)中删除,那么当您要求更新到存储库中的最新版本时,您将 should 获取该文件 .

    如果要从版本控制中删除,则它是svn change 操作,并且在运行 svn commit 之前不会应用于存储库 . 在其他人更新之后,svn将从其存储库中删除该文件 .

    请注意,这并不意味着无法获取文件的副本 . SVN保留每个修订的完整历史记录,因此如果您请求具有该文件副本的非当前修订版,您将获得该修订版中的 svn delete d文件的副本 .

    在极少数情况下,您确实希望文件也从历史记录中删除,您需要执行一些脚本编写 . 基本上,您将创建一个新的存储库,模仿旧存储库(减去文件) . 去做这个

    对于从1到当前的每个修订号 .

    • 从旧存储库中获取文件 .

    • 删除有问题的文件 .

    • 提交到新存储库

    请记住,这可能有点难以做好,因为您需要提出保存元数据的解决方案,如文件权限,提交消息,svn属性,提交时间和提交用户名 .

    我强烈建议不要以这种方式重建你的历史,除非有一些全球压倒一切的理由这样做,比如法院命令 .

  • 0

    您必须通过svn删除文件 . 它必须“知道”你想删除它们 . 如果您不使用svn删除它们,它们似乎丢失了,因此更新会恢复它们 .

    步骤是:

    在本地删除:$ svn删除somefile

    将删除提交到存储库$ svn commit -m“删除文件'somefile'”

  • 2

    我想您可能会问如何获得一份工作副本,您可以在任何给定时间只处理项目的一部分,而根本不在项目的其他部分 .

    此外,我认为您说的是您当前的方法是检查整个项目,然后手动删除您不想看到的项目 .

    更好的方法是使用“稀疏结账”的概念 .

    在最近的版本中,TortoiseSVN在结帐对话框中有一个“选择项目”按钮 . 这允许您使用复选标记选择要包含在工作副本中的每个项目 . 结帐或更新时,其他项目不会下载到您的工作副本 . “更新到修订版本...”对话框还包含此“选择项目”功能 . 请注意,这是“右键单击 - > TortoiseSVN->更新到修订版本...”而不仅仅是“右键单击 - >更新” .

    如果您只需要删除一个或两个,您还可以使用“更新到修订”来为各个项目设置“排除”深度 .

    从命令行,使用“--depth”选项的“svn update”或“svn checkout”是完成同样事情的方法 . 根据需要重复更改“--depth”选项以获取具有任意项目集的工作副本 .

  • 9

    为了在问题发生后缓解,我这样做:

    • 选择_carway svn窗口中'Restored'的所有行,然后复制

    • 粘贴到新Excel工作表的第二列

    • 在第一列中,键入:del“

    • 用del " next to the restored files' paths, by double clicking bottom right corner of the first cell in which you typed del "填充列

    • 填写每个路径后关闭“

    • Win R(开始 - >运行)记事本 - >输入 . 复制全部并粘贴到记事本中 . 选择并复制一个选项卡,Ctrl H,全部替换,用任何内容替换选项卡以删除选项卡

    • Win R cmd - >在命令行中输入,右键单击并粘贴删除命令,按回车键,文件将被删除

    我知道这些是一长串指令,但我相信它们应该是开发人员的第二天性,并且必须快速了解并快速进行,出于多种目的,使用excel这样,创建和运行批处理命令快点等等......

相关问题