Windows搭建Svn服务器

1、svn概述

1.1、svn简介

SVN(Subversion)是一个开源的版本控制系统,用于管理代码的版本控制和协作开发。它提供了一系列的命令行工具,以及一套客户端和服务器架构,用于管理代码的版本控制和协作。

在Windows系统,主要有TortoiseSVN和VisualSVN两种客户端GUI集成管理工具。

  • TortoiseSVN,也就是我们常说的“小乌龟”。可以帮助团队成员协同工作,跟踪代码的变化,解决冲突,并保留历史记录。它提供了一套图形化的界面,使用户可以直观地进行版本控制操作,如添加、提交、更新、回滚等。它还提供了一些高级功能,如分支、合并、标签等,以支持更复杂的开发流程。
  • VisualSVN是一个商业的SVN集成工具,专为Microsoft Visual Studio开发环境设计。它提供了与TortoiseSVN类似的功能,但更加紧密地集成到Visual Studio中,使开发人员可以在IDE中直接进行SVN操作。

总的来说,TortoiseSVN和VisualSVN都是用于管理代码的版本控制工具,它们提供了类似的功能,但在集成程度和适用环境上略有不同。TortoiseSVN适用于Windows操作系统,可以与任何开发环境集成;而VisualSVN专为Visual Studio开发环境设计,更紧密地集成到IDE中,提供了更高效的开发体验。

1.2、svn与git的主要差异

SVN和Git都是版本控制工具,但是它们有一些主要的差异。

  1. 分布式 vs 集中式:Git是分布式版本控制系统,每个开发者都有一个完整的代码仓库副本,并且可以在本地进行版本控制。而SVN是集中式版本控制系统,所有代码都托管在中央服务器上,每个开发者只能通过网络访问中央服务器来进行版本控制。

  2. 分支管理:Git在分支管理上比SVN更加灵活。Git的分支是轻量级的,创建和切换分支非常快速。而SVN的分支需要在服务器端创建,切换分支时需要从服务器端进行操作。

  3. 修改历史:Git记录文件的修改历史是基于内容的,每次提交都会生成一个新的快照。SVN记录的是文件的差异,每次提交只会记录文件的增删改动。

  4. 提交操作:Git的提交是本地操作,可以多次提交后再一次推送到远程仓库。SVN的提交是直接同步到中央服务器上。

  5. 分布式开发与协作:由于Git是分布式的,每个开发者都可以在本地进行版本控制和开发,而不会对其他人产生影响。SVN需要通过网络访问中央服务器,开发者需要提交代码到中央服务器上。

总的来说,Git更加适合分布式开发和协作,具有更强大的分支管理功能和快速的提交操作。SVN适合集中式的版本控制和较简单的项目。对于开发来说,Git和Svn使用通常没什么难度,而对于非开发人员(例如策划测试等),git绝对是个噩梦,svn才是正确的选择。

2、TortoiseSVN安装与使用

2.1、TortoiseSVN安装

本文主要使用TortoiseSVN进行演示。

官网下载--》 svn官网下载

网络问题,可能下载不了,换个地址,从svn中文网下载--> svn中文网下载

软件安装:

安装过程比较简单,但有两点需要注意:

1.安装路径最好不要带有空格,如常见的"E:\Program Files",不然注册windows服务比较麻烦。

2.安装过程记得把命令行工具栏勾选上,才可以使用命令行的方式操作,如下所示

安装重启之后,鼠标右键可以出现以下界面:

2.2、TortoiseSVN使用

选择一个文件目录作为代码远程仓库,然后右键

TortoiseSVN->Create repository here,创建一个仓库。然后选择"Create folder structure",创建svn默认的目录结果,包括trunk(主干),branches(分支),tags(标签)

用户/权限配置 

编辑conf/svnserve.conf文件,下面的配置项目取消注释

编辑conf/passwd文件, 增加几个测试账号

### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.[users]
admin = admin
Lily = harryssecret
Lucy = sallyssecret
Tom = sallyssecret

编辑conf/authz文件,进行权限控制。

该配置表明:

只有管理员(admin)对根目录拥有全部权限

开发人员(dev组)对根目录只有只读权限

用户Tom对trunk子目录拥有读写权限,其他用户只有只读权限

组成员前面加个符合"@",非组成员没有符合

