我需要控制通过 SMB 共享访问的几个文件的版本。这些文件将被几个人修改。文件本身由 Web 服务器直接使用。
由于这些是生产文件,我想强制用户提取本地副本、编辑它们、提交并将它们推回。不幸的是,那台机器上没有 Mercurial 服务器。
在我这边配置 Mercurial 的合适方法是什么,以便:
- 版本控制(.hg 目录)保存在共享中
- 并且共享上的文件是最新版本?
我无权访问此服务器(通过共享除外)。如果我可以在那台机器上拥有一个 mercurial 服务器,我会使用挂钩来更新生产目录中的文件(我这样说只是为了突出我想要实现的目标 - 这种方法是不可能的,因为我不控制该服务器)
谢谢!
更新:我最终使用了一个中间服务器(我可以控制它)。一个钩子changegroup
触发一个脚本i) hg update
有新的本地文件ii)将它们复制到 SMB 共享
编辑 1在与alex的评论中讨论之后,我查看了命令行输出的详细版本。\\srv\hg\test1
回购有一个[hooks]
部分。changegroup = hg update
a 的输出hg push -v
给出了一些见解:
pushing to \\srv\hg\test1
query 1; heads
(...)
updating the branch cache
running hook changegroup: hg update
'\\srv\hg\test1'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported. Defaulting to Windows directory.
abort: no repository found in 'C:\Windows' (.hg not found)!
warning: changegroup hook exited with status 255
checking for updated bookmarks
listing keys for "bookmarks"
如果我正确理解上面的输出:
- 一个 cmd.exe 在客户端被触发,即使
[hook]
是在接收服务器上 - 它试图更新远程仓库
- ...但失败,因为不支持 UNC
所以alex的回答是正确的——它只是在 MS Windows 上不起作用(还没有?)。(亚历克斯如果我错了,请在评论中纠正我)