svn拉取文件合并_svn如何使用import目录作为工作拷贝+我的svn学习笔记

本文介绍了如何在使用svn时,避免在导入工程后删除原始目录,而是将其转变为带有版本控制的工作拷贝。通过在导入后执行特定命令,可以初始化版本控制信息而不检出任何文件,再通过添加、更新操作,将原始工程转换为工作拷贝,从而解决了导入工程后的不便。此外,还分享了作者的svn学习笔记,包括命令行操作和解决冲突的方法。
摘要由CSDN通过智能技术生成

前奏

svn作为一款极其优秀的开源版本控制系统,应用广泛,从组织到个人遍及各行各业。因此学习和熟练掌握它,对提高我们日常工作效率和数据安全非常重要,尤其对开发人员协同管理Project的文档,代码,各类图等,能达到事半功倍的效果。不必再每天完成工作后,打包工程目录,备份每天的版本;也不用几个人堆在一起效率低下地手工合计代码;也不用担心偶尔因忘记打包,而丢失宝贵的数据资料。现在笔者已经养成完全使用svn管理日常的一些小项目,即使是个人使用,因为实在是不想每次都打包了,然后找数据再去一堆压缩包里去找。

svn有Win和Linux的版本,这里讲的是后者,而且主要是命令行操作(不过通过命令行或者能更加理解svn的工作方式和原理),前者有乌龟这类图形工具,虽功能不全,但操作也确实简单。

需求分析

为了避免手工管理一个我们日益变大的项目,于是我们选择svn,让程序为我们自动控制版本并记录下更改记录。但每当使用import子命令将工程导入到svn时,我们遇到一个极其恶的问题:将本地的工程目录全部提交上去之后,但是这个原始工程目录却不是工作拷贝,于是我还得把这个原始工作目录删掉,重新从版本库中checkout出来一个拷贝。这太不爽了,暂且不论这个工程占多大磁盘空间,明明有这个工程,只是缺少版本控制信息,有必要就删掉而重新检出整个工程么。于是我在google再google,但始终没有找到解决方法,后来了解到,svn本来就没有考虑过这个问题,貌似就只能删掉原始工程目录,而重新从库中检出一个带版本控制信息的一模一样的工程。

Solution

可能是因为个人有某种强迫症,偶还是一如继往地寻找方法企图解决这个问题,现在终于使用了一个小技巧搞定了,目前市场上还没有见到过这种方法,完全自创哦。方法如下(依然以最经典的helloworld工程为例)

1. cd进入helloworld工程所在目录

2. 递归导入工程到版本库:

svn import helloworld

svn://localhost/project -m "Just Test this Trick."

3.

执行最关键的命令(参数--depth=empty是精髓,它只初始化版本控制信息,不检出任何文件):

svn co --depth=empty

svn://localhost/project helloworld

4. 然后进入工程目录:

cd helloworld

5.

执行命令:

svn st

然后显示所有文件前全带?号,因为此时这些文件还不在版本控制管辖范围内。

6. 因此我们将它们全部加入:

svn

add *

现在所有文件前全显示为A标记,即为Add状态。

7.

为了与版本库一致,执行update命令(其实此时这些文件与现在版本库中是一模一样的,因为我们才刚刚提交完,没有作任何更改,此举是为了“骗过”svn):

svn

up *

此时更新必然会有冲突,而且还是100%,程序提示“在 “xxx” 中发现冲突。选择: (p) 推迟,(mf) 全用我的,(tf)

全用他人的,(h) 使用帮助以得到更多选项:”,这时我们一定要选“(mf) 全用我的“,即输入mf,否则我们前面的工作就没有意义了。

8.

这时再用如下命令:

svn st

svn ci

命令均无显示,因为无状态变化,现在这个原始工程已经“转变“成一个work

copy了。现在开始工作吧^_^。

--------------------------------俺是分隔线----------------------------------------

以下是我个人曾经的学习笔记,很乱,如果能用上,则看看,高手们就忽略掉它的存在吧。

http://www.subversion.org.cn/svnbook

http://subversion.tigris.org/faq.zh.html

sudo

apt-get install subversion

#sudo apt-get install

libapache2-svn(这个是和apache配合使用的,如果不打算使用apache则可不安装)

完成安装后,给系统添加一个用户组(如svn),把想要加入这个组的加一下(至少要把你自己加进吧)

#

Add group

sudo addgroup svn

# Append user z as the supplemental Groups to

group svn

sudo usermod -G svn -a z

cd svnroot/

mkdir

zigbee_paper

sudo chown -R root:svn zigbee_paper/

sudo svnadmin create

/home/z/public/share/svnroot/zigbee_paper/

$ svnserve -d --foreground -r

/home/svn

# -d -- daemon mode

# --foreground -- run in foreground (useful

for debugging)

# -r -- root of directory to serve

# svnserve --daemon

--root=#SVNPATH/repos

--listen-port=3690

注:不推荐使用root用户启动服务,默认端口号为3690

设置为随系统自动启动

编写启动脚本文件,命名为svn,放到

/etc/init.d/ 中

#!/bin/sh

# de

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值