svn 使用笔记(持续更新)

2015/01/21 工具

前言

今天在公司使用svn的时候,操作出现了异常,倒不是bug,但是记得上次遇到过,这次又忘记了,所以要好好的总结一下.a

Svn 安装

在ubuntu上:

Sudo Apt-Get Install Subversion

还有一个subversion的工具需要安装一下:

Sudo Apt-Get Install Subversion-Tools

Mac OX

brew install subversion

Svn初使用

从远程仓库中copy一份文件(检出)

使用svn做版本控制的第一步一般都是从远程仓库中复制一个副本,使用的命令是:

Svn Checkout Https//.... --Username Yourusername

这个命令和git中的命令很不一样,个人感觉还是git中的命令比较直白,该命令等同 于git:中的命令:

Git Clone Url-To-Reposity

将文件加入版本库

Svn Add Filename

Commit

Svn Commit -M " Some Message"

Update

Svn Update
Svn Update -R 
Svn Update File-Name

Delete

svn中要删除文件的时候,如果直接删除代码库中的文件,然后commit,svn是不会将库中的代码,直接删除的,要使用下面的代码删除命令

svn delete file-name/directory-name

注意在svn中,删除文件和文件夹使用同一个命令

可能出现的异常

当用户A删除了某个文件夹direct1中的代码,然后A提交之后,用户B更新代码仓库之后,不能正常的删除某个文件夹direct1

问题的原因: 这可能是因为用户B修改了direct1中的内容,此时svn不会将你修改的文件删除,所以此时会遇到更新之后,文件夹不能更新的情况

问题的解决: 知道了问题的原因,剩下的就非常和解决了.只需要删除自己修改过的文件.当然这么做的前提是你确实不需要这个修改过的代码了.

删除svn代码仓库中.svn文件

在svn代码仓库中 每个 文件夹的目录下都会存在名称为 .svn 的隐藏文件.该文件是记录文件变动的svn记录文件,svn能够对代码做版本控制靠得就是这个隐藏的文件.在很多情况下我们可能需要删除每个目录下面的.svn文件,手动删除实在太麻烦了.所以写了下面的脚本,来使用下面的脚本删除指定目录以及子目录.svn文件.

#!/bin/bash
#Walk all the files in the $1 dir
function walk_dir()
{
    local dir2walk=$1
    local files2walk=(`ls -a ${dir2walk}`)
    local file

    for file in ${files2walk[@]}; do
        local next2walk=${dir2walk}/${file}
        if [[ -d ${next2walk} ]]; then
            if [[ ${file} != "." && ${file} != ".." && ${file} != ".svn" ]]; then
                walk_dir ${next2walk}
            elif [[ ${file} == ".svn" ]]; then
                rm -rf "${next2walk}"
                echo "rm ${next2walk}"
            fi
        else 
            echo ${next2walk}
        fi
    done
}

function main()
{
    local dir2walk=$1
    walk_dir ${dir2walk}
}

#set -x
main $@
#set +x

Search

    Table of Contents