[groups]
admin=admin
dev=Lily,Lucy[/]
@admin = rw
@dev = r
* =[/trunk]
Tom = rw
# * = r

启动svn服务器

svnserve -d -r E:\svnrepo

 注意:该命令执行完毕之后,在控制台是没有任何反应的,但执行已经成功了,不要关闭窗口。

每次手动启动比较麻烦,可以通过以下命令注册成windows服务。


sc create svnserve binpath= "E:\TortoiseSVN\bin\svnserve.exe --service -r E:\svnrepo" displayname= "svnservice" depend= Tcpip start= auto  

使用账户Lily切出trunk目录,执行成功

PS E:\web2> svn co svn://192.168.0.105/trunk  --username Lily
A    trunk\svn.ico
Checked out revision 2.

然而提交新文件的时候,执行成功(没有写入权限)

PS E:\web2\trunk> svn add .\readme.txt
A         readme.txt
PS E:\web2\trunk> svn commit -m 'test'
svn: E170001: Commit failed (details follow):
svn: E170001: Authorization failed

3、svn客户端简单操作

3.1、下载本地代码

刚进企业,部门主管会帮你开通svn账号,并给你一个地址。我们先把代码下载到本地。

新建一个本地目录,右键“SVN Checkout”,输入地址即可。(第一次登录需要输入账号密码,后续自动保存到本地)

3.2、更新代码

项目是整个团队在工作,时时刻刻都可能有别的成员提交代码,比如说同事提交了一个接口,说你使用某个功能直接调用一下他的接口就好了。所以,我们需要更新本地代码,与远程保持一致。

操作也很简单,直接在工作目录,空白地方,右键"SVN Update"即可。

3.3、提交代码 

当你小心翼翼写了几行代码,终于到了提交代码的时候了,第一次提交的时候难免诚惶诚恐。

提交代码的时候,有几点注意事项:

  • 提交之前务必先更新代码,检查是否有冲突(团队成员刚好跟你修改了同一个文件)。
  • 提交务必添加注释(例如功能开发或者bug修复),便于团队检阅(包括后期的自己)。

 直接在工作目录,空白地方,右键"SVN  Commit",确认没有冲突,添加注释日志,点击OK即可。

如果是自己新增加的文件,还需要执行“Add”操作,先添加文件,再提交。

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

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

相关文章

python与PySpark

1、Spark是Apache基金会 下的顶级开源项目,用于对海量数据经行大规模的分布式技术; 2、P有Spark是Spark的python实现,用于python中完成Spark的任务开发; 3、安装:可通过cmd终端进行安装 pip install PySpark也可以通…

npm 打包后自动压缩成zip文件

在package.json里面的scripts下面的build添加 powershell -NoProfile -ExecutionPolicy Unrestricted -Command ./zip.ps1 新的build就是 "build": "vite build && esno ./build/script/postBuild.ts && powershell -NoProfile -ExecutionP…

React 18的并发渲染:颠覆传统的性能飞跃

React 18 引入的并发渲染(Concurrent Rendering)是一个革命性的特性,它改变了 React 应用的渲染方式,使得渲染过程更加高效且可控。 并发渲染的核心原理在于将渲染任务拆分为多个可中断和可恢复的小任务,并根据优先级…

STM32的GPIO控制寄存器开发

寄存器GPIO控制 寄存器地址 寄存器地址计算 某个寄存器地址,由三个参数决定:1、总线基地址(BUS_BASE_ADDR);2,外设基于总线基地址的偏移量(PERIPH_OFFSET);3&#xff…

SQL CASE 语句

在SQL中的 CASE 语句是一种条件表达式,它允许你在查询中根据条件逻辑返回不同的值。CASE 语句通常有两种形式:简单 CASE 表达式和搜索 CASE 表达式。在我之前给出的优化SQL查询的例子中,使用了简单 CASE 表达式。 这里是简单 CASE 表达式的基…

百面算法工程师 | 分类和聚类

目录 6.1 为什么正确率有时不能有效评估分类算法? 6.2 什么样的分类器最好? 6.3 什么是聚类,你知道哪些聚类算法? 6.4 K-Means聚类算法如何调优? 6.5 K-Means聚类算法如何选择初始点? 6.6 K-Means聚类聚的是特征还是样本 …

