svn服务器:如何处理现有修订

问题描述

我有一个svn服务器(VisualSVN服务器管理器)

在此服务器上,我们要自动模糊传入的二进制文件。

我为此编写了一个post-commit.exe。

我可以看到“ svnlook”命令影响了哪些文件。

但是问题是我无法使用post-commit.exe直接操作受影响的文件。

为此,我必须签出到另一个svn(客户端)文件夹并提交新更改。

但是由于post-commit.exe尚未完成其工作,因此另一个客户端当时无法更新,它将陷入僵局。

因此,我必须在不使用客户端的情况下在服务器上进行这些更改。

我想我可以使用“ svnfsfs”或“ svnadmin”来做到这一点。但是我不知道该怎么做。你能帮我吗?

谢谢。

解决方法

您最好在提交之前考虑在客户端混淆二进制文件,而不是在服务器端执行任务。不要提交事务或使用挂钩脚本添加新修订。如果您使用TortoiseSVN,也许client-side hook scripts会有所帮助。

  1. 在已提交新修订版时,将运行提交后挂钩。即使您设法在提交后修改数据并在存储库中创建新修订,您最终也会得到两个修订-第一个具有原始内容,第二个具有已修改内容。

  2. 您可以使用预提交挂钩脚本来修改提交事务,但这是一个不好的做法Per SVNBook

    尽管钩子脚本几乎可以执行任何操作,但其中有一个维度 哪些钩子脚本作者应该表现出克制:请勿修改 使用挂钩脚本提交事务。虽然可能很诱人 使用钩子脚本自动更正错误,缺点或 提交的文件中存在违反策略的行为,这样做可以 引起问题。 Subversion保留客户端缓存的某些位 存储库数据,如果您以这种方式更改提交事务, 这些缓存变得过时了。这种不一致可能导致 令人惊讶和意外的行为。而不是修改 交易,您只需在 预提交挂钩,如果提交不符合要求,则拒绝提交 要求。作为奖励,您的用户将学到谨慎的价值, 遵守法规的工作习惯。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...