下载

Apache Subversion Binary Packages

VisualSVN Server 服务端

  • 仓库
  • 用户
  • 用户组
  • 任务

迁移仓库「不包含用户、组信息」

https://www.jianshu.com/p/295b423d50ad

迁移

SVN Server 重新安装【3.9.6及之前的版本没有人数限制】

  1. 停止SVN服务器
  2. 备份版本库文件夹,将文件夹压缩存放 【建议】
  3. 卸载 SVN Server
  4. 安装 SVN Server,指定仓库地址为原地址 D:\VisualServer\Repositories 【关键】
  5. 启动服务,测试

A服务器迁移至B服务器

svn服务器 重装系统后,VisualSVN Server迁移至新服务器_weixin_39922476的博客-CSDN博客

  1. 停止源SVN服务器 A
  2. 备份源版本库文件夹,将文件夹压缩存放
  3. 在目标服务器安装 SVN Server B
  4. 将备份好的文件复制至服务器B,将解压后覆盖至B服务器的Repositories文件夹。覆盖“authz”和“htpasswd”等文件
  5. 打开B上的VisualSVN Server Manager,在左侧的“Repositories”下显示了我们迁移过来的代码工程
  6. 服务器B启动svn服务
  7. 客户端 Relocate

备份

命令方式

1. 备份「最好先停止服务」
  • svnadmin dump

  • svnadmin hotcopy
    UTOOLS1576649138126.png
    UTOOLS1576649156529.png

1
svnadmin hotcopy C:\Repositories\gmsdengzhou  C:\Repositories\gms-backup.date
2. 恢复「恢复不需要先建立库」
  • svnadmin dump

  • svnadmin hotcopy

1
svnadmin hotcopy C:\Repositories\gms-backup.date C:\Repositories\gms_news

窗口操作「推荐」

  1. 选择指定仓库,右键-Backup Repository
  2. 选择备份目录和文件名
  3. 下一步
  4. 是否加密备份文件,默认否
  5. Backup

恢复「推荐」

  1. 在根节点右键-Restore Repository
  2. 选择备份的文件
  3. 下一步
  4. 仓库名「默认不用修改」
  5. Restore

本地复制仓库

  1. 在 根节点右键-Import Existing Repository

    image-20210111102405361
  2. Copy repository from another location「复制一份」

    image-20210111102509544
  3. Source repository locations「从仓库中选择要复制的仓库」

    image-20210111102637187
  4. Destination repository name 「给新仓库起一个名字」

  5. Import 导入即可

  6. 修改组或用户信息

修改端口【重要】

更改svn服务端口号 - 戈丫汝 - 博客园 (cnblogs.com)

  1. 停止服务
  2. 右键 VisualSVN Server(Local) ,选择 properties network ,修改端口号
  3. 启动服务
  4. 客户端 Relocate 指定新端口地址

SVN 客户端

基础知识

  • 如果文件或目录已经被其他人锁定 lock,可以在 Get lock 选项中勾选 steal the locks

  • SVN 的版本递增是针对整个仓库的,即使只更新了一个文件,那么,整体的版本也会加1

  • 推荐使用目录树为

    • /repos/trunk     产品或项目主线
    • /repos/branches  分支
    • /repos/tags      阶段性成果,例如版本 v1.0、 v1.1
  • SVN 的更新和提交是异步的,互不影响

  • .svn 目录是用来管理目录与服务器的同步情况和来管理工作copy的,
    如果不小心删除了,可以把该目录内所有文件删掉,然后返回父目录,update

  • 锁定 Get lock 文件或文件夹,并且 unlock 随时可以解除

  • 如果一旦提交了更新,那么所有的文件都将解锁,即使有部分文件可能还没有更新。

  • 如果 commit 时,选择 keep locks,则文件还是被锁定。

  • 借助 beyond compare 工具比对提交。

未 Add,如何删除

文件较少,直接删除即可

文件较多,不适合一个个删除

空白处右键-TortoiseSVN-Clean up…
UTOOLS1576649203889.jpg
UTOOLS1576649223623.jpg

Add 但未 Commit,如何删除

方法1

选中文件夹,右键 TortoiseSVN,Undo Add…
UTOOLS1576649284952.png

方法 2

选中文件夹,右键 TortoiseSVN,Clean up…, Revert all changes recursively
UTOOLS1576649374947.png

UTOOLS1576649407090.png
再选择文件或文件夹删除即可

方法 3「一般用于文件或文件夹已删除」

右键 TortoiseSVN,Revert…
UTOOLS1576649427484.png

导出提交日志

  1. 进入项目目录,右键-TortoiseSVN

    image-20210114105634767
  2. Show log

  3. 指定开始和结束日期,From XXX To XXX。也可指定其它筛选条件

  4. Show All

  5. 选中第一条,按住 Shift 选中最后一条,即可选中所有日志

  6. 右键,Copy to clipboard ,Full Data

  7. 新建 Txt 文件,粘贴内容

更改项目SVN服务地址

命令行

1
2
3
4
5
6
7
# 格式:svn switch --relocate old_svn_server_url new_svn_server_url
# 示例
svn switch --relocate https://192.168.0.99:7000/svn/doc https://192.168.0.100:7000/svn/doc

svn switch --relocate https://ipfrom/svn/master https://ipto/svn/master

svn switch --relocate https://ipfrom/svn/es https://ipto/svn/es

客户端

右键- Relocate

经验

Can’t open file E:\Repositories(changshaldbltxn-current-lock’: 拒绝访问,

权限的问题

Repositories文件夹的属性->安全- 选中 Users - 编辑- Users 权限,允许所有,确定

全局忽略文件「已经去掉 *.so 」

1
*.o *.lo *.la *.al .libs  *.a *.pyc *.pyo __pycache__ *.rej *~ #*# .#* .*.swp .DS_Store [Tt]humbs.db
image-20200622170826673

清除 svn 保存的账号密码信息

1
TortoiseSVN-->settings——>Saved Data——>Clear

idea svn 连接 https 报错问题: E230001: Server SSL certificate verification failed: certificate issued

1
2
3
4
5
6
7
8
9
10
cmd 打开运行窗口,执行以下命令

//xxx 是具体的 svn 项目地址
svn ls https://xxx

最后会显示 (R) eject, accept (t) emporarily or accept (p) ermanently?
输入 p
然后根据提示输入 svn 账户名 userName 和密码 password

最后 checkout from subversion 刷新一下就好了

so 文件 commit 无法提交「没有 add」

Settings——Subversion—— Global ignore pattern: 中删除 *.so

CE3957237C3EED73501415EB8A61DB8D

idea 使用 “svn” 到项目报错 Error:Cannot run program “svn” (in directory “E:\XXXXXX”):CreateProcess error=2

  1. 选中 TortoiseSVN-1.9.2.26806-x64-svn-1.9.2.msi 右键,安装-Modify-command line client tools
  2. 重新打开 idea