svn的web管理后台服务svnWebUI

背景

用户需要使用web管理页面管理svn,根据网上的资料了解到国产开源的管理后台有两个,一个是svnadmin,另一个是svnwebui。对比功能和部署方式的不同,最后选择svnwebui,原因是部署方便,只需要部署jar包和java环境即可,无需其它服务,而svnadmin需要部署php、数据库服务,所以我选择最方便的工具先试用。

系统环境

麒麟v10,X64
JDK 17
Svn 1.45.5

服务部署

项目地址:https://gitee.com/cym1102/svnWebUI/#svnwebui,当前版本1.9.0,项目地址里面有更详细的说明。

下载软件

wget -O svnWebUI.jar https://gitee.com/cym1102/svnWebUI/releases/download/1.9.0/svnWebUI-1.9.0.jar 

启动服务后自动重启svn服务,这个比较坑,需要做一些适配,在适配完成之前项目暂时不可用,这比较坑,官方文档也没有这个说明,所以启动服务前必须提前备份。生产环境部署该服务要提前发个通知。
1.因为项目的仓库地址默认为/home/svnWebUI,如果不指定路径,那么启动服务器后svn也会重启并指定路径为/home/svnWebUI/repo,这时候原有仓库就不可用了,后期需要复制原有仓库到priject.home指定path的repo这层目录里,比如我这里priject.home指定的是/home/svn,那么svn的仓库根路径就变成/home/svn/repo。
2.项目启动后原有项目的svnserver.conf的内容会重新生成,指定的passwd和authz两个文件的路径会变成…/…/passwd和…/…/authz,这时候用户将无权限访问仓库,需要在后台导入用户并按照原有策略赋权后用户才能正常访问仓库。

启动:
server.port:指定服务端口,后期用这个端口访问后台
priject.home:仓库目录

nohup java -jar -Dfile.encoding=UTF-8 svnWebUI.jar --server.port=6060 --priject.home=/home/svn >/dev/null &

启动后做一下适配,将原有仓库的目录负责到/home/svn/repo目录,之后就可以登录后台使用服务了

使用方法

  1. 登录
    地址:http://IP:6060
    账密:第一次登录需要设置管理员账号密码
  2. 系统配置
    都是默认的,svn只要正常会自动识别,状态是已启动就对了
  3. 添加仓库
    进入仓库管理
    添加仓库:新建仓库使用这个功能,支持中英文名称
    导入库:将原有仓库目录复制到/home/svn/repo,确定即可看到仓库
  4. 添加用户
    进入用户管理
    添加用户:新建用户使用这个功能,密码不能含有特殊字符
    导入用户:使用原有仓库的passwd导入
  5. 添加组
    进入小组管理
    添加小组:新建小区使用这个功能,支持中英文名称
    导入小组:导入原有仓库authz文件,但是我测试了没有生效,原因不详
  6. 赋权
    进入仓库管理
    全体授权:
    禁用:所有用户无访问该仓库的权限,需要访问仓库使用用户授权或小组授权
    只读:所有用户对该仓库有只读权限,这个优先级高于用户授权和小组授权,所以这里给只读后所有用户都会有只读权限
    读写:所有用户对该仓库有读写权限,这个优先级高于用户授权和小组授权,所以这里给只读后所有用户都会有读写权限
  7. 用户授权
    前置条件:先要对当前管理员账号添加所有权限,否则在授权时无法选择路径,只能选择根目录
    添加用户:勾选需要授权的用户,可选多个,然后选择路径,对不同的路径分配对应权限。权限分只读、读写、禁止。如果不需要细分权限,选择根目录即可。
    注意:如果全体授权里已分配权限,那么其优先级将高于用户权限,比如全部授权里面赋予了读写权限,用户授权里即使对某用户设置禁用也是无效的,该用户依然可以访问仓库。
  8. 小组授权
    前置条件:先要对当前管理员账号添加所有权限,否则在授权时无法选择路径,只能选择根目录
    添加小组:勾选需要授权的小组,可选多个,然后选择路径,对不同的路径分配对应权限。权限分只读、读写、禁止。如果不需要细分权限,选择根目录即可。
    注意:如果全体授权里已分配权限,那么其优先级将高于小组权限,比如全部授权里面赋予了读写权限,小组授权里即使对某小组设置禁用也是无效的,该小区内的用户依然可以访问仓库。

基础的功能先写道这里,后续会继续使用系统并完善文档。

写在最后

