首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试打印(revision_id,depth,revno,end_of_merge)元组的迭代器时出错

尝试打印(revision_id,depth,revno,end_of_merge)元组的迭代器时出错
EN

Stack Overflow用户
提问于 2020-06-23 00:00:41
回答 1查看 19关注 0票数 0

如果我输入代码:

代码语言:javascript
复制
b = Branch.open('directory containing repository')
r1 = 1010 #input revision number
r2 = r1-5 #last revision number that I want to sort to
r1 = b.dotted_revno_to_revision_id((r1,), _cache_reverse=False) #revision ids of r1 and r2
r2 = b.dotted_revno_to_revision_id((r2,), _cache_reverse=False)

test = b.iter_merge_sorted_revisions(start_revision_id=r1, stop_revision_id=r2, stop_rule='include', direction = 'reverse')

for i in test:
    print i[0]

iter_merge_sorted_revisions应该返回(revision_id,depth,revno,end_of_merge)元组的迭代器。

所以当我打印所有的i时,它应该返回给我r1和r2之间的所有revision_ids。

它确实会把它们返回给我,一直到r2。但我一直收到一个错误,一旦for循环结束,我的其余代码就会停止运行。

错误码如下:

代码语言:javascript
复制
Traceback (most recent call last):
File "log.py", line 60, in <module>
for i in revisions:
File "/usr/lib/python2.7/dist-packages/bzrlib/branch.py", line 634, in _filter_start_non_ancestors
pmap = self.repository.get_parent_map([rev_id])
File "/usr/lib/python2.7/dist-packages/bzrlib/vf_repository.py", line 1882, in get_parent_map
self.revisions.get_parent_map(query_keys).iteritems():
File "/usr/lib/python2.7/dist-packages/bzrlib/groupcompress.py", line 1356, in get_parent_map
return self._get_parent_map_with_sources(keys)[0]
File "/usr/lib/python2.7/dist-packages/bzrlib/groupcompress.py", line 1375, in _get_parent_map_with_sources
new_result = source.get_parent_map(missing)
File "/usr/lib/python2.7/dist-packages/bzrlib/groupcompress.py", line 2093, in get_parent_map
self._check_read()
File "/usr/lib/python2.7/dist-packages/bzrlib/groupcompress.py", line 2051, in _check_read
raise errors.ObjectNotLocked(self)
bzrlib.errors.ObjectNotLocked: <bzrlib.groupcompress._GCGraphIndex object at 0x7fd55e846390> is not locked

我不知道出了什么问题,因为for循环已经完成,因为它确实返回了我想要的最后一个版本。我不知道我是否需要以某种方式手动结束循环,但任何想法都很感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-06-23 02:43:18

您需要对分支进行读锁定,然后才能访问它:

代码语言:javascript
复制
b.lock_read()
try:
    test = b.iter_merge_sorted_revisions(start_revision_id=r1, stop_revision_id=r2, stop_rule='include', direction = 'reverse')
finally:
    b.unlock()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62518617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档