title | date | tags | categories | ||
---|---|---|---|---|---|
SVN |
2018-11-21 02:56:52 -0800 |
|
|
目录 start
目录 end|2019-04-19 13:05| Kuangcp | yi-yun
传统的中心化版本控制工具,能够精确控制每个目录的权限, Apache顶级项目
SVN 官网 | SVN中文网 Subversion 与版本控制 书籍
svn 不能提交单个文件里的部分提交, 要么就整个文件提交, 要么不提交, git则可以
安装 svnadmin
参考 建立一个仓库
svnadmin create /yc/svn/rep-ops
- 备份 svndump /svn/repos > a.dump
- 恢复 svnadmin load /svn/repos < a.dump
- 增量备份
svnrdump dump http://192.168.10.200/svn/test/ --username kuangchengping --password 123456 -r 3:4 --incremental > b4.dump
- 恢复
svnrdump load http://192.168.10.200/svn/test/ --username kuangchengping --password 123456 < b4.dump
Ubuntu
sudo apt install subversion
安装后可使用的命令就是svn
- 下拉代码
svn co URL
svn add filename
, 或者*.java
是添加当前目录下java文件,- 或者 文件夹, 一般使用文件夹好点,也就是src目录
- 强制添加所有文件
svn add * --force
- 将改动的文件提交到版本库
svn ci -m "update"
- 因为是中心化的仓库, 所以提交就是推送到总仓库了, 不像Git那样先提到到本地仓库, 然后推送至远程仓库
- 更新本地代码
svn up
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本
- 删除文件
svn remove|rm path
svn:ignore 和 svn:global-ignores
- 作用范围
- svn:ignore:只对当前目录有效;
- global-ignores:是全局有效,就是所有目前都有效;
- 配置方式
- svn:ignore:必须在项目的每个工作目录都要设置;相同配置时,优先级高于全局的
- global-ignores:只需要配置一次;
-
svn propedit svn:ignore 项目文件夹
会打开默认配置, 和gitignore一样的配置, 然后保存即可- 文件夹就是项目, 所以要在项目根目录的上级目录执行这条命令
- 如果上面没有调起编辑器, 就要在 .bashrc 中
export SVN_EDITOR=vim
-
然后提交到仓库( svn co -m "xxx" ), 即可完成 忽略文件的配置, 为了可见性, 一般和.gitignore一样的配置即可
- 导入忽略文件
svn propset -F .svnignore .
- 导入忽略文件
部分提交 参考
- 提交指定文件以及目录
svn ci readme.md src/* -m "1.update readme 2.add src change"
svn ci -m "msg"
提交所有已添加到版本库的操作(新建, 修改, 删除)
svn log | less
这样能更为方便和干净svn cat -r 版本号 文件
输出某个版本的某文件(文件必须在本地存在)svn diff -r 版本号:版本号 文件
对比两个版本的某文件
svn st
冲突的产生: 因为多个开发人员进行修改了同一个文件夹(修改,删除文件夹), 同一个文件.
多个开发人员修改了同一个文件夹, 并且一方修改, 一方做了删除
- 标记冲突已解决(使用本地的状态, 本地该文件的状态是Delete, 提交后服务端对应的文件就会被删除)
svn resolve --accept=working file/dir
svn update
svn merge -r 100:99 .
svn ci -m "rolled back to r99"
删除认证信息
rm -rf ~/.subversion/auth
- 表现: IDEA 报错 uncongnized character scheme in 2019-01-03_15:25:42.log
- 后果: svn 所有操作都无响应, 相当于 idea的 svn 功能废了
- 解决方案: 直接删除 .svn 目录, svn co 另一个目录, 把那份 .svn 目录拿过来
- 分析: 很有可能文件名, 或者日志内容具有 svn 不认识的编码, 导致的问题