Ownership is measured by how many commits each author made to each file in the current tree. It highlights bus-factor risk (files only one person has ever touched) and where knowledge is concentrated. The bus factor is the smallest number of people who are, between them, primary owner of more than half of the files.
Files only one author has ever changed. The more a file has changed, the more knowledge is at risk if that person leaves.
| File | Sole owner | Commits |
|---|---|---|
| src/jobservice/config.yml | Steven Zou | 9 |
| src/jobservice/common/rds/keys.go | Steven Zou | 8 |
| src/portal/src/app/shared/components/operation/operation.component.css | Shijun Sun | 6 |
| src/portal/src/app/base/left-side-nav/clearing-job/gc-page/gc/gc-history/gc-history.component.scss | Shijun Sun | 6 |
| src/portal/src/app/base/left-side-nav/replication/replication/list-replication-rule/list-replication-rule.component.scss | Shijun Sun | 6 |
| src/portal/src/app/base/project/tag-feature-integration/tag-retention/retention.ts | Shijun Sun | 6 |
| src/portal/src/app/base/left-side-nav/config/config.component.html | Shijun Sun | 6 |
| make/photon/prepare/templates/registryctl/env.jinja | Qian Deng | 6 |
| src/portal/src/app/base/left-side-nav/system-robot-accounts/system-robot-accounts.component.scss | Shijun Sun | 5 |
| src/portal/src/app/base/project/robot-account/add-robot/add-robot.component.scss | Shijun Sun | 5 |
| File | Sole owner | Commits |
|---|---|---|
| src/jobservice/config.yml | Steven Zou | 9 |
| src/jobservice/common/rds/keys.go | Steven Zou | 8 |
| src/portal/src/app/shared/components/operation/operation.component.css | Shijun Sun | 6 |
| src/portal/src/app/base/left-side-nav/clearing-job/gc-page/gc/gc-history/gc-history.component.scss | Shijun Sun | 6 |
| src/portal/src/app/base/left-side-nav/replication/replication/list-replication-rule/list-replication-rule.component.scss | Shijun Sun | 6 |
| src/portal/src/app/base/project/tag-feature-integration/tag-retention/retention.ts | Shijun Sun | 6 |
| src/portal/src/app/base/left-side-nav/config/config.component.html | Shijun Sun | 6 |
| make/photon/prepare/templates/registryctl/env.jinja | Qian Deng | 6 |
| src/portal/src/app/base/left-side-nav/system-robot-accounts/system-robot-accounts.component.scss | Shijun Sun | 5 |
| src/portal/src/app/base/project/robot-account/add-robot/add-robot.component.scss | Shijun Sun | 5 |
| src/portal/src/app/shared/router-guard/member-guard-activate.service.ts | Shijun Sun | 5 |
| src/portal/src/app/base/account-settings/account-settings-modal.component.scss | Shijun Sun | 5 |
| src/portal/src/app/base/left-side-nav/config/config.module.ts | Shijun Sun | 5 |
| src/portal/src/app/base/project/repository/repository-gridview.component.scss | Shijun Sun | 5 |
| src/portal/src/app/shared/components/push-image/push-image.scss | Shijun Sun | 5 |
| make/photon/prepare/utils/registry_ctl.py | Qian Deng | 5 |
| make/photon/prepare/commands/gencerts.py | Qian Deng | 5 |
| make/photon/prepare/utils/db.py | Qian Deng | 5 |
| src/pkg/auditext/event/login/login.go | stonezdj(Daojun Zhang) | 4 |
| src/core/api/internal_test.go | Wang Yan | 4 |
| src/portal/src/app/base/left-side-nav/project-quotas/project-quotas/project-quotas.component.scss | Shijun Sun | 4 |
| src/portal/src/app/base/left-side-nav/system-robot-accounts/list-all-projects/list-all-projects.component.scss | Shijun Sun | 4 |
| src/portal/src/app/base/left-side-nav/clearing-job/gc-page/gc/gc.component.scss | Shijun Sun | 4 |
| src/portal/src/app/shared/router-guard/mode-guard-activate.service.ts | Shijun Sun | 4 |
| src/portal/src/app/base/project/repository/artifact/artifact-additions/build-history/build-history.component.html | Shijun Sun | 4 |
| src/portal/src/app/base/project/p2p-provider/task-list/task-list.component.scss | Shijun Sun | 4 |
| src/portal/src/app/base/left-side-nav/replication/total-replication-page.component.html | Shijun Sun | 4 |
| src/portal/src/app/shared/components/cron-schedule/cron-schedule.component.scss | Shijun Sun | 4 |
| src/portal/docker-build/nginx.conf.example | Shijun Sun | 4 |
| src/portal/src/app/base/left-side-nav/projects/projects.module.ts | Shijun Sun | 4 |
| src/portal/src/app/base/project/tag-feature-integration/tag-feature-integration.component.html | Shijun Sun | 4 |
| src/portal/src/app/base/project/tag-feature-integration/tag-feature-integration.component.scss | Shijun Sun | 4 |
| src/portal/src/app/base/project/project-detail/project-detail.component.scss | Shijun Sun | 4 |
| src/portal/src/app/base/project/repository/gridview/grid-view.component.scss | Shijun Sun | 4 |
| src/pkg/tag/model/tag/model.go | Wenkai Yin(尹文开) | 4 |
| src/common/rbac/rbac.go | He Weiwei | 4 |
| tests/robot-cases/Group1-Nightly/Setup_Nightly.robot | danfengliu | 4 |
| tests/resources/Harbor-Pages/Project-Config-Elements.robot | danfengliu | 4 |
| src/controller/jobmonitor/monitor_test.go | stonezdj(Daojun Zhang) | 3 |
| src/pkg/auditext/event/config/config.go | stonezdj(Daojun Zhang) | 3 |
| src/pkg/auditext/event/login/logout.go | stonezdj(Daojun Zhang) | 3 |
| src/pkg/auditext/event/basic.go | stonezdj(Daojun Zhang) | 3 |
| src/pkg/securityhub/manager.go | stonezdj(Daojun Zhang) | 3 |
| src/common/rbac/project/rbac_util.go | Wang Yan | 3 |
| src/controller/artifact/processor/cnai/parser/base_test.go | Chlins Zhang | 3 |
| src/controller/artifact/processor/cnai/parser/util_test.go | Chlins Zhang | 3 |
| src/controller/artifact/processor/cnai/cnai_test.go | Chlins Zhang | 3 |
| src/controller/artifact/processor/cnai/parser/files_test.go | Chlins Zhang | 3 |
| src/controller/artifact/processor/cnai/parser/license_test.go | Chlins Zhang | 3 |
| src/controller/artifact/processor/cnai/parser/readme_test.go | Chlins Zhang | 3 |
| src/controller/task/controller.go | Chlins Zhang | 3 |
| src/controller/task/execution_controller.go | Chlins Zhang | 3 |
| src/portal/src/app/base/left-side-nav/system-robot-accounts/projects-modal/projects-modal.component.scss | Shijun Sun | 3 |
| src/portal/src/app/shared/router-guard/oidc-guard-active.service.ts | Shijun Sun | 3 |
| src/portal/src/app/shared/router-guard/sign-in-guard-activate.service.ts | Shijun Sun | 3 |
| src/portal/src/app/shared/router-guard/system-admin-activate.service.ts | Shijun Sun | 3 |
| src/portal/src/app/base/project/repository/artifact/artifact-additions/dependencies/dependencies.component.html | Shijun Sun | 3 |
| src/portal/src/app/shared/components/global-message/message.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/left-side-nav/registries/create-edit-endpoint/create-edit-endpoint.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/project/project.module.ts | Shijun Sun | 3 |
| src/portal/src/app/shared/components/datetime-picker/datetime-picker.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/left-side-nav/job-service-dashboard/schedule-card/schedule-card.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/project/tag-feature-integration/tag-retention/tag-retention.service.ts | Shijun Sun | 3 |
| src/portal/.stylelintrc.json | Shijun Sun | 3 |
| src/portal/src/app/base/left-side-nav/clearing-job/audit-log-purge/history/purge-history.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/left-side-nav/config/auth/config-auth.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/left-side-nav/group/group.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/left-side-nav/user/change-password/change-password.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/left-side-nav/user/user.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/password-setting/password-setting.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/project/repository/artifact/artifact-list-page/artifact-list-page.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/project/repository/artifact/artifact-summary.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/project/summary/summary.component.scss | Shijun Sun | 3 |
| src/portal/src/app/shared/components/image-name-input/image-name-input.component.scss | Shijun Sun | 3 |
| src/portal/src/app/shared/components/inline-alert/inline-alert.component.scss | Shijun Sun | 3 |
| src/portal/src/app/shared/components/remaining-time/remaining-time.component.scss | Shijun Sun | 3 |
| src/portal/src/app/shared/components/view-token/view-token.component.scss | Shijun Sun | 3 |
| src/portal/src/app/base/left-side-nav/project-quotas/project-quotas.module.ts | Shijun Sun | 3 |
| src/portal/src/app/base/left-side-nav/replication/replication.module.ts | Shijun Sun | 3 |
| tests/resources/Harbor-Pages/Job_Service_Dashboard_Elements.robot | Yang Jiao | 3 |
| src/controller/replication/flow/controller.go | Wenkai Yin(尹文开) | 3 |
| src/server/server.go | Wenkai Yin(尹文开) | 3 |
| src/pkg/quota/errors.go | He Weiwei | 3 |
| src/server/middleware/skipper.go | He Weiwei | 3 |
| make/photon/prepare/tests/migrations/utils_test.py | Qian Deng | 3 |
| make/photon/prepare/utils/log.py | Qian Deng | 3 |
| tests/resources/Harbor-Pages/Project-Copy-Elements.robot | danfengliu | 3 |
| tests/apitests/python/update_docker_cfg.sh | danfengliu | 3 |
| tests/testcases/Group2-image-management/2-23-admin-delete-images.md | Henry Zhang | 3 |
| src/pkg/scan/export/csv_sanitize_test.go | stonezdj(Daojun Zhang) | 2 |
| src/pkg/auditext/event/config/config_test.go | stonezdj(Daojun Zhang) | 2 |
| src/pkg/auditext/event/login/logout_test.go | stonezdj(Daojun Zhang) | 2 |
| src/pkg/auditext/event/basic_test.go | stonezdj(Daojun Zhang) | 2 |
| src/pkg/scan/rest/v1/models_test.go | stonezdj(Daojun Zhang) | 2 |
| src/controller/artifact/processor/sbom/sbom.go | stonezdj(Daojun Zhang) | 2 |
| src/controller/artifact/processor/sbom/sbom_test.go | stonezdj(Daojun Zhang) | 2 |
| src/controller/event/handler/internal/project_test.go | stonezdj(Daojun Zhang) | 2 |
| src/pkg/securityhub/model/model.go | stonezdj(Daojun Zhang) | 2 |
| src/lib/config/context.go | stonezdj(Daojun Zhang) | 2 |
| src/pkg/ldap/model/ldap.go | stonezdj(Daojun Zhang) | 2 |
Primary owner = the author with the most commits to a file. Solely owned = files only that author has touched.
| Author | Files owned | Solely owned | Files touched |
|---|---|---|---|
| Shijun Sun | 781 | 146 | 854 |
| Wang Yan | 383 | 40 | 1,144 |
| stonezdj(Daojun Zhang) | 360 | 44 | 870 |
| Chlins Zhang | 263 | 142 | 983 |
| Wenkai Yin(尹文开) | 255 | 57 | 703 |
| miner | 142 | 14 | 682 |
| danfengliu | 142 | 13 | 172 |
| He Weiwei | 137 | 31 | 525 |
| Steven Zou | 130 | 16 | 267 |
| Qian Deng | 94 | 22 | 367 |
| Daniel Jiang | 70 | 21 | 439 |
| Henry Zhang | 58 | 50 | 69 |
| Yang Jiao | 54 | 25 | 192 |
| Ziming Zhang | 44 | 1 | 172 |
| sigsbee | 36 | 0 | 56 |
| Max | 32 | 32 | 82 |
| Shengwen YU | 22 | 12 | 371 |
| Vadim Bauer | 22 | 12 | 93 |
| clouderati | 21 | 0 | 153 |
| Yogi_Wang | 19 | 5 | 79 |
| yanggang | 19 | 0 | 75 |
| Lichao Xue | 18 | 7 | 93 |
| Prasanth Baskar | 17 | 4 | 577 |
| prahaladdarkin | 16 | 0 | 78 |
| peimingming | 15 | 0 | 41 |
Files touched by the most people — shared code where changes are most likely to need coordination.
| File | Contributors | Primary owner | Owner share |
|---|---|---|---|
| src/portal/src/i18n/lang/en-us-lang.json | 50 | Shijun Sun | 23.9% |
| src/portal/src/i18n/lang/fr-fr-lang.json | 46 | Shijun Sun | 23.1% |
| src/portal/src/i18n/lang/zh-cn-lang.json | 44 | Shijun Sun | 24.6% |
| src/portal/src/i18n/lang/es-es-lang.json | 44 | Shijun Sun | 24.1% |
| README.md | 44 | Henry Zhang | 29.8% |
| src/portal/src/i18n/lang/pt-br-lang.json | 43 | Shijun Sun | 25.2% |
| Makefile | 42 | Wang Yan | 25.0% |
| CONTRIBUTING.md | 38 | miner | 22.2% |
| api/v2.0/swagger.yaml | 35 | stonezdj(Daojun Zhang) | 20.6% |
| src/portal/src/i18n/lang/tr-tr-lang.json | 34 | Shijun Sun | 34.1% |
| src/portal/src/i18n/lang/zh-tw-lang.json | 30 | Shijun Sun | 45.3% |
| src/portal/src/i18n/lang/de-de-lang.json | 28 | Shijun Sun | 53.1% |
| src/go.mod | 27 | Wang Yan | 22.9% |
| src/go.sum | 25 | miner | 19.8% |
| src/core/main.go | 23 | stonezdj(Daojun Zhang) | 13.9% |
| .gitignore | 23 | Daniel Jiang | 13.4% |
| src/common/const.go | 22 | stonezdj(Daojun Zhang) | 20.3% |
| make/harbor.yml.tmpl | 22 | miner | 22.8% |
| make/photon/Makefile | 22 | Wang Yan | 24.7% |
| .github/workflows/CI.yml | 20 | miner | 22.5% |
How Harbor compares with other CNCF graduated projects →
How Harbor ranks among CNCF graduated projects by AI-assisted commits →
Generate this report for your own repository with gitstats-action · All Gallery reports
Publishes the report to GitHub Pages on every push to main: turn on Pages for the gh-pages branch.
# .github/workflows/gitstats.yml
name: GitStats Report
on:
push:
branches: [main]
permissions:
contents: write
jobs:
gitstats:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: shenxianpeng/gitstats-action@v1
with:
deploy-to-pages: true