PowerShell install 一键部署subversion

news2024/12/23 20:31:29

subversion

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

TortoiseSVN 

TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 Subversion 和版本控制系统看作一种“时间机器”。

Subversion目录说明 

  • C:\svn\repos\project
目录说明
db存放所有的版本控制数据文件。
hooks放置hook脚本文件。
locks用来追踪存取文件库的客户端。
format一个文本文件,文件中只包含一个整数,表示当前文件库配置的版本号。
confSVN版本库的配置文件(版本库的访问账号、权限等)。

创建一键自动化部署subversion 

  • 最终实现下载Subversion,解压,安装,创建系统服务,配置Subversion,防火墙配置,企业微信机器人通知
  • C:\svn\repos #存储库根目录
  • C:\svn\repos\project #创建版本库
  • C:\svn\repos\project\trunk #创建和使用一个仓库,最终的软件上传的目录
  • C:\svn\repos\project\conf\svnserve.conf #SVN业务配置
  • C:\svn\repos\project\conf\passwd #设置存储库的用户名和密码
  • 用户名密码,只允许test01,test02用户访问project全局目录下所有文件的增删改查权限,登录,test03只读project下的trunk目录文件,不允许创建删除操作
test01/test@123
test02/test@123
test03/test@123
  • C:\svn\repos\project\conf\authz   #设置组和用户,允许开发者组在SVN文档-root上读写,允许读取fedora用户的[trunk]文件夹
  • $webhook_wechat_robot #企业微信机器人通知实现需要更改此部分地址
  • subversion命令参考
  • 更改文件名称或者磁盘请仔细查看变量部分内容
powershell-install-subversion.ps1
<# Powershell Install subversion
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+  _____                       _____ _          _ _ +
+ |  __ \                     / ____| |        | | |+
+ | |__) |____      _____ _ _| (___ | |__   ___| | |+
+ |  ___/ _ \ \ /\ / / _ \ '__\___ \| '_ \ / _ \ | |+
+ | |  | (_) \ V  V /  __/ |  ____) | | | |  __/ | |+
+ |_|   \___/ \_/\_/ \___|_| |_____/|_| |_|\___|_|_|+
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
                                                                                                              
# Powershell Install subversion
# .\powershell-install-subversion.ps1
#> 

$drive="c:"
$subversion_url="https://www.visualsvn.com/files/"
$subversion_zip="Apache-Subversion-1.14.2.zip"
$subversion_catalogue="subversion-1.14.2"
$subversion_site="C:\Program Files"
$subversion_catalogue_new="subversion"
$subversion_bin="bin"

#Create the repository root
$subversion_repository_svn="svn"
$subversion_repository_svn_repo="repos"
$subversion_project="project"
$subversion_trunk="trunk"

#svnserve config
$svnserve_project_conf="conf"
$svnserve_conf="svnserve.conf"
$svnserve_passwd="passwd"
$svnserve_authz="authz"

$webhook_wechat_robot="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXX"

Write-Host "download vc_redist x86 x64" -ForegroundColor Green
Invoke-WebRequest -Uri https://aka.ms/vs/17/release/vc_redist.x64.exe -UseBasicParsing -OutFile "$drive\vc_redist.x64.exe"
Invoke-WebRequest -Uri https://aka.ms/vs/17/release/vc_redist.x86.exe -UseBasicParsing -OutFile "$drive\vc_redist.x86.exe"

Write-Host "install vc_redist x86 x64" -ForegroundColor Green
Start-Process -FilePath "$drive\vc_redist.x64.exe" -ArgumentList {/q /install} -Wait
Start-Process -FilePath "$drive\vc_redist.x86.exe" -ArgumentList {/q /install} -Wait

Write-Host "download subversion" -ForegroundColor Green
Invoke-WebRequest -Uri $subversion_url\$subversion_zip -UseBasicParsing  -OutFile $drive\$subversion_zip

Write-Host "Create a directory for storing database data" -ForegroundColor Green
New-Item -ItemType Directory $subversion_site\$subversion_catalogue_new

Write-Host "decompression subversion" -ForegroundColor Green
Expand-Archive -Path $drive\$subversion_zip -DestinationPath $subversion_site\$subversion_catalogue_new

Write-Host "Create subversion environment variables" -ForegroundColor Green
$env:path += ";$subversion_site\$subversion_catalogue_new\$subversion_bin"
setx PATH $env:path /M

