PowerShell install 一键部署subversion

2023-05-16

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服务器的文件

 

文件上传完成

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PowerShell install 一键部署subversion 的相关文章

随机推荐

  • Linux Shell 实现一键部署tomcat10+java13

    tomcat 前言 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器 xff0c 属于轻量级应用服务器 xff0c 在中小型系统和并发访问用户不是很多的场合下被普遍使用 xff0c 是开发和调试JSP 程序的首选 对于一个初学
  • Linux Shell 实现一键部署SQL_Server2022

    sql Server 前言 Microsoft SQL Server 是一个全面的数据库平台 xff0c 使用集成的商业智能 BI 工具提供了企业级的数据管理 Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供
  • Linux Shell 实现一键部署Redis6

    redis 前言 Redis xff08 Remote Dictionary Server xff0c 即远程字典服务 xff0c 是一个开源的使用ANSI C语言编写 支持网络 可基于内存亦可持久化的日志型 Key Value数据库 xf
  • Linux Shell 实现一键部署Rabbitmq

    rabbitmq 前言 RabbitMQ是实现了高级消息队列协议 xff08 AMQP xff09 的开源消息代理软件 xff08 亦称面向消息的中间件 xff09 RabbitMQ服务器是用Erlang语言编写的 xff0c 而集群和故障
  • [linux]mount与nfs挂载简介

    文章目录 挂载mount目录间挂载卸载与fuserfstabNFS Server配置命令 NFS client mount用于挂载设备 xff1a 挂载分区 xff1a mount dev sdb1 data xff1b 文件夹间 xff1
  • Linux Shell 实现一键部署Nginx

    nginx前言 nginx engine x 是 HTTP 和反向代理服务器 邮件代理服务器和通用 TCP UDP 代理服务器 xff0c 最初由Igor Sysoev编写 很长一段时间以来 xff0c 它一直在许多负载重的俄罗斯网站上运行
  • Linux Shell 实现一键部署二进制Rabbitmq

    rabbitmq 前言 RabbitMQ是实现了高级消息队列协议 xff08 AMQP xff09 的开源消息代理软件 xff08 亦称面向消息的中间件 xff09 RabbitMQ服务器是用Erlang语言编写的 xff0c 而集群和故障
  • Linux Shell 实现一键部署二进制docker+docker_compose

    docker 前言 Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 xff0c 然后发布到任何流行的 Linux或Windows 机器上 xff0c 也可以实现虚拟化 容器是完全
  • PowerShell install Docker+docker-compoer

    docker 前言 Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 xff0c 然后发布到任何流行的 Linux或Windows 机器上 xff0c 也可以实现虚拟化 容器是完全
  • PoweShell Win_server install wsl

    什么是 WSL 2 WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本 xff0c 它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件 它的主要目
  • PoweShell Win_desktop install wsl

    什么是 WSL 2 WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本 xff0c 它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件 它的主要目
  • Linux Shell 实现一键部署二进制go+caddy+filebrowser

    filebrowser filebrowser 是一个使用go语言编写的软件 xff0c 功能是可以通过浏览器对服务器上的文件进行管理 可以是修改文件 xff0c 或者是添加删除文件 xff0c 甚至可以分享文件 xff0c 是一个很棒的文
  • PowerShell install go+caddy+filebrowser+nssm 实现部署文件系统

    filebrowser filebrowser 是一个使用go语言编写的软件 xff0c 功能是可以通过浏览器对服务器上的文件进行管理 可以是修改文件 xff0c 或者是添加删除文件 xff0c 甚至可以分享文件 xff0c 是一个很棒的文
  • Linux Shell 实现一键部署http+用户名密码登录

    Apache 前言 Apache 音译为阿帕奇 是世界使用排名第一的Web服务器软件 它可以运行在几乎所有广泛使用的计算机平台上 xff0c 由于其跨平台和安全性被广泛使用 xff0c 是最流行的Web服务器端软件之一 它快速 可靠并且可通
  • PowerShell install 一键部署http+用户名密码登录实现文件系统

    Apache 前言 Apache 音译为阿帕奇 是世界使用排名第一的Web服务器软件 它可以运行在几乎所有广泛使用的计算机平台上 xff0c 由于其跨平台和安全性被广泛使用 xff0c 是最流行的Web服务器端软件之一 它快速 可靠并且可通
  • [python]异常处理与try语句

    文章目录 异常处理try语句异常信息抛出异常 异常类型自定义异常预定义异常 使用 try except else 来捕获异常 xff0c 且要求异常必须继承自Exception类 异常处理 运行期检测到错误称为异常 try语句 python
  • 大杂烩·OSI和TCP/IP协议与ZigBee技术·一

    1 ZigBee技术 ZigBee是基于IEEE802 15 4标准的低功耗局域网协议 根据国际标准规定 xff0c ZigBee技术是一种短距离 低功耗的无线通信技术 这一名称 xff08 又称紫蜂协议 xff09 来源于蜜蜂的八字舞 x
  • Linux Shell 实现一键部署subversion

    subversion SVN是subversion的缩写 xff0c 是一个开放源代码的版本控制系统 xff0c 通过采用分支管理系统的高效管理 xff0c 简而言之就是用于多个人共同开发同一个项目 xff0c 实现共享资源 xff0c 实
  • PowerShell install 一键部署TortoiseSVN

    TortoiseSVN TortoiseSVN是 Subversion 版本控制系统的一个免费开源客户端 xff0c 可以超越时间的管理文件和目录 文件保存在中央版本库 xff0c 除了能记住文件和目录的每次修改以外 xff0c 版本库非常
  • PowerShell install 一键部署subversion

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