📢 {{ state.siteInfo.site_announcement }}
我的仓库 ({{ myRepos.length }})
暂未创建仓库,点击右上角新建一个吧!
{{ r.owner_name }}/{{ r.name }} ({{ r.display_name }})
{{ r.is_private ? '私有' : '公开' }}
欢迎来到 git.luwei.work

自研高性能 Git 仓库管理平台,支持标准 Git Smart HTTP 克隆推送、Web 在线编写提交代码、分支合并、工单追踪与全站后台管理。

暂无匹配的仓库数据
{{ repo.owner_name }} / {{ repo.name }} ({{ repo.display_name }}) {{ repo.is_private ? '🔒 私有' : '🌐 公开' }}
更新于 {{ formatDate(repo.updated_at) }}

{{ repo.description || '暂无仓库描述' }}

🌿 默认分支: {{ repo.default_branch }} 💾 大小: {{ formatSize(repo.size_kb) }}
账号登录 | 注册新账号

{{ state.repoData.owner_name }} / {{ state.repoData.name }} ({{ state.repoData.display_name }})

{{ state.repoData.is_private ? '🔒 私有仓库' : '🌐 公开仓库' }} {{ formatSize(state.repoData.size_kb) }}

{{ state.repoData.description || '暂无描述' }}

📁 代码文件
🕒 提交记录
💬 工单 (Issues) {{ state.repoMeta.open_issues_count }}
⚙️ 仓库设置
🚀 快速开始:当前是一个空仓库

你可以直接在网页上一键创建文件完成首次提交,或者通过下方 Git 命令行推送代码:

方式一:在本地新建仓库并推送到 {{ state.siteInfo.domain }} ({{ state.cloneProtocol.toUpperCase() }})

git init
git checkout -b {{ state.repoMeta.default_branch }}
echo "# {{ state.repoData.name }}" >> README.md
git add README.md
git commit -m "first commit"
git remote add origin {{ state.cloneProtocol==='ssh' ? state.repoMeta.clone_url_ssh : state.repoMeta.clone_url_http }}
git push -u origin {{ state.repoMeta.default_branch }}

方式二:推送本地已有 Git 仓库

git remote add origin {{ state.cloneProtocol==='ssh' ? state.repoMeta.clone_url_ssh : state.repoMeta.clone_url_http }}
git push -u origin --all
git push -u origin --tags
📄 {{ state.viewingBlob.path }} {{ state.viewingBlob.size }} Bytes
Raw 原文
此文件为二进制文件,请点击右上角「Raw 原文」下载查看。
{{ idx + 1 }} {{ line }}
当前分支/引用:
共展示最近 {{ state.commits.length }} 条提交记录
提交详情: {{ state.selectedCommit.message }} {{ state.selectedCommit.short_hash }}
作者: {{ state.selectedCommit.author_name }} <{{ state.selectedCommit.author_email }}> · 提交时间: {{ formatDate(state.selectedCommit.date) }} · 完整 SHA: {{ state.selectedCommit.hash }}
变更文件 ({{ state.selectedCommit.files_changed.length }}):
{{ f }}
{{ idx + 1 }} {{ line }}
提交信息 (Commit Message) 作者 Commit SHA 提交时间 操作
暂无提交记录
{{ c.message }} {{ c.author_name }} {{ c.short_hash }} {{ formatDate(c.date) }}
#{{ state.activeIssue.number }} {{ state.activeIssue.title }} {{ state.activeIssue.state === 'open' ? '开启中' : '已关闭' }}
{{ state.activeIssue.author_name }} 创建于 {{ formatDate(state.activeIssue.created_at) }}
{{ state.activeIssue.body || '无详细内容' }}

评论记录 ({{ state.issueComments.length }})

{{ cm.author_name }} {{ formatDate(cm.created_at) }}
{{ cm.body }}
基本信息与可见性设置
/ .git

新地址预览:git@{{ state.siteInfo.domain }}:{{ state.repoSettingsForm.new_owner }}/{{ state.repoSettingsForm.name }}.git
⚠️ 修改后旧地址立即失效,本地仓库需执行:git remote set-url origin 新地址

协作者权限管理 (Collaborators)
用户名 权限级别 添加时间 操作
暂无外部协作者
{{ c.username }} {{ c.permission }} {{ formatDate(c.created_at) }}
⚠️ 迁移与危险操作区域 (Migration & Danger Zone)
🔄 迁移 / 转移仓库所有权 (Transfer Ownership)

将此仓库(含全部代码、分支与工单)过户迁移给平台上的另一个用户账号。

永久删除此仓库

删除后,磁盘上的 Git 裸仓库及所有提交历史、工单将不可恢复。

个人资料设置
修改登录密码
🔐 SSH 公钥管理 (通过本地 SSH 私钥免密提交)