Write-Host "Create the repository root" -ForegroundColor Green
New-Item -ItemType Directory $drive\$subversion_repository_svn
New-Item -ItemType Directory $drive\$subversion_repository_svn\$subversion_repository_svn_repo

Write-Host "ApacheSubversion system service" -ForegroundColor Green
$svnserve_service="svnservice"
$svnserve_BinaryPathName="$subversion_site\$subversion_catalogue_new\$subversion_bin\svnserve.exe --service -r $drive\$subversion_repository_svn\$subversion_repository_svn_repo"
$svnserve_Description="Subversion Server"
New-Service -Name $svnserve_service -BinaryPathName $svnserve_BinaryPathName -DisplayName $svnserve_service -Description $svnserve_Description -StartupType Automatic
Start-Service $svnserve_service

Write-Host "Command to create subversion project" -ForegroundColor Green
svnadmin create $drive\$subversion_repository_svn\$subversion_repository_svn_repo\$subversion_project

Write-Host "Create a repository" -ForegroundColor Green
$svn_repository_trunk="file:///$subversion_repository_svn/$subversion_repository_svn_repo/$subversion_project/$subversion_trunk"
svn mkdir $svn_repository_trunk -m "create"

Write-Host "Delete default svnserve.conf authz passwd" -ForegroundColor Green
Remove-Item -Path "$drive\$subversion_repository_svn\$subversion_repository_svn_repo\$subversion_project\$svnserve_project_conf\$svnserve_conf", "$drive\$subversion_repository_svn\$subversion_repository_svn_repo\$subversion_project\$svnserve_project_conf\$svnserve_passwd", "$drive\$subversion_repository_svn\$subversion_repository_svn_repo\$subversion_project\$svnserve_project_conf\$svnserve_authz" -Recurse -Force -Verbose 

Write-Host "create svnserve.conf" -ForegroundColor Green
$functionText = @"
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
"@
New-Item "$drive\$subversion_repository_svn\$subversion_repository_svn_repo\$subversion_project\$svnserve_project_conf\$svnserve_conf" -type file -force -value $functionText

Write-Host "create passwd" -ForegroundColor Green
$functionText = @"
[users]
test01 = test@123
test02 = test@123
test03 = test@123
"@
New-Item "$drive\$subversion_repository_svn\$subversion_repository_svn_repo\$subversion_project\$svnserve_project_conf\$svnserve_passwd" -type file -force -value $functionText

Write-Host "create authz" -ForegroundColor Green
$functionText = @"
[groups]
developer = test01,test02

[/]
@developer = rw

[/trunk]
test03 = r
"@
New-Item "$drive\$subversion_repository_svn\$subversion_repository_svn_repo\$subversion_project\$svnserve_project_conf\$svnserve_authz" -type file -force -value $functionText

Write-Host "Restart svnserve service" -ForegroundColor Green
Restart-Service $svnserve_service

Write-Host "create firewall subversion port" -ForegroundColor Green
New-NetFirewallRule -DisplayName "subversion" -Direction Outbound -profile any -LocalPort 3690 -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "subversion" -Direction Inbound -profile any -LocalPort 3690 -Protocol TCP -Action Allow

Write-Host "Delete package" -ForegroundColor Green
Remove-Item -Path "$drive\$subversion_zip", "$drive\*.exe" -Recurse -Force -Verbose

#Enterprise wechat robot address
$webhook = $webhook_wechat_robot

#svnservice service state
$svn_service = Get-Service -Name $svnserve_service | Select-Object -ExpandProperty Status

#svnservice service port state
$svn_service_state = Test-NetConnection -ComputerName localhost -Port 3690 | Select-Object -ExpandProperty TcpTestSucceeded

#Obtain the Windows host system version
$Win_version = Get-WmiObject -Class Win32_OperatingSystem | Select-Object -ExpandProperty Caption
$Win_version_Names = echo $Win_version

#svnservice version
$svn_version = (Get-Item "$subversion_site\$subversion_catalogue_new\$subversion_bin\svnserve.exe").VersionInfo.FileVersion

$content = Write-Output ""Win_version: $Win_version_Names" `n "svn_service: $svn_service" `n "svn_service_state: $svn_service_state" `n "svn_version: $svn_version""

