You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bitbucket插件开发咨询:如何为仓库列表页添加自定义列

给Bitbucket仓库列表添加自定义列的解决方案

嘿Adam,刚好我之前折腾过Bitbucket仓库列表的自定义列开发,给你梳理下具体思路:

首先明确:仓库列表页完全可以添加自定义列,但它的扩展点和你之前用的分支列表不一样,你找不到对应的web sections节点是因为它用的是专门的列扩展点,不是页面通用sections。

具体步骤:

  1. 找到正确的扩展点
    Bitbucket项目下的仓库列表,对应的扩展点是repository-list-columns。你需要在插件的atlassian-plugin.xml里注册这个扩展点的web-item。

    比如添加仓库描述列的示例配置:

    <web-item key="repo-description-column" name="Repository Description Column" section="repository-list-columns" weight="100">
        <label key="repo.column.description.label"/>
        <tooltip key="repo.column.description.tooltip"/>
        <link linkId="repo-description-column-link">
            <param name="template">/templates/repo-description-column.vm</param>
        </link>
    </web-item>
    
  2. 编写渲染列内容的Velocity模板
    上面配置里的repo-description-column.vm用来控制列的显示内容,比如:

    #if ($repository.description)
        $repository.description
    #else
        <em>No description provided</em>
    #end
    
  3. 如果要显示分支数量这类动态数据
    需要通过Java组件获取数据并传递给模板:

    • 先实现ContextProvider接口,注入Bitbucket的服务来获取分支数量:
      public class BranchCountColumnProvider implements ContextProvider {
          private final BranchService branchService;
      
          @Inject
          public BranchCountColumnProvider(BranchService branchService) {
              this.branchService = branchService;
          }
      
          @Override
          public Map<String, Object> getContextMap(Map<String, Object> context) {
              Repository repository = (Repository) context.get("repository");
              long branchCount = branchService.countBranches(repository, null);
              Map<String, Object> result = new HashMap<>();
              result.put("branchCount", branchCount);
              return result;
          }
      }
      
    • 在atlassian-plugin.xml里注册这个上下文提供者,并关联到web-item:
      <context-provider key="branch-count-provider" class="com.your.plugin.BranchCountColumnProvider"/>
      
      <web-item key="branch-count-column" name="Branch Count Column" section="repository-list-columns" weight="200">
          <label key="repo.column.branchcount.label"/>
          <tooltip key="repo.column.branchcount.tooltip"/>
          <link linkId="branch-count-column-link">
              <param name="template">/templates/branch-count-column.vm</param>
              <param name="context-provider">branch-count-provider</param>
          </link>
      </web-item>
      
    • 对应的Velocity模板branch-count-column.vm就可以直接使用传递过来的数据:
      $branchCount
      

额外提醒:

  • 调整weight参数可以控制列的显示顺序,数值越小,列越靠左
  • 确保插件拥有足够的权限访问仓库和分支数据,比如给Java类添加@RequiresPermissions(RepositoryPermission.REPOSITORY_READ)注解
  • 测试时记得重启Bitbucket实例,或者使用插件自动重载功能提升效率

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:31:36