Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何仅按日期从Mercurial服务器获取修订号?_Python_Mercurial - Fatal编程技术网

Python 如何仅按日期从Mercurial服务器获取修订号?

Python 如何仅按日期从Mercurial服务器获取修订号?,python,mercurial,Python,Mercurial,我不太熟悉Python和Django。 我们使用Jenkins作为持续集成的服务器。但是,当Jenkins克隆存储库时,一些修订被复制(这是一个自动过程)。 当我们需要为测试/生产目的构建一个包时,我们必须使用与可以在Mercurial server(存储库)上检查的版本号完全相同的版本号来标记它。 我们使用布料。 我尝试在一个脚本中结合Fabric和Python(Python的Paramiko将用于连接第三方Mercurial服务器并获得正确的修订号)。 该修订版取自Jenkins在本地服务器

我不太熟悉Python和Django。 我们使用Jenkins作为持续集成的服务器。但是,当Jenkins克隆存储库时,一些修订被复制(这是一个自动过程)。 当我们需要为测试/生产目的构建一个包时,我们必须使用与可以在Mercurial server(存储库)上检查的版本号完全相同的版本号来标记它。 我们使用布料。 我尝试在一个脚本中结合Fabric和Python(Python的Paramiko将用于连接第三方Mercurial服务器并获得正确的修订号)。 该修订版取自Jenkins在本地服务器上制作的包,作为上次提交的日期。很简单:

pipe = subprocess.Popen(
    ['hg', 'log', '-l', '1', '--template', '{date|isodatesec}', env.repo_dir],
    stdout=subprocess.PIPE,
)
但问题是从Mercurial服务器获取修订号。我试过:

stdin, stdout, stderr = ssh_conn.execute('hg log -l 1 --date /"%s to %s/" --template {rev}')
…但没有预期的结果。

只是肮脏的想法:

  • 如果您在日志中获得正确的使用日期,并以正确的格式提供这些日期(请参阅hg help dates)(顺便说一句,对于单个日志记录来说,不仅仅是“
  • 我只看到我的工作命令和您的in“chars using and escaping.JFYI,tested(在Win端,在cmdshell中)命令之间有很小的差异
hg日志-l 1--日期“2011年10月30日星期日10:16:00+0600至2012年5月27日星期日19:55:34+0600”--模板“{rev}”

38

(日期是从日志输出“按原样”抓取的,可能模板中的尾随\n也会玩游戏-我现在想有麻烦了)

注意:


任何不带-R的hg命令只有在$PWD是mercurial repo时才有效。恐怕any~不是存储库的位置

更好的解决方法是更改Jenkins克隆以获取所有内容。您说过:

但是,当Jenkins克隆存储库时,一些修订被复制(这是一个自动过程)

让Jenkins克隆所有东西——只需要很长时间,然后让Jenkins的逻辑是这样的:

hg pull                   # get everything new
hg update XXXXXXXXXX      # update to the desired revision
./build VERSION=$(hg id)  # do a parameterized build
试图从远程mercurial存储库中获取克隆/拉取之外的任何东西都不值得这么复杂。

这个问题:让我明白了。如果没有更好地搜索知识,我会被这个问题搞得一团糟…;-)