如果给定存储库和修订号/修订 ID,我可以使用什么 Bzr 函数来 return 分支位置?

What Bzr function can I use to return the Branch location if given the repository and revision # / revision ID?

如果您有一个存储库并使用 bzr qlog 从命令行打开它,每个修订号都有一个部分 returns branch: trunkbranch: xyz

如果您在命令行中使用 bzr 日志,每个修订号都有一个部分 returns branch nick: trunkbranch nick: xyzbranch nick: yougettheidea

nick 是 nickname 的缩写,这是我在实际阅读日志 python 脚本时发现的。

我的想法是,既然有一些代码会为每个修订提取分支位置并将其显示在日志中,那么我应该能够直接将其用于 return 分支位置本身。所以代码对我来说 运行 和 return trunkxyz.

我想使用 python 和 bzrlib 工具箱编写此代码。

最后我在直接来自 bzr 的 log.py 代码中找到了这个。

branch_nick = revision.rev.properties.get('branch-nick', None) if branch_nick is not None: lines.append('branch nick: %s' % (branch_nick,))

但是,当我尝试使用 revision.rev.properties.get('branch-nick', None) 时,它给我一条错误消息,指出 rev 没有修订模块的属性。我也不知道要为 None.

放置什么

分支昵称不一定指磁盘上存在的任何内容。您可以使用 bzr nick 命令手动设置分支昵称,或者它可能是创建修订的机器上分支名称路径的最后一部分。

revisionRepository.get_revision 返回的对象,而不是 bzrlib.revision 模块。

所以我发现执行此操作的最佳方法是 运行 此代码。它将 return 'branch nickname'

`from bzrlib.branch import Branch
r1= "revision number such as 1024"
d1= "directory containing repository"
b = Branch.open (d1)
c = b.dotted_revno_to_revision_id((r1,), _cache_reverse=False)
f = b.repository.get_revision(c).properties.get('branch-nick')`

`print f`