【问题标题】:Manually deleting only the latest revision from online SVN repository?仅从在线 SVN 存储库中手动删除最新版本?
【发布时间】:2015-05-16 14:49:33
【问题描述】:

在这样做时:git svn dcommit committing wrong file?,现在我在 SVN 服务器端存储库上有一个 - 最新的 - 修订错误;我想删除它。我知道我可以按照How do I fix a repository with one broken revision? 执行 svnadmin dump/filter/load,但我希望有一个更简单的解决方案。

所以我尝试了这个测试:

cd /tmp
svnadmin create newRepo
svn co file:///tmp/newRepo newRepo-checkout
# Checked out revision 0.
cd newRepo-checkout/

echo aaa > AA.txt
svn add AA.txt 
# A         AA.txt
svn ci -m 'first commit'
# Adding         AA.txt
# Transmitting file data .
# Committed revision 1.

echo bbb > BB.txt
svn ci -m '2ns commit'
svn add BB.txt 
# A         BB.txt
svn ci -m '2nd commit'
# Adding         BB.txt
# Transmitting file data .
# Committed revision 2.

echo ccc > CC.txt
svn add CC.txt 
# A         CC.txt
svn ci -m '3rd commit'
# Adding         CC.txt
# Transmitting file data .
# Committed revision 3.

现在,如果我只删除 db/revs 和 db/revprops 中最新修订版 (3) 的相应文件,我会得到:

$ cd ../newRepo
$ svnadmin verify .
* Verified revision 0.
* Verified revision 1.
* Verified revision 2.
* Verified revision 3.
$ ls db/revprops/0/
0  1  2  3
$ ls db/revs/0/
0  1  2  3  

$ rm db/revs/0/3 
$ rm db/revprops/0/3 

$ svnadmin verify .
* Verified revision 0.
* Verified revision 1.
* Verified revision 2.
svnadmin: No such revision 3

经过一番 grepping 后发现有文件 ./db/txn-current./db/current 的内容为“3”,所以我尝试更改它:

$ echo 2 > ./db/current
$ echo 2 > ./db/txn-current

$ svnadmin verify .
* Verified revision 0.
* Verified revision 1.
* Verified revision 2.

... 还有svn co file:///tmp/newRepo newRepo-checkout2 似乎也可以。

所以我的问题是 - 这是否相当安全,或者是否有更多关于在 SVN 服务器中存储修订的内容?

【问题讨论】:

标签: svn svnadmin


【解决方案1】:

没有。手动编辑存储库数据库文件永远不会“相当安全”。它更安全,最终可能更容易,只需使用 svn 工具进行转储/过滤/加载。

【讨论】:

  • 谢谢你,@Ben - 如果能提供一些关于其他可能不安全的细节,那就太好了;但是在任何情况下都可以说明这一点。干杯!
猜你喜欢
  • 2013-10-25
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多