反编译jar包

1. 复制java-compiler.jar /Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar 2.执行命令 java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler app.jar app app.jar是要反编译的jar…

微服务架构中的分库分表设计

在微服务架构中,分库分表设计是优化数据存储和查询性能的重要手段。通过合理的分库分表策略,可以提高系统的可扩展性、灵活性和响应速度。以下是关于微服务架构中分库分表设计的详细分析。 1. 概要设计 1.1 分库设计 1.1.1 垂直切分 (1&a…

const loading = ref(true)中loading 是常亮还是变量

在Vue 3中使用Composition API时,当你声明 const loading ref(true),loading 是一个响应式的引用(reactive reference),而不是一个常规的JavaScript变量。 这里的ref函数是Vue提供的,用来创建一个响应式的…

【面试经典 150 | 链表】删除链表的倒数第 N 个结点

文章目录 写在前面Tag题目来源解题思路方法一:统计节点个数方法二:双指针 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本…

向媒体投稿有了好方法财政单位信息宣传工作简单又轻松

当我初涉财政单位的信息宣传岗位,肩负起对外展示单位风采、传播政策信息的重要职责时,我深刻体验到了投稿之路的艰辛曲折。初期,对于如何有效对接媒体并成功发表稿件,我感到一片茫然,仿佛置身于浩瀚的信息海洋中,无从下手。 那时,我的工作日常就是广泛搜集各类媒体的联系方式,特…

{“errMsg“:“insertXWebCamera:fail appid privacy api banned“}

问题描述:微信小程序,在体验版本测试时,调用摄像头OK,没有任何问题,部署发布版本后,日志报错内容:{"errMsg":"insertXWebCamera:fail appid privacy api banned"}&#xff…

CountDownLatch倒计时器源码解读与使用

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 1. 前言 2. CountDownLatch有什么用 3. CountDownLatch底层原理 3.1. count…

代理设置方法 ubuntu git

目录 ubuntu设置代理方法 git 中 ubuntu设置代理方法 (1) .bashrc中写 或者 (2) 当自己的 虚拟机选择default switch,保持了虚拟机与本机的联通性(host模式好像),这时&#xff0…

嵌入式学习——C语言基础——day6

1. 一维数组的定义 相同类型有限数据的一个集合 数据类型 数组名[元素个数]; 注意: 1. 数组中的元素必须为同一类型 2. 元素个数有限个 3. 数组定义时,元素个数必须为常量或者常量表达式,不能为变量 2. 数组元素的访问 数组名[元素下标] 元素…

阿里通义千问Qwen-7B-Chat大模型简介

阿里通义千问Qwen-7B-Chat是由阿里云研发的一系列大语言模型中的一个,属于通义千问大模型系列。这个模型具有70亿参数规模,是基于Transformer架构构建的,专门为理解和生成人类语言而设计。Qwen-7B-Chat在超大规模的预训练数据集上进行训练&am…

深度剖析图像处理—边缘检测

什么是边缘检测 边缘检测(Edge Detection)就是提取图像中的边缘点(Edge Point)。边缘点是与周围像素相比灰度值有阶跃变化或屋顶状变化的像素。边缘常存在于目标与背景之间、目标与目标之间、目标与其影子之间。 ​ 在图像处理和图像分析中,经常要用到边缘(Edge)、边…

【Git】生成patch和应用patch

生成patch 将本地所有修改打成补丁 git diff > /tmp/xxx.patch将本地对某个文件的修改打成补丁 git diff test/1.txt > /tmp/1.patch将某一次提交的修改内容打成补丁 -1表示只为单个提交创建patch,-o表示输出patch的文件夹路径,默认是用提交的…

D咖饮品机器人惊艳亮相:智能硬件改变生活习惯

在当今快节奏的生活中,人们对于便捷、高效的需求日益增长,智能硬件应运而生,其中饮品机器人作为一种新型的智能设备,正在以惊艳的姿态亮相于人们的生活中,为人们带来了全新的消费体验,改变着大众的生活习惯…

node-sass安装失败解决

老项目安装node-sass4.14.1一直失败 "node-sass": "^4.14.1",报错环境变量Path 中没有 python2.7 gyp verb check python checking for Python executable "python2.7" in the PATH安装python2.7,然后设置npm config set python C:\Python27 …