为了以后小组协作方便,今天建立了一个svn repos。
由于Ubuntu机器上svn已经配置好了,所以如何在机器上安装和配置svn不会在这里说明,下面直接进行创建repos的过程。
建立新repos
(该过程参考链接:http://blog.csdn.net/ithomer/article/details/7930492)
- ssh登陆到svn服务器:
ssh username@222.200.xxx.xxx
- 创建新svn项目:
sudo svnadmin create [repos_path]
- 给repos设置权限:
sudo chmod 777 -R [repos_path]
- 在客户端验证repos是否建立成功:
svn checkout [svn://222.200.xxx.xxx/repos_path]
设置客户端读写权限
(该过程参考链接:http://blog.sina.com.cn/s/blog_4b93170a0100leb2.html)
下面三步都在服务器端的刚建立的repos的conf文件夹下进行。
1.修改svnserve.conf(实际上是把[general]下注释的行的注释给取消)
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
这里要注意除了要删去“#”外还要将空格也删去,不然会导致svnserve.conf:12: Option expected错误。(解决方案:http://blog.csdn.net/xyz_lmn/article/details/6176483)
2.修改passwd(在文件尾部添加用户名和密码)
liliang = liliang
3.authz(添加读写权限)
[/] #表示对根目录下所有文件
liliang = rw #表示读写权限都有
经过这三步,就能够在客户端使用用户名和密码进行checkout和commit了。
客户端的读写操作
其实个人觉得用图形界面操作会比命令行方便得多。
window下可以用乌龟:TortoiseSVN
ubuntu下可以用兔子:rabbitvcs
莫不是出自龟兔赛跑?应该是程序员的冷笑话了 :)
没有界面时候需要用到的部分命令行:
svn checkout #用于第一次时候将repos拖到本地
svn update #用于更新到最新的代码版本
svn add #用于添加文件到更新的列表中
svn commit #用于提交代码修改
后续遇到的问题
- svn log时候显示no date
解决的连接是:SVN:show log with no date的解决方法
是权限的问题,在服务器端,svnserve.conf 中,将 anon-access 设置成 none。 - 回滚到某个版本
参考了:Linux 下svn恢复到某一版本
用的不是revert
而应该是merge
- File already exists: … 的错误
参考了:File already exists: filesystem ‘/path/file’, transaction svn常见错误解决方法
- 切换用户
清空~/.subversion/auth目录下的所有文件,之后svn就会提示需要重新登录了。(某种意义上,svn很不适合小白使用。。切换用户名的方式都那么简单粗暴)
- 重启服务器端svn服务
首先登陆到服务器的机器,然后kill掉svn服务:
sudo killall svnserve
,之后再启动:sudo /etc/init.d/svnserve -d -r [svn_repos_path]