The result of tag: (2 results)

Add all new files to svn

by LauCyun Jun 01,2017 10:07:09 6,691 views

 我经常会一次往Subversion里添加一批文件。在使用命令行做这件事时,你必须指定所有想要添加的文件名。如果文件不多的话这还不算太糟糕,但如果你要添加20个文件,那就费事了。当然你也可以用通配符,但这样一来就可能匹配到已经在版本控制之下的文件(这不会有什么损害,只不过会输出一堆错误信息,可能会跟别的错误信息混淆)。

为了解决这个问题,我写了一行简单的bash命令:

svn st | grep '^\?' | tr '^\?' ' ' | sed 's/[ ]*//' | sed 's/[ ]/\\ /g' | xargs svn add

表1 svn Add New命令详解。

我大概花了15分钟写出这条命令,然后用了它成百上千次。

——出自:《卓有成效的程序员》之自动化

 

 这个自动化过程已经很完美了,一个“简单”的 shell 脚本,这是一个权威编写并使用了百上千次的脚本。

然后我在一个博客中看到这样一个脚本:

svn st|awk '{print $2}'|xargs svn add

乍看之下觉得更加精炼,仔细看下就会发现这个脚本没有区分文件状态。所以完善了以下这个脚本:

svn st | awk '{if ( $1 == "?") { print $2}}' | xargs svn add  

这样,以后我可能使用这个脚本成百上千次。(当然这个脚本也没有考虑过滤掉不要添加的文件)

当你第三次做一件事情的时候,就应该考虑将其工具化,自动化!

...

Tags Read More


Linux 下搭建 SVN 服务器

by LauCyun Dec 18,2015 11:31:38 4,309 views

本文主要介绍 SVN 服务器搭建的具体过程。

1 安装 svn

ubuntu@localhost:~$ sudo apt-get install subversion -y

2 创建代码仓库

ubuntu@localhost:~$ sudo mkdir -p /home/svn/project
ubuntu@localhost:~$ sudo svnadmin create /home/svn/project
ubuntu@localhost:~$ cd /home/svn/
ubuntu@localhost:/home/svn$ ll
total 12
drwxr-xr-x 3 root root 4096 Jun  7 15:10 ./
drwxr-xr-x 4 root root 4096 Jun  7 15:10 ../
drwxr-xr-x 6 root root 4096 Jun  7 15:10 project/
ubuntu@localhost:/home/svn$

命令执行完成后,进入 project 目录,输入 ll 查看,显示目录如下:

ubuntu@localhost:~$ cd /home/svn/project/
ubuntu@localhost:/home/svn/project$ ll
total 32
drwxr-xr-x 6 root root 4096 Jun  7 15:11 ./
drwxr-xr-x 3 root root 4096 Jun  7 15:11 ../
drwxr-xr-x 2 root root 4096 Jun  7 15:11 conf/
drwxr-sr-x 6 root root 4096 Jun  7 15:11 db/
-r--r--r-- 1 root root    2 Jun  7 15:11 format
drwxr-xr-x 2 root root 4096 Jun  7 15:11 hooks/
drwxr-xr-x 2 root root 4096 Jun  7 15:11 locks/
-rw-r--r-- 1 root root  246 Jun  7 15:11 README.txt

出现上面现象说明创建成功。

3 修改配置文件的执行权限

修改前的权限:

ubuntu@localhost:/home/svn/project/conf$ ll
total 24
drwxr-xr-x 2 root root 4096 Jun  7 15:11 ./
drwxr-xr-x 6 root root 4096 Jun  7 15:11 ../
-rw-r--r-- 1 root root 1080 Jun  7 15:11 authz
-rw-r--r-- 1 root root  885 Jun  7 15:11 hooks-env.tmpl
-rw-r--r-- 1 root root  309 Jun  7 15:11 passwd
-rw-r--r-- 1 root root 4002 Jun  7 15:11 svnserve.conf
ubuntu@localhost:/home/svn/project/conf$

修改后的权限:

ubuntu@localhost:/home/svn/project/conf$ sudo chmod +x authz passwd svnserve.conf
ubuntu@localhost:/home/svn/project/conf$ ll
total 24
drwxr-xr-x 2 root root 4096 Jun  7 15:11 ./
drwxr-xr-x 6 root root 4096 Jun  7 15:11 ../
-rwxr-xr-x 1 root root 1080 Jun  7 15:11 authz*
-rw-r--r-- 1 root root  885 Jun  7 15:11 hooks-env.tmpl
-rwxr-xr-x 1 root root  309 Jun  7 15:11 passwd*
-rwxr-xr-x 1 root root 4002 Jun  7 15:11 svnserve.conf*
ubuntu@localhost:/home/svn/project/conf$

4 配置 svn 权限、账户和密码

直接将文件 svnserve.conf 全部内容替换为如下:

ubuntu@localhost:~$ sudo vim /home/svn/project/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

添加新账户:

ubuntu@localhost:~$ sudo vim /home/svn/project/conf/passwd
[users]
liuker = 123456

设置账户 liuker 的权限:

ubuntu@localhost:~$ sudo vim /home/svn/project/conf/authz
[groups]
manage = liuker

[/]
@manage = rw
*=r

5 启动 svn 服务并查看是否启动正常 

启动:

ubuntu@localhost:~$ sudo svnserve -d -r /home/svn/project/

查看是否启动正常:

ubuntu@localhost:~$ sudo netstat -antp | grep svnserve
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      1999/svnserve
ubuntu@localhost:~$ sudo ps -ef | grep svn
root      1999     1  0 15:31 ?        00:00:00 svnserve -d -r /home/svn/project/
ubuntu    2004  1396  0 15:31 pts/0    00:00:00 grep --color=auto svn
ubuntu@localhost:~$

6 开机启动

在 /etc/rc.local 文件中加入如下命令:

/usr/bin/svnserve -d -r /home/svn/project/

7 svn 常用命令

svn up                        //更新文件    
svn commit -m "注释" xxx.txt   //提交文件    
svn add file                  //新建文件并添加到svn    
svn add *.txt                 //(添加当前目录下所有的txt文件)    
svn delete test.txt           //删除test.txt    
svn log test.txt              //查看test文件的log信息    
svn co svn://x.x.x.x ./       //检出一份版本库文件到当前目录    
svn switch --relocate svn://x.x.x.x  svn://x.x.x.x    //重新定位SVN版本库址

 

注意事项:

Windows 访问 svn 时出现:unable to connect a repository at URL

有两种方法可以解决:

(1)右键点击本地的 svn,TortoiseSVN -> Settings -> Saved Data,clear 缓存数据

(2)注释掉 authz-db 然后重启 svn,再次 import,输入用户名和密码,就可以访问 project 中的内容了

 

(全文完)

...

Tags Read More