简介
SVN可以很好地帮助我们管理代码版本,方便地进行代码修改比对和备份版本。由于暂时没有在云服务器上部署svn的预算,因此就先本地部署svn用于代码管理,以免项目工程资源或代码出现混乱。
环境
- SVN版本:1.14.3
- macOS:12.6.7
SVN本地服务部署步骤
-
创建仓库目录:
svnadmin create /Users/username/Documents/svn/test
-
此时我们已在Documents目录下创建了一个svn目录,svn中有一个名为test的svn项目,test中有一些配置文件。
-
修改test/conf文件夹下的svnserve.conf配置文件:
-
修改test/conf文件夹下的passwd配置文件,配置你的账号密码:
-
修改test/conf文件夹下的authz配置文件,配置用户和权限:
-
启动svn服务:
svnserve -d -r /Users/username/Documents/svn
-
创建主线目录:
svn mkdir svn://admin@localhost/test/trunk -m "making trunk dir"
-
创建分支目录:
svn mkdir svn://admin@localhost/test/branches -m "making branches dir"
-
至此,服务端初始化配置完成,我们创建了一个svn服务器仓库“test”。
SVN客户端部署步骤
-
使用Conerstone来创建和管理客户端
-
打开Conerstone软件,点击File - Add Repository添加仓库目录。选择SVN Server,Server地址为localhost,Path为svn项目目录test,用户名和密码为之前配置的admin和123456,配置如图所示:
-
点击Add完成仓库添加
-
至此,本地客户端配置完成,你可以Checkout项目到本地,添加、修改、上传文件了。
一些常用的SVN命令行指令
- 从服务器检出项目主线目录到本地(checkout):
svn checkout svn://admin@localhost/test/trunk /Users/username/Documents/TestTrunk
- 从服务器更新项目:cd到检出的本地svn工程目录,运行命令:
svn up
- 用当前主线工程来创建一个分支:
svn copy -m "create branch_1" svn://admin@localhost/test/trunk svn://admin@localhost/test/branches/branch_1
- 改动分支1的代码后,将分支的改动合并到主线:cd到本地主线目录,运行命令:
svn up && svn merge -r N:M svn://admin@localhost/test/branches/branch_1
(N和M表示要合并的是编号(N, M]之间的修改,不包括N包括M,点击CornerStone的Log可以看到改动编号) - 删除分支:
svn rm svn://admin@localhost/test/branches/branch_1 -m "remove branch_1"
- 提交改动:cd到需要提交的工程目录,运行命令:
svn ci -m "commit message"
- 一次性更新本地所有添加和删除本地文件,并提交所有改动:cd到需要提交的工程目录,运行命令:
svn status | grep ^! | awk '{print " --force "$2}' | xargs svn rm && svn status | awk '{if ( $1 == "?") { print $2}}' | xargs svn add && svn ci -m "commit message"