绑定本机 ~/.ssh/id_ed25519.pub 或 ~/.ssh/id_rsa.pub 公钥后,即可直接使用 git@{{ state.siteInfo.domain }}:用户名/仓库名.git 通过 SSH 私钥克隆与推送代码。

标题 / 算法 SHA256 指纹 最近使用 添加时间 操作
暂未绑定 SSH 公钥
{{ k.title }} {{ k.key_type }} {{ k.fingerprint }} {{ k.last_used_at ? formatDate(k.last_used_at) : '从未使用' }} {{ formatDate(k.created_at) }}
🔑 个人访问令牌 (HTTP Personal Access Tokens)

访问令牌(glw_...)可用于命令行 git clone / git push HTTP Basic 认证(作为密码输入),也可作为 API Bearer Token 使用。

请立即复制保存您的新令牌(仅显示一次):
{{ state.createdPlainToken }}
名称 令牌前缀 最近使用 创建时间 操作
暂未生成个人访问令牌
{{ t.name }} {{ t.token_prefix }} {{ t.last_used_at ? formatDate(t.last_used_at) : '从未使用' }} {{ formatDate(t.created_at) }}

⚡ git.luwei.work 超级管理后台

Super Administrator
📊 全站概览
👥 用户管理
📦 全站仓库监管
🚚 迁移与备份服务
🔒 SSL证书管理
🔧 系统设置
🛡️ 安全审计日志
注册用户总数
{{ state.adminOverview.total_users }}
活跃正常用户: {{ state.adminOverview.active_users }}
全站托管仓库
{{ state.adminOverview.total_repos }}
私有仓库: {{ state.adminOverview.private_repos }}
协作工单总数
{{ state.adminOverview.total_issues }}
Issues 追踪记录
Git 裸仓库磁盘占用
{{ formatSize(state.adminOverview.total_storage_kb) }}
{{ state.adminOverview.git_version }} · {{ state.adminOverview.go_version }}
最近系统活动与安全审计
时间 操作人 动作类型 目标对象 详情说明 IP 地址
{{ formatDate(log.created_at) }} {{ log.actor_name }} {{ log.action }} {{ log.target }} {{ log.detail }} {{ log.ip }}
ID 用户名 邮箱 角色 状态 仓库数 注册时间 管理操作
#{{ u.id }} {{ u.username }} {{ u.email }} {{ u.is_admin ? '管理员' : '普通用户' }} {{ u.is_active ? '正常' : '已封禁' }} {{ u.repo_count }} {{ formatDate(u.created_at) }}
共 {{ state.adminRepos.length }} 个仓库
ID 所有者 / 仓库名 可见性 默认分支 占用空间 最后更新 管理操作
#{{ r.id }} {{ r.owner_name }} / {{ r.name }}
{{ r.description }}
{{ r.is_private ? '私有' : '公开' }} {{ r.default_branch }} {{ formatSize(r.size_kb) }} {{ formatDate(r.updated_at) }}
📦 整站一键打包导出与跨服务器迁移 (Full Platform Backup & Restore)
1. 导出全站数据与全部 Git 裸仓库备份包 (.tar.gz)

一键将 /home/git/data(包含 SQLite 数据库 git_luwei.db 所有用户/SSH公钥/配置/工单 + repositories/ 下所有 Git 裸仓库)完整打包下载到本地,可用于异地灾备或整站迁移至新服务器。

2. 从整站备份包 (.tar.gz) 恢复 / 迁入仓库数据

上传从旧服务器导出的 .tar.gz 迁移备份包,系统将自动解压所有裸仓库至 /home/git/data/repositories 并自动扫描注册入库。

🔍 服务器本地仓库迁入与磁盘扫描纳管
自动扫描 /home/git/data/repositories 目录未纳管裸仓库

如果你直接通过 scp / rsync 将外部 *.git 裸仓库拷贝到了服务器 /home/git/data/repositories/<用户名>/ 下,点击右侧按钮即可一键自动识别并注册到平台数据库。

从服务器任意本地路径直接迁入 Git 仓库

支持将当前服务器其他路径下的裸仓库或工作区仓库克隆迁入到平台指定用户名下:

🔒 当前全站 HTTPS / SSL 证书状态
当前生效证书模式
🌐 Let's Encrypt 官方权威机构证书 🔐 内部自签名证书 (Self-Signed) ⚠️ 未配置证书
颁发机构 (Issuer)
{{ state.sslStatus.issuer || '未知' }}
保护域名 (Common Name)
{{ state.sslStatus.subject || state.sslStatus.domain || 'git.luwei.work' }}
剩余有效期
{{ state.sslStatus.days_remaining }} 天 (至 {{ formatDate(state.sslStatus.not_after) }})
切换证书工作模式

