Mac环境下SVN实战
2016-06-12 15:39
204 查看
在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还需做一下简单的配置。
我们首先来看下,如何在Mac环境下搭建svn服务器端环境。
Mac自带SVN版本太低,不满足实际项目中使用的项目SVN的版本
所以需要更新Mac自带SVN版本
http://blog.csdn.net/langzi7758521/article/details/51656106
打开终端,创建一个mycode仓库,输入指令:svnadmin create /Users/apple/svn/mycode
注意要授予svn 和 mycode 所有权限
sudo chmod 755 svn
sudo chmod 755 mycode
指令执行成功后,会发现硬盘上多了个/Users/apple/svn/mycode目录,目录结构如下:
1.打开svnserve.conf,将下列配置项前面的#和空格都去掉
[java]
view plain
copy
# anon-access = read
# auth-access = write
# password-db = passwd
# authz-db = authz
anon-access = read代表匿名访问的时候是只读的,若改为anon-access = none代表禁止匿名访问,需要帐号密码才能访问
2.打开passwd,在[users]下面添加帐号和密码,比如:
[java]
view plain
copy
[users]
mj = 123
jj = 456
帐号是mj,密码是123
3.打开authz,配置用户组和权限
我们可以将在passwd里添加的用户分配到不同的用户组里,以后的话,就可以对不同用户组设置不同的权限,没有必要对每个用户进行单独设置权限。
在[groups]下面添加组名和用户名,多个用户之间用逗号(,)隔开
[java]
view plain
copy
[groups]
topgroup=mj,jj
说明mj和jj都是属于topgroup这个组的,接下来再进行权限配置。
使用[/]代表svn服务器中的所有资源库
[java]
view plain
copy
[/]
@topgroup = rw
上面的配置说明topgroup这个组中的所有用户对所有资源库都有读写(rw)权限,组名前面要用@
如果是用户名,不用加@,比如mj这个用户有读写权限
[java]
view plain
copy
[/]
mj = rw
至于其他精细的权限控制,可以参考authz文件中的其他内容
例:
[groups]
harry_and_sally =harry,sally
# harry_sally_and_joe =harry,sally,&joe
# [/foo/bar]
# harry = rw
# &joe = r
# * =
### 对所有版本库的权限设置用[/]
### group名称前要加@,用户名不加。
* = 是为所有人设置权限,这里是设置其他所有人没有读写权限。
[/]
@harry_and_sally = rw
* =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
4.启动svn服务器
前面配置了这么多,最关键还是看能否正常启动服务器,若启动不来,前面做再多工作也是徒劳。
在终端输入下列指令:svnserve -d -r /Users/apple/svn
或者输入:svnserve -d -r /Users/apple/svn/mycode
没有任何提示就说明启动成功了
5.关闭svn服务器
如果你想要关闭svn服务器
可以用命令,如下
sudo killall svnserve
也可以打开实用工具里面的“活动监视器”
最方便最有效的方法:
命令终端直接输入下面命令,
ps aux | grep svn
第一个数字为进程号,然后
sudo kill -9 进程号
在终端中输入
svn import /Users/apple/Documents/eclipse_workspace/weibo svn://localhost/mycode/weibo --username=mj --password=123 -m "初始化导入"
我解释下指令的意思:将/Users/apple/Documents/eclipse_workspace/weibo中的所有内容,上传到服务器mycode仓库的weibo目录下,后面双引号中的"初始化导入"是注释
2.从服务器端下载代码到客户端本地
在终端中输入svn checkout svn://localhost/mycode --username=mj --password=123 /Users/apple/Documents/code
我解释下指令的意思:将服务器中mycode仓库的内容下载到/Users/apple/Documents/code目录中
3.提交更改过的代码到服务器
在步骤2中已经将服务器端的代码都下载到/Users/apple/Documents/code目录中,现在修改下里面的一些代码,然后提交这些修改到服务器
1> 打开终端,先定位到/Users/apple/Documents/code目录,输入:cd/Users/apple/Documents/code
2> 输入提交指令:svn commit -m "修改了main.m文件"
这个指令会将/Users/apple/Documents/code下的所有修改都同步到服务器端,假如这次我只修改了main.文件
可以看到终端的打印信息:
[java]
view plain
copy
Sending weibo/weibo/main.m
Transmitting file data .
Committed revision 2.
4.更新服务器端的代码到客户端
这个应该是最简单的指令了,在终端中定位到客户端代码目录后,比如上面的/Users/apple/Documents/code目录,然后再输入指令:svn
update
5.至于svn的其他用法,可以在终端输入:svn help
这里列出一大堆svn指令,后面括号中的内容的一般代表着指令的简称,比如我们可以用svn ci代替svn commit,用svn co代替svn checkout
1、将文件checkout到本地目录
2、往版本库中添加新的文件
3、将改动的文件提交到版本库
4、加锁/解锁
5、更新到某个版本
6、查看文件或者目录状态
7、删除文件
8、查看日志
9、查看文件详细信息
10、比较差异
11、将两个版本之间的差异合并到当前文件
12、SVN 帮助
13、版本库下的文件和目录列表
14、创建纳入版本控制下的新目录
15、恢复本地修改
16、代码库URL变更
17、解决冲突
我们首先来看下,如何在Mac环境下搭建svn服务器端环境。
Mac自带SVN版本太低,不满足实际项目中使用的项目SVN的版本
所以需要更新Mac自带SVN版本
升级Mac自带SVN
参考:http://blog.csdn.net/langzi7758521/article/details/51656106
创建代码仓库,用来存储客户端所上传的代码
我先在/User/apple目录下新建一个svn目录,以后可以在svn目录下创建多个仓库目录打开终端,创建一个mycode仓库,输入指令:svnadmin create /Users/apple/svn/mycode
注意要授予svn 和 mycode 所有权限
sudo chmod 755 svn
sudo chmod 755 mycode
指令执行成功后,会发现硬盘上多了个/Users/apple/svn/mycode目录,目录结构如下:
配置svn的用户权限
主要是修改/svn/mycode/conf目录下的三个文件1.打开svnserve.conf,将下列配置项前面的#和空格都去掉
[java]
view plain
copy
# anon-access = read
# auth-access = write
# password-db = passwd
# authz-db = authz
anon-access = read代表匿名访问的时候是只读的,若改为anon-access = none代表禁止匿名访问,需要帐号密码才能访问
2.打开passwd,在[users]下面添加帐号和密码,比如:
[java]
view plain
copy
[users]
mj = 123
jj = 456
帐号是mj,密码是123
3.打开authz,配置用户组和权限
我们可以将在passwd里添加的用户分配到不同的用户组里,以后的话,就可以对不同用户组设置不同的权限,没有必要对每个用户进行单独设置权限。
在[groups]下面添加组名和用户名,多个用户之间用逗号(,)隔开
[java]
view plain
copy
[groups]
topgroup=mj,jj
说明mj和jj都是属于topgroup这个组的,接下来再进行权限配置。
使用[/]代表svn服务器中的所有资源库
[java]
view plain
copy
[/]
@topgroup = rw
上面的配置说明topgroup这个组中的所有用户对所有资源库都有读写(rw)权限,组名前面要用@
如果是用户名,不用加@,比如mj这个用户有读写权限
[java]
view plain
copy
[/]
mj = rw
至于其他精细的权限控制,可以参考authz文件中的其他内容
例:
[groups]
harry_and_sally =harry,sally
# harry_sally_and_joe =harry,sally,&joe
# [/foo/bar]
# harry = rw
# &joe = r
# * =
### 对所有版本库的权限设置用[/]
### group名称前要加@,用户名不加。
* = 是为所有人设置权限,这里是设置其他所有人没有读写权限。
[/]
@harry_and_sally = rw
* =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
4.启动svn服务器
前面配置了这么多,最关键还是看能否正常启动服务器,若启动不来,前面做再多工作也是徒劳。
在终端输入下列指令:svnserve -d -r /Users/apple/svn
或者输入:svnserve -d -r /Users/apple/svn/mycode
没有任何提示就说明启动成功了
5.关闭svn服务器
如果你想要关闭svn服务器
可以用命令,如下
sudo killall svnserve
也可以打开实用工具里面的“活动监视器”
最方便最有效的方法:
命令终端直接输入下面命令,
ps aux | grep svn
第一个数字为进程号,然后
sudo kill -9 进程号
MAC svn开机自启动环境配置
参考:http://write.blog.csdn.net/postedit/51690066使用svn客户端功能
1.从本地导入代码到服务器(第一次初始化导入)在终端中输入
svn import /Users/apple/Documents/eclipse_workspace/weibo svn://localhost/mycode/weibo --username=mj --password=123 -m "初始化导入"
我解释下指令的意思:将/Users/apple/Documents/eclipse_workspace/weibo中的所有内容,上传到服务器mycode仓库的weibo目录下,后面双引号中的"初始化导入"是注释
2.从服务器端下载代码到客户端本地
在终端中输入svn checkout svn://localhost/mycode --username=mj --password=123 /Users/apple/Documents/code
我解释下指令的意思:将服务器中mycode仓库的内容下载到/Users/apple/Documents/code目录中
3.提交更改过的代码到服务器
在步骤2中已经将服务器端的代码都下载到/Users/apple/Documents/code目录中,现在修改下里面的一些代码,然后提交这些修改到服务器
1> 打开终端,先定位到/Users/apple/Documents/code目录,输入:cd/Users/apple/Documents/code
2> 输入提交指令:svn commit -m "修改了main.m文件"
这个指令会将/Users/apple/Documents/code下的所有修改都同步到服务器端,假如这次我只修改了main.文件
可以看到终端的打印信息:
[java]
view plain
copy
Sending weibo/weibo/main.m
Transmitting file data .
Committed revision 2.
4.更新服务器端的代码到客户端
这个应该是最简单的指令了,在终端中定位到客户端代码目录后,比如上面的/Users/apple/Documents/code目录,然后再输入指令:svn
update
5.至于svn的其他用法,可以在终端输入:svn help
这里列出一大堆svn指令,后面括号中的内容的一般代表着指令的简称,比如我们可以用svn ci代替svn commit,用svn co代替svn checkout
Mac使用svn命令大全
常用命令1、将文件checkout到本地目录
相关文章推荐
- ITEM M6 自增(INCREMENT)、自减(DECREMENT)操作符前缀形式与后缀形式的区别
- android ,广播接受者。调用服务内部方法
- DotProject首页、文档和下载 - 项目管理工具 - 开源中国社区
- Ng-cloak解决angularJs中的闪烁问题
- DFS深度遍历 leetcode 17 Letter Combinations of a Phone Number
- Android 自定义View引用xml布局
- LaTeX 科技排版 课程
- Qt中利用定时器QTimer准实时显示当前日期和时间
- HDU 5691 --tsp变型
- 面试题7:用两个栈实现队列
- LVS+KeepAlived搭建
- 使用Jacob自动替换书签内容
- 消息机制,KVC,KVO
- Java基础--泛型
- git初级常用命令
- hotswapagent——热更新代码而无需重启生产环境
- android自定义View绘制几何图形
- Android常用文件操作
- C++ 默认构造函数的重要性
- C基础 mariadb处理的简单实例