svn配置

系统debian:

安装:
apt-get install subversion subversion-tools
apt-get install apache2 libapache2-svn


查看版本命令 svnserve --version
查看svnserver是否已启动: netstat -ntlp,可看到svn对应的端口3690
使用svnserve -d启动svn服务

ps -aux | grep svnserve
kill -9 ID号
svnserve -d -r /home/catdoc2014/pos_svn/test

建立项目:svnadmin create ~/pos_svn/test  // test目录下会增加若干文件
地址: svn://192.168.229.45/home/catdoc2014/pos_svn/test
可通过 svn co svn://192.168.229.45/home/catdoc2014/pos_svn/test 导出

在svn服务器机器上操作 首次导入 利用svn import
svn import tserver file:///home/catdoc2014/pos_svn/test -m "init import"
-> tserver/trunk/hello.erl   tserver/branch    tserver/readme
当提示 Commited revision 1.表示导入成功.

如果通过http访问,那么需要设置apache服务器的配置,
在浏览器http://192.168.229.45/ 如果打印it works表示svn关联的apache服务器正常。

test/conf文件夹:authz、passwd、svnserve.conf
-> svnserve.conf:
[general]
anon-access = none
auth-access = write   ## 另一个选项 read
password-db = passwd
authz-db = authz

注意 前面不能有空格,否则提示: svnserve.conf:12: Option expected

-> passwd
[users]
pm = iampm    // 这里的用户同样不能有空格
catdoc = catdoc2014
sky = sky123

-> authz
[groups]
soft = catdoc,sky

[/]  #版本库的根目录
pm = rw #pm有读写权限
* = r   #任何人只有只读权限

[trunk:/]   #test/trunk目录
pm = rw     #pm有读写权限
@soft = rw  #soft组有读写权限
* = r       #任何人都有只读权限


在linux系统下:
~/.subversion/auth,这个目录下包含了svn使用过的用户信息,
如果需要更换账号操作svn可以把这个目录下的文件来文件夹全部删掉就可以了。

方法2:
rm -rf ~/.subversion/auth
以后操作svn会提示你输入用户名,这时就可以使用新的了

方法2: svn操作时带上--username参数
svn --username=catdoc update  然后会提示输入密码!


客户端操作:
1, 导出
svn co svn://192.168.229.45/home/catdoc2014/pos_svn/test   // 简写 svn co

2, 更新 -> 进入到需要更新的目录 
svn update -r 2014 libutil.erl  (将文件还原到版本2014)    
svn update libutil.erl  更新版本库同步。

在workplace 执行 svn update 同步版本库

3、添加 -> 进入需要提交的目录 添加后需要commit提交
svn add file  // --non-recursive 或者 -N就会关闭 recursive add

svn --username=catdoc add success.erl    // 中间可能需要填写用户密码
svn --username=catdoc commit success.erl -m "first add cmd"

// 后续的不需要再带 --username=catdoc

4、将改动的文件提交到版本库
选项 -N 或者 --no-unlock
svn commit success.erl -m "commit s.erl"  // 指定提交某个文件
svn commit -m "test commit "   // 会将目录下的所有修改都提交上去


5、加锁/解锁
svn lock -m "log" [--force] path
svn unlock path

svn lock -m "lock libutilfile" libutil.erl


6、查看文件或者目录状态
svn status  -v path 
-> ?:不在svn的控制中 M:内容被修改 C:发生冲突 A:预定加入到版本库 K:被锁定

7、查看日志
svn log success.erl 

8、比较差异
svn diff success.erl 查看本地和版本的差异
svn diff -r 2:3 success.erl  // 查看特定版本的差异

9、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
svn merge -r 200:205 libutil.erl(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)


10、恢复
svn revert success.erl 
// 冲突的时候一种解决办法,但会丢失将本地修改,因为应先备份本地版本再revert
// 不会恢复被删除的目录

11、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
改写工作副本的URL元数据,以反映单纯的URL上的改变。 

svn relocate ?

12、解决冲突
svn resolved path: 移除工作副本的目录或文件的“冲突”状态。

只是移除冲突的相关文件,然后让 PATH 可以再次提交, 实质的冲突还是要自己去解决


在vi中也可以不退出编辑的文件来提交文件,

    使用shell命令::! svn ci -m "commit information.."

1.执行如下命令:
      $ sudo update-alternatives --config editor
       执行后,出现如下画面:
P2PTranslateFile$ sudo update-alternatives --config editor
有 4 个选项可用于替换项 editor (提供 /usr/bin/editor)。

  选择       路径            优先级  状态
------------------------------------------------------------
  0            /bin/nano          40        自动模式
  1            /bin/ed           -100       手动模式
  2            /bin/nano          40        手动模式
* 3            /usr/bin/emacs23   0         手动模式
  4            /usr/bin/vim.tiny  10        手动模式

参考:http://www.cnblogs.com/xusir/p/3326142.html


  

你可能感兴趣的:(SVN)