首先,以root用户创建版本库,并导入数据
1. 创建库文件所在的目录:mkdir svn工作文件夹
mkdir svnrepos
2. 创建svn版本库:svnadmin create svn的工作文件夹绝对路径
snvadmin create /data/user/svnrepos
3. 设置环境变量,并运行配置文件(可先查看环境变量SVN_EDITOR,若已设置过,此步骤忽略...)
export SVN_EDITOR=vim; source /bin/bashrc
4. 为版本库导入数据:svn import 代码路径 file://svn工作文件夹绝对路径
svn import /data/user/sourceCode file:///data/user/svnrepos/
5. sudo chown -R daemon /data/user/svnrepos
sudo chmod 777 /data/user/svnrepos
注:
1> 步骤5解释(权限问题:根据用户所参与的项目,SVN管理员对其开放相应目录的读、写权限):
因版本库是以root身份创建并导入数据的,此时若以其他用户身份获取代码,并做更新进行提交时,会提示svn: Can't create directory '/data/user/svnrepos/db/transactions/1-1.txn': Permission denied (原因在于,其他用户对版本库没有write权限,无法将新的内容提交给版本库)
为验证以上说法可在执行第5步前后依次执行ls -ll svnrepos查看版本库内文件权限
2> svn import子命令在导入数据之后,你会发现原先的目录树并没有纳入版本控制,为了开始工作,就需要运行svncheckout得到一个干净的目录树工作拷贝。
其次,从版本库通过网络"检出"代码到本地工作副本
svn checkout file:///svn工作文件夹绝对路径 要保存的路径名
svn checkout file:///data/user/svnrepos/ ./
最后,将在本地工作副本中进行增加,修改,删除后的代码"提交到版本库(如果本地工作副本中版本较系统版本过时,用户使用“更新”功能与系统上版本保持一致).
1.第一次在file服务器checkout的时候,使用root超级用户(即服务器管理员的身份)进行checkout的话,其中svnrepos为SVN仓称。
2.若本地某用户svn up的时候报下面的错误,提示没有权限打开该文件.svn/lock
svn: Can't open file 'data/user/sourceCode/.svn/lock': Permission denied
3.用ll查看当前文件夹下的.svn文件时发现其所属组所有者为root
[root@.....]# ll sourceCode/.svn
total 28
-r--r--r-- 1 root root 143 Oct 28 12:27 all-wcprops
-r--r--r-- 1 root root 313 Oct 28 12:27 entries
-r--r--r-- 1 root root 2 Oct 28 12:25 format
drwxr-xr-x 2 root root 4096 Oct 28 12:25 prop-base
drwxr-xr-x 2 root root 4096 Oct 28 12:25 props
drwxr-xr-x 2 root root 4096 Oct 28 12:27 text-base
drwxr-xr-x 5 root root 4096 Oct 28 12:27 tmp
解决方法:给目录加权限,这边userName是组(即:用户名)
chmod o+w .svn -R
su - userName
svn up
总结:SVN 出现“Can't open file '.svn/lock': Permission denied”问题原因是因为第一次checkout的时候是用root,使得其他用户没有权限,通过以上方法可以解决。