当前位置:  开发笔记 > 开发工具 > 正文

从SVN历史记录中删除文件内容

如何解决《从SVN历史记录中删除文件内容》经验,为你挑选了3个好方法。

我的PC上有一个本地的svn存储库,我一直用它来做一个业余爱好项目,并不是任何人都可以访问的,所以我提交了带有密码的文件.

现在,我正在考虑为其他人提供存储库,我不想在那里拥有这些数据.

有没有办法抓取存储库并用"xxxxxxxxxx"之类的文本替换所有密码和帐户数据?



1> Rômulo Cecco..:

检查Subversion FAQ:如何从存储库的历史记录中完全删除文件?



2> Matt..:

如果你做了

svnadmin dump > mysvn

您将获得存储库中所有修订版的所有数据的平面文件.从那里,你应该能够手动编辑文件(如果你的repo大小很重要,你可能需要一个行编辑器,如pico,nano,vi等).

最后,您可以将此转储重新加载到新的存储库中.这将保留您的项目历史记录.

svnadmin load /path/to/new/repo < mysvn

在您接受审计等的任何公司环境中,这种做法都被视为禁忌,但对于业余爱好项目,它可能只是为您做的伎俩.

编辑:在尝试将两个不同的存储库合并在一起之前,我必须这样做,因此需要在平面文件中添加一个新的"目录节点".我不确定SVN是否散列文件或更改以确定它是否被篡改.



3> 小智..:

似乎存在误解.我不想删除文件.我想删除存储在存储库中的密码.我不想丢失文件,也不想丢失修改,修改和历史记录.

我所做的是Matt建议的,转储存储库并进行编辑.

为此,我使用了十六进制编辑器(khexedit)并将密码字符串替换为相同长度的字符串.这样,我不必更新大小字段.

接下来,我需要使用文件内容的哈希更新md5字段.为此,我编写了一个脚本,使用"svnadmin load"输出生成错误并从该错误中获取旧的和新的md5.接下来,用sed替换旧的哈希,然后重复,直到没有错误.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有