本系统应该是个人开发者做的,虽然目前有些功能还有缺失,比如批量授权等,但是核心功能经过测试已经很好的满足管理需要了,各位用户对系统有建议和意见可以发邮件给作者,强烈建议出一点点费用鼓励作者继续完善系统,在这里感谢作者的付出,祝svnWebUI越来越强大。

Read more

专为前端新手编写的AbortController入门教程,通过生动比喻和简单示例讲解这个重要的Web API,帮助初学者快速掌握请求取消的核心概念。

快速体验 1. 打开 InsCode(快马)平台 https://www.inscode.net 2. 输入框内输入如下内容: 请创建一个面向初学者的AbortController交互式学习教程。要求:1) 用生活化比喻解释AbortController概念;2) 分步骤实现一个简单的请求取消示例;3) 添加可交互的代码沙盒让用户实时修改尝试;4) 包含常见问题解答;5) 提供可视化流程图说明工作原理。使用简洁的HTML/CSS/JavaScript实现,避免复杂框架。 1. 点击'项目生成'按钮,等待项目生成完整后预览效果 今天想和大家分享一个前端开发中非常实用的工具——AbortController。作为刚入门的前端开发者,可能对这个名词感到陌生,但其实它的概念非常简单,而且在实际项目中非常有用。 1. 什么是AbortController? 想象一下你在餐厅点餐的场景:你向服务员(相当于浏览器)下单(相当于发起请求),但突然改变主意想取消订单。AbortController就像那个可以随时喊&

【 n8n解惑】混合数据 RPA:如何在 n8n 中同时操控 GUI 应用和 Web API?

【 n8n解惑】混合数据 RPA:如何在 n8n 中同时操控 GUI 应用和 Web API?

混合数据 RPA:基于 n8n 与 AI 的 GUI/Web API 协同自动化实战指南 目录 * 0. TL;DR 与关键结论 * 1. 引言与背景 * 2. 原理解释(深入浅出) * 3. 10分钟快速上手(可复现) * 4. 代码实现与工程要点 * 5. 应用场景与案例 * 6. 实验设计与结果分析 * 7. 性能分析与技术对比 * 8. 消融研究与可解释性 * 9. 可靠性、安全与合规 * 10. 工程化与生产部署 * 11. 常见问题与解决方案(FAQ) * 12. 创新性与差异性 * 13. 局限性与开放挑战 * 14. 未来工作与路线图 * 15. 扩展阅读与资源

H.265 (HEVC) 网页播放:WebAssembly + FFmpeg 实现浏览器端的硬解/软解兼容方案

H.265 (HEVC) 网页播放:WebAssembly + FFmpeg 实现浏览器端的硬解/软解兼容方案

标签: #WebAssembly #FFmpeg #H.265 #WebCodecs #音视频开发 #前端性能 📉 前言:浏览器对 H.265 的“爱恨情仇” 为什么 <video src="video.h265.mp4"> 在 Chrome 里放不出来? 因为 H.265 的专利池太深了。只有 Safari (即使是 iOS) 和 Edge (需硬件支持) 原生支持较好。 我们的目标是构建一套混合解码方案: 1. 优先硬解 (WebCodecs):如果浏览器支持硬件加速(如 Chrome 94+ 的 WebCodecs),直接调用

Flutter 三方库 webfeed 的鸿蒙化适配指南 - 掌控 RSS/Atom 内容订阅、XML 语义分发实战、鸿蒙级精密聚合专家

Flutter 三方库 webfeed 的鸿蒙化适配指南 - 掌控 RSS/Atom 内容订阅、XML 语义分发实战、鸿蒙级精密聚合专家

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 webfeed 的鸿蒙化适配指南 - 掌控 RSS/Atom 内容订阅、XML 语义分发实战、鸿蒙级精密聚合专家 在鸿蒙跨平台应用执行高级内容聚合与多维资讯资产指控(如构建一个支持全场景自动发现的鸿蒙阅读器、处理海量 RSS 2.0/Atom 协议的语义认领或是实现一个具备极致指控能力的资产管理快报中控)时,如果依赖繁琐的原始 XML 解析或是不透明的正文提取算法,极易在处理“命名空间(Namespace)冲突导致的字段丢失”、“非标准日期格式的解析崩溃”或“多模式 Feed 协议间的字段映射偏移”时陷入研发逻辑崩溃死循环。如果你追求的是一种完全对齐现代 Web 聚合标准、支持全量语义解析且具备极致指控确定性的方案。今天我们要深度解析的 webfeed——一个专注于解决“分发内容标准化认领”痛点的顶级工具库,正是帮你打造“鸿蒙超感阅读内核”