$body = "{
    `"msgtype`":`"text`",
    `"text`":{
    `"content`":`"$content`",
	`"mentioned_list`":[`"jason`"]
    }
}"

Write-Host "The variable value obtained is transferred to the enterprise wechat robot" -ForegroundColor Green
Invoke-RestMethod $webhook -ContentType "application/json;charset=utf-8" -Method Post -Body $body

执行安装

.\powershell-install-subversion.ps1

输出结果展示

企业微信机器人通知

使用TortoiseSVN连接测试

  • PowerShell install 一键部署TortoiseSVN 参考
  • 用户名密码,只允许test01,test02用户访问project全局目录下所有文件的增删改查权限,登录,test03只读project下的trunk目录文件,不允许创建删除操作

上传容易文件到trunk 目录 

提交上传文件到svn 服务器

选择需要上传到svn服务器的文件

 

文件上传完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/518391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ICG-Azide/Alkyne吲哚菁绿标记叠氮/炔基-星戈瑞

ICG-Azide 吲哚菁绿标记叠氮 分子式&#xff1a;C48H56N6O4S 分子量&#xff1a;813.07 外观&#xff1a;固体/粉末 激发、发射波长:785/821nm 规格&#xff1a;mg 溶解性&#xff1a;溶于DMSO或DMF ICG-Azide是一种新型的荧光探针&#xff0c;其化学性质独特。它是一种含…

MongoDb简单使用

介绍 MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。 它支持的数据结构非常松…

leetcode50 快速幂

https://leetcode.cn/problems/powx-n/实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即&#xff0c; x n x^n xn &#xff09;。 示例 1&#xff1a;输入&#xff1a;x 2.00000, n 10 输出&#xff1a;1024.00000 示例 2&#xff1a;输入&#xff1a;…

安全工程师必读 ——《安全技术工具扫盲》

安全技术 SAST - 静态应用安全测试&#xff08;白盒检测&#xff09;DAST - 动态应用安全测试&#xff08;黑盒检测&#xff09;IAST - 交互式应用安全测试&#xff08;灰盒检测&#xff09;RASP - 运行时应用自我保护Dependency Scanning&#xff08;依赖项安全扫描&#xff…

袋鼠云产品功能更新报告05期|应有尽“优”,数栈一大波功能优化升级!

这段时间&#xff0c;我们对产品本身以及客户反馈的一些问题进行了持续的更新和优化&#xff0c;包括对离线平台数据同步功能的更新&#xff0c;数据资产平台血缘问题的优化等&#xff0c;力求满足不同行业用户的更多需求&#xff0c;为用户带来极致的产品使用体验。 以下为袋…

边缘计算节点是啥?边缘计算与CDN有什么关系?一文带你了解边缘计算节点BEC(2)

上文已经为大家详细介绍了边缘计算节点 BEC 与 CDN 之间的关系&#xff0c;对于 CDN 而言&#xff0c;边缘计算不仅仅只增加了存储、计算的功能&#xff0c;还有网络、安全等等一系列的基础能力。 如果大家感兴趣&#xff0c;欢迎阅读我们上一篇文章 边缘计算节点是啥&#x…

如何在pythonanywhere上部署Django项目?

PythonAnywhere是一个基于云的Python开发平台&#xff0c;它允许用户在云端运行、开发和部署&#xff0c;该平台提供了Python编程环境、Web框架、数据库和Web服务器等工具&#xff0c;让用户可以轻松地创建和部署Python应用程序。PythonAnywhere还提供了免费和付费的服务&#…

Java设计模式其一(概述、UML图、软件设计模式) | 穷其道者,归处亦同

文章目录 1. 设计模式概述1.1 软件设计模式的概念1.2 学习设计模式的必要性1.3 设计模式分类 2. UML图2.1 类图概述2.2 类图的作用2.3 类图的表示法2.3.1 类的表达方式2.3.2 类与类之间关系的表达方式 3. 软件设计原则3.1 开闭原则3.2 里氏替换原则3.3 依赖倒转原则3.4 接口隔离…

Java【多线程基础6】定时器的使用方式 + 模拟实现Timer

文章目录 前言一、定时器1, 什么是定时器2, 如何使用定时器 二、模拟实现定时器1, 初步实现2, 问题改善 总结 前言 &#x1f4d5;各位读者好, 我是小陈, 这是我的个人主页 &#x1f4d7;小陈还在持续努力学习编程, 努力通过博客输出所学知识 &#x1f4d8;如果本篇对你有帮助, …

