#!/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相关推荐

  1. 命令行操作svn和git和git

    前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...

  2. Svn 命令行工具 操作 SVN 服务器

    目录 前 言 SVN 服务器创建版本库 SVN 命令行 - 检出 SVN 命令行 - 提交 SVN 命令行 - 更新 工作副本状态 前 言 本文承接<SVN 创建版本库 与 启动 SVN 服务& ...

  3. java操作svn工具类

    依赖包 <dependency><groupId>org.tmatesoft.svnkit</groupId><artifactId>svnkit< ...

  4. Linux 基础操作、常用shell命令、vi常用命令、man帮助手册

    Linux 基础操作.常用shell命令.vi常用命令.man帮助手册 一.简述 记录简单的Linux 基础操作.常用shell命令.vi编辑器常用命令.man帮助手册的使用. 二.Linux 基础操 ...

  5. 使用git操作svn仓库

    如今,虽然Git已经大行其道,但是仍有很多IT公司和组织依旧在使用集中式的版本控制系统subversion,尤其是一些传统软件公司,他们倾向于集中式的联网开发.如果你是一个Git fans,并且你要是 ...

  6. mac 下终端 操作svn命令 以及出现证书错误的处理方法

    首先,转载地址:http://hi.baidu.com/zhu410289616/item/eaaf160f60eb0dc62f4c6b0e 还有一个地址:http://www.cnblogs.com ...

  7. SVN下载,安装,配置,常用操作 svn教程

    首先在百度搜索并下载 TortoiseSVN 推荐从官网下载,软件分为32位和64位版本,下载时请根据自己的系统位数进行下载: 安装过程: 1.下载软件后,双击程序进行安装,点击"Next& ...

  8. linux shell操作mysql,Linux shell操作mysql数据库的方法

    摘要 腾兴网为您分享:Linux shell操作mysql数据库的方法,鱼乐贝贝,宜信,嘻嘻动漫,西餐菜谱等软件知识,以及包装效果图,德州人社,evasi0n.com,ios迅雷,民革e家,动态表情, ...

  9. IDEA 2021.1 操作SVN 最新 图文 详细版

    说明 本教程将通过idea从svn服务器中的任意一个分支检出代码(本文采用branches),然后再idea中创建新的分支.提交代码.拉取代码.合并分支等操作进行一一记录,暂不包含代码合并. 环境要求 ...

最新文章

  1. 下载MySQL并创建桌面数据库_sql桌面数据库
  2. web worker原理 SSE原理
  3. 概率论 条件概率 全概率 贝叶斯公式
  4. TCP中间件_个人方案
  5. Leetcode--164. 最大间距
  6. 学习笔记:首次进行JUnit+Ant构建自动的单元测试(一)
  7. 特征工程之非线性特征提取和模型堆叠
  8. Java项目启动时,隐藏的 oracle 驱动异常问题
  9. erlang的timer定时器浅析
  10. Easyui datebox单击文本框显示日期选择
  11. 【Daily Scrum】12-25
  12. 【Java】 IDEA使用教程
  13. iTunes恢复系统显示正在等待iPhone解决步骤
  14. J2EE是什么(一)
  15. 多个excel工作簿合并_如何使用Excel VBA将多个工作簿的全部工作表合并到一个工作簿中...
  16. 自我管理 - 希望2015年自己能够做到的几点目标
  17. 哈尔滨学计算机编程学校,哈尔滨中小学生编程学校排名
  18. 【全文翻译】YOLOv1:统一的实时目标检测
  19. 如何用java取对数_使用Java中的Math.log获取自然对数值
  20. aix java解压,AIX 7.1 jar unzip解压报错问题解决

热门文章

  1. Could not find method google() for arguments
  2. Travel English
  3. 乘复兴号返京,响应无穷小呼唤
  4. 2021年T电梯修理考试及T电梯修理模拟考试题库
  5. 编程基础篇:(已知:线段中点坐标公式为:(x,y)=(( x1+ x2)/2,(y1+y2)/2),线段长度公式为:L= sqrt((x1-x2)^2-(y1-y2))
  6. fl studio插件在哪个文件夹里 fl studio插件怎么用
  7. 文字溢出处理,背景图片处理,企业开发经验
  8. ModelMapper
  9. 获取上交所可转债基本信息
  10. 公安大学c语言真题,2016年中国人民公安大学网络安全与执法C语言程序设计(同等学力加试)复试笔试仿真模拟题...