通知Ci钩子抛出整数是必需的错误。为什么?

时间:2018-08-13 15:49:24

标签: python-2.7 mercurial hook

我正在使用notifyCi挂钩通知我的CI服务器。这不会给我带来任何问题

hg =版本2.2.1 操作系统= Linux Python 2.6.6

但是给我一个问题

hg =版本4.6.1 操作系统= Linux Python 2.7.5

看来我的hg 4.6.1版本有所更改。知道吗?

 22 def notifyci(ui, repo, node=None, **kwargs):
 23     """Notify the continuous integration server about pushed changesets.
 24     """
 25
 26     (isRemote, uid) = __parse_url(kwargs['url'])
 27     if not isRemote:
 28         return False
 29
 30     ui.status(_('Notify CI'))
 31     rel_repo = repo.root[len('/data/repository/'):]
 32     print rel_repo
 33     for rev in xrange(repo[node], len(repo)):
 34         cset = repo[rev]
 35         print cset
 36         curl = '/usr/bin/curl -d repo=/%s -d user=%s -d changeset=%s -d branch=%s http://jenkins.com'
 37         curl = curl % (rel_repo, uid, cset, cset.branch())
 38         print curl
 39         ui.status(_("  %s pushed changeset %s\n" % (uid, cset)))
 40         #ui.status(_("%s\n" % curl))
 41         if subprocess.call(curl, shell=True):
 42             ui.status(_("Could not notify continuous integration server\n"))
 43             return False
  
    

错误:第33行,位于notifyci中     对于xrange(repo [node],len(repo))中的rev:TypeError:一个整数是     必填

  

我对此进行了更多探索,发现如果我从第33行中删除repo [node],然后移到了下一个但没有给我正确的更改集。看起来问题出在repo [node]

1 个答案:

答案 0 :(得分:1)

repo[node]返回的对象不再可以隐式转换为整数。您需要明确获得修订号用户repo[node].rev()

第33行变为:

     for rev in xrange(repo[node].rev(), len(repo)):

(免责声明:我尚未测试代码)