【问题标题】:svn server: how to manipulate existing revisionsvn 服务器:如何操作现有的修订版
【发布时间】:2020-12-07 12:24:29
【问题描述】:

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

在这台服务器上,我们希望自动混淆传入的二进制文件。

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

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

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

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

但是由于 post-commit.exe 还没有完成它的工作,另一个客户端此时无法更新,它会陷入死锁。

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

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

提前致谢。

【问题讨论】:

  • 您不能以客户端不知道更改的方式操作存储库内容。也许它不会破坏存储库,但肯定会破坏工作副本。混淆二进制文件的最终目标是什么?

标签: svn obfuscation visualsvn-server post-commit post-commit-hook


【解决方案1】:

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

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

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

    虽然钩子脚本几乎可以做任何事情,但只有一个维度 哪些钩子脚本作者应该表现出克制:不要修改 使用钩子脚本提交事务。虽然它可能很诱人 使用钩子脚本自动纠正错误、缺点或 正在提交的文件中存在违反政策的行为,这样做可以 造成问题。 Subversion 保留客户端缓存的某些位 存储库数据,如果您以这种方式更改提交事务, 这些缓存变得难以察觉的陈旧。这种不一致会导致 令人惊讶和意想不到的行为。而不是修改 交易,您应该简单地在 预提交钩子,如果不符合要求则拒绝提交 要求。作为奖励,您的用户将学习谨慎的价值, 合规意识的工作习惯。

【讨论】:

  • 感谢您的回答。由于忘记了多任务处理,客户端不是一个选项。这是否可能在预提交时进行操作。怎么样?
  • @Fatih 你应该用钩子修改事务。如果您使用 TortoiseSVN,请尝试客户端挂钩脚本。这些钩子在客户端工作,start-commit 钩子可以帮助你 - tortoisesvn.net/docs/release/TortoiseSVN_en/…
猜你喜欢
  • 2012-02-13
  • 2015-12-27
  • 2011-04-22
  • 1970-01-01
  • 2023-04-03
  • 2010-10-28
  • 2011-05-23
  • 2011-01-15
  • 2017-09-07
相关资源
最近更新 更多