svn 常见场景及使用技巧 svn的使用的全部流程
yuyutoo 2024-10-13 09:12 9 浏览 0 评论
一:提交代码时,注释不允许为空
svn修改提交需要验证:
#cd /home/svn/hk515/hooks
#cp pre-commit.tmpl pre-commit
#chmod 777 pre-commit
修改pre-commit文件
REPOS="$1"
TXN="$2"
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 5 ];
then
echo -e "注释信息不能为空且不少于5个字!" 1>&2
exit 1
fi
exit 0
保存即可,这样开发commit代码时不写备注就出错提示上面的信息了
二:svn通过钩子获取提交的文件列表
由于之前做过通过svn的钩子去自动部署项目,这个主要是通过svn up命令来操作 把这个操作命令写在post-commit钩子文件中来达到目的;
但是这样子的过程太过于自动,不能认为的参与,即我提交到了svn版本库那么就自动同步到了web服务器,我现在有个需求就是要捕获所有开发
人员的提交的修改文件的列表 ,然后交由其他控制终端来实现是否要同步到web服务器,这种情况更加适合于同步到测试服务器的情况。由于之间写过
svn的必须写提交信息才能提交成功的钩子,那么这回马上想到了用svnlook命令来处理,但是用什么子命令呢?把svnlook的所有(也不多啦)子命令
看了一遍,觉得可以使用svnlook youngest 和svnlook changed两个命令结合来使用
其实可以不用svnlook youngest的 因为svnlook changed默认的就是当前最新的版本;
直接上代码:
view sourceprint?
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
NEW_VER=`$SVNLOOK youngest $REPOS`
$SVNLOOK changed -r $NEW_VER $REPOS > /home/list.txt
#!/bin/bash
export LC_CTYPE="en_US.UTF-8"
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
NEW_VER=`$SVNLOOK youngest $REPOS`
$SVNLOOK changed -r $NEW_VER $REPOS > /svndata/changelog/`date +%Y%m%d%H%M%S`_list.txt
exit 0
find . -type d -maxdepth 5 |grep 凯撒文化
三:svn备份
1.脚本
/data/metabak/svnbak.sh
# svn bak shell
mv -i /data/metabak/svnconfig.tar.gz /data/metabak/svnconfig.tar.gz_yesterday
tar -zcvf /data/metabak/svnconfig.tar.gz /var/www/svnconfig
# svn 仓库
mv -i /data/metabak/svn.tar.gz /data/metabak/svn.tar.gz_yesterday
tar -zcvf /data/metabak/svn.tar.gz /var/www/svn
2.文件路径
/var/www/svn/
3.httpd
/etc/httpd/
三:svn 权限配置
“*” 是指所有人,“=” 后面为空,表示没有任何权限
连起来就表示所有人没有任何权限
注:
“=”后面有3种情况
空:表示没有任何权限
r:表示只读权限
rw:表示读写权限
如:
* =
user1 = r
user2 = rw
这三行合起来就表示user1这个用户拥有只读权限,user2这个用户拥有读写权限,除此之外的其他人员没有任何权限
四:svn 基本配置
1.auth文件
[groups]
#admin group
admin=ksadmin
#yjwb group
yjwb=yjwb
[/]
@admin=rw
*=
2.passwd文件
[users]
# harry = harryssecret
# sally = sallyssecret
# root
ksadmin=ks@2018admin
#yjwb
yjwb=ks@2018
3.svnserve.conf文件
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = kaiser
[sasl]
五:svn增量更新
for i in `cat updatefile.txt`;do echo $i;tar -uf aoa.tgz $i;done
svn diff --summarize -r420:426 /data/aoa_root
svn diff --summarize -r420:426 |awk '{print $2}' >/tmp/updatefile.txt
for i in `cat /tmp/updatefile.txt`;do echo $i;tar -uf ../update/aoafile.tgz $i;done
for i in `cat ../logs/updatefile.txt`;do echo $i;tar -uf ../update/aoa.tgz $i;done
六:一台机器上开启多个不同端口的实例SVN
一台机器上开启多个不同端口的实例SVN
1.启动进程
svnadmin create /svndata/svn/kscore
svnserve -d --listen-port 8888 -r /svndata/svn/kscore
2.svn 客户端登录
svn://10.10.40.37:8888/
七:svn之间同步
1. 每个文件夹下都存在.svn 需要删除掉
--username yangkun --password yangkun@2016 --non-interactive
--username hk --password hk@pwd --non-interactive
svn commit -m "h1" --username hk --password hk@pwd --non-interactive
svn checkout svn://192.168.211.130:8088 . --username hk --password hk@pwd --non-interactive
八:svn win客户端使用方法
九:svn jenkins中客户端连接报错
1.执行上下文错误: An error occurred during SSL communication
2. 源码管理中使用SVN的账号密码体系
十:清除客户端登录的账号密码
十一:svn 客户端clean up 错误
1.下载文件
https://www.sqlite.org/2018/sqlite-tools-win32-x86-3240000.zip
2.解决方法:
step1: 到 sqlite官网 (http://www.sqlite.org/download.html) 下载 sqlite3.exe
找到 Precompiled Binaries for Windows,点击 sqlite-shell-win32-x86-3080500.zip 下载,300KB左右
step2: 将下载到的 sqlite3.exe 文件复制到 本地磁盘的某个临时目录下 (我的svn源代码放在共享磁盘中,发现 sqlite老是找不到 svn的 wc.db文件),
step3: 然后 设置 svn源代码 文件夹 及文件 显示 所有文件(包括隐藏文件),会发现 .svn/wc.db 文件, 将 其复制到 step2的临时目录下
step4: 开始 -> 运行 -> 打开 cmd命令
打开 wc.db
执行 delete from work_queue;
如图所示:
step 5: 将 wc.db 覆盖到 svn源代码目录的 .svn目录下
step 6: 对 svn源代码目录 右键, clean up, 稍等1至5分钟左右,然后会提示 清理成功。
十二:svn 基本操作命令
1.取出版本
svn checkout svn://192.168.137.131:8088/ --username ld --password ldsvnpwd --non-interactive
2.添加文件
svn add *
3.提交到版本库
svn commit -m "add ld01.sh" * --username ld --password ldsvnpwd --non-interactive
4.查看日志
svn log --username ld --password ldsvnpwd
5.更新最新版本
svn up --username ld --password ldsvnpwd
6.svn 删除文件
svn delete ld01.sh
再提交更新
svn commit -m "del ld01.sh"
查看日志
svn log
7.checkout 指定版本
svn checkout -r r6 svn://192.168.137.131:8088/ --username ld --password ldsvnpwd --non-interactive
十三:svn 使用技巧
Q1.在linux上创建目录
svn checkout svn://192.168.211.130:8088/hkweb
带账号密码:
svn checkout svn://192.168.211.130:8088/hkweb --username meng --password meng@pwd --non-interactive
简写:svn co
2.添加文件
svn add *
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test“ test.php
简写:svn ci
svn commit -m "hktest" *
4、加锁/解锁
svn lock -m “LockMessage“ [--force] PATH
例如:svn lock -m “lock test file“ test.php
svn unlock PATH
5、更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
7、删除文件
svn delete path -m “delete test fle“
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
8、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
9、查看文件详细信息
svn info path
例如:svn info test.php
10、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、SVN 帮助
svn help
svn help ci
——————————————————————————
以上是常用命令,下面写几个不经常用的
——————————————————————————
13、版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法: 1、mkdir PATH…
2、mkdir URL…
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。
15、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复
被删除的目录
16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将
服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的
方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动
(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用
这个命令更新工作副本与仓库的对应关系。
17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH…
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。
18、输出指定文件或URL的内容。
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
相关推荐
- ETCD 故障恢复(etc常见故障)
-
概述Kubernetes集群外部ETCD节点故障,导致kube-apiserver无法启动。...
- 在Ubuntu 16.04 LTS服务器上安装FreeRADIUS和Daloradius的方法
-
FreeRADIUS为AAARadiusLinux下开源解决方案,DaloRadius为图形化web管理工具。...
- 如何排查服务器被黑客入侵的迹象(黑客 抓取服务器数据)
-
---排查服务器是否被黑客入侵需要系统性地检查多个关键点,以下是一份详细的排查指南,包含具体命令、工具和应对策略:---###**一、快速初步检查**####1.**检查异常登录记录**...
- 使用 Fail Ban 日志分析 SSH 攻击行为
-
通过分析`fail2ban`日志可以识别和应对SSH暴力破解等攻击行为。以下是详细的操作流程和关键分析方法:---###**一、Fail2ban日志位置**Fail2ban的日志路径因系统配置...
- 《5 个实用技巧,提升你的服务器安全性,避免被黑客盯上!》
-
服务器的安全性至关重要,特别是在如今网络攻击频繁的情况下。如果你的服务器存在漏洞,黑客可能会利用这些漏洞进行攻击,甚至窃取数据。今天我们就来聊聊5个实用技巧,帮助你提升服务器的安全性,让你的系统更...
- 聊聊Spring AI Alibaba的YuQueDocumentReader
-
序本文主要研究一下SpringAIAlibaba的YuQueDocumentReaderYuQueDocumentReader...
- Mac Docker环境,利用Canal实现MySQL同步ES
-
Canal的使用使用docker环境安装mysql、canal、elasticsearch,基于binlog利用canal实现mysql的数据同步到elasticsearch中,并在springboo...
- RustDesk:开源远程控制工具的技术架构与全场景部署实战
-
一、开源远程控制领域的革新者1.1行业痛点与解决方案...
- 长安汽车一代CS75Plus2020款安装高德地图7.5
-
不用破解原车机,一代CS75Plus2020款,安装车机版高德地图7.5,有红绿灯读秒!废话不多讲,安装步骤如下:一、在拨号状态输入:在电话拨号界面,输入:*#518200#*(进入安卓设置界面,...
- Zookeeper使用详解之常见操作篇(zookeeper ui)
-
一、Zookeeper的数据结构对于ZooKeeper而言,其存储结构类似于文件系统,也是一个树形目录服务,并通过Key-Value键值对的形式进行数据存储。其中,Key由斜线间隔的路径元素构成。对...
- zk源码—4.会话的实现原理一(会话层的基本功能是什么)
-
大纲1.创建会话...
- Zookeeper 可观测性最佳实践(zookeeper能够确保)
-
Zookeeper介绍ZooKeeper是一个开源的分布式协调服务,用于管理和协调分布式系统中的节点。它提供了一种高效、可靠的方式来解决分布式系统中的常见问题,如数据同步、配置管理、命名服务和集群...
- 服务器密码错误被锁定怎么解决(服务器密码错几次锁)
-
#服务器密码错误被锁定解决方案当服务器因多次密码错误导致账户被锁定时,可以按照以下步骤进行排查和解决:##一、确认锁定状态###1.检查账户锁定状态(Linux)```bash#查看账户锁定...
- zk基础—4.zk实现分布式功能(分布式zk的使用)
-
大纲1.zk实现数据发布订阅...
- 《死神魂魄觉醒》卡死问题终极解决方案:从原理到实战的深度解析
-
在《死神魂魄觉醒》的斩魄刀交锋中,游戏卡死犹如突现的虚圈屏障,阻断玩家与尸魂界的连接。本文将从技术架构、解决方案、预防策略三个维度,深度剖析卡死问题的成因与应对之策,助力玩家突破次元壁障,畅享灵魂共鸣...
你 发表评论:
欢迎- 一周热门
-
-
前端面试:iframe 的优缺点? iframe有那些缺点
-
带斜线的表头制作好了,如何填充内容?这几种方法你更喜欢哪个?
-
漫学笔记之PHP.ini常用的配置信息
-
推荐7个模板代码和其他游戏源码下载的网址
-
其实模版网站在开发工作中很重要,推荐几个参考站给大家
-
[干货] JAVA - JVM - 2 内存两分 [干货]+java+-+jvm+-+2+内存两分吗
-
正在学习使用python搭建自动化测试框架?这个系统包你可能会用到
-
织梦(Dedecms)建站教程 织梦建站详细步骤
-
【开源分享】2024PHP在线客服系统源码(搭建教程+终身使用)
-
2024PHP在线客服系统源码+完全开源 带详细搭建教程
-
- 最近发表
-
- ETCD 故障恢复(etc常见故障)
- 在Ubuntu 16.04 LTS服务器上安装FreeRADIUS和Daloradius的方法
- 如何排查服务器被黑客入侵的迹象(黑客 抓取服务器数据)
- 使用 Fail Ban 日志分析 SSH 攻击行为
- 《5 个实用技巧,提升你的服务器安全性,避免被黑客盯上!》
- 聊聊Spring AI Alibaba的YuQueDocumentReader
- Mac Docker环境,利用Canal实现MySQL同步ES
- RustDesk:开源远程控制工具的技术架构与全场景部署实战
- 长安汽车一代CS75Plus2020款安装高德地图7.5
- Zookeeper使用详解之常见操作篇(zookeeper ui)
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)