svn导出的mercurial等价物(无密码)

时间:2014-05-03 21:22:19

标签: svn mercurial svn-export

我目前正在努力将我们现有的项目从svn迁移到mercurial。
我需要找到以下用例的解决方案:
当前存在一个构建服务器,它通过http(LAN上的本地)通过“svn export”获取svn存储库。这显然不需要提供用户/密码 然后将项目构建,打包并作为二进制文件复制到指定的存储中,同时丢弃未版本化的副本。

我在Mercurial找到的所有内容都是“hg archive”,它要求我先克隆存储库,然后提供凭证。

有没有办法在不提供凭据的情况下获取存储库的无版本副本?

感谢您的帮助。

编辑:忘记提及,服务器很遗憾地运行了一台Windows机器。

3 个答案:

答案 0 :(得分:0)

您需要修改您的方法。做一次导出,或者甚至一遍又一遍地克隆回购都不是必要的,这是浪费时间。

相反,clone一次,触发构建时只有pullupdate。整个存储库保留在您的工作区中,并且拉动可确保您获得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(或某些部分)中的某些操作
  • Subversion是CVCS,Mercurial是DVCS(因此 - 您只能使用远程URL执行最少的命令集,hg archive不在此列表中)

<强>脸部

  • 无论如何,必须在执行存档之前将存储库克隆到本地镜像
  • 可以是一次性操作(稍后同步的开销较少)或每次执行
  • 必须在源存储库端配置匿名只读访问。如果使用hgweb + Apache进行http-repositories,请阅读&#34; 3.6.3.2。限制推向已知用户&#34;来自"Publishing Mercurial Repositories" wiki-page
  • 即使(特殊)经过身份验证的用户也不是一个大问题:使用ACL extension用户将获得对(部分)存储库的读访问权限而无需写访问权限,用户的凭据可能存储在(本地)克隆hgrc文件

答案 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 pullhg up -C来获取代码,包括hg up -r的特定修订版,而不会让构建计算机执行提交。有关acl。

的详细信息,请参阅here