我正在尝试编写一个提交后钩子,它将压缩所有已更改的文件并保存目录树。当我尝试svn status
在存储库目录(包含 conf、db、钩子目录等)上执行 时,它会输出错误,W155007
提示此目录is not a working copy
。我无法承受仅为了压缩而将存储库克隆到本地,因为存储库大小可能超过 1TB。
我做错了什么,有没有可以在 Windows Server 机器上运行的这种钩子的示例?
答案1
我究竟做错了什么
很多:
- 你尝试(如你所见)使用设计用于 WC 的命令来操作存储库作为文件
- 另外,您还错过了一个细节 - 即使在(提交后清理)WC 中也
svn st
没有返回任何内容,因为 WC 是干净的 - 如果你想将一些非版本树与 HEAD 的状态同步,并且功能状态出口,你必须考虑到并处理不仅“已更改”文件的状态,而且至少处理“新”文件的状态,理想情况下还处理“已删除”文件的状态
无论如何,你必须学习svnlook 子命令并建立(使用前)可靠的工作流程
- 要使用 repo 中的哪个修订版本
- 如何获取此版本 ID
- 考虑在提交前钩子中构建文件列表,并仅在提交后使用它
以及相关工具链。阅读svnlook 已改变为了获取文件,也许svnlook 最年轻用于获取子命令的修订changed
,如果您只在提交后工作,并且希望始终从上次提交中获取文件(请注意对 WIP 分支的提交)