ubuntu系统使用svn常用命令

个人感觉,svn是轻量级代码管理工具,适合3-5人小团队使用,冲突少,提交和下载也够方便。

不过,网上关于svn使用的教程,大多数是windows系统的图形化管理工具TortoiseSVN,而linux系统svn的常用指令却七零八碎。

这里对自己在ubuntu中使用svn的常用命令做一个简单总结,便于自己和别人查阅。

1.安装svn

sudo apt install subversion

2.下载源码

假如svn服务器地址为http://127.0.0.1:23001/svn,我们要下载test目录,则有两种方式

  • 指定下载目录

svn checkout http://127.0.0.1:23001/svn/test  /home/test

  • 不指定下载目录

svn checkout http://127.0.0.1:23001/svn/test

两者的区别就是,指定svn下载目录时,会在/home/test目录,下载svn服务器的test目录中所有文件,但不再创建根test目录。

如不指定下载目录,那会在当前目录创建test目录,并下载svn服务器的test目录中所有文件。

3.下载目录介绍

下载test目录后,本地test目录是服务器test目录管理代码的完全拷贝。

除此之外,还会创建一个隐藏的.svn目录,用于管理本地代码同步问题,这个目录很重要,但是一般我们都不会直接使用。

后续如复制本地test目录时,如不删掉.svn目录,在新拷贝备份中,svn代码管理命令是仍然可用的。

4.svn基本使用命令

svn help  // 列出svn的所有命令

svn st help  //列出svn的st命令介绍

svn info  // 列出本地svn目录的基本信息,我一般用来查svn服务器地址,查看当前版本信息

svn up   // 下载svn服务器更新代码

svn st  // 查看基于本地代码版本的当前修改内容

5.比较本地文件与服务器差异

svn diff //列出所有不同文件的内容差异,打印会比较多,请注意使用大屏幕

svn diff test.c //列出test.c与服务器之间的内容差异

6.增加本地文件,并准备提交服务器

svn add test.c //将test.c文件增加到本地svn

svn add folder  //将folder目录及里面所有文件都add到本地svn

这里需要注意:svn add时,*.so *.bin 等文件默认是被忽略,解决办法有两个:

1) 每次添加文件的时候使用如下命令:
      svn add  --no-ignore  folder

2)编辑以下任一文件(linux的svn客户端的配置文件)

      /etc/subversion/config   (针对服务器所有用户有效)

      ~/.subversion/config  (对当前用户有效,会覆盖上面“/etc/subversion/config”这个配置,而不是在上面原有的配置基础上增加)

     将文件中包含“global-ignores = ”的行,取消注释,并把这个“=”之后的字符全部删除。

    要特别注意 global-ignores 前面不要留空格,紧挨着最前面就可以了,否则svn add的时候会报错:

     svn: /etc/subversion/config:103: Option expected

7.提交本地修改到服务器

svn commit -m "why commit" // 提交所有本地与服务器差异的文件

svn commit -m "why commit"  test.c  //仅提交test.c修改的文件,可以一次提交多个更改文件 不同文件间用空格分开

8.冲突时,放弃本地修改

svn revert -R .  //放弃本地所有修改文件,用服务器最新版本覆盖,注意-R最后的空格和点不可忽略

svn revert test.c  //放弃本地test.c文件中的修改

9.svn up后冲突解决办法

在本地目录,会列出这样几个文件:

test.c //本地代码合并服务器最新版本(本地代码包含已修改的部分)

test.c.mine //本地代码(包含已修改的部分)

test.c.r001 //本地代码修改前的基线版本

test.c.r002 //服务器当前最新版本

可以查看test.c,确认差异点;

想直接覆盖服务器最新版本,直接把其他文件全部删除,将test.c.r002改名为test.c即可。

想直接用本地的提交,删除其他文件,将test.c.mine改名为test.c即可

10.修改svn服务器地址

svn sw --relocate https://120.0.0.1:23001/svn/test https://127.0.0.1:23001/svn/test

第一个地址为旧地址,第二个地址为新地址,执行后,会提示是否永久替代,选择是,并根据提示,填写相应的账号密码即可。

11.解决本地版本号和服务器版本号一致,但本地实际代码落后于服务器代码的问题

使用svn up指令更新了本地代码,显示版本号为1630,服务器最新版本也是1630;

但是服务器1630版本,目录中仅有三个文件,本地代码中,却显示有之前删除掉的10个废弃文件;

尝试删除废弃的10个文件或者把整个目录都删掉,重新update,仍然会下载废弃的10个文件;

svn list查看,显示只管理着1630的三个新文件;

用svn revert -R .还原整个工程,重新svn up,仍然会下载废弃的10个文件。

解决办法:

将项目回滚到之前的一个版本,比如1628版本 ,然后再up到最新版本,问题解决

svn up -r 1628
svn up

可能出现冲突等问题,见招拆招即可,svn up不会再下载删掉的10个文件

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值