支持随时在「Let's Encrypt 权威公开证书」与「内置私有自签名证书」之间无缝热切换(自动更新 Nginx 并平滑重载)。

🛠️ 一键签发 / 重新生成内部自签名 SSL 证书

系统将使用内置的 Go 密码学引擎(RSA + X.509 标准)为您的域名自动生成根 CA 与全功能自签服务端证书,并附带 SAN 扩展。支持局域网、内网穿透及隔离网络环境免外部域名验证使用。

⬇️ 下载自签根证书 (.crt)
💡 提示:如使用自签证书,本地 Git 命令行可执行 git config --global http.sslVerify false 暂时跳过根证书校验,或双击下载的 .crt 证书文件安装导入至本机的「受信任的根证书颁发机构」实现完美绿锁。
平台全局参数设置
安全与操作审计日志 (最近 200 条)
ID 时间 操作者 事件类型 目标对象 详细描述 来源 IP
#{{ a.id }} {{ formatDate(a.created_at) }} {{ a.actor_name }} {{ a.action }} {{ a.target }} {{ a.detail }} {{ a.ip }}

📊 团队与个人工作情况看板

全方位统计展示全员及每个人的代码提交量、增删行数、每日活跃趋势、工作时段分布与提交明细。

👤 选择人员视角:
👥 全部成员汇总 ({{ state.workAllMembersSnapshot.length }})
{{ m.username.slice(0, 1) }} {{ m.username }} {{ m.commits }} 次
{{ state.workUserFilter ? `${state.workUserFilter} 的提交次数` : '总提交次数 (Commits)' }}
{{ state.workSummary.total_commits }}
统计周期:最近 {{ state.workDays }} 天
新增代码行数 (+Additions)
+{{ state.workSummary.total_additions }}
累计编写新代码行
删除/重构代码行数 (-Deletions)
-{{ state.workSummary.total_deletions }}
净增代码: {{ state.workSummary.total_additions - state.workSummary.total_deletions }} 行
活跃贡献者 / 活跃仓库
{{ state.workSummary.active_contributors }} 人 / {{ state.workSummary.active_repos }} 库
平台注册总人数: {{ state.workSummary.total_members }} 人
📈 每日工作提交趋势图 {{ state.workUserFilter ? `(${state.workUserFilter})` : '(全员)' }} 悬停柱体查看当日明细
{{ dp.commits }}
{{ dp.label }}
🔥 每日活跃度热力分布:
少 多
🏆 成员工作量对比图 (点击成员可筛选) 重置为全部成员
暂无成员数据
#{{ idx + 1 }} {{ m.username.slice(0, 1) }} {{ m.username }} (活跃 {{ m.active_days }} 天 · {{ m.repos_count }} 个仓库)
{{ m.commits }} 次提交 · +{{ m.additions }} / -{{ m.deletions }}
⏰ 24 小时工作提交时段分布 (00:00 - 23:00) 按本地时间小时统计
{{ cnt }}
{{ String(hr).padStart(2, '0') }}时
📅 星期分布: {{ wName }}: {{ state.workWeekdayDist[wIdx] || 0 }}
📦 各仓库研发工作量占比 ({{ state.workRepoStats.length }}) 点击仓库名进入仓库
该时间段内暂无仓库提交记录
{{ rs.repo_full_name }} {{ rs.is_private ? '私有' : '公开' }} {{ rs.contributors }} 人参与
{{ rs.commits }} 次提交 · +{{ rs.additions }} / -{{ rs.deletions }}
👥 每个人工作情况汇总表 ({{ state.workMembers.length }} 人) 点击任意成员可筛选查看其专属图表与提交流水
排名 成员账号 / 邮箱 提交次数 新增代码行 删除代码行 改动文件数 活跃天数 参与仓库 最新提交动态 操作
#{{ idx + 1 }}
{{ m.username.slice(0, 1) }}
{{ m.username }} 管理员
{{ m.email }}
{{ m.commits }} 次 +{{ m.additions }} -{{ m.deletions }} {{ m.files_changed }} {{ m.active_days }} 天 - 近期无提交
📝 提交与代码变更明细列表 (共 {{ state.workCommits.length }} 条记录) 当前筛选人员: {{ state.workUserFilter }}
提交时间 提交人 所属仓库 提交内容 (Commit Message) Commit SHA 改动文件 代码增删量 代码审查
当前筛选条件下暂无代码提交记录
{{ formatDate(cm.date) }}
{{ cm.username.slice(0, 1) }} {{ cm.username }}
📦 {{ cm.repo_full_name }} {{ cm.message }} {{ cm.short_hash }} {{ cm.files_changed }} 个文件 +{{ cm.additions }} / -{{ cm.deletions }}
{{ state.toast.text }}