操作SVN的SHELL
#!/bin/bash # 提交增加的文件 # 用法: add ProjectWorkDir ProjName=$1 if [ "$ProjName" == "" ]; then exit 1 fi WORK_DIR=/home/xwz/test/$ProjName/dst cd $WORK_DIR # 需要添加的文件 TO_ADD_FILE=(`svn status $WORK_DIR | grep ^? | awk '{printf "%s ", $2}'`) #echo ${TO_ADD_FILE[*]} if [ "$TO_ADD_FILE" != "" ];then svn add ${TO_ADD_FILE[*]} fi svn commit -m "Add File in $ProjName" #!/bin/bash # 提交删除的文件 # 用法: del ProjectWorkDir ProjName=$1 if [ "$ProjName" == "" ]; then exit 1 fi WORK_DIR=/home/xwz/test/$ProjName/dst cd $WORK_DIR # 需要删除的文件 TO_DEL_FILE=(`svn status $WORK_DIR | grep ^D | awk '{printf "%s ", $2}'`) if [ "$TO_DEL_FILE" != "" ]; then svn del ${TO_DEL_FILE[*]} fi svn commit -m "Del File in $ProjName" #!/bin/bash # 初始化SVN的工作目录 # 用法: init DOWNLOAD_DIR Project_Name DOWNLOAD=$1 ProjName=$2 if [ "$DOWNLOAD" == "" ] || [ "$ProjName" == "" ]; then exit 1 fi #svn mkdir file:///var/svn/repos/test/$ProjName / #-m "Make a new DIR for $PrejName" #svn mkdir file:///var/svn/repos/test/$ProjName/src / #-m "make a src DIR for $PrejName" # 导入数据到SVN数据仓库 svn import $DOWNLOAD file:///var/svn/repos/test/$ProjName/src / -m "Import $ProjName data" # 复制源数据到数据 svn copy file:///var/svn/repos/test/$ProjName/src / file:///var/svn/repos/test/$ProjName/dst -m "A Remote Copy" # 新建目录tags,log svn mkdir file:///var/svn/repos/test/$ProjName/tags -m "mkdir $ProjName/tags" svn mkdir file:///var/svn/repos/test/$ProjName/log -m "mkdir $ProjName/log" # 标记源数据 svn copy file:///var/svn/repos/test/$ProjName/src / file:///var/svn/repos/test/$ProjName/tags/src-1.0 / -m "$ProjName Tag src-1.0" # 检出项目资料 svn checkout file:///var/svn/repos/test/$ProjName / /home/xwz/test/$ProjName #!/bin/bash # 提交修改的文件 # 用法: modify ProjectWorkDir ProjName=$1 if [ "$ProjName" == "" ]; then exit 1 fi WORK_DIR=/home/xwz/test/$ProjName/dst #svn status $WORK_DIR > /home/xwz/doc/temp123 #提交项目修改 svn commit $WORK_DIR -m "$ProjName 提交修改" #!/bin/bash # 检查项目资料是否更新 # 用法:update DOWNLOAD_DIR PROJECT_NAME DOWNLOAD=$1 PROJ_NAME=$2 if [ $DOWNLOAD == "" ] || [ "$PROJ_NAME" == "" ]; then exit 1 fi WORK_DIR=/home/xwz/test/$PROJ_NAME/src # 删除工作副本 # rm -rf $WORK_DIR/* # 删除工作目录下的所有文件,包括.svn目录 find $WORK_DIR "*" | grep -v .svn | xargs rm -f # 拷贝下载资料到工作目录 cp -R $DOWNLOAD/* $WORK_DIR date >> $WORK_DIR/../log/change.log svn status $WORK_DIR >> $WORK_DIR/../log/change.log # 需要提交修改的文件 TO_MOD_FILE=(`svn status $WORK_DIR | grep ^M | awk '{printf "%s ", $2}'`) if [ "$TO_MOD_FILE" != "" ];then svn commit $WORK_DIR -m "提交修改" fi # 增加文件数 ADDNUM=(`svn status $WORK_DIR|grep -c ^?`) # 需要提交添加的文件 TO_ADD_FILE=(`svn status $WORK_DIR | grep ^? | awk '{printf "%s ", $2}'`) if [ "$TO_ADD_FILE" != "" ];then svn add ${TO_ADD_FILE[*]} fi svn commit $WORK_DIR -m "提交添加,$PROJ_NAME" # 需要提交删除的文件 TO_DEL_FILE=(`svn status $WORK_DIR | grep ^! | awk '{printf "%s ", $2}'`) if [ "$TO_ADD_FILE" != "" ];then svn del ${TO_DEL_FILE[*]} fi svn commit $WORK_DIR -m "提交删除,$PROJ_NAME" # 给当前版本加一标签 if [ $ADDNUM > 20 ]; then # 升级主版本号 NUM=(`ls -l $WORK_DIR/../tags | awk '/^d/ {print $8}'|awk '/^src-/'|/ sed -n '$p'|cut -d- -f2 |cut -d. -f1`) let NUM+=1 NUM+=.0 NUM=src-$NUM else # 升级次版本号 NUM1st=(`ls -l $WORK_DIR/../tags | awk '/^d/ {print $8}'|awk '/^src-/'| / sed -n '$p'|cut -d. -f1`) NUM2nd=(`ls -l $WORK_DIR/../tags | awk '/^d/ {print $8}'|awk '/^src-/'| / sed -n '$p'|cut -d. -f2`) let NUM2nd+=1 NUM=$NUM1st.$NUM2nd fi svn copy file:///var/svn/repos/test/$PROJ_NAME/src / file:///var/svn/repos/test/$PROJ_NAME/tags/$NUM -m "标签 $NUM" # ls -l $WORK_DIR/../tags | awk '/^d/ {print $8}'|awk '/^src-/'| sed -n '$p'
第一列 指出一个项目的是添加、删除还是其它的修改
‘ ’ 没有修改
‘A’ 预定要添加的项目
‘D’ 预定要删除的项目
‘M’ 项目已经修改了
‘R’ 项目在工作拷贝中已经被替换了
‘C’ 项目的内容与更新得到的数据冲突了
‘X’ 项目与外部定义相关
‘I’ 项目被忽略
‘?’ 项目不在版本控制之下
‘!’ 项目已经丢失
‘~’ 项目作为一种对象纳入版本控制,但是已经被另一种对象替代
第二列 一个文件或目录的属性的状态
‘ ’没有修改
‘M’ 这个项目的属性已经修改
‘C’ 这个项目的属性与从版本库得到的更新有冲突
第三列 只在工作拷贝锁定时才会出现
‘ ’ 项目没有锁定
‘L’ 项目已经锁定
第四列 只在预定包含历史的项目出现
' ' 没有历史预定要提交
'+' 历史预定要伴随提交
第五列 只在项目跳转到相对于它的父目录时出现
' ' 项目是它的父目录的孩子
'S' 项目已经转换
第六列 显示锁定信息
' ' 'K' 文件锁定在工作拷贝
'O' 文件被另一个工件拷贝的另一个用户锁定
'T' 文件锁定在工作拷贝, 但是锁定被" 窃取" 而不可用
'B' 文件锁定在工件拷贝, 但是锁定被" 破坏" 而不可用
第七列 过期信息
' ' 这人项目在工件拷贝是最新的
'*' 在服务器这个项目有了新的修订版本
cp -R /media/DATA/cust ./ 拷贝目录(包含文件)到目录
mv ./src ./cust/ 移动目录src 及其内容到./cust/ 下
svn mkdir srcdir file:///var/svn/repos/test
svn import srcdir file:///var/svn/repos/test/srcdir
cd /workdir svn update file:///var/svn/repos/test/srcdir
svn copy srcdir dstdir svn commit 修改文件
svn update // 返回版本号,不会变更修改过的文件
svn commit
删除文件
增加文件
修改文件
svn status // 返回当前目录下的文件变更情况, 对于其它目录的不会反映出来
svn diff // 返回被修改文件的比较报告
svn commit // 提交文件,仅提交修改过的文件,删除和增加的文件未有提交
svn del filename svn status // 返回文件变更情况
svn commit // 提交
svn status ? hello svn add hello A svn ci -m "add a file" 增加 dst/hello awk '$1=="!" {printf("%s/n",$2)}' ./log
svn status | awk '$1=="D" {printf"%s",$2}'
svn status |grep ^D | awk '{printf $2}'
SVNADMIN="$(which svnadmin)"
SVNLOOK="$(which svnlook)"
操作SVN的SHELL相关推荐
- 命令行操作svn和git和git
前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...
- Svn 命令行工具 操作 SVN 服务器
目录 前 言 SVN 服务器创建版本库 SVN 命令行 - 检出 SVN 命令行 - 提交 SVN 命令行 - 更新 工作副本状态 前 言 本文承接<SVN 创建版本库 与 启动 SVN 服务& ...
- java操作svn工具类
依赖包 <dependency><groupId>org.tmatesoft.svnkit</groupId><artifactId>svnkit< ...
- Linux 基础操作、常用shell命令、vi常用命令、man帮助手册
Linux 基础操作.常用shell命令.vi常用命令.man帮助手册 一.简述 记录简单的Linux 基础操作.常用shell命令.vi编辑器常用命令.man帮助手册的使用. 二.Linux 基础操 ...
- 使用git操作svn仓库
如今,虽然Git已经大行其道,但是仍有很多IT公司和组织依旧在使用集中式的版本控制系统subversion,尤其是一些传统软件公司,他们倾向于集中式的联网开发.如果你是一个Git fans,并且你要是 ...
- mac 下终端 操作svn命令 以及出现证书错误的处理方法
首先,转载地址:http://hi.baidu.com/zhu410289616/item/eaaf160f60eb0dc62f4c6b0e 还有一个地址:http://www.cnblogs.com ...
- SVN下载,安装,配置,常用操作 svn教程
首先在百度搜索并下载 TortoiseSVN 推荐从官网下载,软件分为32位和64位版本,下载时请根据自己的系统位数进行下载: 安装过程: 1.下载软件后,双击程序进行安装,点击"Next& ...
- linux shell操作mysql,Linux shell操作mysql数据库的方法
摘要 腾兴网为您分享:Linux shell操作mysql数据库的方法,鱼乐贝贝,宜信,嘻嘻动漫,西餐菜谱等软件知识,以及包装效果图,德州人社,evasi0n.com,ios迅雷,民革e家,动态表情, ...
- IDEA 2021.1 操作SVN 最新 图文 详细版
说明 本教程将通过idea从svn服务器中的任意一个分支检出代码(本文采用branches),然后再idea中创建新的分支.提交代码.拉取代码.合并分支等操作进行一一记录,暂不包含代码合并. 环境要求 ...
最新文章
- 下载MySQL并创建桌面数据库_sql桌面数据库
- web worker原理 SSE原理
- 概率论 条件概率 全概率 贝叶斯公式
- TCP中间件_个人方案
- Leetcode--164. 最大间距
- 学习笔记:首次进行JUnit+Ant构建自动的单元测试(一)
- 特征工程之非线性特征提取和模型堆叠
- Java项目启动时,隐藏的 oracle 驱动异常问题
- erlang的timer定时器浅析
- Easyui datebox单击文本框显示日期选择
- 【Daily Scrum】12-25
- 【Java】 IDEA使用教程
- iTunes恢复系统显示正在等待iPhone解决步骤
- J2EE是什么(一)
- 多个excel工作簿合并_如何使用Excel VBA将多个工作簿的全部工作表合并到一个工作簿中...
- 自我管理 - 希望2015年自己能够做到的几点目标
- 哈尔滨学计算机编程学校,哈尔滨中小学生编程学校排名
- 【全文翻译】YOLOv1:统一的实时目标检测
- 如何用java取对数_使用Java中的Math.log获取自然对数值
- aix java解压,AIX 7.1 jar unzip解压报错问题解决
热门文章
- Could not find method google() for arguments
- Travel English
- 乘复兴号返京,响应无穷小呼唤
- 2021年T电梯修理考试及T电梯修理模拟考试题库
- 编程基础篇:(已知:线段中点坐标公式为:(x,y)=(( x1+ x2)/2,(y1+y2)/2),线段长度公式为:L= sqrt((x1-x2)^2-(y1-y2))
- fl studio插件在哪个文件夹里 fl studio插件怎么用
- 文字溢出处理,背景图片处理,企业开发经验
- ModelMapper
- 获取上交所可转债基本信息
- 公安大学c语言真题,2016年中国人民公安大学网络安全与执法C语言程序设计(同等学力加试)复试笔试仿真模拟题...