我目前正在努力将我们现有的项目从svn迁移到mercurial。
我需要找到以下用例的解决方案:
当前存在一个构建服务器,它通过http(LAN上的本地)通过“svn export”获取svn存储库。这显然不需要提供用户/密码
然后将项目构建,打包并作为二进制文件复制到指定的存储中,同时丢弃未版本化的副本。
我在Mercurial找到的所有内容都是“hg archive”,它要求我先克隆存储库,然后提供凭证。
有没有办法在不提供凭据的情况下获取存储库的无版本副本?
感谢您的帮助。
编辑:忘记提及,服务器很遗憾地运行了一台Windows机器。
答案 0 :(得分:0)
您需要修改您的方法。做一次导出,或者甚至一遍又一遍地克隆回购都不是必要的,这是浪费时间。
相反,clone
一次,触发构建时只有pull
和update
。整个存储库保留在您的工作区中,并且拉动可确保您获得repo中的最新版本。一旦您的仓库是最新的,您可以更新到您想要的任何修订。通过更新,如果要复制旧行为,还可以清理文件夹。虽然清理工作区不是强制性的,但对构建服务器执行此操作可能是一种好习惯。
如果这解决了您的密码问题,那么您无需进一步查看。但是,如果您仍需要有关如何在提取期间提供凭据的信息,请阅读此question/answer。
修改强> 因此,您仍然需要构建服务器的只读访问权限,在这种情况下,您将需要为您的mercurial repo求助于其他服务器。 Rhodecode为此提供了一些选项read this。
答案 1 :(得分:0)
" svn export" over http ...这显然不需要提供用户/密码。
WTF? "显然" ??? RLLY?您只能导出导出SVN-repo的匿名RO访问特别启用
有没有办法在不提供凭据的情况下获取存储库的无版本副本?
是。但是必须在源Mercurial-repository端配置它,如果你不管理它(或者不能请求更改) - 你 FAIL
<强>前言强>
svn export URL
无需身份验证只是因为匿名用户启用了repo(或某些部分)中的某些操作hg archive
不在此列表中)<强>脸部强>
答案 2 :(得分:0)
在Mercurial服务器上的终端类型hg serve
中,这将启动mercurial服务器并通知您正在提供的URL。
然后,您可以从the_url/archive/tip.zip
获取当前存储库中的文件的zip,然后继续。
您还可以认真考虑为构建服务器提供对repo的读取访问权限,然后克隆存储库然后执行拉取。您还可以查看使用post commit钩子将消息发送到构建服务器以启动构建。
假设您的构建过程的用户名为BUILD_SERVER,您只需在存储库配置(.hg/hgrc
)中设置该用户没有写入权限:
[acl.deny]
# This list is checked first. If a match is found, acl.allow is not
# checked. All users are granted access if acl.deny is not present.
# Format for both lists: glob pattern = user, ..., @group, ...
** = BUILD_SERVER
然后,您可以让构建服务器使用hg pull
和hg up -C
来获取代码,包括hg up -r
的特定修订版,而不会让构建计算机执行提交。有关acl。