6.文本三剑客--sed、awk

文章目录 文本三剑客sed介绍命令介绍打印内容删除替换插入分组 文本三剑客 sed 介绍 sed编辑器 sed是一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的一组规则来 编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么…

高阶python | 堆栈列表:RPN应用(模拟逆波兰式功能实现)

python版本&#xff1a;3.10 在列表中&#xff0c;append和pop方法有一个特殊的用途。可以在列表上使用这两个方法让列表变成一个堆栈使用。 这就是一个栈&#xff0c;它是先进后出&#xff0c;类似单门轿厢电梯一样的设计&#xff0c;出入口共用 堆栈最有用的应用之一就是做逆…

【社区团购】预制菜零售如何打造精准社群?

预制菜作为现代生活的新型“网红”食品&#xff0c;其受欢迎程度日益提高。而在商业竞争日益激烈的当下&#xff0c;如何让你的预制菜零售业务&#xff08;文章编辑ycy6221&#xff09;具有巨大的竞争优势呢&#xff1f;社区团购是一个不错的切入点&#xff0c;这不仅是为了扩大…

5月12号软件资讯更新合集.....

Vue 3.3 “浪客剑心” 发布 Vue 3.3 已正式发布&#xff0c;代号 "Rurouni Kenshin"&#xff08;浪客剑心&#xff09;。 公告写道&#xff0c;此版本专注于改进开发者使用体验 —— 特别是 SFC<script setup> 与 TypeScript 的结合使用。一同发布的还有 Vue…

【C语言】操作符详解(上)

操作符详解&#xff08;上&#xff09; 1.操作符分类2.算数操作符3.移位操作符3.1 右移3.2 左移 4.位操作符4.1位操作符发的应用 5.赋值操作符6.单目操作符7.关系操作符8.逻辑操作符 1.操作符分类 算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操…

Vue3-黑马(四)

目录&#xff1a; &#xff08;1&#xff09;vue3-基础-axios-获取数据 &#xff08;2&#xff09;vue3-基础-axios-发送数据 &#xff08;3&#xff09;vue3-基础-axios-baseURL &#xff08;1&#xff09;vue3-基础-axios-获取数据 第三方库axios是对xhr的封装&#xff0…

智安网络|网络安全威胁风险分析:识别以及预防黑客和钓鱼攻击

随着网络技术的不断发展和普及&#xff0c;网络安全问题日益严峻。黑客、病毒、恶意软件、钓鱼攻击等威胁不断涌现&#xff0c;给个人、企业、国家的信息安全带来了极大的威胁。如何识别、分析和预防网络安全威胁已成为所有人必须要解决的问题。本篇文章将从黑客攻击和钓鱼攻击…

proc文件系统

proc介绍 (1)proc是虚拟文件系统&#xff0c;虚拟的意思就是proc文件系统里的文件不对应硬盘上任何文件&#xff0c;我们用去查看proc目录下的文件大小都是零,是接受到请求才动态生成的&#xff1b; (2)proc文件系统是开放给上层了解内核运行状态的窗口&#xff0c;通过读取pro…

如何通过品牌矩阵号赋能品牌?

小红书作为年轻人的“消费决策”平台、逐步成为越来越多用户的消费指南&#xff0c;同时也变成众多品牌的营销基地。在小红书运营矩阵账号可以很好的树立品牌形象、增加粉丝粘性、节约广告成本&#xff0c;那么在搭建矩阵的过程中如何管理品牌矩阵号也成为众多品牌必须要思考的…

3.操作系统

文章目录 1.操作系统概述&#xff08;1&#xff09;当前操作系统的主要类型&#xff08;2&#xff09;操作系统的特点&#xff08;3&#xff09;五种主要的功能&#xff08;4&#xff09;考点分布 2.进程&#xff08;1&#xff09;进程的状态&#xff08;2&#xff09;进程的定…

jeecg低代码主从表打印

1.在在线开发菜单栏中选择online表单开发&#xff0c;新建两张表&#xff0c;分别为主表和附表。 2.首页进入报表设计——积木报表设计。 3.进入报表管理——打印设计&#xff0c;选择一个模板或者新建都可以。 4.进入设计页面&#xff0c;点击数据集管理右边的添加数据表&a…